@directus/api
Version:
Directus is a real-time API and App dashboard for managing SQL database content
24 lines (22 loc) • 765 B
JavaScript
import { intersection, union } from "lodash-es";
//#region src/permissions/utils/merge-fields.ts
function mergeFields(fieldsA, fieldsB, strategy) {
if (fieldsA === null) fieldsA = [];
if (fieldsB === null) fieldsB = [];
let fields = [];
if (strategy === "and") {
if (fieldsA.length === 0 || fieldsB.length === 0) return [];
if (fieldsA.includes("*")) return fieldsB;
if (fieldsB.includes("*")) return fieldsA;
fields = intersection(fieldsA, fieldsB);
} else {
if (fieldsA.length === 0) return fieldsB;
if (fieldsB.length === 0) return fieldsA;
if (fieldsA.includes("*") || fieldsB.includes("*")) return ["*"];
fields = union(fieldsA, fieldsB);
}
if (fields.includes("*")) return ["*"];
return fields;
}
//#endregion
export { mergeFields };