@stamhoofd/object-differ 2.80.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.
@@ -0,0 +1,410 @@
1
+ import { ArrayDecoder, AutoEncoder, EnumDecoder, getOptionalId, isPatchMap, SymbolDecoder } from '@simonbackx/simple-encoding';
2
+ import { AuditLogPatchItem, AuditLogPatchItemType, AuditLogReplacement, AuditLogReplacementType, Version } from '@stamhoofd/structures';
3
+ import { DataValidator, Formatter } from '@stamhoofd/utility';
4
+ function diffEnum(oldValue, value, key) {
5
+ if (oldValue === value) {
6
+ return [];
7
+ }
8
+ if (value === undefined) {
9
+ // Not altered
10
+ return [];
11
+ }
12
+ return [
13
+ AuditLogPatchItem.create({
14
+ key,
15
+ oldValue: typeof oldValue === 'string' ? AuditLogReplacement.key(oldValue) : undefined,
16
+ value: typeof value === 'string' ? AuditLogReplacement.key(value) : undefined,
17
+ }).autoType(),
18
+ ];
19
+ }
20
+ function diffDate(oldValue, value, key) {
21
+ if (!(oldValue instanceof Date) && oldValue !== null) {
22
+ return [];
23
+ }
24
+ if ((!(value instanceof Date)) && value !== null) {
25
+ return [];
26
+ }
27
+ if ((oldValue === null || oldValue === void 0 ? void 0 : oldValue.getTime()) === (value === null || value === void 0 ? void 0 : value.getTime())) {
28
+ return [];
29
+ }
30
+ let dno = oldValue ? Formatter.dateNumber(oldValue, true) : undefined;
31
+ let dn = value ? Formatter.dateNumber(value, true) : undefined;
32
+ if (dno && dn && (dno === dn || (Formatter.time(oldValue) !== Formatter.time(value))) && (key === null || key === void 0 ? void 0 : key.toKey()) !== 'birthDay') {
33
+ // Add time
34
+ dno += ' ' + Formatter.time(oldValue);
35
+ dn += ' ' + Formatter.time(value);
36
+ }
37
+ return [
38
+ AuditLogPatchItem.create({
39
+ key,
40
+ oldValue: dno ? AuditLogReplacement.string(dno) : undefined,
41
+ value: dn ? AuditLogReplacement.string(dn) : undefined,
42
+ }).autoType(),
43
+ ];
44
+ }
45
+ function getDiffKey(autoEncoder) {
46
+ if (typeof autoEncoder === 'string') {
47
+ if (DataValidator.isUuid(autoEncoder)) {
48
+ return AuditLogReplacement.uuid(autoEncoder);
49
+ }
50
+ return AuditLogReplacement.key(autoEncoder);
51
+ }
52
+ return undefined;
53
+ }
54
+ /**
55
+ * For arrays or maps, use this name instead of the index/key to identify an object
56
+ */
57
+ function getDiffName(autoEncoder) {
58
+ if (typeof autoEncoder === 'string') {
59
+ if (DataValidator.isUuid(autoEncoder)) {
60
+ return AuditLogReplacement.uuid(autoEncoder);
61
+ }
62
+ return AuditLogReplacement.string(autoEncoder);
63
+ }
64
+ if (typeof autoEncoder === 'object' && autoEncoder !== null && 'getDiffName' in autoEncoder && typeof autoEncoder.getDiffName === 'function') {
65
+ const name = autoEncoder.getDiffName();
66
+ if (typeof name === 'string') {
67
+ return name ? AuditLogReplacement.string(name) : AuditLogReplacement.key('untitled');
68
+ }
69
+ if (name instanceof AuditLogReplacement) {
70
+ return name;
71
+ }
72
+ }
73
+ if (typeof autoEncoder === 'object' && autoEncoder !== null && 'name' in autoEncoder && typeof autoEncoder.name === 'string') {
74
+ return autoEncoder.name ? AuditLogReplacement.string(autoEncoder.name) : AuditLogReplacement.key('untitled');
75
+ }
76
+ return null;
77
+ }
78
+ function getDiffPutValue(autoEncoder, key) {
79
+ if (typeof autoEncoder === 'object' && autoEncoder !== null && 'getDiffPutName' in autoEncoder && typeof autoEncoder.getDiffPutName === 'function') {
80
+ const name = autoEncoder.getDiffPutName();
81
+ if (typeof name === 'string') {
82
+ return AuditLogReplacement.string(name);
83
+ }
84
+ if (name instanceof AuditLogReplacement) {
85
+ return name;
86
+ }
87
+ }
88
+ return getDiffValue(autoEncoder, key);
89
+ }
90
+ function getDiffValue(autoEncoder, key) {
91
+ if (typeof autoEncoder === 'string') {
92
+ if (DataValidator.isUuid(autoEncoder)) {
93
+ return AuditLogReplacement.uuid(autoEncoder);
94
+ }
95
+ // Is html
96
+ if (autoEncoder.startsWith('<!DOCTYPE html>')) {
97
+ return AuditLogReplacement.html(autoEncoder);
98
+ }
99
+ if (key && (key === null || key === void 0 ? void 0 : key.lastValue()) === 'status') {
100
+ // Will be an enum
101
+ return AuditLogReplacement.key(autoEncoder);
102
+ }
103
+ return AuditLogReplacement.string(autoEncoder);
104
+ }
105
+ if (typeof autoEncoder === 'symbol') {
106
+ const name = Symbol.keyFor(autoEncoder);
107
+ if (name) {
108
+ return AuditLogReplacement.key(name);
109
+ }
110
+ return AuditLogReplacement.key('unknown');
111
+ }
112
+ if (typeof autoEncoder === 'number') {
113
+ const k = key === null || key === void 0 ? void 0 : key.lastValue();
114
+ if (k && (k.toLowerCase().includes('price') || k.toLowerCase().includes('fee'))) {
115
+ return AuditLogReplacement.string(Formatter.price(autoEncoder));
116
+ }
117
+ return AuditLogReplacement.string(Formatter.integer(autoEncoder));
118
+ }
119
+ if (autoEncoder instanceof Date) {
120
+ return AuditLogReplacement.string(Formatter.dateTime(autoEncoder, true, true));
121
+ }
122
+ if (autoEncoder === true) {
123
+ return AuditLogReplacement.key('on');
124
+ }
125
+ if (autoEncoder === false) {
126
+ return AuditLogReplacement.key('off');
127
+ }
128
+ if (typeof autoEncoder === 'object' && autoEncoder !== null && 'getDiffValue' in autoEncoder && typeof autoEncoder.getDiffValue === 'function') {
129
+ const name = autoEncoder.getDiffValue();
130
+ if (typeof name === 'string') {
131
+ return AuditLogReplacement.string(name);
132
+ }
133
+ if (name instanceof AuditLogReplacement) {
134
+ return name;
135
+ }
136
+ }
137
+ return null;
138
+ }
139
+ function findOriginalById(id, oldArray) {
140
+ return id ? oldArray.find(v => getId(v) === id) : null;
141
+ }
142
+ function findOriginalIndexById(id, oldArray) {
143
+ return id ? oldArray.findIndex(v => getId(v) === id) : -1;
144
+ }
145
+ function getId(object) {
146
+ const id = getOptionalId(object);
147
+ if (typeof id !== 'string' && typeof id !== 'number') {
148
+ if (object instanceof AutoEncoder) {
149
+ const encoded = object.encode({ version: Version });
150
+ return JSON.stringify(encoded);
151
+ }
152
+ return JSON.stringify(object);
153
+ }
154
+ return id;
155
+ }
156
+ function findOriginal(put, oldArray) {
157
+ return findOriginalById(getId(put), oldArray);
158
+ }
159
+ function findIndex(put, oldArray) {
160
+ return findOriginalIndexById(getId(put), oldArray);
161
+ }
162
+ function diffArray(oldValue, value, key) {
163
+ if (!Array.isArray(oldValue) || !Array.isArray(value)) {
164
+ // Not supported
165
+ return [];
166
+ }
167
+ const items = [];
168
+ // Search for puts
169
+ let orderChanged = false;
170
+ let added = 0;
171
+ for (const [index, newItem] of value.entries()) {
172
+ const originalIndex = findIndex(newItem, oldValue);
173
+ if (originalIndex === -1) {
174
+ // Has been added
175
+ items.push(...diffUnknown(null, newItem, (getDiffName(newItem) || AuditLogReplacement.key('item')).prepend(key)));
176
+ added++;
177
+ }
178
+ else {
179
+ // Has been overwritten
180
+ const original = oldValue[originalIndex];
181
+ items.push(...diffUnknown(original, newItem, (getDiffName(original) || getDiffName(newItem) || AuditLogReplacement.key('item')).prepend(key)));
182
+ if ((index - added) !== originalIndex) {
183
+ // Order has changed
184
+ orderChanged = true;
185
+ }
186
+ }
187
+ }
188
+ // Search for deletes
189
+ for (const original of oldValue) {
190
+ const newItem = findOriginal(original, value);
191
+ if (!newItem) {
192
+ // Has been deleted
193
+ items.push(...diffUnknown(original, null, (getDiffName(original) || AuditLogReplacement.key('item')).prepend(key)));
194
+ orderChanged = false; // ignore order changed as delete will have set it to true
195
+ }
196
+ }
197
+ if (orderChanged) {
198
+ // Check if order has changed
199
+ items.push(AuditLogPatchItem.create({
200
+ key,
201
+ type: AuditLogPatchItemType.Reordered,
202
+ }));
203
+ }
204
+ // Not supported
205
+ return items;
206
+ }
207
+ ;
208
+ function diffMap(oldValue, value, key) {
209
+ if (!(value instanceof Map)) {
210
+ // Not supported
211
+ return [];
212
+ }
213
+ if (!(oldValue instanceof Map) && oldValue !== undefined && oldValue !== null) {
214
+ // Not supported
215
+ return [];
216
+ }
217
+ const items = [];
218
+ const isPatch = isPatchMap(value);
219
+ for (const [k, v] of value.entries()) {
220
+ if (typeof k !== 'string') {
221
+ // Not supported
222
+ continue;
223
+ }
224
+ const original = oldValue === null || oldValue === void 0 ? void 0 : oldValue.get(k);
225
+ if (v === null && isPatch) {
226
+ // Delete
227
+ if (original) {
228
+ items.push(...diffUnknown(original, null, (getDiffName(original) || getDiffKey(k)).prepend(key)));
229
+ }
230
+ continue;
231
+ }
232
+ // Changed
233
+ items.push(...diffUnknown(original, v, (getDiffName(original) || getDiffName(v) || getDiffKey(k)).prepend(key)));
234
+ }
235
+ if (!isPatch && oldValue) {
236
+ // Loop old values
237
+ for (const [k, v] of oldValue.entries()) {
238
+ if (typeof k !== 'string') {
239
+ // Not supported
240
+ continue;
241
+ }
242
+ if (value.has(k)) {
243
+ continue;
244
+ }
245
+ items.push(...diffUnknown(v, null, (getDiffName(v) || getDiffKey(k)).prepend(key)));
246
+ }
247
+ }
248
+ return items;
249
+ }
250
+ export function transformValueForDiff(value) {
251
+ if (typeof value === 'object' && value !== null && 'transformForDiff' in value && typeof value.transformForDiff === 'function') {
252
+ return value.transformForDiff();
253
+ }
254
+ return value;
255
+ }
256
+ function diffUnknown(oldValue, value, key) {
257
+ oldValue = transformValueForDiff(oldValue);
258
+ value = transformValueForDiff(value);
259
+ if (oldValue === value) {
260
+ return [];
261
+ }
262
+ if ((oldValue === null || oldValue === undefined) && (value === null || value === undefined)) {
263
+ // Both removed
264
+ return [];
265
+ }
266
+ if (Array.isArray(oldValue) && Array.isArray(value)) {
267
+ return diffArray(oldValue, value, key);
268
+ }
269
+ if (value instanceof Map && (oldValue instanceof Map || oldValue === null || oldValue === undefined)) {
270
+ return diffMap(oldValue, value, key);
271
+ }
272
+ if ((value instanceof Date || value === null) && (oldValue instanceof Date || oldValue === null) && (oldValue !== null || value !== null)) {
273
+ return diffDate(oldValue, value, key);
274
+ }
275
+ if ((oldValue === null || oldValue === undefined) && (value !== null && value !== undefined)) {
276
+ // Simplify addition
277
+ return [
278
+ AuditLogPatchItem.create({
279
+ key,
280
+ value: getDiffPutValue(value, key) || undefined,
281
+ type: AuditLogPatchItemType.Added,
282
+ }),
283
+ ];
284
+ }
285
+ if ((oldValue !== null && oldValue !== undefined) && (value === null || value === undefined)) {
286
+ return [
287
+ AuditLogPatchItem.create({
288
+ key,
289
+ oldValue: getDiffPutValue(oldValue, key) || undefined,
290
+ type: AuditLogPatchItemType.Removed,
291
+ }),
292
+ ];
293
+ }
294
+ const items = diffObject(oldValue, value, key);
295
+ let v = getDiffValue(value, key);
296
+ let ov = getDiffValue(oldValue, key);
297
+ if (oldValue !== undefined && oldValue !== null && value !== undefined && value !== null && getDiffValue(value, key) && items.length === 0 && value instanceof AutoEncoder && value.isPatch()) {
298
+ return [
299
+ AuditLogPatchItem.create({
300
+ key,
301
+ value: v || undefined,
302
+ oldValue: ov || undefined,
303
+ type: AuditLogPatchItemType.Changed,
304
+ }),
305
+ ];
306
+ }
307
+ if (v && ov) {
308
+ // Simplify change
309
+ if (v.toKey() === ov.toKey()) {
310
+ v = null;
311
+ ov = null;
312
+ // if (items.length === 0) {
313
+ // Probably no change
314
+ return [];
315
+ // }
316
+ }
317
+ return [
318
+ AuditLogPatchItem.create({
319
+ key,
320
+ value: v || undefined,
321
+ oldValue: ov || undefined,
322
+ type: AuditLogPatchItemType.Changed,
323
+ }),
324
+ ];
325
+ }
326
+ return items;
327
+ }
328
+ ;
329
+ /**
330
+ * Uses the autoencoder type information to provide a better change handler
331
+ */
332
+ function diffField(field, oldValue, value, key) {
333
+ if (field.decoder instanceof EnumDecoder) {
334
+ return diffEnum(oldValue, value, key);
335
+ }
336
+ if (field.decoder instanceof SymbolDecoder) {
337
+ if (field.decoder.decoder instanceof EnumDecoder) {
338
+ return diffEnum(oldValue, value, key);
339
+ ;
340
+ }
341
+ }
342
+ if (field.decoder instanceof ArrayDecoder) {
343
+ if (field.decoder.decoder instanceof EnumDecoder) {
344
+ // Map values to keys
345
+ const items = diffArray(oldValue, value, key);
346
+ for (const item of items) {
347
+ if (item.oldValue && !item.oldValue.type) {
348
+ item.oldValue.type = AuditLogReplacementType.Key;
349
+ }
350
+ if (item.value && !item.value.type) {
351
+ item.value.type = AuditLogReplacementType.Key;
352
+ }
353
+ // If item.key is an array that ends with a 'value', also change it
354
+ if (item.key.type === AuditLogReplacementType.Array) {
355
+ const lastKeyItem = item.key.values[item.key.values.length - 1];
356
+ if (!lastKeyItem.type) {
357
+ lastKeyItem.type = AuditLogReplacementType.Key;
358
+ }
359
+ }
360
+ else {
361
+ if (!item.key.type) {
362
+ item.key.type = AuditLogReplacementType.Key;
363
+ }
364
+ }
365
+ }
366
+ return items;
367
+ }
368
+ return diffArray(oldValue, value, key);
369
+ }
370
+ return diffUnknown(oldValue, value, key);
371
+ }
372
+ function diffObject(original, patch, rootKey) {
373
+ var _a;
374
+ if (typeof patch !== 'object' || patch === null) {
375
+ return [];
376
+ }
377
+ if (original && typeof original !== 'object') {
378
+ return [];
379
+ }
380
+ const items = [];
381
+ for (const key in patch) {
382
+ if (key === 'id') {
383
+ continue;
384
+ }
385
+ const oldValue = (_a = original === null || original === void 0 ? void 0 : original[key]) !== null && _a !== void 0 ? _a : null;
386
+ const value = patch[key];
387
+ if (!(patch instanceof AutoEncoder) && !(oldValue instanceof AutoEncoder)) {
388
+ // try manual without type information
389
+ items.push(...diffUnknown(oldValue, value, getDiffKey(key).prepend(rootKey)));
390
+ continue;
391
+ }
392
+ const field = original instanceof AutoEncoder
393
+ ? original.static.latestFields.find(f => f.property === key)
394
+ : (patch instanceof AutoEncoder
395
+ ? patch.static.latestFields.find(f => f.property === key)
396
+ : null);
397
+ if (!field) {
398
+ // Ignore: probably an internal field
399
+ continue;
400
+ }
401
+ items.push(...diffField(field, oldValue, value, getDiffKey(key).prepend(rootKey)));
402
+ }
403
+ return items;
404
+ }
405
+ export class ObjectDiffer {
406
+ static diff(oldValue, value, key) {
407
+ return diffUnknown(oldValue, value, key);
408
+ }
409
+ }
410
+ //# sourceMappingURL=ObjectDiffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectDiffer.js","sourceRoot":"","sources":["../../../src/ObjectDiffer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const _default: () => Promise<void>;
2
+ export default _default;
3
+ //# sourceMappingURL=jest.global.setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.global.setup.d.ts","sourceRoot":"","sources":["../../../tests/jest.global.setup.ts"],"names":[],"mappings":";AAEA,wBAEE"}
@@ -0,0 +1,5 @@
1
+ import { TestUtils } from '@stamhoofd/test-utils';
2
+ export default async () => {
3
+ await TestUtils.globalSetup();
4
+ };
5
+ //# sourceMappingURL=jest.global.setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.global.setup.js","sourceRoot":"","sources":["../../../tests/jest.global.setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,eAAe,KAAK,IAAI,EAAE;IACtB,MAAM,SAAS,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jest.setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.setup.d.ts","sourceRoot":"","sources":["../../../tests/jest.setup.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import { TestUtils } from '@stamhoofd/test-utils';
2
+ TestUtils.setup();
3
+ //# sourceMappingURL=jest.setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.setup.js","sourceRoot":"","sources":["../../../tests/jest.setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,SAAS,CAAC,KAAK,EAAE,CAAC"}
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@stamhoofd/object-differ",
3
+ "version": "2.80.0",
4
+ "main": "./dist/index.js",
5
+ "module": "./esm/dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./esm/dist/index.js",
10
+ "require": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ }
13
+ },
14
+ "license": "UNLICENCED",
15
+ "sideEffects": [],
16
+ "files": [
17
+ "dist",
18
+ "esm/dist",
19
+ "esm/dist/package.json"
20
+ ],
21
+ "scripts": {
22
+ "build": "yarn -s build-cjs && yarn -s build-esm",
23
+ "build-cjs": "tsc -p . --declaration",
24
+ "build-esm": "cd esm && tsc -p . --declaration",
25
+ "test": "jest",
26
+ "lint": "eslint"
27
+ },
28
+ "devDependencies": {
29
+ "@types/uuid": "^8.3.0",
30
+ "uuid": "11.0.3"
31
+ },
32
+ "peerDependencies": {
33
+ "uuid": "11.0.3"
34
+ },
35
+ "publishConfig": {
36
+ "access": "public"
37
+ },
38
+ "gitHead": "252faf1dbd8ebdd8469810e9c51e510d93f21fc2"
39
+ }