{"version":3,"sources":["../../../src/utils/differ.ts"],"sourcesContent":["import { isType } from './isType'\n\nfunction getDiff(val1: any, val2: any, parent?: string) {\n\tif (!isType.object(val1) || !isType.object(val2)) return []\n\tconst keys = [...new Set(Object.keys(val1).concat(Object.keys(val2)))]\n\tconst diff: string[] = []\n\tfor (const key of keys) {\n\t\tconst parentKey = (parent ? `${parent}.` : '') + key\n\t\tif (!(key in val1) || !(key in val2)) {\n\t\t\tdiff.push(parentKey)\n\t\t\tcontinue\n\t\t}\n\t\tconst obj1 = val1[key]\n\t\tconst obj2 = val2[key]\n\t\tif (isType.object(obj1) && isType.object(obj2)) diff.push(...getDiff(obj1, obj2, parentKey))\n\t\telse if (!equal(obj1, obj2)) diff.push(parentKey)\n\t}\n\treturn diff\n}\n\nexport function equal(v1: unknown, v2: unknown): boolean {\n\tif (v1 === v2) return true\n\n\tif (isType.string(v1)) return v1 === v2\n\tif (isType.number(v1)) return v1 === v2\n\tif (isType.bigint(v1)) return v1 === v2\n\tif (isType.boolean(v1)) return v1 === v2\n\tif (isType.null(v1)) return v1 === v2\n\tif (isType.undefined(v1)) return v1 === v2\n\tif (isType.function(v1)) return v1 === v2\n\n\tif (isType.regex(v1)) return isType.regex(v2) && v1.source === v2.source\n\tif (isType.nan(v1)) return isType.nan(v2)\n\tif (isType.date(v1)) return isType.date(v2) && v1.getTime() === v2.getTime()\n\n\tconst [val1, val2] = [v1, v2].map((v) => {\n\t\tif (isType.map(v)) return Object.fromEntries(v.entries())\n\t\tif (isType.set(v)) return [...v]\n\t\treturn v\n\t})\n\n\tif (val1 === val2) return true\n\n\tif (isType.array(val1)) {\n\t\tif (!isType.array(val2)) return false\n\t\tif (val1.length !== val2.length) return false\n\t\treturn val1.every((c, i) => equal(c, val2.at(i)))\n\t}\n\n\tif (isType.object(val1) && isType.object(val2)) {\n\t\tconst keys1 = Object.keys(val1 ?? {})\n\t\tconst keys2 = Object.keys(val2 ?? {})\n\t\tif (keys1.length !== keys2.length) return false\n\t\tconst keys = [...new Set(keys1.concat(keys2))]\n\t\treturn keys.every((key) => key in val1 && key in val2 && equal(val1[key], val2[key]))\n\t}\n\n\treturn false\n}\n\nexport function diff(val1: unknown, val2: unknown) {\n\treturn getDiff(val1, val2)\n}\n\nexport function from(keys: string[]) {\n\tconst deepMerge = (from: object, to: object) =>\n\t\tObject.entries(from ?? {}).reduce(\n\t\t\t(merged, [key, obj]) => {\n\t\t\t\tmerged[key] = isType.object(obj) ? deepMerge(obj, merged[key] ?? {}) : obj\n\t\t\t\treturn merged\n\t\t\t},\n\t\t\t{ ...to },\n\t\t)\n\n\tconst formObject = (key: string) =>\n\t\tkey\n\t\t\t.split('.')\n\t\t\t.reverse()\n\t\t\t.reduce<Record<string, any>>((acc, k) => ({ [k]: acc ?? true }), null as any)\n\n\treturn keys.map(formObject).reduce(deepMerge, {})\n}\n\nexport function merge(v1: unknown, v2: unknown) {\n\tif (isType.undefined(v1)) return v2\n\tif (isType.undefined(v2)) return v1\n\tif (isType.array(v1) && isType.array(v2)) {\n\t\treturn Array.from({ length: Math.max(v1.length, v2.length) }, (_, i) => merge(v1[i], v2[i]))\n\t}\n\tif (isType.object(v1) && isType.object(v2)) {\n\t\tconst keys = new Set([...Object.keys(v1), ...Object.keys(v2)])\n\t\treturn Array.from(keys).reduce(\n\t\t\t(acc, key) => {\n\t\t\t\tacc[key] = merge(v1[key], v2[key])\n\t\t\t\treturn acc\n\t\t\t},\n\t\t\t{} as Record<string, any>,\n\t\t)\n\t}\n\treturn v2\n}\n"],"mappings":"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","names":["diff","from"]}