react-deepwatch 1.2.3 → 1.2.5

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.
Files changed (38) hide show
  1. package/Util.ts +9 -3
  2. package/{Util.d.ts → dist/browser/Util.d.ts} +3 -2
  3. package/dist/browser/Util.d.ts.map +1 -0
  4. package/dist/{mjs → browser}/Util.js +6 -1
  5. package/dist/browser/Util.js.map +1 -0
  6. package/dist/{mjs → browser}/index.d.ts +1 -1
  7. package/dist/browser/index.d.ts.map +1 -0
  8. package/dist/{mjs → browser}/index.js +59 -28
  9. package/dist/browser/index.js.map +1 -0
  10. package/dist/{mjs → default}/Util.d.ts +3 -2
  11. package/dist/default/Util.d.ts.map +1 -0
  12. package/{Util.js → dist/default/Util.js} +7 -1
  13. package/dist/default/Util.js.map +1 -0
  14. package/{index.d.ts → dist/default/index.d.ts} +1 -1
  15. package/dist/default/index.d.ts.map +1 -0
  16. package/{index.js → dist/default/index.js} +58 -27
  17. package/dist/default/index.js.map +1 -0
  18. package/dist/default/preserve.d.ts.map +1 -0
  19. package/dist/default/preserve.js.map +1 -0
  20. package/index.ts +61 -25
  21. package/package.json +11 -10
  22. package/readme.md +41 -1
  23. package/Util.d.ts.map +0 -1
  24. package/Util.js.map +0 -1
  25. package/dist/mjs/Util.d.ts.map +0 -1
  26. package/dist/mjs/Util.js.map +0 -1
  27. package/dist/mjs/index.d.ts.map +0 -1
  28. package/dist/mjs/index.js.map +0 -1
  29. package/index.d.ts.map +0 -1
  30. package/index.js.map +0 -1
  31. package/preserve.d.ts.map +0 -1
  32. package/preserve.js.map +0 -1
  33. /package/dist/{mjs → browser}/preserve.d.ts +0 -0
  34. /package/dist/{mjs → browser}/preserve.d.ts.map +0 -0
  35. /package/dist/{mjs → browser}/preserve.js +0 -0
  36. /package/dist/{mjs → browser}/preserve.js.map +0 -0
  37. /package/{preserve.d.ts → dist/default/preserve.d.ts} +0 -0
  38. /package/{preserve.js → dist/default/preserve.js} +0 -0
package/Util.ts CHANGED
@@ -56,9 +56,8 @@ export class MapSet<K, V> {
56
56
  /**
57
57
  * A WeakMap<K, Set<V>>. But automatically add a new Set if needed
58
58
  */
59
- export class WeakMapSet<K, V> extends MapSet<K, V> {
60
- //@ts-ignore
61
- map = new WeakMap<K, Set<V>>();
59
+ export class WeakMapSet<K extends WeakKey, V> extends MapSet<K, V> {
60
+ map = new WeakMap<K, Set<V>>() as Map<K, Set<V>>;
62
61
  }
63
62
 
64
63
  export function arraysAreEqualsByPredicateFn<A, B>(a: A[], b: B[], equalsFn: (a: A,b: B) => boolean) {
@@ -216,4 +215,11 @@ export function newDefaultMap<K,V>(createDefaultValueFn: () => V): DefaultMap<K,
216
215
  return createDefaultValueFn();
217
216
  }
218
217
  }()
218
+ }
219
+
220
+ export function array_peekLast<T>(array: Array<T>): T | undefined {
221
+ if(array.length === 0) {
222
+ return undefined
223
+ }
224
+ return array[array.length-1];
219
225
  }
@@ -14,8 +14,8 @@ export declare class MapSet<K, V> {
14
14
  /**
15
15
  * A WeakMap<K, Set<V>>. But automatically add a new Set if needed
16
16
  */
17
- export declare class WeakMapSet<K, V> extends MapSet<K, V> {
18
- map: WeakMap<K, Set<V>>;
17
+ export declare class WeakMapSet<K extends WeakKey, V> extends MapSet<K, V> {
18
+ map: Map<K, Set<V>>;
19
19
  }
20
20
  export declare function arraysAreEqualsByPredicateFn<A, B>(a: A[], b: B[], equalsFn: (a: A, b: B) => boolean): boolean;
21
21
  export type PromiseState<T> = {
@@ -75,5 +75,6 @@ export declare abstract class DefaultMap<K, V> extends Map<K, V> {
75
75
  * @returns a Map that creates and inserts a default value when that value does not exist. So the #get method always returns something.
76
76
  */
77
77
  export declare function newDefaultMap<K, V>(createDefaultValueFn: () => V): DefaultMap<K, V>;
78
+ export declare function array_peekLast<T>(array: Array<T>): T | undefined;
78
79
  export {};
79
80
  //# sourceMappingURL=Util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Util.d.ts","sourceRoot":"","sources":["../../Util.ts"],"names":[],"mappings":"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"}
@@ -52,7 +52,6 @@ export class MapSet {
52
52
  export class WeakMapSet extends MapSet {
53
53
  constructor() {
54
54
  super(...arguments);
55
- //@ts-ignore
56
55
  this.map = new WeakMap();
57
56
  }
58
57
  }
@@ -186,4 +185,10 @@ export function newDefaultMap(createDefaultValueFn) {
186
185
  }
187
186
  }();
188
187
  }
188
+ export function array_peekLast(array) {
189
+ if (array.length === 0) {
190
+ return undefined;
191
+ }
192
+ return array[array.length - 1];
193
+ }
189
194
  //# sourceMappingURL=Util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Util.js","sourceRoot":"","sources":["../../Util.ts"],"names":[],"mappings":"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"}
@@ -46,7 +46,7 @@ type WatchedComponentOptions = {
46
46
  */
47
47
  useGlobalSharedProxyFacade?: boolean;
48
48
  };
49
- export declare function watchedComponent<PROPS extends object>(componentFn: (props: PROPS) => any, options?: WatchedComponentOptions): ((props: PROPS) => any) | import("react").MemoExoticComponent<(props: PROPS) => any>;
49
+ export declare function watchedComponent<PROPS extends object>(componentFn: (props: PROPS) => any, options?: WatchedComponentOptions): (props: PROPS) => any;
50
50
  type WatchedOptions = {
51
51
  /**
52
52
  * Called, when a deep property was changed through the proxy.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { RecordedReadOnProxiedObject, RecordedValueRead, WatchedProxyFacade, installChangeTracker, RecordedPropertyRead } from "proxy-facades";
2
- import { isObject, newDefaultMap, recordedReadsArraysAreEqual, throwError } from "./Util";
2
+ import { array_peekLast, isObject, newDefaultMap, recordedReadsArraysAreEqual, throwError } from "./Util";
3
3
  import { useState, createElement, Fragment, useEffect, useContext, memo } from "react";
4
4
  import { ErrorBoundaryContext, useErrorBoundary } from "react-error-boundary";
5
5
  import { _preserve } from "./preserve";
@@ -363,9 +363,13 @@ class RenderRun {
363
363
  constructor() {
364
364
  this.isPassive = false;
365
365
  /**
366
- * Recorded reads of this component's watchedProxyFacade
366
+ * Recorded reads of this component's watchedProxyFacade for load(...) statements
367
367
  */
368
- this.recordedReads = [];
368
+ this.load_recordedReads = [];
369
+ /**
370
+ * Mutes recording into {@see RenderRun#load_recordedReads}
371
+ */
372
+ this.load_muteReadRecording = false;
369
373
  this.loadCallIdsSeen = new Set();
370
374
  /**
371
375
  * Increased, when we see a load(...) call
@@ -427,6 +431,21 @@ class RenderRun {
427
431
  this.frame.stopListeningForChanges(); // Clean up now
428
432
  }
429
433
  }
434
+ /**
435
+ * Mutes read-/dependency recording for load(...) statements while running fn()
436
+ * @param fn
437
+ */
438
+ withReadRecordingMuted(fn) {
439
+ try {
440
+ !this.load_muteReadRecording || throwError("Illegal state"); // safety check: Should not be muted yet
441
+ this.load_muteReadRecording = true;
442
+ return fn();
443
+ }
444
+ finally {
445
+ this.load_muteReadRecording || throwError("Illegal state"); // safety check: Should currently be muted
446
+ this.load_muteReadRecording = false;
447
+ }
448
+ }
430
449
  }
431
450
  let currentRenderRun;
432
451
  export function watchedComponent(componentFn, options = {}) {
@@ -455,6 +474,7 @@ export function watchedComponent(componentFn, options = {}) {
455
474
  frame.recentRenderRun = currentRenderRun;
456
475
  // Register dismissErrorBoundary function:
457
476
  if (typeof useErrorBoundary === "function") { // Optional package was loaded?
477
+ //@ts-ignore
458
478
  if (useContext(ErrorBoundaryContext)) { // Inside an error boundary?
459
479
  frame.dismissErrorBoundary = useErrorBoundary().resetBoundary;
460
480
  }
@@ -469,7 +489,9 @@ export function watchedComponent(componentFn, options = {}) {
469
489
  if (!renderRun.isPassive) { // Active run ?
470
490
  frame.watchPropertyChange(read);
471
491
  }
472
- renderRun.recordedReads.push(read);
492
+ if (!renderRun.load_muteReadRecording) {
493
+ renderRun.load_recordedReads.push(read);
494
+ }
473
495
  };
474
496
  persistent.watchedProxyFacade.onAfterRead(readListener);
475
497
  try {
@@ -511,7 +533,7 @@ export function watchedComponent(componentFn, options = {}) {
511
533
  }
512
534
  }
513
535
  finally {
514
- renderRun.recordedReads = []; // renderRun is still referenced in closures, but this field is not needed, so let's not hold a big grown array here and may be prevent memory leaks
536
+ renderRun.load_recordedReads = []; // renderRun is still referenced in closures, but this field is not needed, so let's not hold a big grown array here and may be prevent memory leaks
515
537
  currentRenderRun = undefined;
516
538
  }
517
539
  };
@@ -589,8 +611,8 @@ export function load(loaderFn, options = {}) {
589
611
  const renderRun = currentRenderRun;
590
612
  const frame = renderRun.frame;
591
613
  const persistent = frame.persistent;
592
- const recordedReadsSincePreviousLoadCall = renderRun.recordedReads;
593
- renderRun.recordedReads = []; // Pop recordedReads
614
+ const recordedReadsSincePreviousLoadCall = renderRun.load_recordedReads;
615
+ renderRun.load_recordedReads = []; // Pop recordedReads
594
616
  const callerSourceLocation = callStack.stack ? getCallerSourceLocation(callStack.stack) : undefined;
595
617
  // Determine loadCallId:
596
618
  let loadCallId;
@@ -662,7 +684,7 @@ export function load(loaderFn, options = {}) {
662
684
  if (options.critical === false) {
663
685
  return result; // non-watched and add no dependency
664
686
  }
665
- renderRun.recordedReads.push(new RecordedValueRead(result)); // Add as dependency for the next loads
687
+ renderRun.load_recordedReads.push(new RecordedValueRead(result)); // Add as dependency for the next loads
666
688
  return watched(result);
667
689
  }
668
690
  finally {
@@ -728,8 +750,8 @@ export function load(loaderFn, options = {}) {
728
750
  loadRun.recordedReadsBefore = recordedReadsSincePreviousLoadCall;
729
751
  const resultPromise = Promise.resolve(loadRun.exec()); // Exec loaderFn
730
752
  loadRun.loaderFn = options.interval ? loadRun.loaderFn : undefined; // Remove reference if not needed to not risk leaking memory
731
- loadRun.recordedReadsInsideLoaderFn = renderRun.recordedReads;
732
- renderRun.recordedReads = []; // pop and remember the (immediate) reads from inside the loaderFn
753
+ loadRun.recordedReadsInsideLoaderFn = renderRun.load_recordedReads;
754
+ renderRun.load_recordedReads = []; // pop and remember the (immediate) reads from inside the loaderFn
733
755
  resultPromise.then((value) => {
734
756
  loadRun.result = { state: "resolved", resolvedValue: value };
735
757
  if (loadRun.isObsolete) {
@@ -889,33 +911,42 @@ export function binding(prop, options) {
889
911
  const diagnosis_msg = () => `Make sure, prop is derived from something watched: The component's 'props', or a useWatchedState(...) or a wached(...) or a load(...).`;
890
912
  let obj;
891
913
  let key;
892
- // Obtain lastRead
914
+ // Obtain lastRead:
893
915
  const lastRead = renderRun.binding_lastSeenRead;
894
916
  if (!lastRead)
895
917
  throw new Error("Illegal state: no recorded reads. ${diagnosis_msg()}");
896
918
  const diagnosis_moreMsg = () => `The last 'read' in your component function was of type: ${lastRead.constructor.name}`;
897
919
  if (!(lastRead instanceof RecordedReadOnProxiedObject))
898
920
  throw new Error(`Cannot determine property for input into bind(prop). ${diagnosis_msg()}\nMore info:${diagnosis_moreMsg()}`);
899
- if (renderRun.binding_lastSeenRead_outerMostGetter && !((options === null || options === void 0 ? void 0 : options.isAccessor) === false)) { // getter call and user want's getters ?
900
- obj = renderRun.binding_lastSeenRead_outerMostGetter.proxy;
901
- key = renderRun.binding_lastSeenRead_outerMostGetter.key;
902
- //@ts-ignore
903
- prop === obj[key] || throwError(`The value of the last recorded read is not what's passed as 'prop' argument into bind(prop). ${diagnosis_msg()}\n The read was detected as a property-accessor: 'someObject.${key}'. If you didn't intend to bind to a getter/setter, try bind(...,{isAccessor:false})`);
904
- }
905
- else { // property access without getter:
906
- if (!(lastRead instanceof RecordedPropertyRead))
907
- throw new Error(`Cannot determine property for input into bind(prop). ${diagnosis_msg()}\nMore info:${diagnosis_moreMsg()}`);
908
- obj = lastRead.proxy;
909
- key = lastRead.key;
910
- // Check if bind is deterministic:
911
- //@ts-ignore
912
- lastRead.value === obj[key] || throwError(`Illegal state: lastRead does not seem to be deterministic. ${diagnosis_msg()}\nMore info:${diagnosis_moreMsg()}`);
913
- prop === lastRead.value || throwError(`The value of the last recorded read is not what's passed as 'prop' argument into bind(prop). ${diagnosis_msg()}\nMore info:${diagnosis_moreMsg()}`);
921
+ if (array_peekLast(renderRun.load_recordedReads) === lastRead) { // Read was last recorded in the render run? Usually true, except when the binding is on a different facade layer (which is fine also)
922
+ renderRun.load_recordedReads.pop(); // Don't treat the read as a dependency to load(...) statements, because the value is exclusively consumed by the input component
914
923
  }
924
+ renderRun.withReadRecordingMuted(() => {
925
+ if (renderRun.binding_lastSeenRead_outerMostGetter && !((options === null || options === void 0 ? void 0 : options.isAccessor) === false)) { // getter call and user want's getters ?
926
+ obj = renderRun.binding_lastSeenRead_outerMostGetter.proxy;
927
+ key = renderRun.binding_lastSeenRead_outerMostGetter.key;
928
+ //@ts-ignore
929
+ prop === obj[key] || throwError(`The value of the last recorded read is not what's passed as 'prop' argument into bind(prop). ${diagnosis_msg()}\n The read was detected as a property-accessor: 'someObject.${key}'. If you didn't intend to bind to a getter/setter, try bind(...,{isAccessor:false})`);
930
+ }
931
+ else { // property access without getter:
932
+ if (!(lastRead instanceof RecordedPropertyRead))
933
+ throw new Error(`Cannot determine property for input into bind(prop). ${diagnosis_msg()}\nMore info:${diagnosis_moreMsg()}`);
934
+ obj = lastRead.proxy;
935
+ key = lastRead.key;
936
+ // Check if bind is deterministic:
937
+ //@ts-ignore
938
+ lastRead.value === obj[key] || throwError(`Illegal state: lastRead does not seem to be deterministic. ${diagnosis_msg()}\nMore info:${diagnosis_moreMsg()}`);
939
+ prop === lastRead.value || throwError(`The value of the last recorded read is not what's passed as 'prop' argument into bind(prop). ${diagnosis_msg()}\nMore info:${diagnosis_moreMsg()}`);
940
+ }
941
+ });
915
942
  return {
916
943
  get value() {
917
- //@ts-ignore
918
- return obj[key];
944
+ if (!currentRenderRun)
945
+ throw new Error("Illegal state. Not called from the render run of a watchedComponent");
946
+ return currentRenderRun.withReadRecordingMuted(() => {
947
+ //@ts-ignore
948
+ return obj[key];
949
+ });
919
950
  },
920
951
  set value(value) {
921
952
  //@ts-ignore
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"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"}
@@ -14,8 +14,8 @@ export declare class MapSet<K, V> {
14
14
  /**
15
15
  * A WeakMap<K, Set<V>>. But automatically add a new Set if needed
16
16
  */
17
- export declare class WeakMapSet<K, V> extends MapSet<K, V> {
18
- map: WeakMap<K, Set<V>>;
17
+ export declare class WeakMapSet<K extends WeakKey, V> extends MapSet<K, V> {
18
+ map: Map<K, Set<V>>;
19
19
  }
20
20
  export declare function arraysAreEqualsByPredicateFn<A, B>(a: A[], b: B[], equalsFn: (a: A, b: B) => boolean): boolean;
21
21
  export type PromiseState<T> = {
@@ -75,5 +75,6 @@ export declare abstract class DefaultMap<K, V> extends Map<K, V> {
75
75
  * @returns a Map that creates and inserts a default value when that value does not exist. So the #get method always returns something.
76
76
  */
77
77
  export declare function newDefaultMap<K, V>(createDefaultValueFn: () => V): DefaultMap<K, V>;
78
+ export declare function array_peekLast<T>(array: Array<T>): T | undefined;
78
79
  export {};
79
80
  //# sourceMappingURL=Util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Util.d.ts","sourceRoot":"","sources":["../../Util.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ exports.arraysAreShallowlyEqual = arraysAreShallowlyEqual;
11
11
  exports.arraysWithEntriesAreShallowlyEqual = arraysWithEntriesAreShallowlyEqual;
12
12
  exports.recordedReadsArraysAreEqual = recordedReadsArraysAreEqual;
13
13
  exports.newDefaultMap = newDefaultMap;
14
+ exports.array_peekLast = array_peekLast;
14
15
  function throwError(e) {
15
16
  if (e !== null && e instanceof Error) {
16
17
  throw e;
@@ -66,7 +67,6 @@ exports.MapSet = MapSet;
66
67
  class WeakMapSet extends MapSet {
67
68
  constructor() {
68
69
  super(...arguments);
69
- //@ts-ignore
70
70
  this.map = new WeakMap();
71
71
  }
72
72
  }
@@ -202,4 +202,10 @@ function newDefaultMap(createDefaultValueFn) {
202
202
  }
203
203
  }();
204
204
  }
205
+ function array_peekLast(array) {
206
+ if (array.length === 0) {
207
+ return undefined;
208
+ }
209
+ return array[array.length - 1];
210
+ }
205
211
  //# sourceMappingURL=Util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Util.js","sourceRoot":"","sources":["../../Util.ts"],"names":[],"mappings":"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"}
@@ -46,7 +46,7 @@ type WatchedComponentOptions = {
46
46
  */
47
47
  useGlobalSharedProxyFacade?: boolean;
48
48
  };
49
- export declare function watchedComponent<PROPS extends object>(componentFn: (props: PROPS) => any, options?: WatchedComponentOptions): ((props: PROPS) => any) | import("react").MemoExoticComponent<(props: PROPS) => any>;
49
+ export declare function watchedComponent<PROPS extends object>(componentFn: (props: PROPS) => any, options?: WatchedComponentOptions): (props: PROPS) => any;
50
50
  type WatchedOptions = {
51
51
  /**
52
52
  * Called, when a deep property was changed through the proxy.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"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"}
@@ -376,9 +376,13 @@ class RenderRun {
376
376
  constructor() {
377
377
  this.isPassive = false;
378
378
  /**
379
- * Recorded reads of this component's watchedProxyFacade
379
+ * Recorded reads of this component's watchedProxyFacade for load(...) statements
380
380
  */
381
- this.recordedReads = [];
381
+ this.load_recordedReads = [];
382
+ /**
383
+ * Mutes recording into {@see RenderRun#load_recordedReads}
384
+ */
385
+ this.load_muteReadRecording = false;
382
386
  this.loadCallIdsSeen = new Set();
383
387
  /**
384
388
  * Increased, when we see a load(...) call
@@ -440,6 +444,21 @@ class RenderRun {
440
444
  this.frame.stopListeningForChanges(); // Clean up now
441
445
  }
442
446
  }
447
+ /**
448
+ * Mutes read-/dependency recording for load(...) statements while running fn()
449
+ * @param fn
450
+ */
451
+ withReadRecordingMuted(fn) {
452
+ try {
453
+ !this.load_muteReadRecording || (0, Util_1.throwError)("Illegal state"); // safety check: Should not be muted yet
454
+ this.load_muteReadRecording = true;
455
+ return fn();
456
+ }
457
+ finally {
458
+ this.load_muteReadRecording || (0, Util_1.throwError)("Illegal state"); // safety check: Should currently be muted
459
+ this.load_muteReadRecording = false;
460
+ }
461
+ }
443
462
  }
444
463
  let currentRenderRun;
445
464
  function watchedComponent(componentFn, options = {}) {
@@ -468,6 +487,7 @@ function watchedComponent(componentFn, options = {}) {
468
487
  frame.recentRenderRun = currentRenderRun;
469
488
  // Register dismissErrorBoundary function:
470
489
  if (typeof react_error_boundary_1.useErrorBoundary === "function") { // Optional package was loaded?
490
+ //@ts-ignore
471
491
  if ((0, react_1.useContext)(react_error_boundary_1.ErrorBoundaryContext)) { // Inside an error boundary?
472
492
  frame.dismissErrorBoundary = (0, react_error_boundary_1.useErrorBoundary)().resetBoundary;
473
493
  }
@@ -482,7 +502,9 @@ function watchedComponent(componentFn, options = {}) {
482
502
  if (!renderRun.isPassive) { // Active run ?
483
503
  frame.watchPropertyChange(read);
484
504
  }
485
- renderRun.recordedReads.push(read);
505
+ if (!renderRun.load_muteReadRecording) {
506
+ renderRun.load_recordedReads.push(read);
507
+ }
486
508
  };
487
509
  persistent.watchedProxyFacade.onAfterRead(readListener);
488
510
  try {
@@ -524,7 +546,7 @@ function watchedComponent(componentFn, options = {}) {
524
546
  }
525
547
  }
526
548
  finally {
527
- renderRun.recordedReads = []; // renderRun is still referenced in closures, but this field is not needed, so let's not hold a big grown array here and may be prevent memory leaks
549
+ renderRun.load_recordedReads = []; // renderRun is still referenced in closures, but this field is not needed, so let's not hold a big grown array here and may be prevent memory leaks
528
550
  currentRenderRun = undefined;
529
551
  }
530
552
  };
@@ -602,8 +624,8 @@ function load(loaderFn, options = {}) {
602
624
  const renderRun = currentRenderRun;
603
625
  const frame = renderRun.frame;
604
626
  const persistent = frame.persistent;
605
- const recordedReadsSincePreviousLoadCall = renderRun.recordedReads;
606
- renderRun.recordedReads = []; // Pop recordedReads
627
+ const recordedReadsSincePreviousLoadCall = renderRun.load_recordedReads;
628
+ renderRun.load_recordedReads = []; // Pop recordedReads
607
629
  const callerSourceLocation = callStack.stack ? getCallerSourceLocation(callStack.stack) : undefined;
608
630
  // Determine loadCallId:
609
631
  let loadCallId;
@@ -675,7 +697,7 @@ function load(loaderFn, options = {}) {
675
697
  if (options.critical === false) {
676
698
  return result; // non-watched and add no dependency
677
699
  }
678
- renderRun.recordedReads.push(new proxy_facades_1.RecordedValueRead(result)); // Add as dependency for the next loads
700
+ renderRun.load_recordedReads.push(new proxy_facades_1.RecordedValueRead(result)); // Add as dependency for the next loads
679
701
  return watched(result);
680
702
  }
681
703
  finally {
@@ -741,8 +763,8 @@ function load(loaderFn, options = {}) {
741
763
  loadRun.recordedReadsBefore = recordedReadsSincePreviousLoadCall;
742
764
  const resultPromise = Promise.resolve(loadRun.exec()); // Exec loaderFn
743
765
  loadRun.loaderFn = options.interval ? loadRun.loaderFn : undefined; // Remove reference if not needed to not risk leaking memory
744
- loadRun.recordedReadsInsideLoaderFn = renderRun.recordedReads;
745
- renderRun.recordedReads = []; // pop and remember the (immediate) reads from inside the loaderFn
766
+ loadRun.recordedReadsInsideLoaderFn = renderRun.load_recordedReads;
767
+ renderRun.load_recordedReads = []; // pop and remember the (immediate) reads from inside the loaderFn
746
768
  resultPromise.then((value) => {
747
769
  loadRun.result = { state: "resolved", resolvedValue: value };
748
770
  if (loadRun.isObsolete) {
@@ -902,33 +924,42 @@ function binding(prop, options) {
902
924
  const diagnosis_msg = () => `Make sure, prop is derived from something watched: The component's 'props', or a useWatchedState(...) or a wached(...) or a load(...).`;
903
925
  let obj;
904
926
  let key;
905
- // Obtain lastRead
927
+ // Obtain lastRead:
906
928
  const lastRead = renderRun.binding_lastSeenRead;
907
929
  if (!lastRead)
908
930
  throw new Error("Illegal state: no recorded reads. ${diagnosis_msg()}");
909
931
  const diagnosis_moreMsg = () => `The last 'read' in your component function was of type: ${lastRead.constructor.name}`;
910
932
  if (!(lastRead instanceof proxy_facades_1.RecordedReadOnProxiedObject))
911
933
  throw new Error(`Cannot determine property for input into bind(prop). ${diagnosis_msg()}\nMore info:${diagnosis_moreMsg()}`);
912
- if (renderRun.binding_lastSeenRead_outerMostGetter && !((options === null || options === void 0 ? void 0 : options.isAccessor) === false)) { // getter call and user want's getters ?
913
- obj = renderRun.binding_lastSeenRead_outerMostGetter.proxy;
914
- key = renderRun.binding_lastSeenRead_outerMostGetter.key;
915
- //@ts-ignore
916
- prop === obj[key] || (0, Util_1.throwError)(`The value of the last recorded read is not what's passed as 'prop' argument into bind(prop). ${diagnosis_msg()}\n The read was detected as a property-accessor: 'someObject.${key}'. If you didn't intend to bind to a getter/setter, try bind(...,{isAccessor:false})`);
917
- }
918
- else { // property access without getter:
919
- if (!(lastRead instanceof proxy_facades_1.RecordedPropertyRead))
920
- throw new Error(`Cannot determine property for input into bind(prop). ${diagnosis_msg()}\nMore info:${diagnosis_moreMsg()}`);
921
- obj = lastRead.proxy;
922
- key = lastRead.key;
923
- // Check if bind is deterministic:
924
- //@ts-ignore
925
- lastRead.value === obj[key] || (0, Util_1.throwError)(`Illegal state: lastRead does not seem to be deterministic. ${diagnosis_msg()}\nMore info:${diagnosis_moreMsg()}`);
926
- prop === lastRead.value || (0, Util_1.throwError)(`The value of the last recorded read is not what's passed as 'prop' argument into bind(prop). ${diagnosis_msg()}\nMore info:${diagnosis_moreMsg()}`);
934
+ if ((0, Util_1.array_peekLast)(renderRun.load_recordedReads) === lastRead) { // Read was last recorded in the render run? Usually true, except when the binding is on a different facade layer (which is fine also)
935
+ renderRun.load_recordedReads.pop(); // Don't treat the read as a dependency to load(...) statements, because the value is exclusively consumed by the input component
927
936
  }
937
+ renderRun.withReadRecordingMuted(() => {
938
+ if (renderRun.binding_lastSeenRead_outerMostGetter && !((options === null || options === void 0 ? void 0 : options.isAccessor) === false)) { // getter call and user want's getters ?
939
+ obj = renderRun.binding_lastSeenRead_outerMostGetter.proxy;
940
+ key = renderRun.binding_lastSeenRead_outerMostGetter.key;
941
+ //@ts-ignore
942
+ prop === obj[key] || (0, Util_1.throwError)(`The value of the last recorded read is not what's passed as 'prop' argument into bind(prop). ${diagnosis_msg()}\n The read was detected as a property-accessor: 'someObject.${key}'. If you didn't intend to bind to a getter/setter, try bind(...,{isAccessor:false})`);
943
+ }
944
+ else { // property access without getter:
945
+ if (!(lastRead instanceof proxy_facades_1.RecordedPropertyRead))
946
+ throw new Error(`Cannot determine property for input into bind(prop). ${diagnosis_msg()}\nMore info:${diagnosis_moreMsg()}`);
947
+ obj = lastRead.proxy;
948
+ key = lastRead.key;
949
+ // Check if bind is deterministic:
950
+ //@ts-ignore
951
+ lastRead.value === obj[key] || (0, Util_1.throwError)(`Illegal state: lastRead does not seem to be deterministic. ${diagnosis_msg()}\nMore info:${diagnosis_moreMsg()}`);
952
+ prop === lastRead.value || (0, Util_1.throwError)(`The value of the last recorded read is not what's passed as 'prop' argument into bind(prop). ${diagnosis_msg()}\nMore info:${diagnosis_moreMsg()}`);
953
+ }
954
+ });
928
955
  return {
929
956
  get value() {
930
- //@ts-ignore
931
- return obj[key];
957
+ if (!currentRenderRun)
958
+ throw new Error("Illegal state. Not called from the render run of a watchedComponent");
959
+ return currentRenderRun.withReadRecordingMuted(() => {
960
+ //@ts-ignore
961
+ return obj[key];
962
+ });
932
963
  },
933
964
  set value(value) {
934
965
  //@ts-ignore