@enspirit/emb
Version:
A replacement for our Makefile-for-monorepos
21 lines (20 loc) • 707 B
JavaScript
import deepmerge from '@fastify/deepmerge';
export const byName = (item) => item.name;
export const deepMergeArray = (target, source, identifierFn) => {
if (!identifierFn) {
return deepmerge()(target, source);
}
const overridden = target.map((item) => {
const id = identifierFn(item);
const override = source.find((item) => identifierFn(item) === id);
if (override) {
return deepmerge()(item, override);
}
return item;
});
const additional = source.filter((item) => {
const id = identifierFn(item);
return !target.find((item) => identifierFn(item) === id);
});
return [...overridden, ...additional];
};