{"version":3,"file":"merge.mjs","names":[],"sources":["../../src/functions/merge.ts"],"sourcesContent":["import { mergeWith } from \"es-toolkit\";\n\nconst mergeUserConfig = <\n    T extends Record<PropertyKey, any>,\n    S extends Record<PropertyKey, any>,\n>(\n    target: T,\n    source?: S,\n): T & S => {\n    if (!source) return target;\n\n    return mergeWith(\n        target,\n        source,\n        (_: unknown, sourceValue: unknown): unknown => {\n            // array replacement\n            if (Array.isArray(sourceValue)) return sourceValue;\n\n            // default deep merge\n            return void 0;\n        },\n    );\n};\n\nconst dedupe = <T>(values: readonly T[]): T[] => {\n    const seen: Set<T> = new Set();\n\n    const result: T[] = [];\n\n    for (const value of values) {\n        if (seen.has(value)) continue;\n\n        seen.add(value);\n\n        result.push(value);\n    }\n\n    return result;\n};\n\nconst mergePresetConfig = <\n    T extends Record<PropertyKey, any>,\n    S extends Record<PropertyKey, any>,\n>(\n    target: T,\n    source: S,\n): T & S => {\n    return mergeWith(\n        target,\n        source,\n        (targetValue: unknown, sourceValue: unknown): unknown => {\n            // array concatenation with deduplication\n            if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n                return dedupe([\n                    ...targetValue,\n                    ...sourceValue,\n                ]);\n            }\n\n            // default deep merge\n            return void 0;\n        },\n    );\n};\n\nexport { mergePresetConfig, mergeUserConfig };\n"],"mappings":";;AAEA,MAAM,mBAIF,QACA,WACQ;CACR,IAAI,CAAC,QAAQ,OAAO;CAEpB,OAAO,UACH,QACA,SACC,GAAY,gBAAkC;EAE3C,IAAI,MAAM,QAAQ,WAAW,GAAG,OAAO;CAI3C,CACJ;AACJ;AAEA,MAAM,UAAa,WAA8B;CAC7C,MAAM,uBAAe,IAAI,IAAI;CAE7B,MAAM,SAAc,CAAC;CAErB,KAAK,MAAM,SAAS,QAAQ;EACxB,IAAI,KAAK,IAAI,KAAK,GAAG;EAErB,KAAK,IAAI,KAAK;EAEd,OAAO,KAAK,KAAK;CACrB;CAEA,OAAO;AACX;AAEA,MAAM,qBAIF,QACA,WACQ;CACR,OAAO,UACH,QACA,SACC,aAAsB,gBAAkC;EAErD,IAAI,MAAM,QAAQ,WAAW,KAAK,MAAM,QAAQ,WAAW,GACvD,OAAO,OAAO,CACV,GAAG,aACH,GAAG,WACP,CAAC;CAKT,CACJ;AACJ"}