react-deepwatch 1.6.3 → 1.7.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/Util.ts CHANGED
@@ -197,6 +197,18 @@ function diagnosis_jsonPath(key: unknown) {
197
197
  return `.${key}`;
198
198
  }
199
199
 
200
+ type VisitReplaceOptions = {
201
+ /**
202
+ * whether to pass on the context object. This hurts performance because the path is concatted every time, so use it only when needed. Setting this to "onError" re-executes the visitprelace with trackPath when an error was thrown
203
+ */
204
+ trackPath?: boolean | "onError",
205
+
206
+ /**
207
+ * Keep the order of sets and maps when replacing elements. Default: false
208
+ */
209
+ keepOrder?: boolean
210
+ }
211
+
200
212
  /**
201
213
  * Usage:
202
214
  * <pre><code>
@@ -207,9 +219,8 @@ function diagnosis_jsonPath(key: unknown) {
207
219
  *
208
220
  * @param value
209
221
  * @param visitor
210
- * @param trackPath whether to pass on the context object. This hurts performance because the path is concatted every time, so use it only when needed. Setting this to "onError" re-executes the visitprelace with the concetxt when an error was thrown
211
222
  */
212
- export function visitReplace<O>(value: O, visitor: (value: unknown, visitChilds: (value: unknown, context: VisitReplaceContext) => unknown, context: VisitReplaceContext) => unknown , trackPath: boolean | "onError" = false): O {
223
+ export function visitReplace<O extends object>(value: O, visitor: (value: unknown, visitChilds: (value: unknown, context: VisitReplaceContext) => unknown, context: VisitReplaceContext) => unknown , options: VisitReplaceOptions= {}): O {
213
224
  const visisitedObjects = new Set<object>()
214
225
 
215
226
  function visitChilds(value: unknown, context: VisitReplaceContext) {
@@ -218,34 +229,99 @@ export function visitReplace<O>(value: O, visitor: (value: unknown, visitChilds:
218
229
  }
219
230
  else if(typeof value === "object") {
220
231
  const obj = value as object;
221
- if(visisitedObjects.has(obj)) {
232
+ if (visisitedObjects.has(obj)) {
222
233
  return value; // don't iterate again
223
234
  }
224
235
  visisitedObjects.add(obj);
225
236
 
226
- for (let k in obj) {
227
- const keyInParent = k as keyof object;
228
- const childValue = obj[keyInParent];
229
- let newValue = visitor(childValue, visitChilds, {...context, parentObject: value, key: keyInParent, diagnosis_path: (context.diagnosis_path !== undefined?`${context.diagnosis_path!}${diagnosis_jsonPath(keyInParent)}`:undefined)});
230
- if(newValue !== childValue) { // Only if childValue really has changed. We don't want to interfer with setting a readonly property and trigger a proxy
231
- // @ts-ignore
232
- obj[keyInParent] = newValue;
237
+ if (value instanceof Set) {
238
+ let set = obj as Set<unknown>;
239
+ if (options.keepOrder) {
240
+ throw new Error("Keep order not yet implemented");
241
+ }
242
+ for (const childValue of [...set.values()]) {
243
+ let newValue = visitor(childValue, visitChilds, {
244
+ ...context,
245
+ parentObject: value,
246
+ key: childValue,
247
+ diagnosis_path: (context.diagnosis_path !== undefined ? context.diagnosis_path! : undefined)
248
+ });
249
+
250
+ if (newValue !== childValue) { // Only if childValue really has changed. We don't want to interfer with setting a readonly property and trigger a proxy
251
+ // Replace:
252
+ set.delete(childValue); set.add(newValue);
253
+ }
254
+ }
255
+
256
+ }
257
+ else if (value instanceof Map) {
258
+ let map = obj as Map<unknown, unknown>;
259
+ if (options.keepOrder) {
260
+ throw new Error("Keep order not yet implemented");
261
+ }
262
+
263
+ // Keys:
264
+ for (const key of [...map.keys()]) {
265
+ let newKey = visitor(key, visitChilds, {
266
+ ...context,
267
+ parentObject: value,
268
+ key: key,
269
+ diagnosis_path: (context.diagnosis_path !== undefined ? `${context.diagnosis_path!}${diagnosis_jsonPath(key)}` : undefined)
270
+ });
271
+
272
+ if (newKey !== key) { // Only if key really has changed. We don't want to interfer with setting a readonly property and trigger a proxy
273
+ // Replace key:
274
+ let value = map.get(key);
275
+ map.delete(key);
276
+ map.set(newKey, value);
277
+ }
278
+ }
279
+
280
+ // Values:
281
+ for (const [key, childValue] of [...map.entries()]) {
282
+ let newValue = visitor(childValue, visitChilds, {
283
+ ...context,
284
+ parentObject: value,
285
+ key: key,
286
+ diagnosis_path: (context.diagnosis_path !== undefined ? `${context.diagnosis_path!}${diagnosis_jsonPath(key)}` : undefined)
287
+ });
288
+
289
+ if (newValue !== childValue) { // Only if childValue really has changed. We don't want to interfer with setting a readonly property and trigger a proxy
290
+ map.set(key, newValue);
291
+ }
292
+ }
293
+
294
+ }
295
+ else {
296
+ for (let k in obj) {
297
+ const keyInParent = k as keyof object;
298
+ const childValue = obj[keyInParent];
299
+ let newValue = visitor(childValue, visitChilds, {
300
+ ...context,
301
+ parentObject: value,
302
+ key: keyInParent,
303
+ diagnosis_path: (context.diagnosis_path !== undefined ? `${context.diagnosis_path!}${diagnosis_jsonPath(keyInParent)}` : undefined)
304
+ });
305
+ if (newValue !== childValue) { // Only if childValue really has changed. We don't want to interfer with setting a readonly property and trigger a proxy
306
+ // @ts-ignore
307
+ obj[keyInParent] = newValue;
308
+ }
233
309
  }
234
310
  }
235
311
  }
236
312
  return value;
237
313
  }
238
314
 
239
- if(trackPath === "onError") {
315
+ if(options.trackPath === "onError") {
240
316
  try {
241
317
  return visitor(value, visitChilds, {}) as O; // Fast try without context
242
318
  }
243
319
  catch (e) {
244
- return visitReplace(value, visitor, true); // Try again with context
320
+ return visitReplace(value, visitor, {...options, trackPath: true}); // Try again with context
245
321
  }
246
322
  }
247
323
 
248
- return visitor(value, visitChilds,{diagnosis_path: trackPath?"":undefined}) as O;
324
+ return visitor(value, visitChilds,{diagnosis_path: options.trackPath?"":undefined}) as O;
249
325
  }
250
326
 
251
327
  /**
@@ -65,6 +65,16 @@ type VisitReplaceContext = {
65
65
  parentObject?: object;
66
66
  key?: unknown;
67
67
  };
68
+ type VisitReplaceOptions = {
69
+ /**
70
+ * whether to pass on the context object. This hurts performance because the path is concatted every time, so use it only when needed. Setting this to "onError" re-executes the visitprelace with trackPath when an error was thrown
71
+ */
72
+ trackPath?: boolean | "onError";
73
+ /**
74
+ * Keep the order of sets and maps when replacing elements. Default: false
75
+ */
76
+ keepOrder?: boolean;
77
+ };
68
78
  /**
69
79
  * Usage:
70
80
  * <pre><code>
@@ -75,9 +85,8 @@ type VisitReplaceContext = {
75
85
  *
76
86
  * @param value
77
87
  * @param visitor
78
- * @param trackPath whether to pass on the context object. This hurts performance because the path is concatted every time, so use it only when needed. Setting this to "onError" re-executes the visitprelace with the concetxt when an error was thrown
79
88
  */
80
- export declare function visitReplace<O>(value: O, visitor: (value: unknown, visitChilds: (value: unknown, context: VisitReplaceContext) => unknown, context: VisitReplaceContext) => unknown, trackPath?: boolean | "onError"): O;
89
+ export declare function visitReplace<O extends object>(value: O, visitor: (value: unknown, visitChilds: (value: unknown, context: VisitReplaceContext) => unknown, context: VisitReplaceContext) => unknown, options?: VisitReplaceOptions): O;
81
90
  /**
82
91
  * Just do something the runtime can't optimize away
83
92
  * @param value
@@ -1 +1 @@
1
- {"version":3,"file":"Util.d.ts","sourceRoot":"","sources":["../../Util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Util.d.ts","sourceRoot":"","sources":["../../Util.ts"],"names":[],"mappings":"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"}
@@ -176,9 +176,8 @@ function diagnosis_jsonPath(key) {
176
176
  *
177
177
  * @param value
178
178
  * @param visitor
179
- * @param trackPath whether to pass on the context object. This hurts performance because the path is concatted every time, so use it only when needed. Setting this to "onError" re-executes the visitprelace with the concetxt when an error was thrown
180
179
  */
181
- export function visitReplace(value, visitor, trackPath = false) {
180
+ export function visitReplace(value, visitor, options = {}) {
182
181
  const visisitedObjects = new Set();
183
182
  function visitChilds(value, context) {
184
183
  if (value === null) {
@@ -190,27 +189,66 @@ export function visitReplace(value, visitor, trackPath = false) {
190
189
  return value; // don't iterate again
191
190
  }
192
191
  visisitedObjects.add(obj);
193
- for (let k in obj) {
194
- const keyInParent = k;
195
- const childValue = obj[keyInParent];
196
- let newValue = visitor(childValue, visitChilds, Object.assign(Object.assign({}, context), { parentObject: value, key: keyInParent, diagnosis_path: (context.diagnosis_path !== undefined ? `${context.diagnosis_path}${diagnosis_jsonPath(keyInParent)}` : undefined) }));
197
- if (newValue !== childValue) { // Only if childValue really has changed. We don't want to interfer with setting a readonly property and trigger a proxy
198
- // @ts-ignore
199
- obj[keyInParent] = newValue;
192
+ if (value instanceof Set) {
193
+ let set = obj;
194
+ if (options.keepOrder) {
195
+ throw new Error("Keep order not yet implemented");
196
+ }
197
+ for (const childValue of [...set.values()]) {
198
+ let newValue = visitor(childValue, visitChilds, Object.assign(Object.assign({}, context), { parentObject: value, key: childValue, diagnosis_path: (context.diagnosis_path !== undefined ? context.diagnosis_path : undefined) }));
199
+ if (newValue !== childValue) { // Only if childValue really has changed. We don't want to interfer with setting a readonly property and trigger a proxy
200
+ // Replace:
201
+ set.delete(childValue);
202
+ set.add(newValue);
203
+ }
204
+ }
205
+ }
206
+ else if (value instanceof Map) {
207
+ let map = obj;
208
+ if (options.keepOrder) {
209
+ throw new Error("Keep order not yet implemented");
210
+ }
211
+ // Keys:
212
+ for (const key of [...map.keys()]) {
213
+ let newKey = visitor(key, visitChilds, Object.assign(Object.assign({}, context), { parentObject: value, key: key, diagnosis_path: (context.diagnosis_path !== undefined ? `${context.diagnosis_path}${diagnosis_jsonPath(key)}` : undefined) }));
214
+ if (newKey !== key) { // Only if key really has changed. We don't want to interfer with setting a readonly property and trigger a proxy
215
+ // Replace key:
216
+ let value = map.get(key);
217
+ map.delete(key);
218
+ map.set(newKey, value);
219
+ }
220
+ }
221
+ // Values:
222
+ for (const [key, childValue] of [...map.entries()]) {
223
+ let newValue = visitor(childValue, visitChilds, Object.assign(Object.assign({}, context), { parentObject: value, key: key, diagnosis_path: (context.diagnosis_path !== undefined ? `${context.diagnosis_path}${diagnosis_jsonPath(key)}` : undefined) }));
224
+ if (newValue !== childValue) { // Only if childValue really has changed. We don't want to interfer with setting a readonly property and trigger a proxy
225
+ map.set(key, newValue);
226
+ }
227
+ }
228
+ }
229
+ else {
230
+ for (let k in obj) {
231
+ const keyInParent = k;
232
+ const childValue = obj[keyInParent];
233
+ let newValue = visitor(childValue, visitChilds, Object.assign(Object.assign({}, context), { parentObject: value, key: keyInParent, diagnosis_path: (context.diagnosis_path !== undefined ? `${context.diagnosis_path}${diagnosis_jsonPath(keyInParent)}` : undefined) }));
234
+ if (newValue !== childValue) { // Only if childValue really has changed. We don't want to interfer with setting a readonly property and trigger a proxy
235
+ // @ts-ignore
236
+ obj[keyInParent] = newValue;
237
+ }
200
238
  }
201
239
  }
202
240
  }
203
241
  return value;
204
242
  }
205
- if (trackPath === "onError") {
243
+ if (options.trackPath === "onError") {
206
244
  try {
207
245
  return visitor(value, visitChilds, {}); // Fast try without context
208
246
  }
209
247
  catch (e) {
210
- return visitReplace(value, visitor, true); // Try again with context
248
+ return visitReplace(value, visitor, Object.assign(Object.assign({}, options), { trackPath: true })); // Try again with context
211
249
  }
212
250
  }
213
- return visitor(value, visitChilds, { diagnosis_path: trackPath ? "" : undefined });
251
+ return visitor(value, visitChilds, { diagnosis_path: options.trackPath ? "" : undefined });
214
252
  }
215
253
  /**
216
254
  * Just do something the runtime can't optimize away
@@ -1 +1 @@
1
- {"version":3,"file":"Util.js","sourceRoot":"","sources":["../../Util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Util.js","sourceRoot":"","sources":["../../Util.ts"],"names":[],"mappings":"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"}
@@ -19,9 +19,10 @@ export type PreserveOptions = {
19
19
  */
20
20
  ignoresKeys?: boolean;
21
21
  /**
22
- * Threats an object that was preserved and reoccurs on a completely differnt place (not the same parent) as the same = re-uses that instance.
22
+ * Threats an object that was preserved and reoccurs on a completely different place (not the same parent) as the same = re-uses that instance.
23
23
  * <p>Default: false</p>
24
24
  * <p>Disabled by default because too much magic / behaviour flipping depending indirectly related data.</p>
25
+ * @deprecated Those are preserved (as logically expected) there will be an error on conflicts
25
26
  */
26
27
  preserveCircular?: boolean;
27
28
  /**
@@ -34,11 +35,14 @@ declare class PreserveCall {
34
35
  /**
35
36
  * preserved/old -> new (obsolete) object
36
37
  */
37
- mergedToNew: Map<object, object>;
38
+ preservedToNew: Map<object, object>;
38
39
  /**
39
40
  * new (obsolete) object -> preserved/old object
40
41
  */
41
- newToPreserved: Map<object, object>;
42
+ newToPreserved: Map<object, {
43
+ preserved: object;
44
+ diag_newPath: string;
45
+ }>;
42
46
  possiblyObsoleteObjects: Set<object>;
43
47
  usedObjects: WeakSet<object>;
44
48
  /**
@@ -55,14 +59,14 @@ export declare function preserve_inner<T>(oldValue: T, newValue: T, call: Preser
55
59
  export declare function diagnisis_shortenValue(evil_value: any): string;
56
60
  /**
57
61
  *
58
- * Scans root deeply for Arrays and for each found array, it call normalizeList, which squeezes the items with the same id/key into one object instance.
62
+ * Scans root deeply for Arrays and for each found array, it calls normalizeList, which makes identical items with the same id/key one (shared) object instance.
59
63
  * @see normalizeList
60
64
  * @param root
61
65
  * @param options
62
66
  */
63
67
  export declare function normalizeLists<T extends object>(root: T, options?: PreserveOptions): T;
64
68
  /**
65
- * Squeezes the items with the same id/key into one object instance.
69
+ * Makes identical items with the same id/key one (shared) object instance
66
70
  * @param list
67
71
  * @param options
68
72
  * @param diagnosis_path internal
@@ -1 +1 @@
1
- {"version":3,"file":"preserve.d.ts","sourceRoot":"","sources":["../../preserve.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,KAAK,CAAC;CACrB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC1B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAE1B;;OAEG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAA;CACtC,CAAA;AAED,cAAM,YAAY;IACd,OAAO,EAAE,eAAe,CAAC;IACzB;;OAEG;IACH,WAAW,sBAA4B;IAEvC;;OAEG;IACH,cAAc,sBAA4B;IAE1C,uBAAuB,cAAqB;IAE5C,WAAW,kBAAyB;IAEpC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO;IAMvB,SAAS,CAAC,EAAE,iBAAiB,CAAA;gBAEjB,OAAO,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,iBAAiB;CAItE;AA8FD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,GAAE,eAAoB,GAAG,CAAC,CAEtF;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,iBAAiB,GAAG,CAAC,CAqBjH;AAGD,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,GAAG,CAAC,CAyEzG;AAkFD,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,GAAG,GAAI,MAAM,CAqE/D;AA6BD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,GAAE,eAAoB,KAOtF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,GAAE,eAAoB,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,CAAC,CAoBrH"}
1
+ {"version":3,"file":"preserve.d.ts","sourceRoot":"","sources":["../../preserve.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,KAAK,CAAC;CACrB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC1B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAE1B;;OAEG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAA;CACtC,CAAA;AAED,cAAM,YAAY;IACd,OAAO,EAAE,eAAe,CAAC;IACzB;;OAEG;IACH,cAAc,sBAA4B;IAE1C;;OAEG;IACH,cAAc;mBAA+B,MAAM;sBAAgB,MAAM;OAAK;IAE9E,uBAAuB,cAAqB;IAE5C,WAAW,kBAAyB;IAEpC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO;IAMvB,SAAS,CAAC,EAAE,iBAAiB,CAAA;gBAEjB,OAAO,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,iBAAiB;CAItE;AA8FD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,GAAE,eAAoB,GAAG,CAAC,CAEtF;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,iBAAiB,GAAG,CAAC,CA+BjH;AAGD,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,GAAG,CAAC,CAmFzG;AAkFD,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,GAAG,GAAI,MAAM,CAqE/D;AA6BD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,GAAE,eAAoB,KAOtF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,GAAE,eAAoB,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,CAAC,CAoBrH"}
@@ -1,4 +1,4 @@
1
- import { visitReplace } from "./Util";
1
+ import { isObject, visitReplace } from "./Util";
2
2
  import _ from "underscore";
3
3
  import { invalidateObject, deleteProperty } from "proxy-facades";
4
4
  const normalizeListsHint = `Hint: When this is fetched server data and having duplicate items in a list is intentional, you can pre-process it with the normalizeLists function first. See: import {normalizeLists, normalizeList} from "react-deepwatch"`;
@@ -16,7 +16,7 @@ class PreserveCall {
16
16
  /**
17
17
  * preserved/old -> new (obsolete) object
18
18
  */
19
- this.mergedToNew = new Map();
19
+ this.preservedToNew = new Map();
20
20
  /**
21
21
  * new (obsolete) object -> preserved/old object
22
22
  */
@@ -32,15 +32,15 @@ class PreserveCall {
32
32
  */
33
33
  class ObjRegistry {
34
34
  constructor(preserveOptions) {
35
- this.objectsById = new Map();
36
- this.objectsByKey = new Map();
35
+ this.diag_objectsById = new Map();
36
+ this.diag_objectsByKey = new Map();
37
37
  this.objectsByIdAndKey = new Map();
38
38
  this.preserveOptions = preserveOptions;
39
39
  }
40
40
  getIdAndKey(obj, diagnosis_path) {
41
41
  const diagnosis_getErrorDiag = () => `Trying to reidentify the object ${diagnisis_shortenValue(obj)} during a 'preserve' operation. Path: ${diagnosis_path}`;
42
42
  const result = {};
43
- for (const mode of [{ propName: "id", map: this.objectsById, diag_other: this.objectsByKey }, { propName: "key", map: this.objectsByKey, diag_other: this.objectsById }]) {
43
+ for (const mode of [{ propName: "id", map: this.diag_objectsById, diag_other: this.diag_objectsByKey }, { propName: "key", map: this.diag_objectsByKey, diag_other: this.diag_objectsById }]) {
44
44
  const throwInconsistent = (map) => { throw new PreserveError(`Objects must be consistent in either having an id or a key or both set, but found: ${diagnisis_shortenValue(obj)} and ${diagnisis_shortenValue(map.values().next().value)}. Path: ${diagnosis_path}`); };
45
45
  //@ts-ignore
46
46
  const value = obj[mode.propName];
@@ -78,10 +78,10 @@ class ObjRegistry {
78
78
  // Add to maps:
79
79
  this.objectsByIdAndKey.set(idAndKeyString, value);
80
80
  if (idAndKey.id !== undefined) {
81
- this.objectsById.set(idAndKey.id, value);
81
+ this.diag_objectsById.set(idAndKey.id, value);
82
82
  }
83
83
  if (idAndKey.key !== undefined) {
84
- this.objectsByKey.set(idAndKey.key, value);
84
+ this.diag_objectsByKey.set(idAndKey.key, value);
85
85
  }
86
86
  }
87
87
  get(value, diagnosis_path) {
@@ -104,6 +104,15 @@ export function preserve(oldValue, newValue, options = {}) {
104
104
  export function _preserve(oldValue, newValue, options, diagnosis) {
105
105
  let call = new PreserveCall(options, diagnosis);
106
106
  let result = preserve_inner(oldValue, newValue, call, "<root>");
107
+ if (isObject(result)) {
108
+ // Find all new objects in the result that were preserved in some other place and set them to that preserved instance:
109
+ result = visitReplace(result, (value, visitChilds, context) => {
110
+ if (isObject(value) && call.newToPreserved.has(value)) {
111
+ value = call.newToPreserved.get(value).preserved;
112
+ }
113
+ return visitChilds(value, context); // Should be necessary but not really thought about it much
114
+ });
115
+ }
107
116
  // Invalidate obsolete objects
108
117
  if (options.destroyObsolete !== false && call.possiblyObsoleteObjects.size > 0) {
109
118
  const obsoleteCause = (diagnosis === null || diagnosis === void 0 ? void 0 : diagnosis.callStack) || new Error("Preserve was called");
@@ -127,29 +136,39 @@ export function preserve_inner(oldValue, newValue, call, diagnosis_path) {
127
136
  if (newValue === null || typeof newValue !== "object") {
128
137
  return newValue;
129
138
  }
130
- if (call.options.preserveCircular) {
131
- const preserved = call.newToPreserved.get(newValue);
132
- if (preserved !== undefined) {
133
- return preserved;
134
- }
135
- }
136
139
  if (!mergeable(oldValue, newValue)) {
140
+ if (call.newToPreserved.has(newValue)) {
141
+ return call.newToPreserved.get(newValue).preserved;
142
+ }
137
143
  return newValue;
138
144
  }
139
145
  // Narrow types:
140
146
  if (oldValue === null || typeof oldValue !== "object" || newValue === null || typeof newValue !== "object") {
147
+ if (call.newToPreserved.has(newValue)) {
148
+ return call.newToPreserved.get(newValue).preserved;
149
+ }
141
150
  return newValue;
142
151
  }
143
- if (call.mergedToNew.has(oldValue)) { // Already merged or currently merging?
152
+ if (call.preservedToNew.has(oldValue)) { // Already merged or currently merging?
144
153
  // Safety check:
145
- if (call.mergedToNew.get(oldValue) !== newValue) {
146
- throw new PreserveError(`Cannot replace object ${diagnisis_shortenValue(oldValue)} into ${diagnisis_shortenValue(newValue)} in: ${diagnosis_path}. It has already been replaced by another object: ${diagnisis_shortenValue(call.mergedToNew.get(oldValue))}. Please make your objects have a proper id or key and are not used in multiple places where these can be mistaken.\n${normalizeListsHint}`);
154
+ if (call.preservedToNew.get(oldValue) !== newValue) {
155
+ throw new PreserveError(`Cannot replace object ${diagnisis_shortenValue(oldValue)} into ${diagnisis_shortenValue(newValue)} in: ${diagnosis_path}. It has already been replaced by another object: ${diagnisis_shortenValue(call.preservedToNew.get(oldValue))}. Please make sure, your objects have a proper id or key and are not used in multiple places where these can be mistaken.\n${normalizeListsHint}`);
147
156
  }
148
157
  return oldValue;
149
158
  }
150
159
  // *** Merge: ****
151
- call.mergedToNew.set(oldValue, newValue);
152
- call.newToPreserved.set(newValue, oldValue);
160
+ // Conflict check:
161
+ if (call.newToPreserved.has(newValue)) {
162
+ const otherPreserved = call.newToPreserved.get(newValue);
163
+ if (otherPreserved.preserved === oldValue) { // new -> old was exactly already preserved through other place?
164
+ return oldValue;
165
+ }
166
+ else {
167
+ throw new PreserveError(`Conflict: The same object instance (used in 2 places) is about to be preserved to different objects. This is not meaningful, that an instance in the new data structure represents 2 different instances in the old structure.\nPlace a: ${otherPreserved.diag_newPath}; old/preserved object: ${diagnisis_shortenValue(otherPreserved.preserved)}\nPlace b: ${diagnosis_path}; old/preserved object: ${diagnisis_shortenValue(oldValue)}`);
168
+ }
169
+ }
170
+ call.preservedToNew.set(oldValue, newValue);
171
+ call.newToPreserved.set(newValue, { preserved: oldValue, diag_newPath: diagnosis_path });
153
172
  if (Array.isArray(oldValue)) {
154
173
  return preserve_array(oldValue, newValue, call, diagnosis_path);
155
174
  }
@@ -177,7 +196,7 @@ export function preserve_inner(oldValue, newValue, call, diagnosis_path) {
177
196
  }
178
197
  return oldValue;
179
198
  };
180
- const result = inner();
199
+ const result = inner(); // "as T" because i don't get why inner is "T | object"
181
200
  if (result !== newValue) { // old was preserved
182
201
  if (newValue !== null && typeof newValue === "object") {
183
202
  call.possiblyObsoleteObjects.add(newValue);
@@ -332,7 +351,7 @@ function mergeable(oldValue, newValue) {
332
351
  }
333
352
  /**
334
353
  *
335
- * Scans root deeply for Arrays and for each found array, it call normalizeList, which squeezes the items with the same id/key into one object instance.
354
+ * Scans root deeply for Arrays and for each found array, it calls normalizeList, which makes identical items with the same id/key one (shared) object instance.
336
355
  * @see normalizeList
337
356
  * @param root
338
357
  * @param options
@@ -343,10 +362,10 @@ export function normalizeLists(root, options = {}) {
343
362
  normalizeList(value, options, context.diagnosis_path);
344
363
  }
345
364
  return visitChilds(value, context);
346
- }, "onError");
365
+ }, { trackPath: "onError" });
347
366
  }
348
367
  /**
349
- * Squeezes the items with the same id/key into one object instance.
368
+ * Makes identical items with the same id/key one (shared) object instance
350
369
  * @param list
351
370
  * @param options
352
371
  * @param diagnosis_path internal
@@ -1 +1 @@
1
- {"version":3,"file":"preserve.js","sourceRoot":"","sources":["../../preserve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preserve.js","sourceRoot":"","sources":["../../preserve.ts"],"names":[],"mappings":"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"}
@@ -65,6 +65,16 @@ type VisitReplaceContext = {
65
65
  parentObject?: object;
66
66
  key?: unknown;
67
67
  };
68
+ type VisitReplaceOptions = {
69
+ /**
70
+ * whether to pass on the context object. This hurts performance because the path is concatted every time, so use it only when needed. Setting this to "onError" re-executes the visitprelace with trackPath when an error was thrown
71
+ */
72
+ trackPath?: boolean | "onError";
73
+ /**
74
+ * Keep the order of sets and maps when replacing elements. Default: false
75
+ */
76
+ keepOrder?: boolean;
77
+ };
68
78
  /**
69
79
  * Usage:
70
80
  * <pre><code>
@@ -75,9 +85,8 @@ type VisitReplaceContext = {
75
85
  *
76
86
  * @param value
77
87
  * @param visitor
78
- * @param trackPath whether to pass on the context object. This hurts performance because the path is concatted every time, so use it only when needed. Setting this to "onError" re-executes the visitprelace with the concetxt when an error was thrown
79
88
  */
80
- export declare function visitReplace<O>(value: O, visitor: (value: unknown, visitChilds: (value: unknown, context: VisitReplaceContext) => unknown, context: VisitReplaceContext) => unknown, trackPath?: boolean | "onError"): O;
89
+ export declare function visitReplace<O extends object>(value: O, visitor: (value: unknown, visitChilds: (value: unknown, context: VisitReplaceContext) => unknown, context: VisitReplaceContext) => unknown, options?: VisitReplaceOptions): O;
81
90
  /**
82
91
  * Just do something the runtime can't optimize away
83
92
  * @param value
@@ -1 +1 @@
1
- {"version":3,"file":"Util.d.ts","sourceRoot":"","sources":["../../Util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Util.d.ts","sourceRoot":"","sources":["../../Util.ts"],"names":[],"mappings":"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"}
@@ -196,9 +196,8 @@ function diagnosis_jsonPath(key) {
196
196
  *
197
197
  * @param value
198
198
  * @param visitor
199
- * @param trackPath whether to pass on the context object. This hurts performance because the path is concatted every time, so use it only when needed. Setting this to "onError" re-executes the visitprelace with the concetxt when an error was thrown
200
199
  */
201
- function visitReplace(value, visitor, trackPath = false) {
200
+ function visitReplace(value, visitor, options = {}) {
202
201
  const visisitedObjects = new Set();
203
202
  function visitChilds(value, context) {
204
203
  if (value === null) {
@@ -210,27 +209,66 @@ function visitReplace(value, visitor, trackPath = false) {
210
209
  return value; // don't iterate again
211
210
  }
212
211
  visisitedObjects.add(obj);
213
- for (let k in obj) {
214
- const keyInParent = k;
215
- const childValue = obj[keyInParent];
216
- let newValue = visitor(childValue, visitChilds, Object.assign(Object.assign({}, context), { parentObject: value, key: keyInParent, diagnosis_path: (context.diagnosis_path !== undefined ? `${context.diagnosis_path}${diagnosis_jsonPath(keyInParent)}` : undefined) }));
217
- if (newValue !== childValue) { // Only if childValue really has changed. We don't want to interfer with setting a readonly property and trigger a proxy
218
- // @ts-ignore
219
- obj[keyInParent] = newValue;
212
+ if (value instanceof Set) {
213
+ let set = obj;
214
+ if (options.keepOrder) {
215
+ throw new Error("Keep order not yet implemented");
216
+ }
217
+ for (const childValue of [...set.values()]) {
218
+ let newValue = visitor(childValue, visitChilds, Object.assign(Object.assign({}, context), { parentObject: value, key: childValue, diagnosis_path: (context.diagnosis_path !== undefined ? context.diagnosis_path : undefined) }));
219
+ if (newValue !== childValue) { // Only if childValue really has changed. We don't want to interfer with setting a readonly property and trigger a proxy
220
+ // Replace:
221
+ set.delete(childValue);
222
+ set.add(newValue);
223
+ }
224
+ }
225
+ }
226
+ else if (value instanceof Map) {
227
+ let map = obj;
228
+ if (options.keepOrder) {
229
+ throw new Error("Keep order not yet implemented");
230
+ }
231
+ // Keys:
232
+ for (const key of [...map.keys()]) {
233
+ let newKey = visitor(key, visitChilds, Object.assign(Object.assign({}, context), { parentObject: value, key: key, diagnosis_path: (context.diagnosis_path !== undefined ? `${context.diagnosis_path}${diagnosis_jsonPath(key)}` : undefined) }));
234
+ if (newKey !== key) { // Only if key really has changed. We don't want to interfer with setting a readonly property and trigger a proxy
235
+ // Replace key:
236
+ let value = map.get(key);
237
+ map.delete(key);
238
+ map.set(newKey, value);
239
+ }
240
+ }
241
+ // Values:
242
+ for (const [key, childValue] of [...map.entries()]) {
243
+ let newValue = visitor(childValue, visitChilds, Object.assign(Object.assign({}, context), { parentObject: value, key: key, diagnosis_path: (context.diagnosis_path !== undefined ? `${context.diagnosis_path}${diagnosis_jsonPath(key)}` : undefined) }));
244
+ if (newValue !== childValue) { // Only if childValue really has changed. We don't want to interfer with setting a readonly property and trigger a proxy
245
+ map.set(key, newValue);
246
+ }
247
+ }
248
+ }
249
+ else {
250
+ for (let k in obj) {
251
+ const keyInParent = k;
252
+ const childValue = obj[keyInParent];
253
+ let newValue = visitor(childValue, visitChilds, Object.assign(Object.assign({}, context), { parentObject: value, key: keyInParent, diagnosis_path: (context.diagnosis_path !== undefined ? `${context.diagnosis_path}${diagnosis_jsonPath(keyInParent)}` : undefined) }));
254
+ if (newValue !== childValue) { // Only if childValue really has changed. We don't want to interfer with setting a readonly property and trigger a proxy
255
+ // @ts-ignore
256
+ obj[keyInParent] = newValue;
257
+ }
220
258
  }
221
259
  }
222
260
  }
223
261
  return value;
224
262
  }
225
- if (trackPath === "onError") {
263
+ if (options.trackPath === "onError") {
226
264
  try {
227
265
  return visitor(value, visitChilds, {}); // Fast try without context
228
266
  }
229
267
  catch (e) {
230
- return visitReplace(value, visitor, true); // Try again with context
268
+ return visitReplace(value, visitor, Object.assign(Object.assign({}, options), { trackPath: true })); // Try again with context
231
269
  }
232
270
  }
233
- return visitor(value, visitChilds, { diagnosis_path: trackPath ? "" : undefined });
271
+ return visitor(value, visitChilds, { diagnosis_path: options.trackPath ? "" : undefined });
234
272
  }
235
273
  /**
236
274
  * Just do something the runtime can't optimize away
@@ -1 +1 @@
1
- {"version":3,"file":"Util.js","sourceRoot":"","sources":["../../Util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Util.js","sourceRoot":"","sources":["../../Util.ts"],"names":[],"mappings":"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"}
@@ -19,9 +19,10 @@ export type PreserveOptions = {
19
19
  */
20
20
  ignoresKeys?: boolean;
21
21
  /**
22
- * Threats an object that was preserved and reoccurs on a completely differnt place (not the same parent) as the same = re-uses that instance.
22
+ * Threats an object that was preserved and reoccurs on a completely different place (not the same parent) as the same = re-uses that instance.
23
23
  * <p>Default: false</p>
24
24
  * <p>Disabled by default because too much magic / behaviour flipping depending indirectly related data.</p>
25
+ * @deprecated Those are preserved (as logically expected) there will be an error on conflicts
25
26
  */
26
27
  preserveCircular?: boolean;
27
28
  /**
@@ -34,11 +35,14 @@ declare class PreserveCall {
34
35
  /**
35
36
  * preserved/old -> new (obsolete) object
36
37
  */
37
- mergedToNew: Map<object, object>;
38
+ preservedToNew: Map<object, object>;
38
39
  /**
39
40
  * new (obsolete) object -> preserved/old object
40
41
  */
41
- newToPreserved: Map<object, object>;
42
+ newToPreserved: Map<object, {
43
+ preserved: object;
44
+ diag_newPath: string;
45
+ }>;
42
46
  possiblyObsoleteObjects: Set<object>;
43
47
  usedObjects: WeakSet<object>;
44
48
  /**
@@ -55,14 +59,14 @@ export declare function preserve_inner<T>(oldValue: T, newValue: T, call: Preser
55
59
  export declare function diagnisis_shortenValue(evil_value: any): string;
56
60
  /**
57
61
  *
58
- * Scans root deeply for Arrays and for each found array, it call normalizeList, which squeezes the items with the same id/key into one object instance.
62
+ * Scans root deeply for Arrays and for each found array, it calls normalizeList, which makes identical items with the same id/key one (shared) object instance.
59
63
  * @see normalizeList
60
64
  * @param root
61
65
  * @param options
62
66
  */
63
67
  export declare function normalizeLists<T extends object>(root: T, options?: PreserveOptions): T;
64
68
  /**
65
- * Squeezes the items with the same id/key into one object instance.
69
+ * Makes identical items with the same id/key one (shared) object instance
66
70
  * @param list
67
71
  * @param options
68
72
  * @param diagnosis_path internal
@@ -1 +1 @@
1
- {"version":3,"file":"preserve.d.ts","sourceRoot":"","sources":["../../preserve.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,KAAK,CAAC;CACrB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC1B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAE1B;;OAEG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAA;CACtC,CAAA;AAED,cAAM,YAAY;IACd,OAAO,EAAE,eAAe,CAAC;IACzB;;OAEG;IACH,WAAW,sBAA4B;IAEvC;;OAEG;IACH,cAAc,sBAA4B;IAE1C,uBAAuB,cAAqB;IAE5C,WAAW,kBAAyB;IAEpC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO;IAMvB,SAAS,CAAC,EAAE,iBAAiB,CAAA;gBAEjB,OAAO,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,iBAAiB;CAItE;AA8FD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,GAAE,eAAoB,GAAG,CAAC,CAEtF;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,iBAAiB,GAAG,CAAC,CAqBjH;AAGD,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,GAAG,CAAC,CAyEzG;AAkFD,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,GAAG,GAAI,MAAM,CAqE/D;AA6BD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,GAAE,eAAoB,KAOtF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,GAAE,eAAoB,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,CAAC,CAoBrH"}
1
+ {"version":3,"file":"preserve.d.ts","sourceRoot":"","sources":["../../preserve.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,KAAK,CAAC;CACrB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC1B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAE1B;;OAEG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAA;CACtC,CAAA;AAED,cAAM,YAAY;IACd,OAAO,EAAE,eAAe,CAAC;IACzB;;OAEG;IACH,cAAc,sBAA4B;IAE1C;;OAEG;IACH,cAAc;mBAA+B,MAAM;sBAAgB,MAAM;OAAK;IAE9E,uBAAuB,cAAqB;IAE5C,WAAW,kBAAyB;IAEpC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO;IAMvB,SAAS,CAAC,EAAE,iBAAiB,CAAA;gBAEjB,OAAO,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,iBAAiB;CAItE;AA8FD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,GAAE,eAAoB,GAAG,CAAC,CAEtF;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,iBAAiB,GAAG,CAAC,CA+BjH;AAGD,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,GAAG,CAAC,CAmFzG;AAkFD,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,GAAG,GAAI,MAAM,CAqE/D;AA6BD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,GAAE,eAAoB,KAOtF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,GAAE,eAAoB,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,CAAC,CAoBrH"}
@@ -27,7 +27,7 @@ class PreserveCall {
27
27
  /**
28
28
  * preserved/old -> new (obsolete) object
29
29
  */
30
- this.mergedToNew = new Map();
30
+ this.preservedToNew = new Map();
31
31
  /**
32
32
  * new (obsolete) object -> preserved/old object
33
33
  */
@@ -43,15 +43,15 @@ class PreserveCall {
43
43
  */
44
44
  class ObjRegistry {
45
45
  constructor(preserveOptions) {
46
- this.objectsById = new Map();
47
- this.objectsByKey = new Map();
46
+ this.diag_objectsById = new Map();
47
+ this.diag_objectsByKey = new Map();
48
48
  this.objectsByIdAndKey = new Map();
49
49
  this.preserveOptions = preserveOptions;
50
50
  }
51
51
  getIdAndKey(obj, diagnosis_path) {
52
52
  const diagnosis_getErrorDiag = () => `Trying to reidentify the object ${diagnisis_shortenValue(obj)} during a 'preserve' operation. Path: ${diagnosis_path}`;
53
53
  const result = {};
54
- for (const mode of [{ propName: "id", map: this.objectsById, diag_other: this.objectsByKey }, { propName: "key", map: this.objectsByKey, diag_other: this.objectsById }]) {
54
+ for (const mode of [{ propName: "id", map: this.diag_objectsById, diag_other: this.diag_objectsByKey }, { propName: "key", map: this.diag_objectsByKey, diag_other: this.diag_objectsById }]) {
55
55
  const throwInconsistent = (map) => { throw new PreserveError(`Objects must be consistent in either having an id or a key or both set, but found: ${diagnisis_shortenValue(obj)} and ${diagnisis_shortenValue(map.values().next().value)}. Path: ${diagnosis_path}`); };
56
56
  //@ts-ignore
57
57
  const value = obj[mode.propName];
@@ -89,10 +89,10 @@ class ObjRegistry {
89
89
  // Add to maps:
90
90
  this.objectsByIdAndKey.set(idAndKeyString, value);
91
91
  if (idAndKey.id !== undefined) {
92
- this.objectsById.set(idAndKey.id, value);
92
+ this.diag_objectsById.set(idAndKey.id, value);
93
93
  }
94
94
  if (idAndKey.key !== undefined) {
95
- this.objectsByKey.set(idAndKey.key, value);
95
+ this.diag_objectsByKey.set(idAndKey.key, value);
96
96
  }
97
97
  }
98
98
  get(value, diagnosis_path) {
@@ -115,6 +115,15 @@ function preserve(oldValue, newValue, options = {}) {
115
115
  function _preserve(oldValue, newValue, options, diagnosis) {
116
116
  let call = new PreserveCall(options, diagnosis);
117
117
  let result = preserve_inner(oldValue, newValue, call, "<root>");
118
+ if ((0, Util_1.isObject)(result)) {
119
+ // Find all new objects in the result that were preserved in some other place and set them to that preserved instance:
120
+ result = (0, Util_1.visitReplace)(result, (value, visitChilds, context) => {
121
+ if ((0, Util_1.isObject)(value) && call.newToPreserved.has(value)) {
122
+ value = call.newToPreserved.get(value).preserved;
123
+ }
124
+ return visitChilds(value, context); // Should be necessary but not really thought about it much
125
+ });
126
+ }
118
127
  // Invalidate obsolete objects
119
128
  if (options.destroyObsolete !== false && call.possiblyObsoleteObjects.size > 0) {
120
129
  const obsoleteCause = (diagnosis === null || diagnosis === void 0 ? void 0 : diagnosis.callStack) || new Error("Preserve was called");
@@ -138,29 +147,39 @@ function preserve_inner(oldValue, newValue, call, diagnosis_path) {
138
147
  if (newValue === null || typeof newValue !== "object") {
139
148
  return newValue;
140
149
  }
141
- if (call.options.preserveCircular) {
142
- const preserved = call.newToPreserved.get(newValue);
143
- if (preserved !== undefined) {
144
- return preserved;
145
- }
146
- }
147
150
  if (!mergeable(oldValue, newValue)) {
151
+ if (call.newToPreserved.has(newValue)) {
152
+ return call.newToPreserved.get(newValue).preserved;
153
+ }
148
154
  return newValue;
149
155
  }
150
156
  // Narrow types:
151
157
  if (oldValue === null || typeof oldValue !== "object" || newValue === null || typeof newValue !== "object") {
158
+ if (call.newToPreserved.has(newValue)) {
159
+ return call.newToPreserved.get(newValue).preserved;
160
+ }
152
161
  return newValue;
153
162
  }
154
- if (call.mergedToNew.has(oldValue)) { // Already merged or currently merging?
163
+ if (call.preservedToNew.has(oldValue)) { // Already merged or currently merging?
155
164
  // Safety check:
156
- if (call.mergedToNew.get(oldValue) !== newValue) {
157
- throw new PreserveError(`Cannot replace object ${diagnisis_shortenValue(oldValue)} into ${diagnisis_shortenValue(newValue)} in: ${diagnosis_path}. It has already been replaced by another object: ${diagnisis_shortenValue(call.mergedToNew.get(oldValue))}. Please make your objects have a proper id or key and are not used in multiple places where these can be mistaken.\n${normalizeListsHint}`);
165
+ if (call.preservedToNew.get(oldValue) !== newValue) {
166
+ throw new PreserveError(`Cannot replace object ${diagnisis_shortenValue(oldValue)} into ${diagnisis_shortenValue(newValue)} in: ${diagnosis_path}. It has already been replaced by another object: ${diagnisis_shortenValue(call.preservedToNew.get(oldValue))}. Please make sure, your objects have a proper id or key and are not used in multiple places where these can be mistaken.\n${normalizeListsHint}`);
158
167
  }
159
168
  return oldValue;
160
169
  }
161
170
  // *** Merge: ****
162
- call.mergedToNew.set(oldValue, newValue);
163
- call.newToPreserved.set(newValue, oldValue);
171
+ // Conflict check:
172
+ if (call.newToPreserved.has(newValue)) {
173
+ const otherPreserved = call.newToPreserved.get(newValue);
174
+ if (otherPreserved.preserved === oldValue) { // new -> old was exactly already preserved through other place?
175
+ return oldValue;
176
+ }
177
+ else {
178
+ throw new PreserveError(`Conflict: The same object instance (used in 2 places) is about to be preserved to different objects. This is not meaningful, that an instance in the new data structure represents 2 different instances in the old structure.\nPlace a: ${otherPreserved.diag_newPath}; old/preserved object: ${diagnisis_shortenValue(otherPreserved.preserved)}\nPlace b: ${diagnosis_path}; old/preserved object: ${diagnisis_shortenValue(oldValue)}`);
179
+ }
180
+ }
181
+ call.preservedToNew.set(oldValue, newValue);
182
+ call.newToPreserved.set(newValue, { preserved: oldValue, diag_newPath: diagnosis_path });
164
183
  if (Array.isArray(oldValue)) {
165
184
  return preserve_array(oldValue, newValue, call, diagnosis_path);
166
185
  }
@@ -188,7 +207,7 @@ function preserve_inner(oldValue, newValue, call, diagnosis_path) {
188
207
  }
189
208
  return oldValue;
190
209
  };
191
- const result = inner();
210
+ const result = inner(); // "as T" because i don't get why inner is "T | object"
192
211
  if (result !== newValue) { // old was preserved
193
212
  if (newValue !== null && typeof newValue === "object") {
194
213
  call.possiblyObsoleteObjects.add(newValue);
@@ -343,7 +362,7 @@ function mergeable(oldValue, newValue) {
343
362
  }
344
363
  /**
345
364
  *
346
- * Scans root deeply for Arrays and for each found array, it call normalizeList, which squeezes the items with the same id/key into one object instance.
365
+ * Scans root deeply for Arrays and for each found array, it calls normalizeList, which makes identical items with the same id/key one (shared) object instance.
347
366
  * @see normalizeList
348
367
  * @param root
349
368
  * @param options
@@ -354,10 +373,10 @@ function normalizeLists(root, options = {}) {
354
373
  normalizeList(value, options, context.diagnosis_path);
355
374
  }
356
375
  return visitChilds(value, context);
357
- }, "onError");
376
+ }, { trackPath: "onError" });
358
377
  }
359
378
  /**
360
- * Squeezes the items with the same id/key into one object instance.
379
+ * Makes identical items with the same id/key one (shared) object instance
361
380
  * @param list
362
381
  * @param options
363
382
  * @param diagnosis_path internal
@@ -1 +1 @@
1
- {"version":3,"file":"preserve.js","sourceRoot":"","sources":["../../preserve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preserve.js","sourceRoot":"","sources":["../../preserve.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-deepwatch",
3
- "version": "1.6.3",
3
+ "version": "1.7.0",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "react",
package/preserve.ts CHANGED
@@ -1,4 +1,4 @@
1
- import {visitReplace} from "./Util";
1
+ import {isObject, visitReplace} from "./Util";
2
2
  import _ from "underscore";
3
3
  import {invalidateObject, deleteProperty} from "proxy-facades";
4
4
 
@@ -29,9 +29,10 @@ export type PreserveOptions = {
29
29
  ignoresKeys?: boolean,
30
30
 
31
31
  /**
32
- * Threats an object that was preserved and reoccurs on a completely differnt place (not the same parent) as the same = re-uses that instance.
32
+ * Threats an object that was preserved and reoccurs on a completely different place (not the same parent) as the same = re-uses that instance.
33
33
  * <p>Default: false</p>
34
34
  * <p>Disabled by default because too much magic / behaviour flipping depending indirectly related data.</p>
35
+ * @deprecated Those are preserved (as logically expected) there will be an error on conflicts
35
36
  */
36
37
  preserveCircular?: boolean
37
38
 
@@ -46,12 +47,12 @@ class PreserveCall {
46
47
  /**
47
48
  * preserved/old -> new (obsolete) object
48
49
  */
49
- mergedToNew = new Map<object,object>();
50
+ preservedToNew = new Map<object,object>();
50
51
 
51
52
  /**
52
53
  * new (obsolete) object -> preserved/old object
53
54
  */
54
- newToPreserved = new Map<object,object>();
55
+ newToPreserved = new Map<object, {preserved: object, diag_newPath: string}>();
55
56
 
56
57
  possiblyObsoleteObjects = new Set<object>();
57
58
 
@@ -82,8 +83,8 @@ type ID = string | number;
82
83
  class ObjRegistry {
83
84
  preserveOptions: PreserveOptions;
84
85
 
85
- objectsById = new Map<ID, object>();
86
- objectsByKey = new Map<ID, object>();
86
+ diag_objectsById = new Map<ID, object>();
87
+ diag_objectsByKey = new Map<ID, object>();
87
88
  objectsByIdAndKey = new Map<string, object>();
88
89
 
89
90
 
@@ -96,7 +97,7 @@ class ObjRegistry {
96
97
 
97
98
  const result: {id?: ID, key?: ID} = {};
98
99
 
99
- for(const mode of [{propName: "id", map: this.objectsById, diag_other: this.objectsByKey}, {propName: "key", map: this.objectsByKey, diag_other: this.objectsById}]) {
100
+ for(const mode of [{propName: "id", map: this.diag_objectsById, diag_other: this.diag_objectsByKey}, {propName: "key", map: this.diag_objectsByKey, diag_other: this.diag_objectsById}]) {
100
101
  const throwInconsistent = (map: Map<ID, object>) => {throw new PreserveError(`Objects must be consistent in either having an id or a key or both set, but found: ${diagnisis_shortenValue(obj)} and ${diagnisis_shortenValue(map.values().next().value)}. Path: ${diagnosis_path}`)};
101
102
 
102
103
  //@ts-ignore
@@ -142,10 +143,10 @@ class ObjRegistry {
142
143
  // Add to maps:
143
144
  this.objectsByIdAndKey.set(idAndKeyString, value);
144
145
  if(idAndKey.id !== undefined) {
145
- this.objectsById.set(idAndKey.id, value)
146
+ this.diag_objectsById.set(idAndKey.id, value)
146
147
  }
147
148
  if(idAndKey.key !== undefined) {
148
- this.objectsByKey.set(idAndKey.key, value)
149
+ this.diag_objectsByKey.set(idAndKey.key, value)
149
150
  }
150
151
  }
151
152
 
@@ -175,6 +176,16 @@ export function _preserve<T>(oldValue: T, newValue: T, options: PreserveOptions,
175
176
  let call = new PreserveCall(options, diagnosis);
176
177
  let result = preserve_inner(oldValue, newValue, call, "<root>");
177
178
 
179
+ if(isObject(result)) {
180
+ // Find all new objects in the result that were preserved in some other place and set them to that preserved instance:
181
+ result = visitReplace(result, (value, visitChilds, context) => {
182
+ if (isObject(value) && call.newToPreserved.has(value)) {
183
+ value = call.newToPreserved.get(value)!.preserved;
184
+ }
185
+ return visitChilds(value, context) // Should be necessary but not really thought about it much
186
+ });
187
+ }
188
+
178
189
  // Invalidate obsolete objects
179
190
  if(options.destroyObsolete !== false && call.possiblyObsoleteObjects.size > 0) {
180
191
  const obsoleteCause = diagnosis?.callStack || new Error("Preserve was called");
@@ -201,35 +212,45 @@ export function preserve_inner<T>(oldValue: T, newValue: T, call: PreserveCall,
201
212
  return newValue;
202
213
  }
203
214
 
204
- if (call.options.preserveCircular) {
205
- const preserved = call.newToPreserved.get(newValue);
206
- if (preserved !== undefined) {
207
- return preserved as T;
208
- }
209
- }
210
-
211
215
  if (!mergeable(oldValue, newValue)) {
216
+ if(call.newToPreserved.has(newValue)) {
217
+ return call.newToPreserved.get(newValue)!.preserved;
218
+ }
212
219
  return newValue;
213
220
  }
214
221
 
215
222
  // Narrow types:
216
223
  if (oldValue === null || typeof oldValue !== "object" || newValue === null || typeof newValue !== "object") {
224
+ if(call.newToPreserved.has(newValue)) {
225
+ return call.newToPreserved.get(newValue)!.preserved;
226
+ }
217
227
  return newValue;
218
228
  }
219
229
 
220
230
 
221
- if (call.mergedToNew.has(oldValue)) { // Already merged or currently merging?
231
+ if (call.preservedToNew.has(oldValue)) { // Already merged or currently merging?
222
232
  // Safety check:
223
- if (call.mergedToNew.get(oldValue) !== newValue) {
224
- throw new PreserveError(`Cannot replace object ${diagnisis_shortenValue(oldValue)} into ${diagnisis_shortenValue(newValue)} in: ${diagnosis_path}. It has already been replaced by another object: ${diagnisis_shortenValue(call.mergedToNew.get(oldValue))}. Please make your objects have a proper id or key and are not used in multiple places where these can be mistaken.\n${normalizeListsHint}`)
233
+ if (call.preservedToNew.get(oldValue) !== newValue) {
234
+ throw new PreserveError(`Cannot replace object ${diagnisis_shortenValue(oldValue)} into ${diagnisis_shortenValue(newValue)} in: ${diagnosis_path}. It has already been replaced by another object: ${diagnisis_shortenValue(call.preservedToNew.get(oldValue))}. Please make sure, your objects have a proper id or key and are not used in multiple places where these can be mistaken.\n${normalizeListsHint}`)
225
235
  }
226
236
 
227
- return oldValue;
237
+ return oldValue as T;
228
238
  }
229
239
 
230
240
  // *** Merge: ****
231
- call.mergedToNew.set(oldValue, newValue);
232
- call.newToPreserved.set(newValue, oldValue);
241
+ // Conflict check:
242
+ if(call.newToPreserved.has(newValue)) {
243
+ const otherPreserved = call.newToPreserved.get(newValue)!;
244
+ if(otherPreserved.preserved === oldValue) { // new -> old was exactly already preserved through other place?
245
+ return oldValue as T;
246
+ }
247
+ else {
248
+ throw new PreserveError(`Conflict: The same object instance (used in 2 places) is about to be preserved to different objects. This is not meaningful, that an instance in the new data structure represents 2 different instances in the old structure.\nPlace a: ${otherPreserved.diag_newPath}; old/preserved object: ${diagnisis_shortenValue(otherPreserved.preserved)}\nPlace b: ${diagnosis_path}; old/preserved object: ${diagnisis_shortenValue(oldValue)}`)
249
+ }
250
+ }
251
+
252
+ call.preservedToNew.set(oldValue, newValue);
253
+ call.newToPreserved.set(newValue, {preserved: oldValue, diag_newPath: diagnosis_path});
233
254
 
234
255
  if (Array.isArray(oldValue)) {
235
256
  return preserve_array(oldValue as unknown[], newValue as unknown[], call, diagnosis_path) as T;
@@ -254,10 +275,10 @@ export function preserve_inner<T>(oldValue: T, newValue: T, call: PreserveCall,
254
275
  }
255
276
  }
256
277
  }
257
- return oldValue;
278
+ return oldValue as T;
258
279
  }
259
280
 
260
- const result = inner();
281
+ const result = inner() as T; // "as T" because i don't get why inner is "T | object"
261
282
  if(result !== newValue) { // old was preserved
262
283
  if(newValue !== null && typeof newValue === "object") {
263
284
  call.possiblyObsoleteObjects.add(newValue as object);
@@ -450,7 +471,7 @@ function mergeable(oldValue: unknown, newValue: unknown) {
450
471
 
451
472
  /**
452
473
  *
453
- * Scans root deeply for Arrays and for each found array, it call normalizeList, which squeezes the items with the same id/key into one object instance.
474
+ * Scans root deeply for Arrays and for each found array, it calls normalizeList, which makes identical items with the same id/key one (shared) object instance.
454
475
  * @see normalizeList
455
476
  * @param root
456
477
  * @param options
@@ -461,11 +482,11 @@ export function normalizeLists<T extends object>(root: T, options: PreserveOptio
461
482
  normalizeList(value, options, context.diagnosis_path);
462
483
  }
463
484
  return visitChilds(value, context);
464
- }, "onError");
485
+ }, {trackPath: "onError"});
465
486
  }
466
487
 
467
488
  /**
468
- * Squeezes the items with the same id/key into one object instance.
489
+ * Makes identical items with the same id/key one (shared) object instance
469
490
  * @param list
470
491
  * @param options
471
492
  * @param diagnosis_path internal