{"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":["differ_exports","__export","diff","equal","from","merge","__toCommonJS","import_isType","getDiff","val1","val2","parent","keys","key","parentKey","obj1","obj2","v1","v2","v","c","i","keys1","keys2","deepMerge","to","merged","obj","formObject","acc","k","_"]}