pncat
Version:
Enhanced pnpm catalogs management with advanced workspace dependency control.
28 lines (24 loc) • 988 B
JavaScript
import { D as DEFAULT_CATALOG_RULES } from './shared/pncat.ZjPjRMjV.mjs';
import deepmerge from 'deepmerge';
function mergeCatalogRules(...args) {
const hasOptions = typeof args[0] === "object" && !Array.isArray(args[0]);
const options = hasOptions ? args[0] : { mergeDefaults: true };
const rules = hasOptions ? args.slice(1) : args;
const { mergeDefaults = true, arrayMerge = mergeByName } = options;
const sources = mergeDefaults ? [DEFAULT_CATALOG_RULES, ...rules] : [...rules];
return sources.length === 0 ? [] : deepmerge.all(sources, { arrayMerge });
}
function mergeByName(target, source) {
return source.reduce((result, item) => {
const existing = result.find((x) => x.name === item.name);
if (existing)
Object.assign(existing, deepmerge(existing, item));
else
result.push(item);
return result;
}, [...target]);
}
function defineConfig(config) {
return config;
}
export { DEFAULT_CATALOG_RULES, defineConfig, mergeCatalogRules };