UNPKG

integreat

Version:
45 lines 1.61 kB
import { isObject } from './is.js'; const arrOrEmptyArr = (arr) => (Array.isArray(arr) ? arr : []); const mergeArrays = (arr1, arr2) => [ ...arrOrEmptyArr(arr1), ...arrOrEmptyArr(arr2), ]; const isFlagSet = (flags, flag) => Boolean(flag && flags[flag]); const resolveFlagAlias = (key) => key === 'breakByDefault' ? 'failOnErrorInPostconditions' : key; const mergeFlags = (defs, def) => def ? { ...defs, ...Object.fromEntries(Object.entries(def) .map(([key, value]) => [resolveFlagAlias(key), value]) .filter(([key, value]) => value === true || !isFlagSet(defs, key))), } : defs; const mergeDefs = (defs, def) => ({ ...defs, id: def.id || defs.id, auths: mergeArrays(defs.auths, def.auths), schemas: mergeArrays(defs.schemas, def.schemas), services: mergeArrays(defs.services, def.services), mutations: { ...defs.mutations, ...def.mutations }, dictionaries: { ...defs.dictionaries, ...def.dictionaries }, jobs: mergeArrays(defs.jobs, def.jobs), identConfig: def.identConfig || defs.identConfig, queueService: def.queueService || defs.queueService, flags: mergeFlags(defs.flags || {}, def.flags), }); export default function mergeDefinitions(...defs) { return defs.filter(isObject).reduce(mergeDefs, { id: undefined, auths: [], schemas: [], services: [], mutations: {}, dictionaries: {}, jobs: [], identConfig: undefined, queueService: undefined, flags: {}, }); } //# sourceMappingURL=mergeDefinitions.js.map