spotdiff 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +82 -0
- package/dist/cjs/diff.d.ts +3 -0
- package/dist/cjs/diff.d.ts.map +1 -0
- package/dist/cjs/diff.js +162 -0
- package/dist/cjs/diff.js.map +1 -0
- package/dist/cjs/humanize.d.ts +3 -0
- package/dist/cjs/humanize.d.ts.map +1 -0
- package/dist/cjs/humanize.js +27 -0
- package/dist/cjs/humanize.js.map +1 -0
- package/dist/cjs/index.d.ts +5 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +13 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/patch.d.ts +6 -0
- package/dist/cjs/patch.d.ts.map +1 -0
- package/dist/cjs/patch.js +142 -0
- package/dist/cjs/patch.js.map +1 -0
- package/dist/cjs/types.d.ts +19 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils.d.ts +7 -0
- package/dist/cjs/utils.d.ts.map +1 -0
- package/dist/cjs/utils.js +34 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/esm/diff.d.ts +3 -0
- package/dist/esm/diff.d.ts.map +1 -0
- package/dist/esm/diff.js +162 -0
- package/dist/esm/diff.js.map +1 -0
- package/dist/esm/humanize.d.ts +3 -0
- package/dist/esm/humanize.d.ts.map +1 -0
- package/dist/esm/humanize.js +27 -0
- package/dist/esm/humanize.js.map +1 -0
- package/dist/esm/index.d.ts +5 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +13 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/patch.d.ts +6 -0
- package/dist/esm/patch.d.ts.map +1 -0
- package/dist/esm/patch.js +142 -0
- package/dist/esm/patch.js.map +1 -0
- package/dist/esm/types.d.ts +19 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +3 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils.d.ts +7 -0
- package/dist/esm/utils.d.ts.map +1 -0
- package/dist/esm/utils.js +34 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/types/diff.d.ts +3 -0
- package/dist/types/diff.d.ts.map +1 -0
- package/dist/types/humanize.d.ts +3 -0
- package/dist/types/humanize.d.ts.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/patch.d.ts +6 -0
- package/dist/types/patch.d.ts.map +1 -0
- package/dist/types/types.d.ts +19 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/utils.d.ts +7 -0
- package/dist/types/utils.d.ts.map +1 -0
- package/package.json +71 -0
package/dist/esm/diff.js
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.spotdiff = spotdiff;
|
|
4
|
+
const utils_js_1 = require("./utils.js");
|
|
5
|
+
function walk(a, b, path, depth, ctx) {
|
|
6
|
+
if ((0, utils_js_1.areEqual)(a, b))
|
|
7
|
+
return;
|
|
8
|
+
// Both primitives or incompatible types — emit change directly
|
|
9
|
+
const aIsObj = (0, utils_js_1.isObject)(a) || Array.isArray(a);
|
|
10
|
+
const bIsObj = (0, utils_js_1.isObject)(b) || Array.isArray(b);
|
|
11
|
+
if (!aIsObj && !bIsObj) {
|
|
12
|
+
ctx.changes.push({ path, op: 'changed', from: a, to: b });
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
// Type mismatch (one is object/array, other is not)
|
|
16
|
+
if (!aIsObj || !bIsObj) {
|
|
17
|
+
ctx.changes.push({ path, op: 'changed', from: a, to: b });
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (depth >= ctx.options.maxDepth) {
|
|
21
|
+
if (!(0, utils_js_1.areEqual)(a, b))
|
|
22
|
+
ctx.changes.push({ path, op: 'changed', from: a, to: b });
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
// Circular reference detection
|
|
26
|
+
if (typeof a === 'object' && a !== null) {
|
|
27
|
+
if (ctx.visited.has(a))
|
|
28
|
+
throw new Error(`Circular reference detected at path: ${path || '(root)'}`);
|
|
29
|
+
ctx.visited.add(a);
|
|
30
|
+
}
|
|
31
|
+
if (typeof b === 'object' && b !== null) {
|
|
32
|
+
if (ctx.visited.has(b))
|
|
33
|
+
throw new Error(`Circular reference detected at path: ${path || '(root)'}`);
|
|
34
|
+
ctx.visited.add(b);
|
|
35
|
+
}
|
|
36
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
37
|
+
diffArrays(a, b, path, depth, ctx);
|
|
38
|
+
}
|
|
39
|
+
else if (Array.isArray(a) !== Array.isArray(b)) {
|
|
40
|
+
ctx.changes.push({ path, op: 'changed', from: a, to: b });
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
diffObjects(a, b, path, depth, ctx);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function diffArrays(a, b, path, depth, ctx) {
|
|
47
|
+
if (ctx.options.arrays === 'smart') {
|
|
48
|
+
diffArraysSmart(a, b, path, depth, ctx);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const len = Math.max(a.length, b.length);
|
|
52
|
+
for (let i = 0; i < len; i++) {
|
|
53
|
+
const childPath = `${path}[${i}]`;
|
|
54
|
+
if (i >= a.length) {
|
|
55
|
+
ctx.changes.push({ path: childPath, op: 'added', from: undefined, to: b[i] });
|
|
56
|
+
}
|
|
57
|
+
else if (i >= b.length) {
|
|
58
|
+
ctx.changes.push({ path: childPath, op: 'removed', from: a[i], to: undefined });
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
walk(a[i], b[i], childPath, depth + 1, ctx);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function diffArraysSmart(a, b, path, depth, ctx) {
|
|
66
|
+
// For object arrays: try to match by identity keys (id, key, name)
|
|
67
|
+
// Fall back to index-based for primitive arrays
|
|
68
|
+
const allObjects = a.every(utils_js_1.isObject) && b.every(utils_js_1.isObject);
|
|
69
|
+
if (!allObjects) {
|
|
70
|
+
diffArraysIndex(a, b, path, depth, ctx);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const IDENTITY_KEYS = ['id', 'key', '_id', 'name'];
|
|
74
|
+
const identityKey = IDENTITY_KEYS.find(k => a.every(item => (0, utils_js_1.isObject)(item) && k in item));
|
|
75
|
+
if (!identityKey) {
|
|
76
|
+
diffArraysIndex(a, b, path, depth, ctx);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const aMap = new Map();
|
|
80
|
+
for (let i = 0; i < a.length; i++) {
|
|
81
|
+
const item = a[i];
|
|
82
|
+
aMap.set(item[identityKey], { item, idx: i });
|
|
83
|
+
}
|
|
84
|
+
const matched = new Set();
|
|
85
|
+
for (let j = 0; j < b.length; j++) {
|
|
86
|
+
const bItem = b[j];
|
|
87
|
+
const id = bItem[identityKey];
|
|
88
|
+
const childPath = `${path}[${j}]`;
|
|
89
|
+
if (aMap.has(id)) {
|
|
90
|
+
matched.add(id);
|
|
91
|
+
const { item: aItem } = aMap.get(id);
|
|
92
|
+
walk(aItem, bItem, childPath, depth + 1, ctx);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
ctx.changes.push({ path: childPath, op: 'added', from: undefined, to: bItem });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
for (let i = 0; i < a.length; i++) {
|
|
99
|
+
const aItem = a[i];
|
|
100
|
+
const id = aItem[identityKey];
|
|
101
|
+
if (!matched.has(id)) {
|
|
102
|
+
ctx.changes.push({ path: `${path}[${i}]`, op: 'removed', from: aItem, to: undefined });
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function diffArraysIndex(a, b, path, depth, ctx) {
|
|
107
|
+
const len = Math.max(a.length, b.length);
|
|
108
|
+
for (let i = 0; i < len; i++) {
|
|
109
|
+
const childPath = `${path}[${i}]`;
|
|
110
|
+
if (i >= a.length) {
|
|
111
|
+
ctx.changes.push({ path: childPath, op: 'added', from: undefined, to: b[i] });
|
|
112
|
+
}
|
|
113
|
+
else if (i >= b.length) {
|
|
114
|
+
ctx.changes.push({ path: childPath, op: 'removed', from: a[i], to: undefined });
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
walk(a[i], b[i], childPath, depth + 1, ctx);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function checkCircular(val, path, visited) {
|
|
122
|
+
if (typeof val === 'object' && val !== null && !(val instanceof Date) && !(val instanceof Map) && !(val instanceof Set)) {
|
|
123
|
+
if (visited.has(val)) {
|
|
124
|
+
throw new Error(`Circular reference detected at path: ${path || '(root)'}`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function diffObjects(a, b, path, depth, ctx) {
|
|
129
|
+
const keys = new Set([...Object.keys(a), ...Object.keys(b)]);
|
|
130
|
+
for (const key of keys) {
|
|
131
|
+
if (ctx.options.ignoreKeys.includes(key))
|
|
132
|
+
continue;
|
|
133
|
+
const childPath = path ? `${path}.${key}` : key;
|
|
134
|
+
const inA = Object.prototype.hasOwnProperty.call(a, key);
|
|
135
|
+
const inB = Object.prototype.hasOwnProperty.call(b, key);
|
|
136
|
+
if (!inA) {
|
|
137
|
+
checkCircular(b[key], childPath, ctx.visited);
|
|
138
|
+
ctx.changes.push({ path: childPath, op: 'added', from: undefined, to: b[key] });
|
|
139
|
+
}
|
|
140
|
+
else if (!inB) {
|
|
141
|
+
checkCircular(a[key], childPath, ctx.visited);
|
|
142
|
+
ctx.changes.push({ path: childPath, op: 'removed', from: a[key], to: undefined });
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
walk(a[key], b[key], childPath, depth + 1, ctx);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function spotdiff(a, b, options = {}) {
|
|
150
|
+
const ctx = {
|
|
151
|
+
changes: [],
|
|
152
|
+
options: {
|
|
153
|
+
maxDepth: options.maxDepth ?? Infinity,
|
|
154
|
+
ignoreKeys: options.ignoreKeys ?? [],
|
|
155
|
+
arrays: options.arrays ?? 'index',
|
|
156
|
+
},
|
|
157
|
+
visited: new WeakSet(),
|
|
158
|
+
};
|
|
159
|
+
walk(a, b, '', 0, ctx);
|
|
160
|
+
return ctx.changes;
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"humanize.d.ts","sourceRoot":"","sources":["../../src/humanize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAqBzD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,eAAoB,GAAG,MAAM,EAAE,CASnF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.humanize = humanize;
|
|
4
|
+
const templates = {
|
|
5
|
+
en: {
|
|
6
|
+
changed: (path, from, to) => `${path} changed from ${from} to ${to}`,
|
|
7
|
+
added: (path, to) => `${path} was added with value ${to}`,
|
|
8
|
+
removed: (path, from) => `${path} was removed (was ${from})`,
|
|
9
|
+
},
|
|
10
|
+
es: {
|
|
11
|
+
changed: (path, from, to) => `${path} cambió de ${from} a ${to}`,
|
|
12
|
+
added: (path, to) => `${path} fue agregado con valor ${to}`,
|
|
13
|
+
removed: (path, from) => `${path} fue eliminado (era ${from})`,
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
function humanize(changes, options = {}) {
|
|
17
|
+
const lang = options.lang ?? 'en';
|
|
18
|
+
const t = templates[lang] ?? templates['en'];
|
|
19
|
+
return changes.map(({ path, op, from, to }) => {
|
|
20
|
+
if (op === 'changed')
|
|
21
|
+
return t.changed(path, from, to);
|
|
22
|
+
if (op === 'added')
|
|
23
|
+
return t.added(path, to);
|
|
24
|
+
return t.removed(path, from);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=humanize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"humanize.js","sourceRoot":"","sources":["../../src/humanize.ts"],"names":[],"mappings":";;AAqBA,4BASC;AAtBD,MAAM,SAAS,GAA8B;IAC3C,EAAE,EAAE;QACF,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,iBAAiB,IAAI,OAAO,EAAE,EAAE;QACpE,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,yBAAyB,EAAE,EAAE;QACzD,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,qBAAqB,IAAI,GAAG;KAC7D;IACD,EAAE,EAAE;QACF,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,cAAc,IAAI,MAAM,EAAE,EAAE;QAChE,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,2BAA2B,EAAE,EAAE;QAC3D,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,uBAAuB,IAAI,GAAG;KAC/D;CACF,CAAA;AAED,SAAgB,QAAQ,CAAC,OAAiB,EAAE,UAA2B,EAAE;IACvE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAA;IACjC,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAA;IAE5C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;QAC5C,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;QACtD,IAAI,EAAE,KAAK,OAAO;YAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAC5C,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { spotdiff } from './diff.js';
|
|
2
|
+
export { patch, getPath, setPath, deletePath } from './patch.js';
|
|
3
|
+
export { humanize } from './humanize.js';
|
|
4
|
+
export type { Change, Op, SpotdiffOptions, HumanizeOptions, PatchOptions } from './types.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.humanize = exports.deletePath = exports.setPath = exports.getPath = exports.patch = exports.spotdiff = void 0;
|
|
4
|
+
var diff_js_1 = require("./diff.js");
|
|
5
|
+
Object.defineProperty(exports, "spotdiff", { enumerable: true, get: function () { return diff_js_1.spotdiff; } });
|
|
6
|
+
var patch_js_1 = require("./patch.js");
|
|
7
|
+
Object.defineProperty(exports, "patch", { enumerable: true, get: function () { return patch_js_1.patch; } });
|
|
8
|
+
Object.defineProperty(exports, "getPath", { enumerable: true, get: function () { return patch_js_1.getPath; } });
|
|
9
|
+
Object.defineProperty(exports, "setPath", { enumerable: true, get: function () { return patch_js_1.setPath; } });
|
|
10
|
+
Object.defineProperty(exports, "deletePath", { enumerable: true, get: function () { return patch_js_1.deletePath; } });
|
|
11
|
+
var humanize_js_1 = require("./humanize.js");
|
|
12
|
+
Object.defineProperty(exports, "humanize", { enumerable: true, get: function () { return humanize_js_1.humanize; } });
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,qCAAoC;AAA3B,mGAAA,QAAQ,OAAA;AACjB,uCAAgE;AAAvD,iGAAA,KAAK,OAAA;AAAE,mGAAA,OAAO,OAAA;AAAE,mGAAA,OAAO,OAAA;AAAE,sGAAA,UAAU,OAAA;AAC5C,6CAAwC;AAA/B,uGAAA,QAAQ,OAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Change } from './types.js';
|
|
2
|
+
export declare function getPath(obj: unknown, path: string): unknown;
|
|
3
|
+
export declare function setPath(obj: unknown, path: string, value: unknown): void;
|
|
4
|
+
export declare function deletePath(obj: unknown, path: string): void;
|
|
5
|
+
export declare function patch(obj: unknown, changes: Change[], reverse?: boolean): unknown;
|
|
6
|
+
//# sourceMappingURL=patch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patch.d.ts","sourceRoot":"","sources":["../../src/patch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,YAAY,CAAA;AAoCtD,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAY3D;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CA4BxE;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAoB3D;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,UAAQ,GAAG,OAAO,CA2B/E"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPath = getPath;
|
|
4
|
+
exports.setPath = setPath;
|
|
5
|
+
exports.deletePath = deletePath;
|
|
6
|
+
exports.patch = patch;
|
|
7
|
+
function cloneDeep(val) {
|
|
8
|
+
if (val === null || val === undefined)
|
|
9
|
+
return val;
|
|
10
|
+
if (val instanceof Date)
|
|
11
|
+
return new Date(val.getTime());
|
|
12
|
+
if (val instanceof Map)
|
|
13
|
+
return new Map(val);
|
|
14
|
+
if (val instanceof Set)
|
|
15
|
+
return new Set(val);
|
|
16
|
+
if (Array.isArray(val))
|
|
17
|
+
return val.map(cloneDeep);
|
|
18
|
+
if (typeof val === 'object') {
|
|
19
|
+
const out = {};
|
|
20
|
+
for (const key of Object.keys(val)) {
|
|
21
|
+
out[key] = cloneDeep(val[key]);
|
|
22
|
+
}
|
|
23
|
+
return out;
|
|
24
|
+
}
|
|
25
|
+
return val;
|
|
26
|
+
}
|
|
27
|
+
function parsePath(path) {
|
|
28
|
+
const segments = [];
|
|
29
|
+
// Split on dots and brackets
|
|
30
|
+
// e.g. "user.tags[2].name" → ['user', 'tags', '[2]', 'name']
|
|
31
|
+
const regex = /([^.[]+)|\[(\d+)\]/g;
|
|
32
|
+
let match;
|
|
33
|
+
while ((match = regex.exec(path)) !== null) {
|
|
34
|
+
if (match[1] !== undefined) {
|
|
35
|
+
segments.push({ type: 'key', key: match[1] });
|
|
36
|
+
}
|
|
37
|
+
else if (match[2] !== undefined) {
|
|
38
|
+
segments.push({ type: 'index', index: parseInt(match[2], 10) });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return segments;
|
|
42
|
+
}
|
|
43
|
+
function getPath(obj, path) {
|
|
44
|
+
const segments = parsePath(path);
|
|
45
|
+
let cur = obj;
|
|
46
|
+
for (const seg of segments) {
|
|
47
|
+
if (cur === null || cur === undefined)
|
|
48
|
+
return undefined;
|
|
49
|
+
if (seg.type === 'key') {
|
|
50
|
+
cur = cur[seg.key];
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
cur = cur[seg.index];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return cur;
|
|
57
|
+
}
|
|
58
|
+
function setPath(obj, path, value) {
|
|
59
|
+
const segments = parsePath(path);
|
|
60
|
+
let cur = obj;
|
|
61
|
+
for (let i = 0; i < segments.length - 1; i++) {
|
|
62
|
+
const seg = segments[i];
|
|
63
|
+
if (seg.type === 'key') {
|
|
64
|
+
const o = cur;
|
|
65
|
+
if (o[seg.key] === null || o[seg.key] === undefined) {
|
|
66
|
+
const next = segments[i + 1];
|
|
67
|
+
o[seg.key] = next.type === 'index' ? [] : {};
|
|
68
|
+
}
|
|
69
|
+
cur = o[seg.key];
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
const arr = cur;
|
|
73
|
+
if (arr[seg.index] === null || arr[seg.index] === undefined) {
|
|
74
|
+
const next = segments[i + 1];
|
|
75
|
+
arr[seg.index] = next.type === 'index' ? [] : {};
|
|
76
|
+
}
|
|
77
|
+
cur = arr[seg.index];
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const last = segments[segments.length - 1];
|
|
81
|
+
if (last.type === 'key') {
|
|
82
|
+
cur[last.key] = value;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
cur[last.index] = value;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function deletePath(obj, path) {
|
|
89
|
+
const segments = parsePath(path);
|
|
90
|
+
let cur = obj;
|
|
91
|
+
for (let i = 0; i < segments.length - 1; i++) {
|
|
92
|
+
const seg = segments[i];
|
|
93
|
+
if (cur === null || cur === undefined)
|
|
94
|
+
return;
|
|
95
|
+
if (seg.type === 'key') {
|
|
96
|
+
cur = cur[seg.key];
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
cur = cur[seg.index];
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (cur === null || cur === undefined)
|
|
103
|
+
return;
|
|
104
|
+
const last = segments[segments.length - 1];
|
|
105
|
+
if (last.type === 'key') {
|
|
106
|
+
delete cur[last.key];
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
cur.splice(last.index, 1);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function patch(obj, changes, reverse = false) {
|
|
113
|
+
const cloned = cloneDeep(obj);
|
|
114
|
+
for (const change of changes) {
|
|
115
|
+
const { path, op, from, to } = change;
|
|
116
|
+
if (reverse) {
|
|
117
|
+
// Invert: added→remove, removed→add, changed→swap from/to
|
|
118
|
+
if (op === 'added') {
|
|
119
|
+
deletePath(cloned, path);
|
|
120
|
+
}
|
|
121
|
+
else if (op === 'removed') {
|
|
122
|
+
setPath(cloned, path, from);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
setPath(cloned, path, from);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
if (op === 'added') {
|
|
130
|
+
setPath(cloned, path, to);
|
|
131
|
+
}
|
|
132
|
+
else if (op === 'removed') {
|
|
133
|
+
deletePath(cloned, path);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
setPath(cloned, path, to);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return cloned;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=patch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patch.js","sourceRoot":"","sources":["../../src/patch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type Op = 'added' | 'removed' | 'changed';
|
|
2
|
+
export interface Change {
|
|
3
|
+
path: string;
|
|
4
|
+
op: Op;
|
|
5
|
+
from: unknown;
|
|
6
|
+
to: unknown;
|
|
7
|
+
}
|
|
8
|
+
export interface SpotdiffOptions {
|
|
9
|
+
maxDepth?: number;
|
|
10
|
+
ignoreKeys?: string[];
|
|
11
|
+
arrays?: 'index' | 'smart';
|
|
12
|
+
}
|
|
13
|
+
export interface HumanizeOptions {
|
|
14
|
+
lang?: 'en' | 'es';
|
|
15
|
+
}
|
|
16
|
+
export interface PatchOptions {
|
|
17
|
+
reverse?: boolean;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,EAAE,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAA;AAEhD,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,EAAE,CAAA;IACN,IAAI,EAAE,OAAO,CAAA;IACb,EAAE,EAAE,OAAO,CAAA;CACZ;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Op } from './types.js';
|
|
2
|
+
export declare function isObject(val: unknown): val is Record<string, unknown>;
|
|
3
|
+
export declare function isPrimitive(val: unknown): boolean;
|
|
4
|
+
export declare function invertOp(op: Op): Op;
|
|
5
|
+
export declare function normalizePath(path: string): string;
|
|
6
|
+
export declare function areEqual(a: unknown, b: unknown): boolean;
|
|
7
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,YAAY,CAAA;AAEpC,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAErE;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAKjD;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAInC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAGxD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isObject = isObject;
|
|
4
|
+
exports.isPrimitive = isPrimitive;
|
|
5
|
+
exports.invertOp = invertOp;
|
|
6
|
+
exports.normalizePath = normalizePath;
|
|
7
|
+
exports.areEqual = areEqual;
|
|
8
|
+
function isObject(val) {
|
|
9
|
+
return val !== null && typeof val === 'object' && !(val instanceof Date) && !Array.isArray(val);
|
|
10
|
+
}
|
|
11
|
+
function isPrimitive(val) {
|
|
12
|
+
if (val === null || val === undefined)
|
|
13
|
+
return true;
|
|
14
|
+
if (val instanceof Date)
|
|
15
|
+
return true;
|
|
16
|
+
const t = typeof val;
|
|
17
|
+
return t === 'string' || t === 'number' || t === 'boolean' || t === 'bigint' || t === 'symbol';
|
|
18
|
+
}
|
|
19
|
+
function invertOp(op) {
|
|
20
|
+
if (op === 'added')
|
|
21
|
+
return 'removed';
|
|
22
|
+
if (op === 'removed')
|
|
23
|
+
return 'added';
|
|
24
|
+
return 'changed';
|
|
25
|
+
}
|
|
26
|
+
function normalizePath(path) {
|
|
27
|
+
return path;
|
|
28
|
+
}
|
|
29
|
+
function areEqual(a, b) {
|
|
30
|
+
if (a instanceof Date && b instanceof Date)
|
|
31
|
+
return a.getTime() === b.getTime();
|
|
32
|
+
return Object.is(a, b);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;AAEA,4BAEC;AAED,kCAKC;AAED,4BAIC;AAED,sCAEC;AAED,4BAGC;AAxBD,SAAgB,QAAQ,CAAC,GAAY;IACnC,OAAO,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AACjG,CAAC;AAED,SAAgB,WAAW,CAAC,GAAY;IACtC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IAClD,IAAI,GAAG,YAAY,IAAI;QAAE,OAAO,IAAI,CAAA;IACpC,MAAM,CAAC,GAAG,OAAO,GAAG,CAAA;IACpB,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,QAAQ,CAAA;AAChG,CAAC;AAED,SAAgB,QAAQ,CAAC,EAAM;IAC7B,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,SAAS,CAAA;IACpC,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,OAAO,CAAA;IACpC,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAgB,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAgB,QAAQ,CAAC,CAAU,EAAE,CAAU;IAC7C,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI;QAAE,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAA;IAC9E,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAyMzD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,GAAE,eAAoB,GAAG,MAAM,EAAE,CAaxF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"humanize.d.ts","sourceRoot":"","sources":["../../src/humanize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAqBzD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,eAAoB,GAAG,MAAM,EAAE,CASnF"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { spotdiff } from './diff.js';
|
|
2
|
+
export { patch, getPath, setPath, deletePath } from './patch.js';
|
|
3
|
+
export { humanize } from './humanize.js';
|
|
4
|
+
export type { Change, Op, SpotdiffOptions, HumanizeOptions, PatchOptions } from './types.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Change } from './types.js';
|
|
2
|
+
export declare function getPath(obj: unknown, path: string): unknown;
|
|
3
|
+
export declare function setPath(obj: unknown, path: string, value: unknown): void;
|
|
4
|
+
export declare function deletePath(obj: unknown, path: string): void;
|
|
5
|
+
export declare function patch(obj: unknown, changes: Change[], reverse?: boolean): unknown;
|
|
6
|
+
//# sourceMappingURL=patch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patch.d.ts","sourceRoot":"","sources":["../../src/patch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,YAAY,CAAA;AAoCtD,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAY3D;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CA4BxE;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAoB3D;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,UAAQ,GAAG,OAAO,CA2B/E"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type Op = 'added' | 'removed' | 'changed';
|
|
2
|
+
export interface Change {
|
|
3
|
+
path: string;
|
|
4
|
+
op: Op;
|
|
5
|
+
from: unknown;
|
|
6
|
+
to: unknown;
|
|
7
|
+
}
|
|
8
|
+
export interface SpotdiffOptions {
|
|
9
|
+
maxDepth?: number;
|
|
10
|
+
ignoreKeys?: string[];
|
|
11
|
+
arrays?: 'index' | 'smart';
|
|
12
|
+
}
|
|
13
|
+
export interface HumanizeOptions {
|
|
14
|
+
lang?: 'en' | 'es';
|
|
15
|
+
}
|
|
16
|
+
export interface PatchOptions {
|
|
17
|
+
reverse?: boolean;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,EAAE,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAA;AAEhD,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,EAAE,CAAA;IACN,IAAI,EAAE,OAAO,CAAA;IACb,EAAE,EAAE,OAAO,CAAA;CACZ;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Op } from './types.js';
|
|
2
|
+
export declare function isObject(val: unknown): val is Record<string, unknown>;
|
|
3
|
+
export declare function isPrimitive(val: unknown): boolean;
|
|
4
|
+
export declare function invertOp(op: Op): Op;
|
|
5
|
+
export declare function normalizePath(path: string): string;
|
|
6
|
+
export declare function areEqual(a: unknown, b: unknown): boolean;
|
|
7
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,YAAY,CAAA;AAEpC,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAErE;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAKjD;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAInC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAGxD"}
|