/** * A small deepMerge helper used for config layering * (defaults -> per-env overrides -> JSON overrides). * * Behaviour: * - When a source value is a *plain object*, merge recursively. * - Otherwise (primitive / array / null / undefined), the source replaces * the target. * - Source keys missing on the target are added. * * Arrays are *replaced* (not concatenated). For configuration purposes * (e.g. allowed locales, feature lists), full replacement per environment * is almost always what you want. * * Intentionally written without lodash to keep the runtime dependency * surface minimal. */ export type DeepPartial = T extends object ? T extends ReadonlyArray ? T : { [K in keyof T]?: DeepPartial; } : T; export declare function deepMerge(target: T, source: DeepPartial | undefined): T; //# sourceMappingURL=deep-merge.d.ts.map