proxy-facades 1.0.0 → 1.0.2

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 (98) hide show
  1. package/DEVELOPMENT.md +77 -1
  2. package/RecordedReadOnProxiedObjectExt.d.ts +2 -1
  3. package/RecordedReadOnProxiedObjectExt.d.ts.map +1 -1
  4. package/RecordedReadOnProxiedObjectExt.js +1 -2
  5. package/RecordedReadOnProxiedObjectExt.js.map +1 -1
  6. package/RecordedReadOnProxiedObjectExt.ts +2 -2
  7. package/class-trackers/Array.d.ts +2 -1
  8. package/class-trackers/Array.d.ts.map +1 -1
  9. package/class-trackers/Array.js +4 -3
  10. package/class-trackers/Array.js.map +1 -1
  11. package/class-trackers/Array.ts +9 -3
  12. package/class-trackers/Iterator.d.ts +2 -1
  13. package/class-trackers/Iterator.d.ts.map +1 -1
  14. package/class-trackers/Iterator.js.map +1 -1
  15. package/class-trackers/Iterator.ts +2 -1
  16. package/class-trackers/Map.d.ts +2 -1
  17. package/class-trackers/Map.d.ts.map +1 -1
  18. package/class-trackers/Map.js +8 -7
  19. package/class-trackers/Map.js.map +1 -1
  20. package/class-trackers/Map.ts +8 -4
  21. package/class-trackers/Set.d.ts +2 -1
  22. package/class-trackers/Set.d.ts.map +1 -1
  23. package/class-trackers/Set.js +8 -7
  24. package/class-trackers/Set.js.map +1 -1
  25. package/class-trackers/Set.ts +9 -5
  26. package/common.d.ts +0 -54
  27. package/common.d.ts.map +1 -1
  28. package/common.js +1 -81
  29. package/common.js.map +1 -1
  30. package/common.ts +1 -131
  31. package/dist/mjs/RecordedReadOnProxiedObjectExt.d.ts +2 -1
  32. package/dist/mjs/RecordedReadOnProxiedObjectExt.d.ts.map +1 -1
  33. package/dist/mjs/RecordedReadOnProxiedObjectExt.js +1 -2
  34. package/dist/mjs/RecordedReadOnProxiedObjectExt.js.map +1 -1
  35. package/dist/mjs/class-trackers/Array.d.ts +2 -1
  36. package/dist/mjs/class-trackers/Array.d.ts.map +1 -1
  37. package/dist/mjs/class-trackers/Array.js +2 -1
  38. package/dist/mjs/class-trackers/Array.js.map +1 -1
  39. package/dist/mjs/class-trackers/Iterator.d.ts +2 -1
  40. package/dist/mjs/class-trackers/Iterator.d.ts.map +1 -1
  41. package/dist/mjs/class-trackers/Iterator.js.map +1 -1
  42. package/dist/mjs/class-trackers/Map.d.ts +2 -1
  43. package/dist/mjs/class-trackers/Map.d.ts.map +1 -1
  44. package/dist/mjs/class-trackers/Map.js +2 -1
  45. package/dist/mjs/class-trackers/Map.js.map +1 -1
  46. package/dist/mjs/class-trackers/Set.d.ts +2 -1
  47. package/dist/mjs/class-trackers/Set.d.ts.map +1 -1
  48. package/dist/mjs/class-trackers/Set.js +2 -1
  49. package/dist/mjs/class-trackers/Set.js.map +1 -1
  50. package/dist/mjs/common.d.ts +0 -54
  51. package/dist/mjs/common.d.ts.map +1 -1
  52. package/dist/mjs/common.js +1 -78
  53. package/dist/mjs/common.js.map +1 -1
  54. package/dist/mjs/index.d.ts +7 -3
  55. package/dist/mjs/index.d.ts.map +1 -1
  56. package/dist/mjs/index.js +5 -3
  57. package/dist/mjs/index.js.map +1 -1
  58. package/dist/mjs/objectChangeTracking.d.ts.map +1 -1
  59. package/dist/mjs/objectChangeTracking.js +2 -1
  60. package/dist/mjs/objectChangeTracking.js.map +1 -1
  61. package/dist/mjs/origChangeTracking.d.ts +0 -8
  62. package/dist/mjs/origChangeTracking.d.ts.map +1 -1
  63. package/dist/mjs/origChangeTracking.js +2 -23
  64. package/dist/mjs/origChangeTracking.js.map +1 -1
  65. package/dist/mjs/proxyFacade.d.ts +60 -1
  66. package/dist/mjs/proxyFacade.d.ts.map +1 -1
  67. package/dist/mjs/proxyFacade.js +98 -2
  68. package/dist/mjs/proxyFacade.js.map +1 -1
  69. package/dist/mjs/watchedProxyFacade.d.ts +2 -2
  70. package/dist/mjs/watchedProxyFacade.d.ts.map +1 -1
  71. package/dist/mjs/watchedProxyFacade.js +2 -2
  72. package/dist/mjs/watchedProxyFacade.js.map +1 -1
  73. package/index.d.ts +7 -3
  74. package/index.d.ts.map +1 -1
  75. package/index.js +7 -5
  76. package/index.js.map +1 -1
  77. package/index.ts +8 -4
  78. package/index_esm.mjs +8 -8
  79. package/objectChangeTracking.d.ts.map +1 -1
  80. package/objectChangeTracking.js +7 -6
  81. package/objectChangeTracking.js.map +1 -1
  82. package/objectChangeTracking.ts +1 -1
  83. package/origChangeTracking.d.ts +0 -8
  84. package/origChangeTracking.d.ts.map +1 -1
  85. package/origChangeTracking.js +2 -25
  86. package/origChangeTracking.js.map +1 -1
  87. package/origChangeTracking.ts +2 -30
  88. package/package.json +1 -1
  89. package/proxyFacade.d.ts +60 -1
  90. package/proxyFacade.d.ts.map +1 -1
  91. package/proxyFacade.js +103 -3
  92. package/proxyFacade.js.map +1 -1
  93. package/proxyFacade.ts +158 -3
  94. package/watchedProxyFacade.d.ts +2 -2
  95. package/watchedProxyFacade.d.ts.map +1 -1
  96. package/watchedProxyFacade.js +4 -4
  97. package/watchedProxyFacade.js.map +1 -1
  98. package/watchedProxyFacade.ts +10 -7
@@ -2,22 +2,18 @@
2
2
  // This file has functions / classes that allow to watch writes to the original unproxied objects (or arrays/sets/maps)
3
3
  // unproxied=not part of a proxy facade. Technically this can install Proxys as the prototype, to catch writes.
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.changeTrackedOrigObjects = void 0;
6
5
  exports.installChangeTracker = installChangeTracker;
7
- exports.deleteProperty = deleteProperty;
8
- const common_1 = require("./common");
9
6
  const objectChangeTracking_1 = require("./objectChangeTracking");
10
7
  const index_1 = require("./class-trackers/index");
11
8
  const proxyFacade_1 = require("./proxyFacade");
12
9
  const Util_1 = require("./Util");
13
- exports.changeTrackedOrigObjects = new common_1.PartialGraph();
14
10
  /**
15
11
  *
16
12
  * @param obj
17
13
  */
18
14
  function installChangeTracker(obj) {
19
15
  !(0, proxyFacade_1.isProxyForAFacade)(obj) || (0, Util_1.throwError)("Cannot install change tracker on a proxy. The proxy should already support change tracking.");
20
- if (exports.changeTrackedOrigObjects.hasObj(obj)) {
16
+ if (proxyFacade_1.changeTrackedOrigObjects.hasObj(obj)) {
21
17
  return;
22
18
  }
23
19
  function inner() {
@@ -39,25 +35,6 @@ function installChangeTracker(obj) {
39
35
  }
40
36
  }
41
37
  inner();
42
- exports.changeTrackedOrigObjects._register(obj);
43
- }
44
- /**
45
- * Use this to delete properties on objects that have a write tracker installed. Otherwise they are not deletable and the write tracker cannot track the object's keys modification and inform listeners
46
- * @param obj
47
- * @param key
48
- */
49
- function deleteProperty(obj, key) {
50
- if (!exports.changeTrackedOrigObjects.hasObj(obj)) {
51
- return delete obj[key];
52
- }
53
- const doesExist = Object.getOwnPropertyDescriptor(obj, key) !== undefined;
54
- if (!doesExist) {
55
- return true;
56
- }
57
- return (0, common_1.runChangeOperation)(obj, new common_1.UnspecificObjectChange(obj), [(0, objectChangeTracking_1.getChangeHooksForObject)(obj).changeOwnKeys], () => {
58
- //@ts-ignore
59
- obj[key] = undefined; // Set to undefined first, so property change listeners will get informed
60
- return delete obj[key];
61
- });
38
+ proxyFacade_1.changeTrackedOrigObjects._register(obj);
62
39
  }
63
40
  //# sourceMappingURL=origChangeTracking.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"origChangeTracking.js","sourceRoot":"","sources":["origChangeTracking.ts"],"names":[],"mappings":";AAAA,uHAAuH;AACvH,+GAA+G;;;AAqB/G,oDA2BC;AAOD,wCAeC;AAnED,qCAAkF;AAClF,iEAIgC;AAChC,kDAA4D;AAC5D,+CAAgD;AAChD,iCAAkC;AAErB,QAAA,wBAAwB,GAAG,IAAI,qBAAY,EAAE,CAAC;AAI3D;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,GAAW;IAC5C,CAAC,IAAA,+BAAiB,EAAC,GAAG,CAAC,IAAI,IAAA,iBAAU,EAAC,6FAA6F,CAAC,CAAC;IACrI,IAAG,gCAAwB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO;IACX,CAAC;IAED,SAAS,KAAK;QACV,MAAM,cAAc,GAAG,IAAA,4BAAoB,EAAC,GAAG,CAAC,CAAC;QACjD,IAAI,cAAc,EAAE,CAAC;YACjB,IAAI,cAAc,CAAC,4BAA4B,EAAE,CAAC;gBAC9C,8GAA8G;gBAC9G,MAAM,KAAK,GAAG,IAAI,yCAAkB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC;gBAChE,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAClC,OAAO;YACX,CAAC;YAED,IAAI,cAAc,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;gBAC7C,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YACvE,CAAC;QACL,CAAC;aAAM,CAAC,CAAC,uBAAuB;YAC5B,MAAM,KAAK,GAAG,IAAI,yCAAkB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC;YAChE,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IACD,KAAK,EAAE,CAAC;IAER,gCAAwB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAmB,GAAM,EAAE,GAAY;IACjE,IAAG,CAAC,gCAAwB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,OAAO,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,SAAS,CAAC;IAC1E,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,IAAA,2BAAkB,EAAC,GAAG,EAAE,IAAI,+BAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAA,8CAAuB,EAAC,GAAG,CAAC,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE;QAC/G,YAAY;QACZ,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,yEAAyE;QAC/F,OAAO,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"origChangeTracking.js","sourceRoot":"","sources":["origChangeTracking.ts"],"names":[],"mappings":";AAAA,uHAAuH;AACvH,+GAA+G;;AAa/G,oDA2BC;AArCD,iEAA0D;AAC1D,kDAA4D;AAC5D,+CAA0E;AAC1E,iCAAkC;AAGlC;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,GAAW;IAC5C,CAAC,IAAA,+BAAiB,EAAC,GAAG,CAAC,IAAI,IAAA,iBAAU,EAAC,6FAA6F,CAAC,CAAC;IACrI,IAAG,sCAAwB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO;IACX,CAAC;IAED,SAAS,KAAK;QACV,MAAM,cAAc,GAAG,IAAA,4BAAoB,EAAC,GAAG,CAAC,CAAC;QACjD,IAAI,cAAc,EAAE,CAAC;YACjB,IAAI,cAAc,CAAC,4BAA4B,EAAE,CAAC;gBAC9C,8GAA8G;gBAC9G,MAAM,KAAK,GAAG,IAAI,yCAAkB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC;gBAChE,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAClC,OAAO;YACX,CAAC;YAED,IAAI,cAAc,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;gBAC7C,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YACvE,CAAC;QACL,CAAC;aAAM,CAAC,CAAC,uBAAuB;YAC5B,MAAM,KAAK,GAAG,IAAI,yCAAkB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC;YAChE,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IACD,KAAK,EAAE,CAAC;IAER,sCAAwB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC"}
@@ -2,19 +2,11 @@
2
2
  // unproxied=not part of a proxy facade. Technically this can install Proxys as the prototype, to catch writes.
3
3
 
4
4
 
5
- import {PartialGraph, runChangeOperation, UnspecificObjectChange} from "./common";
6
- import {
7
- ObjectProxyHandler,
8
- changeHooksForObject,
9
- getChangeHooksForObject
10
- } from "./objectChangeTracking";
5
+ import {ObjectProxyHandler} from "./objectChangeTracking";
11
6
  import {getTrackingConfigFor} from "./class-trackers/index";
12
- import {isProxyForAFacade} from "./proxyFacade";
7
+ import {changeTrackedOrigObjects, isProxyForAFacade} from "./proxyFacade";
13
8
  import {throwError} from "./Util";
14
9
 
15
- export const changeTrackedOrigObjects = new PartialGraph();
16
-
17
-
18
10
 
19
11
  /**
20
12
  *
@@ -49,24 +41,4 @@ export function installChangeTracker(obj: object) {
49
41
  changeTrackedOrigObjects._register(obj);
50
42
  }
51
43
 
52
- /**
53
- * Use this to delete properties on objects that have a write tracker installed. Otherwise they are not deletable and the write tracker cannot track the object's keys modification and inform listeners
54
- * @param obj
55
- * @param key
56
- */
57
- export function deleteProperty<O extends object>(obj: O, key: keyof O) {
58
- if(!changeTrackedOrigObjects.hasObj(obj)) {
59
- return delete obj[key];
60
- }
61
-
62
- const doesExist = Object.getOwnPropertyDescriptor(obj, key) !== undefined;
63
- if (!doesExist) {
64
- return true;
65
- }
66
44
 
67
- return runChangeOperation(obj, new UnspecificObjectChange(obj), [getChangeHooksForObject(obj).changeOwnKeys], () => {
68
- //@ts-ignore
69
- obj[key] = undefined; // Set to undefined first, so property change listeners will get informed
70
- return delete obj[key];
71
- });
72
- }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "proxy-facades",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "proxy",
package/proxyFacade.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  *
3
3
  */
4
- import { ObjKey, PartialGraph } from "./common";
4
+ import { ChangeOperation, EventHook, ObjKey, PartialGraph, RecordedRead } from "./common";
5
+ import { WatchedProxyHandler } from "./watchedProxyFacade";
5
6
  export declare abstract class ProxyFacade<HANDLER extends FacadeProxyHandler<any>> extends PartialGraph {
6
7
  /**
7
8
  * Treats them like functions, meaning, they get a proxied 'this'. WatchProxies will see the access to the real properties
@@ -42,4 +43,62 @@ export declare function invalidateObject(obj: object, message: string, cause?: E
42
43
  * @returns the real real origial object from the real world
43
44
  */
44
45
  export declare function getGlobalOrig<T extends object>(obj: T): T;
46
+ export declare abstract class RecordedReadOnProxiedObject extends RecordedRead {
47
+ proxyHandler: WatchedProxyHandler;
48
+ /**
49
+ * A bit redundant with proxyhandler. But for performance reasons, we leave it
50
+ */
51
+ obj: object;
52
+ }
53
+ export interface IWatchedProxyHandler_common {
54
+ /**
55
+ * Registers the Read to this WatchedProxyHandler and fires it on the WatchedFacade (informs WatchedFacade's listeners)
56
+ * @param read
57
+ */
58
+ fireAfterRead(read: RecordedReadOnProxiedObject): void;
59
+ getFacade(): ProxyFacade<any>;
60
+ }
61
+ /**
62
+ * For use in proxy and direct
63
+ */
64
+ export interface DualUseTracker<T> {
65
+ /**
66
+ * Will return the handler when called through the handler
67
+ */
68
+ get _watchedProxyHandler(): IWatchedProxyHandler_common | undefined;
69
+ /**
70
+ * The original (unproxied) object
71
+ */
72
+ get _target(): T;
73
+ }
74
+ export declare function dualUseTracker_callOrigMethodOnTarget<O extends object, M extends keyof O>(tracker: DualUseTracker<O>, methodName: M, args: unknown[]): ReturnType<O[M]>;
75
+ /**
76
+ * Informs hooksToServe's beforeListeners + executes changeOperation + informs hooksToServe's afterListeners.
77
+ * All this while preventing listeners from beeing called twice (this is the main purpose of this function!). Even during the same operation (call) that spans a call stack (the stack can go through multiple proxy layers)
78
+ * <p>
79
+ * This function is needed, because there's some overlapping of concerns in listener types, especially for Arrays. Also internal methods may again call the set method which itsself wants to call the propertychange_listeners.
80
+ * </p>
81
+ * @param forTarget object to sync on. All hooks passed to nested runChangeOperation calls will only be fired once.
82
+ * @param paramForListeners the parameter for the change listeners. It won't be run by this function / it's just the parameter. When setting to undefined, it indicates that this runChangeOperation call is only to wrap multiple nested calls / sync them on targetObject. The default anyChange hook won't be called at this level either.
83
+ * @param hooksToServe these hooks will be called (not twice, as mentioned).
84
+ * @param changeOperationFn
85
+ */
86
+ export declare function runChangeOperation<R>(forTarget: object, paramForListeners: ChangeOperation | undefined, hooksToServe: EventHook[], changeOperationFn: () => R): R;
87
+ export interface ForWatchedProxyHandler<T> extends DualUseTracker<T> {
88
+ /**
89
+ * Will return the handler when called through the handler
90
+ */
91
+ get _watchedProxyHandler(): IWatchedProxyHandler_common;
92
+ /**
93
+ * The original (unproxied) object
94
+ */
95
+ get _target(): T;
96
+ }
97
+ /**
98
+ * Use this to delete properties on objects that have a write tracker installed. Otherwise they are not deletable and the write tracker cannot track the object's keys modification and inform listeners
99
+ * @param obj
100
+ * @param key
101
+ */
102
+ export declare function deleteProperty<O extends object>(obj: O, key: keyof O): boolean;
103
+ export declare const changeTrackedOrigObjects: PartialGraph;
45
104
  //# sourceMappingURL=proxyFacade.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"proxyFacade.d.ts","sourceRoot":"","sources":["proxyFacade.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAIH,MAAM,EACN,YAAY,EAEf,MAAM,UAAU,CAAC;AAIlB,8BAAsB,WAAW,CAAC,OAAO,SAAS,kBAAkB,CAAC,GAAG,CAAC,CAAE,SAAQ,YAAY;IAE3F;;OAEG;IACI,2BAA2B,UAAQ;IAG1C,SAAS,CAAC,sBAAsB,2BAAkC;IAElE,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO;IAErE,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC;IAwB3B;;;;OAIG;IACH,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC;IAQjC,aAAa,CAAC,GAAG,EAAE,MAAM,GAC4B,OAAO;CAG/D;AAED,8BAAsB,kBAAkB,CAAC,MAAM,SAAS,WAAW,CAAC,GAAG,CAAC,CAAE,YAAW,YAAY,CAAC,MAAM,CAAC;IACrG,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;gBAEH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAU1C,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAK7D,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,UAAU,EAAE,kBAAkB,GAAG,OAAO;IAIlG,GAAG,CAAE,WAAW,EAAC,MAAM,EAAE,CAAC,EAAC,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAC,GAAG;IA+BxD,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAKvC,GAAG,CAAC,WAAW,EAAC,MAAM,EAAE,CAAC,EAAC,MAAM,GAAG,MAAM,EAAE,KAAK,EAAC,GAAG,EAAE,QAAQ,EAAC,GAAG;IAoBlE,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,iBAAiB,EAAE,GAAG;CAOjE;AAQD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,WAE5C;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,QAoC3E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAMzD"}
1
+ {"version":3,"file":"proxyFacade.d.ts","sourceRoot":"","sources":["proxyFacade.ts"],"names":[],"mappings":"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"}
package/proxyFacade.js CHANGED
@@ -1,14 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FacadeProxyHandler = exports.ProxyFacade = void 0;
3
+ exports.changeTrackedOrigObjects = exports.RecordedReadOnProxiedObject = exports.FacadeProxyHandler = exports.ProxyFacade = void 0;
4
4
  exports.isProxyForAFacade = isProxyForAFacade;
5
5
  exports.invalidateObject = invalidateObject;
6
6
  exports.getGlobalOrig = getGlobalOrig;
7
+ exports.dualUseTracker_callOrigMethodOnTarget = dualUseTracker_callOrigMethodOnTarget;
8
+ exports.runChangeOperation = runChangeOperation;
9
+ exports.deleteProperty = deleteProperty;
7
10
  /**
8
11
  *
9
12
  */
10
13
  const common_1 = require("./common");
11
- const origChangeTracking_1 = require("./origChangeTracking");
14
+ const objectChangeTracking_1 = require("./objectChangeTracking");
15
+ const Util_1 = require("./Util");
12
16
  class ProxyFacade extends common_1.PartialGraph {
13
17
  constructor() {
14
18
  super(...arguments);
@@ -66,7 +70,7 @@ class FacadeProxyHandler {
66
70
  }
67
71
  deleteProperty(target, key) {
68
72
  //@ts-ignore
69
- return (0, origChangeTracking_1.deleteProperty)(this.target, key);
73
+ return deleteProperty(this.target, key);
70
74
  }
71
75
  defineProperty(target, property, attributes) {
72
76
  throw new Error("Must not use defineProperty on a proxied object. Handling of change tracking etc. for this may not be implemented");
@@ -184,4 +188,100 @@ function getGlobalOrig(obj) {
184
188
  }
185
189
  return obj;
186
190
  }
191
+ class RecordedReadOnProxiedObject extends common_1.RecordedRead {
192
+ }
193
+ exports.RecordedReadOnProxiedObject = RecordedReadOnProxiedObject;
194
+ //@ts-ignore
195
+ function dualUseTracker_callOrigMethodOnTarget(tracker, methodName, args) {
196
+ const target = tracker._target;
197
+ const method = tracker._watchedProxyHandler !== undefined ? target[methodName] : Object.getPrototypeOf(Object.getPrototypeOf(tracker))[methodName];
198
+ return method.apply(target, args);
199
+ }
200
+ /**
201
+ * Used by runChangeOperation
202
+ */
203
+ class ChangeCall {
204
+ constructor() {
205
+ this.fired_beforeListeners = new Set();
206
+ this.afterListeners = new Set();
207
+ /**
208
+ * "binds" the ChangeOperation parameter to the afterListeners
209
+ */
210
+ this.paramsForAfterListeners = new Map();
211
+ }
212
+ }
213
+ const runChangeOperation_Calls = (0, Util_1.newDefaultMap)(() => new ChangeCall());
214
+ /**
215
+ * Informs hooksToServe's beforeListeners + executes changeOperation + informs hooksToServe's afterListeners.
216
+ * All this while preventing listeners from beeing called twice (this is the main purpose of this function!). Even during the same operation (call) that spans a call stack (the stack can go through multiple proxy layers)
217
+ * <p>
218
+ * This function is needed, because there's some overlapping of concerns in listener types, especially for Arrays. Also internal methods may again call the set method which itsself wants to call the propertychange_listeners.
219
+ * </p>
220
+ * @param forTarget object to sync on. All hooks passed to nested runChangeOperation calls will only be fired once.
221
+ * @param paramForListeners the parameter for the change listeners. It won't be run by this function / it's just the parameter. When setting to undefined, it indicates that this runChangeOperation call is only to wrap multiple nested calls / sync them on targetObject. The default anyChange hook won't be called at this level either.
222
+ * @param hooksToServe these hooks will be called (not twice, as mentioned).
223
+ * @param changeOperationFn
224
+ */
225
+ function runChangeOperation(forTarget, paramForListeners, hooksToServe, changeOperationFn) {
226
+ var _a;
227
+ const synchronizeOn = getGlobalOrig(forTarget);
228
+ let isRootCall = !runChangeOperation_Calls.has(synchronizeOn); // is it not nested / the outermost call ?
229
+ const changeCall = runChangeOperation_Calls.get(synchronizeOn);
230
+ try {
231
+ if (paramForListeners) {
232
+ hooksToServe.push((0, objectChangeTracking_1.getChangeHooksForObject)(forTarget).anyChange); // Always serve this one as well
233
+ (_a = common_1.objectMembershipInGraphs.get(forTarget)) === null || _a === void 0 ? void 0 : _a.forEach(graph => {
234
+ hooksToServe.push(graph._changeHook);
235
+ });
236
+ // Fire and register before-hooks:
237
+ hooksToServe.forEach(hook => {
238
+ hook.beforeListeners.forEach(listener => {
239
+ if (!changeCall.fired_beforeListeners.has(listener)) {
240
+ listener(paramForListeners); // fire
241
+ changeCall.fired_beforeListeners.add(listener);
242
+ }
243
+ });
244
+ hook.afterListeners.forEach(afterListener => {
245
+ if (!changeCall.afterListeners.has(afterListener)) {
246
+ changeCall.afterListeners.add(afterListener);
247
+ changeCall.paramsForAfterListeners.set(afterListener, paramForListeners); // Ensure, it is called with the proper changeOperation parameter afterwards. Otherwise stuff from a higher level facade would leak to a change listeners, registered in a lower facade
248
+ }
249
+ }); // schedule afterListeners
250
+ });
251
+ }
252
+ const result = changeOperationFn();
253
+ if (isRootCall) {
254
+ // call afterListeners:
255
+ for (const listener of changeCall.afterListeners) {
256
+ listener(changeCall.paramsForAfterListeners.get(listener)); // fire
257
+ }
258
+ }
259
+ return result;
260
+ }
261
+ finally {
262
+ if (isRootCall) {
263
+ runChangeOperation_Calls.delete(synchronizeOn);
264
+ }
265
+ }
266
+ }
267
+ /**
268
+ * Use this to delete properties on objects that have a write tracker installed. Otherwise they are not deletable and the write tracker cannot track the object's keys modification and inform listeners
269
+ * @param obj
270
+ * @param key
271
+ */
272
+ function deleteProperty(obj, key) {
273
+ if (!exports.changeTrackedOrigObjects.hasObj(obj)) {
274
+ return delete obj[key];
275
+ }
276
+ const doesExist = Object.getOwnPropertyDescriptor(obj, key) !== undefined;
277
+ if (!doesExist) {
278
+ return true;
279
+ }
280
+ return runChangeOperation(obj, new common_1.UnspecificObjectChange(obj), [(0, objectChangeTracking_1.getChangeHooksForObject)(obj).changeOwnKeys], () => {
281
+ //@ts-ignore
282
+ obj[key] = undefined; // Set to undefined first, so property change listeners will get informed
283
+ return delete obj[key];
284
+ });
285
+ }
286
+ exports.changeTrackedOrigObjects = new common_1.PartialGraph();
187
287
  //# sourceMappingURL=proxyFacade.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"proxyFacade.js","sourceRoot":"","sources":["proxyFacade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxyFacade.js","sourceRoot":"","sources":["proxyFacade.ts"],"names":[],"mappings":"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"}
package/proxyFacade.ts CHANGED
@@ -2,14 +2,20 @@
2
2
  *
3
3
  */
4
4
  import {
5
+ ChangeListener,
6
+ ChangeOperation,
7
+ EventHook,
5
8
  getPropertyDescriptor,
6
9
  GetterFlags,
7
10
  objectMembershipInGraphs,
8
11
  ObjKey,
9
12
  PartialGraph,
10
- SetterFlags
13
+ RecordedRead,
14
+ SetterFlags, UnspecificObjectChange
11
15
  } from "./common";
12
- import {deleteProperty} from "./origChangeTracking";
16
+ import {getChangeHooksForObject} from "./objectChangeTracking";
17
+ import {newDefaultMap} from "./Util";
18
+ import {WatchedProxyHandler} from "./watchedProxyFacade";
13
19
 
14
20
 
15
21
  export abstract class ProxyFacade<HANDLER extends FacadeProxyHandler<any>> extends PartialGraph {
@@ -219,4 +225,153 @@ export function getGlobalOrig<T extends object>(obj: T): T {
219
225
  obj = handler.target as T;
220
226
  }
221
227
  return obj;
222
- }
228
+ }
229
+
230
+ export abstract class RecordedReadOnProxiedObject extends RecordedRead {
231
+ proxyHandler!: WatchedProxyHandler
232
+ /**
233
+ * A bit redundant with proxyhandler. But for performance reasons, we leave it
234
+ */
235
+ obj!: object;
236
+ }
237
+
238
+ export interface IWatchedProxyHandler_common {
239
+ /**
240
+ * Registers the Read to this WatchedProxyHandler and fires it on the WatchedFacade (informs WatchedFacade's listeners)
241
+ * @param read
242
+ */
243
+ fireAfterRead(read: RecordedReadOnProxiedObject): void;
244
+
245
+ getFacade(): ProxyFacade<any>
246
+ }
247
+
248
+ /**
249
+ * For use in proxy and direct
250
+ */
251
+ export interface DualUseTracker<T> {
252
+
253
+ /**
254
+ * Will return the handler when called through the handler
255
+ */
256
+ get _watchedProxyHandler(): IWatchedProxyHandler_common | undefined;
257
+
258
+ /**
259
+ * The original (unproxied) object
260
+ */
261
+ get _target(): T
262
+ }
263
+
264
+ //@ts-ignore
265
+ export function dualUseTracker_callOrigMethodOnTarget<O extends object, M extends keyof O>(tracker: DualUseTracker<O>, methodName: M, args: unknown[]): ReturnType<O[M]> {
266
+ const target = tracker._target;
267
+ const method = tracker._watchedProxyHandler !== undefined ? target[methodName] : Object.getPrototypeOf(Object.getPrototypeOf(tracker))[methodName];
268
+ return method.apply(target, args);
269
+ }
270
+
271
+ /**
272
+ * Used by runChangeOperation
273
+ */
274
+ class ChangeCall {
275
+ fired_beforeListeners = new Set<ChangeListener>();
276
+ afterListeners = new Set<ChangeListener>();
277
+
278
+ /**
279
+ * "binds" the ChangeOperation parameter to the afterListeners
280
+ */
281
+ paramsForAfterListeners = new Map<ChangeListener, ChangeOperation>();
282
+ }
283
+
284
+ const runChangeOperation_Calls = newDefaultMap<object, ChangeCall>(() => new ChangeCall());
285
+
286
+ /**
287
+ * Informs hooksToServe's beforeListeners + executes changeOperation + informs hooksToServe's afterListeners.
288
+ * All this while preventing listeners from beeing called twice (this is the main purpose of this function!). Even during the same operation (call) that spans a call stack (the stack can go through multiple proxy layers)
289
+ * <p>
290
+ * This function is needed, because there's some overlapping of concerns in listener types, especially for Arrays. Also internal methods may again call the set method which itsself wants to call the propertychange_listeners.
291
+ * </p>
292
+ * @param forTarget object to sync on. All hooks passed to nested runChangeOperation calls will only be fired once.
293
+ * @param paramForListeners the parameter for the change listeners. It won't be run by this function / it's just the parameter. When setting to undefined, it indicates that this runChangeOperation call is only to wrap multiple nested calls / sync them on targetObject. The default anyChange hook won't be called at this level either.
294
+ * @param hooksToServe these hooks will be called (not twice, as mentioned).
295
+ * @param changeOperationFn
296
+ */
297
+ export function runChangeOperation<R>(forTarget: object, paramForListeners: ChangeOperation | undefined, hooksToServe: EventHook[], changeOperationFn: () => R): R {
298
+ const synchronizeOn = getGlobalOrig(forTarget);
299
+ let isRootCall = !runChangeOperation_Calls.has(synchronizeOn); // is it not nested / the outermost call ?
300
+ const changeCall = runChangeOperation_Calls.get(synchronizeOn);
301
+ try {
302
+ if (paramForListeners) {
303
+ hooksToServe.push(getChangeHooksForObject(forTarget).anyChange); // Always serve this one as well
304
+ objectMembershipInGraphs.get(forTarget)?.forEach(graph => {
305
+ hooksToServe.push(graph._changeHook);
306
+ })
307
+
308
+ // Fire and register before-hooks:
309
+ hooksToServe.forEach(hook => {
310
+ hook.beforeListeners.forEach(listener => {
311
+ if (!changeCall.fired_beforeListeners.has(listener)) {
312
+ listener(paramForListeners); // fire
313
+ changeCall.fired_beforeListeners.add(listener);
314
+ }
315
+ })
316
+
317
+ hook.afterListeners.forEach(afterListener => {
318
+ if (!changeCall.afterListeners.has(afterListener)) {
319
+ changeCall.afterListeners.add(afterListener);
320
+ changeCall.paramsForAfterListeners.set(afterListener, paramForListeners); // Ensure, it is called with the proper changeOperation parameter afterwards. Otherwise stuff from a higher level facade would leak to a change listeners, registered in a lower facade
321
+ }
322
+ }); // schedule afterListeners
323
+ });
324
+ }
325
+
326
+ const result = changeOperationFn();
327
+
328
+ if (isRootCall) {
329
+ // call afterListeners:
330
+ for (const listener of changeCall.afterListeners) {
331
+ listener(changeCall.paramsForAfterListeners.get(listener)!); // fire
332
+ }
333
+ }
334
+
335
+ return result;
336
+ } finally {
337
+ if (isRootCall) {
338
+ runChangeOperation_Calls.delete(synchronizeOn);
339
+ }
340
+ }
341
+ }
342
+
343
+ export interface ForWatchedProxyHandler<T> extends DualUseTracker<T> {
344
+ /**
345
+ * Will return the handler when called through the handler
346
+ */
347
+ get _watchedProxyHandler(): IWatchedProxyHandler_common;
348
+
349
+ /**
350
+ * The original (unproxied) object
351
+ */
352
+ get _target(): T
353
+ }
354
+
355
+ /**
356
+ * Use this to delete properties on objects that have a write tracker installed. Otherwise they are not deletable and the write tracker cannot track the object's keys modification and inform listeners
357
+ * @param obj
358
+ * @param key
359
+ */
360
+ export function deleteProperty<O extends object>(obj: O, key: keyof O) {
361
+ if(!changeTrackedOrigObjects.hasObj(obj)) {
362
+ return delete obj[key];
363
+ }
364
+
365
+ const doesExist = Object.getOwnPropertyDescriptor(obj, key) !== undefined;
366
+ if (!doesExist) {
367
+ return true;
368
+ }
369
+
370
+ return runChangeOperation(obj, new UnspecificObjectChange(obj), [getChangeHooksForObject(obj).changeOwnKeys], () => {
371
+ //@ts-ignore
372
+ obj[key] = undefined; // Set to undefined first, so property change listeners will get informed
373
+ return delete obj[key];
374
+ });
375
+ }
376
+
377
+ export const changeTrackedOrigObjects = new PartialGraph();
@@ -1,5 +1,5 @@
1
- import { FacadeProxyHandler, ProxyFacade } from "./proxyFacade";
2
- import { AfterReadListener, ChangeListener, EventHook, IWatchedProxyHandler_common, ObjKey, RecordedRead, RecordedReadOnProxiedObject } from "./common";
1
+ import { FacadeProxyHandler, IWatchedProxyHandler_common, ProxyFacade, RecordedReadOnProxiedObject } from "./proxyFacade";
2
+ import { AfterReadListener, ChangeListener, EventHook, ObjKey, RecordedRead } from "./common";
3
3
  import { RecordedReadOnProxiedObjectExt } from "./RecordedReadOnProxiedObjectExt";
4
4
  /**
5
5
  * Access a single value (=variable or return value from a function)
@@ -1 +1 @@
1
- {"version":3,"file":"watchedProxyFacade.d.ts","sourceRoot":"","sources":["watchedProxyFacade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watchedProxyFacade.d.ts","sourceRoot":"","sources":["watchedProxyFacade.ts"],"names":[],"mappings":"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"}
@@ -232,7 +232,7 @@ class WatchedProxyHandler extends proxyFacade_1.FacadeProxyHandler {
232
232
  * @param args
233
233
  */
234
234
  function trapForGenericReaderWriterMethod(...args) {
235
- return (0, common_1.runChangeOperation)(proxy, new common_1.UnspecificObjectChange(proxy), [(0, objectChangeTracking_1.getChangeHooksForObject)(proxy).unspecificChange], () => {
235
+ return (0, proxyFacade_1.runChangeOperation)(proxy, new common_1.UnspecificObjectChange(proxy), [(0, objectChangeTracking_1.getChangeHooksForObject)(proxy).unspecificChange], () => {
236
236
  var _a, _b;
237
237
  const callResult = origMethod.apply(receiverMustBeNonProxied ? target : this, args); // call original method:
238
238
  if (((_a = thisHandler.trackingConfig) === null || _a === void 0 ? void 0 : _a.trackTreads) !== false) { // not explicitly disabled ?
@@ -246,7 +246,7 @@ class WatchedProxyHandler extends proxyFacade_1.FacadeProxyHandler {
246
246
  * @param args
247
247
  */
248
248
  function trapHighLevelReaderWriterMethod(...args) {
249
- return (0, common_1.runChangeOperation)(proxy, undefined, [], () => {
249
+ return (0, proxyFacade_1.runChangeOperation)(proxy, undefined, [], () => {
250
250
  return origMethod.apply(this, args); // call original method
251
251
  });
252
252
  }
@@ -276,7 +276,7 @@ class WatchedProxyHandler extends proxyFacade_1.FacadeProxyHandler {
276
276
  if (isNewProperty) {
277
277
  hooksToServe.push(changeHooksForThisObject.changeOwnKeys);
278
278
  }
279
- (0, common_1.runChangeOperation)(this.proxy, new common_1.UnspecificObjectChange(this.proxy), hooksToServe, () => {
279
+ (0, proxyFacade_1.runChangeOperation)(this.proxy, new common_1.UnspecificObjectChange(this.proxy), hooksToServe, () => {
280
280
  super.rawChange(key, newUnproxiedValue);
281
281
  });
282
282
  }
@@ -285,7 +285,7 @@ class WatchedProxyHandler extends proxyFacade_1.FacadeProxyHandler {
285
285
  if (!doesExists) {
286
286
  return true;
287
287
  }
288
- return (0, common_1.runChangeOperation)(this.proxy, new common_1.UnspecificObjectChange(this.proxy), [(0, objectChangeTracking_1.getChangeHooksForObject)(this.proxy).changeOwnKeys], () => {
288
+ return (0, proxyFacade_1.runChangeOperation)(this.proxy, new common_1.UnspecificObjectChange(this.proxy), [(0, objectChangeTracking_1.getChangeHooksForObject)(this.proxy).changeOwnKeys], () => {
289
289
  this.set(target, key, undefined, this.proxy); // Set to undefined first, so property change listeners will get informed
290
290
  return super.deleteProperty(target, key);
291
291
  });
@@ -1 +1 @@
1
- {"version":3,"file":"watchedProxyFacade.js","sourceRoot":"","sources":["watchedProxyFacade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watchedProxyFacade.js","sourceRoot":"","sources":["watchedProxyFacade.ts"],"names":[],"mappings":"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"}