proxy-facades 1.0.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.
Files changed (136) hide show
  1. package/.idea/.name +1 -0
  2. package/.idea/modules.xml +8 -0
  3. package/.idea/proxy-facades.iml +8 -0
  4. package/.idea/vcs.xml +6 -0
  5. package/DEVELOPMENT.md +15 -0
  6. package/LICENSE +21 -0
  7. package/RecordedReadOnProxiedObjectExt.d.ts +22 -0
  8. package/RecordedReadOnProxiedObjectExt.d.ts.map +1 -0
  9. package/RecordedReadOnProxiedObjectExt.js +41 -0
  10. package/RecordedReadOnProxiedObjectExt.js.map +1 -0
  11. package/RecordedReadOnProxiedObjectExt.ts +41 -0
  12. package/Util.d.ts +85 -0
  13. package/Util.d.ts.map +1 -0
  14. package/Util.js +239 -0
  15. package/Util.js.map +1 -0
  16. package/Util.ts +254 -0
  17. package/class-trackers/Array.d.ts +93 -0
  18. package/class-trackers/Array.d.ts.map +1 -0
  19. package/class-trackers/Array.js +193 -0
  20. package/class-trackers/Array.js.map +1 -0
  21. package/class-trackers/Array.ts +245 -0
  22. package/class-trackers/Iterator.d.ts +38 -0
  23. package/class-trackers/Iterator.d.ts.map +1 -0
  24. package/class-trackers/Iterator.js +69 -0
  25. package/class-trackers/Iterator.js.map +1 -0
  26. package/class-trackers/Iterator.ts +73 -0
  27. package/class-trackers/Map.d.ts +128 -0
  28. package/class-trackers/Map.d.ts.map +1 -0
  29. package/class-trackers/Map.js +310 -0
  30. package/class-trackers/Map.js.map +1 -0
  31. package/class-trackers/Map.ts +403 -0
  32. package/class-trackers/Set.d.ts +85 -0
  33. package/class-trackers/Set.d.ts.map +1 -0
  34. package/class-trackers/Set.js +197 -0
  35. package/class-trackers/Set.js.map +1 -0
  36. package/class-trackers/Set.ts +245 -0
  37. package/class-trackers/index.d.ts +7 -0
  38. package/class-trackers/index.d.ts.map +1 -0
  39. package/class-trackers/index.js +36 -0
  40. package/class-trackers/index.js.map +1 -0
  41. package/class-trackers/index.ts +38 -0
  42. package/class-trackers/readme.md +2 -0
  43. package/common.d.ts +235 -0
  44. package/common.d.ts.map +1 -0
  45. package/common.js +378 -0
  46. package/common.js.map +1 -0
  47. package/common.ts +501 -0
  48. package/dev_generateEsRuntimeBehaviourCheckerCode.d.ts +10 -0
  49. package/dev_generateEsRuntimeBehaviourCheckerCode.d.ts.map +1 -0
  50. package/dev_generateEsRuntimeBehaviourCheckerCode.js +76 -0
  51. package/dev_generateEsRuntimeBehaviourCheckerCode.js.map +1 -0
  52. package/dev_generateEsRuntimeBehaviourCheckerCode.ts +85 -0
  53. package/dist/mjs/RecordedReadOnProxiedObjectExt.d.ts +22 -0
  54. package/dist/mjs/RecordedReadOnProxiedObjectExt.d.ts.map +1 -0
  55. package/dist/mjs/RecordedReadOnProxiedObjectExt.js +37 -0
  56. package/dist/mjs/RecordedReadOnProxiedObjectExt.js.map +1 -0
  57. package/dist/mjs/Util.d.ts +85 -0
  58. package/dist/mjs/Util.d.ts.map +1 -0
  59. package/dist/mjs/Util.js +223 -0
  60. package/dist/mjs/Util.js.map +1 -0
  61. package/dist/mjs/class-trackers/Array.d.ts +93 -0
  62. package/dist/mjs/class-trackers/Array.d.ts.map +1 -0
  63. package/dist/mjs/class-trackers/Array.js +186 -0
  64. package/dist/mjs/class-trackers/Array.js.map +1 -0
  65. package/dist/mjs/class-trackers/Iterator.d.ts +38 -0
  66. package/dist/mjs/class-trackers/Iterator.d.ts.map +1 -0
  67. package/dist/mjs/class-trackers/Iterator.js +65 -0
  68. package/dist/mjs/class-trackers/Iterator.js.map +1 -0
  69. package/dist/mjs/class-trackers/Map.d.ts +128 -0
  70. package/dist/mjs/class-trackers/Map.d.ts.map +1 -0
  71. package/dist/mjs/class-trackers/Map.js +299 -0
  72. package/dist/mjs/class-trackers/Map.js.map +1 -0
  73. package/dist/mjs/class-trackers/Set.d.ts +85 -0
  74. package/dist/mjs/class-trackers/Set.d.ts.map +1 -0
  75. package/dist/mjs/class-trackers/Set.js +189 -0
  76. package/dist/mjs/class-trackers/Set.js.map +1 -0
  77. package/dist/mjs/class-trackers/index.d.ts +7 -0
  78. package/dist/mjs/class-trackers/index.d.ts.map +1 -0
  79. package/dist/mjs/class-trackers/index.js +32 -0
  80. package/dist/mjs/class-trackers/index.js.map +1 -0
  81. package/dist/mjs/common.d.ts +235 -0
  82. package/dist/mjs/common.d.ts.map +1 -0
  83. package/dist/mjs/common.js +361 -0
  84. package/dist/mjs/common.js.map +1 -0
  85. package/dist/mjs/dev_generateEsRuntimeBehaviourCheckerCode.d.ts +10 -0
  86. package/dist/mjs/dev_generateEsRuntimeBehaviourCheckerCode.d.ts.map +1 -0
  87. package/dist/mjs/dev_generateEsRuntimeBehaviourCheckerCode.js +76 -0
  88. package/dist/mjs/dev_generateEsRuntimeBehaviourCheckerCode.js.map +1 -0
  89. package/dist/mjs/index.d.ts +8 -0
  90. package/dist/mjs/index.d.ts.map +1 -0
  91. package/dist/mjs/index.js +8 -0
  92. package/dist/mjs/index.js.map +1 -0
  93. package/dist/mjs/objectChangeTracking.d.ts +43 -0
  94. package/dist/mjs/objectChangeTracking.d.ts.map +1 -0
  95. package/dist/mjs/objectChangeTracking.js +209 -0
  96. package/dist/mjs/objectChangeTracking.js.map +1 -0
  97. package/dist/mjs/origChangeTracking.d.ts +14 -0
  98. package/dist/mjs/origChangeTracking.d.ts.map +1 -0
  99. package/dist/mjs/origChangeTracking.js +58 -0
  100. package/dist/mjs/origChangeTracking.js.map +1 -0
  101. package/dist/mjs/proxyFacade.d.ts +45 -0
  102. package/dist/mjs/proxyFacade.d.ts.map +1 -0
  103. package/dist/mjs/proxyFacade.js +179 -0
  104. package/dist/mjs/proxyFacade.js.map +1 -0
  105. package/dist/mjs/watchedProxyFacade.d.ts +84 -0
  106. package/dist/mjs/watchedProxyFacade.d.ts.map +1 -0
  107. package/dist/mjs/watchedProxyFacade.js +300 -0
  108. package/dist/mjs/watchedProxyFacade.js.map +1 -0
  109. package/index.d.ts +8 -0
  110. package/index.d.ts.map +1 -0
  111. package/index.js +36 -0
  112. package/index.js.map +1 -0
  113. package/index.ts +7 -0
  114. package/index_esm.mjs +44 -0
  115. package/objectChangeTracking.d.ts +43 -0
  116. package/objectChangeTracking.d.ts.map +1 -0
  117. package/objectChangeTracking.js +214 -0
  118. package/objectChangeTracking.js.map +1 -0
  119. package/objectChangeTracking.ts +251 -0
  120. package/origChangeTracking.d.ts +14 -0
  121. package/origChangeTracking.d.ts.map +1 -0
  122. package/origChangeTracking.js +63 -0
  123. package/origChangeTracking.js.map +1 -0
  124. package/origChangeTracking.ts +72 -0
  125. package/package.json +52 -0
  126. package/proxyFacade.d.ts +45 -0
  127. package/proxyFacade.d.ts.map +1 -0
  128. package/proxyFacade.js +187 -0
  129. package/proxyFacade.js.map +1 -0
  130. package/proxyFacade.ts +222 -0
  131. package/readme.md +111 -0
  132. package/watchedProxyFacade.d.ts +84 -0
  133. package/watchedProxyFacade.d.ts.map +1 -0
  134. package/watchedProxyFacade.js +312 -0
  135. package/watchedProxyFacade.js.map +1 -0
  136. package/watchedProxyFacade.ts +369 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Set.js","sourceRoot":"","sources":["Set.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,245 @@
1
+ import {
2
+ ChangeListener, dualUseTracker_callOrigMethodOnTarget, ClassTrackingConfiguration,
3
+ DualUseTracker,
4
+ ForWatchedProxyHandler, IWatchedProxyHandler_common, makeIteratorTranslateValue,
5
+ ObjKey,
6
+ RecordedRead,
7
+ RecordedReadOnProxiedObject,
8
+ EventHook, runChangeOperation, UnspecificObjectChange
9
+ } from "../common";
10
+ import {getChangeHooksForObject, changeHooksForObject} from "../objectChangeTracking";
11
+ import {arraysAreShallowlyEqual, MapSet, newDefaultMap} from "../Util";
12
+ import {WatchedProxyHandler} from "../watchedProxyFacade";
13
+ import {RecordedReadOnProxiedObjectExt} from "../RecordedReadOnProxiedObjectExt";
14
+
15
+
16
+ /**
17
+ * Listeners for one set.
18
+ * Note for specificity: There will be only one of the **change** events fired. The Recorded...Read.onChange handler will add the listeners to all possible candidates. It's this way around.
19
+ * {@link ObjectChangeHooks} are also subscribed on Sets
20
+ */
21
+ class SetChangeHooks {
22
+ afterSpecificValueChanged = newDefaultMap<unknown, EventHook>( () => new EventHook());
23
+ afterAnyValueChanged = new EventHook();
24
+ }
25
+
26
+ export const changeHooksForSet = new WeakMap<Set<unknown>, SetChangeHooks>();
27
+ export function getChangeHooksForSet(set: Set<unknown>) {
28
+ let result = changeHooksForSet.get(set);
29
+ if(result === undefined) {
30
+ changeHooksForSet.set(set, result = new SetChangeHooks());
31
+ }
32
+ return result;
33
+ }
34
+
35
+ /**
36
+ * Can be either used as a supervisor-class in a WatchedProxyHandler, or installed on the non-proxied object via Object.setPrototypeOf
37
+ * The "this" may be different in these cases.
38
+ */
39
+ export class SetChangeTracker<T> extends Set<T> implements DualUseTracker<Set<T>>{
40
+
41
+ get _watchedProxyHandler(): IWatchedProxyHandler_common | undefined {
42
+ return undefined;
43
+ }
44
+
45
+ protected _withUnspecificChange<R>(changeFn: () => R): R {
46
+ return runChangeOperation(this, new UnspecificObjectChange(this), [getChangeHooksForObject(this).unspecificChange], changeFn)
47
+ }
48
+
49
+ /**
50
+ * Will return the original object when this class is used as supervisor class in the WatchedProxyHandler
51
+ */
52
+ get _target(): Set<T> {
53
+ return this;
54
+ }
55
+
56
+ /**
57
+ * Pretend that this is a Set
58
+ */
59
+ get ["constructor"]() {
60
+ return Set;
61
+ }
62
+
63
+ add(value:T): this {
64
+ value = this._watchedProxyHandler?this._watchedProxyHandler.getFacade().getUnproxiedValue(value):value; // Translate to unproxied value
65
+
66
+ if(this._target.has(value)) { // No change?
67
+ return this;
68
+ }
69
+ runChangeOperation(this, new UnspecificObjectChange(this),[getChangeHooksForSet(this).afterSpecificValueChanged.get(value), getChangeHooksForSet(this).afterAnyValueChanged],() => {
70
+ dualUseTracker_callOrigMethodOnTarget(this, "add", [value]);
71
+ });
72
+ return this;
73
+ }
74
+
75
+ delete(value: T): boolean {
76
+ value = this._watchedProxyHandler?this._watchedProxyHandler.getFacade().getUnproxiedValue(value):value; // Translate to unproxied value
77
+
78
+ if(!this._target.has(value)) { // no change?
79
+ return false;
80
+ }
81
+
82
+ return runChangeOperation(this, new UnspecificObjectChange(this),[getChangeHooksForSet(this).afterSpecificValueChanged.get(value), getChangeHooksForSet(this).afterAnyValueChanged],() => {
83
+ return dualUseTracker_callOrigMethodOnTarget(this, "delete", [value]);
84
+ });
85
+ }
86
+
87
+ clear() {
88
+ return runChangeOperation(this, new UnspecificObjectChange(this),[getChangeHooksForSet(this).afterAnyValueChanged, getChangeHooksForObject(this).unspecificChange],() => {
89
+ return dualUseTracker_callOrigMethodOnTarget(this, "clear", []);
90
+ });
91
+ }
92
+
93
+ }
94
+
95
+ export class RecordedSet_has extends RecordedReadOnProxiedObjectExt {
96
+ value!: unknown;
97
+ /**
98
+ * Result of the .has call
99
+ */
100
+ result: boolean;
101
+ obj!: Set<unknown>;
102
+
103
+
104
+ constructor(value: unknown, result: boolean) {
105
+ super();
106
+ this.value = value;
107
+ this.result = result;
108
+ }
109
+
110
+ get isChanged() {
111
+ return this.result !== this.obj.has(this.value);
112
+ }
113
+
114
+ getAffectingChangeHooks(target: this["obj"]) {
115
+ return [
116
+ getChangeHooksForSet(target).afterSpecificValueChanged.get(this.value),
117
+ getChangeHooksForObject(target).unspecificChange
118
+ ];
119
+ }
120
+
121
+ equals(other: RecordedRead) {
122
+ if (!(other instanceof RecordedSet_has)) {
123
+ return false;
124
+ }
125
+
126
+ return this.proxyHandler === other.proxyHandler && this.obj === other.obj && this.value === other.value && this.result === other.result;
127
+ }
128
+ }
129
+
130
+ export class RecordedSetValuesRead extends RecordedReadOnProxiedObjectExt {
131
+ values: Array<unknown>;
132
+
133
+ obj!:Set<unknown>;
134
+
135
+
136
+ constructor(values: Array<unknown>) {
137
+ super();
138
+ this.values = values;
139
+ }
140
+
141
+ getAffectingChangeHooks(target: this["obj"]) {
142
+ return [
143
+ getChangeHooksForSet(target).afterAnyValueChanged,
144
+ getChangeHooksForObject(target).unspecificChange
145
+ ]
146
+ }
147
+
148
+ equals(other: RecordedRead): boolean {
149
+ if (!(other instanceof RecordedSetValuesRead)) {
150
+ return false;
151
+ }
152
+
153
+ return this.proxyHandler === other.proxyHandler && this.obj === other.obj && arraysAreShallowlyEqual(this.values, other.values);
154
+ }
155
+
156
+ get isChanged(): boolean {
157
+ return !arraysAreShallowlyEqual(this.values, [...(this.obj).values()]);
158
+ }
159
+ }
160
+
161
+ export class SetReadTracker<T> extends Set<T> implements ForWatchedProxyHandler<Set<T>> {
162
+ get _watchedProxyHandler(): WatchedProxyHandler {
163
+ throw new Error("not calling from inside a WatchedProxyHandler"); // Will return the handler when called through the handler
164
+ }
165
+
166
+ get _target(): Set<T> {
167
+ throw new Error("not calling from inside a WatchedProxyHandler"); // Will return the value when called through the handler
168
+ }
169
+
170
+ protected _fireAfterValuesRead() {
171
+ let recordedSetValuesRead = new RecordedSetValuesRead([...this._target]);
172
+ this._watchedProxyHandler?.fireAfterRead(recordedSetValuesRead);
173
+ }
174
+
175
+ /**
176
+ * Pretend that this is a Set
177
+ */
178
+ get ["constructor"]() {
179
+ return Set;
180
+ }
181
+
182
+ has(value: T): boolean {
183
+ value = this._watchedProxyHandler.getFacade().getUnproxiedValue(value);
184
+ const result = this._target.has(value);
185
+
186
+ const read = new RecordedSet_has(value, result);
187
+ this._watchedProxyHandler?.fireAfterRead(read);
188
+
189
+ return result;
190
+ }
191
+
192
+ values(): SetIterator<T> {
193
+ const result = this._target.values();
194
+ this._fireAfterValuesRead();
195
+ return makeIteratorTranslateValue(result, (value) => this._watchedProxyHandler.getFacade().getProxyFor(value));
196
+ }
197
+
198
+ entries(): SetIterator<[T, T]> {
199
+ const result = this._target.entries();
200
+ this._fireAfterValuesRead();
201
+
202
+ const facade = this._watchedProxyHandler.getFacade();
203
+ return makeIteratorTranslateValue<[T, T], SetIterator<[T, T]>/*strange that TS does not infer the types here*/>(result, ([value1,value2]) => [facade.getProxyFor(value1), facade.getProxyFor(value2)]);
204
+ }
205
+
206
+ keys(): SetIterator<T> {
207
+ const result = this._target.keys();
208
+ this._fireAfterValuesRead();
209
+ return makeIteratorTranslateValue(result, (value) => this._watchedProxyHandler.getFacade().getProxyFor(value));
210
+ }
211
+
212
+ forEach(callbackfn: (value: T, value2: T, set: Set<T>, ...restOfArgs: unknown[]) => void, ...restOfArgs: unknown[]) {
213
+ const getProxyFor: (<T>(val: T)=>T) = (value) => this._watchedProxyHandler.getFacade().getProxyFor(value);
214
+
215
+ /**
216
+ * Calls callbackFn but supplies it it's arguments *proxied*
217
+ */
218
+ function callCallbackFnWithProxies(this: Set<T>, value: T, value2: T, set: Set<T>, ...restOfArgs: unknown[]): void{
219
+ callbackfn.apply(this, [getProxyFor(value), getProxyFor(value2), getProxyFor(set), ...restOfArgs]);
220
+ }
221
+
222
+ const result = this._target.forEach(callCallbackFnWithProxies, ...restOfArgs);
223
+ this._fireAfterValuesRead();
224
+ return result;
225
+ }
226
+
227
+ [Symbol.iterator](): SetIterator<T> {
228
+ const result = this._target[Symbol.iterator]();
229
+ this._fireAfterValuesRead();
230
+ return makeIteratorTranslateValue(result, (value) => this._watchedProxyHandler.getFacade().getProxyFor(value));
231
+ }
232
+
233
+ get size(): number {
234
+ const result = this._target.size;
235
+ this._fireAfterValuesRead();
236
+ return result;
237
+ }
238
+ }
239
+
240
+ export const config = new class extends ClassTrackingConfiguration {
241
+ clazz=Set;
242
+ readTracker= SetReadTracker;
243
+ changeTracker = SetChangeTracker
244
+ receiverMustBeNonProxied = true;
245
+ }
@@ -0,0 +1,7 @@
1
+ import { ClassTrackingConfiguration } from "../common";
2
+ /**
3
+ * Register configurations here:
4
+ */
5
+ export declare const classTrackingConfigurations: ClassTrackingConfiguration[];
6
+ export declare function getTrackingConfigFor(obj: object): ClassTrackingConfiguration | undefined;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,0BAA0B,EAAQ,MAAM,WAAW,CAAC;AAO5D;;GAEG;AACH,eAAO,MAAM,2BAA2B,EAAE,0BAA0B,EAAwD,CAAC;AAI7H,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,0BAA0B,GAAG,SAAS,CAuBxF"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.classTrackingConfigurations = void 0;
4
+ exports.getTrackingConfigFor = getTrackingConfigFor;
5
+ const Array_1 = require("./Array");
6
+ const Set_1 = require("./Set");
7
+ const Map_1 = require("./Map");
8
+ const Iterator_1 = require("./Iterator");
9
+ const Util_1 = require("../Util");
10
+ /**
11
+ * Register configurations here:
12
+ */
13
+ exports.classTrackingConfigurations = [Array_1.config, Set_1.config, Map_1.config, Iterator_1.IteratorConfig];
14
+ const cache_clazzToConfig = new WeakMap();
15
+ function getTrackingConfigFor(obj) {
16
+ const clazz = obj.constructor;
17
+ if (clazz === undefined) {
18
+ return undefined;
19
+ }
20
+ if (cache_clazzToConfig.has(clazz)) {
21
+ return cache_clazzToConfig.get(clazz);
22
+ }
23
+ const result = exports.classTrackingConfigurations.find(cfg => {
24
+ if (cfg.clazz === clazz) {
25
+ return true;
26
+ }
27
+ if ((0, Util_1.classIsSubclassOf)(clazz, cfg.clazz)) {
28
+ cfg.worksForSubclasses || (0, Util_1.throwError)(`Subclasses of ${cfg.clazz.name} are not supported. Actually got: ${clazz.name}`);
29
+ return true;
30
+ }
31
+ return false;
32
+ });
33
+ cache_clazzToConfig.set(clazz, result);
34
+ return result;
35
+ }
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAcA,oDAuBC;AApCD,mCAA6C;AAC7C,+BAAyC;AACzC,+BAAyC;AACzC,yCAAyC;AACzC,kCAAsD;AAEtD;;GAEG;AACU,QAAA,2BAA2B,GAAiC,CAAC,cAAW,EAAE,YAAS,EAAE,YAAS,EAAE,yBAAc,CAAC,CAAC;AAE7H,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAAiD,CAAC;AAEzF,SAAgB,oBAAoB,CAAC,GAAW;IAC5C,MAAM,KAAK,GAAG,GAAG,CAAC,WAAoB,CAAC;IACvC,IAAG,KAAK,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,MAAM,GAAG,mCAA2B,CAAC,IAAI,CAAC,GAAG,CAAA,EAAE;QACjD,IAAG,GAAG,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAG,IAAA,wBAAiB,EAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,GAAG,CAAC,kBAAkB,IAAI,IAAA,iBAAU,EAAC,iBAAiB,GAAG,CAAC,KAAK,CAAC,IAAI,qCAAqC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACvH,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC;AAClB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import {ClassTrackingConfiguration, Clazz} from "../common";
2
+ import {config as arrayConfig} from "./Array"
3
+ import {config as setConfig} from "./Set"
4
+ import {config as mapConfig} from "./Map"
5
+ import {IteratorConfig} from "./Iterator"
6
+ import {classIsSubclassOf, throwError} from "../Util";
7
+
8
+ /**
9
+ * Register configurations here:
10
+ */
11
+ export const classTrackingConfigurations: ClassTrackingConfiguration[] = [arrayConfig, setConfig, mapConfig, IteratorConfig];
12
+
13
+ const cache_clazzToConfig = new WeakMap<Clazz, ClassTrackingConfiguration | undefined>();
14
+
15
+ export function getTrackingConfigFor(obj: object): ClassTrackingConfiguration | undefined {
16
+ const clazz = obj.constructor as Clazz;
17
+ if(clazz === undefined) {
18
+ return undefined;
19
+ }
20
+
21
+ if(cache_clazzToConfig.has(clazz)) {
22
+ return cache_clazzToConfig.get(clazz);
23
+ }
24
+ const result = classTrackingConfigurations.find(cfg=> {
25
+ if(cfg.clazz === clazz) {
26
+ return true;
27
+ }
28
+
29
+ if(classIsSubclassOf(clazz, cfg.clazz)) {
30
+ cfg.worksForSubclasses || throwError(`Subclasses of ${cfg.clazz.name} are not supported. Actually got: ${clazz.name}`);
31
+ return true;
32
+ }
33
+
34
+ return false;
35
+ });
36
+ cache_clazzToConfig.set(clazz, result);
37
+ return result;
38
+ }
@@ -0,0 +1,2 @@
1
+ Read/change-trackers for certain special class instances.
2
+ They are listed in index.ts#classTrackingConfigurations
package/common.d.ts ADDED
@@ -0,0 +1,235 @@
1
+ import { WatchedProxyHandler } from "./watchedProxyFacade";
2
+ import { WeakMapSet } from "./Util";
3
+ import { ProxyFacade } from "./proxyFacade";
4
+ export type ObjKey = string | symbol;
5
+ export declare abstract class RecordedRead {
6
+ abstract equals(other: RecordedRead): boolean;
7
+ abstract get isChanged(): boolean;
8
+ /**
9
+ *
10
+ * @param listener
11
+ * @param trackOriginal true to install a tracker on the non-proxied- (by this facade) original object
12
+ */
13
+ abstract onAfterChange(listener: () => void, trackOriginal?: boolean): void;
14
+ abstract offAfterChange(listener: () => void): void;
15
+ }
16
+ export declare abstract class RecordedReadOnProxiedObject extends RecordedRead {
17
+ proxyHandler: WatchedProxyHandler;
18
+ /**
19
+ * A bit redundant with proxyhandler. But for performance reasons, we leave it
20
+ */
21
+ obj: object;
22
+ }
23
+ export type AfterReadListener = (read: RecordedRead) => void;
24
+ export type AfterChangeOwnKeysListener = () => void;
25
+ export type Clazz = {
26
+ new (...args: any[]): unknown;
27
+ };
28
+ export type GetIteratorValueProxiedFn<T> = (value: T) => T;
29
+ export type IteratorReturningProxiedValue<T> = Iterator<T> & {
30
+ _getValueProxied: GetIteratorValueProxiedFn<T>;
31
+ };
32
+ /**
33
+ * A change operation that may later be serializable. Beeing able to store it in the transaction protocol of membrace-db. Or to syncronize live objects between server->client
34
+ */
35
+ export declare abstract class ChangeOperation {
36
+ /**
37
+ * Saved inputs as arguments for the do function
38
+ */
39
+ inputs?: Parameters<this["_do"]>;
40
+ abstract _do(...inputs: unknown[]): {
41
+ result: unknown;
42
+ undoInfo: unknown;
43
+ };
44
+ _unDo(undoInfo: ReturnType<this["_do"]>["undoInfo"]): void;
45
+ constructor();
46
+ withInputs(...inputs: Parameters<this["_do"]>): this;
47
+ do(): ReturnType<this["_do"]>["undoInfo"];
48
+ }
49
+ export declare function registerChangeOperationClass(clazz: typeof ChangeOperation): void;
50
+ export type ChangeListener = (change: ChangeOperation) => void;
51
+ /**
52
+ * Registry for one possible potential target event type. I.e. a property of a certain object, or a more abstract one like: "some key of a certain object has changed".
53
+ */
54
+ export declare class EventHook {
55
+ /**
56
+ * Called before the change
57
+ * @param change
58
+ */
59
+ beforeListeners: Set<ChangeListener>;
60
+ /**
61
+ * Called after the change
62
+ * @param change
63
+ */
64
+ afterListeners: Set<ChangeListener>;
65
+ /**
66
+ * To be able to easily control the before and after for exactly the same change. It's an idea / no good use case found yet.
67
+ * @param change
68
+ * @param doChange
69
+ */
70
+ fireBefore(change: ChangeOperation): void;
71
+ fireAfter(change: ChangeOperation): void;
72
+ }
73
+ /**
74
+ * For use in proxy and direct
75
+ */
76
+ export interface DualUseTracker<T> {
77
+ /**
78
+ * Will return the handler when called through the handler
79
+ */
80
+ get _watchedProxyHandler(): IWatchedProxyHandler_common | undefined;
81
+ /**
82
+ * The original (unproxied) object
83
+ */
84
+ get _target(): T;
85
+ }
86
+ export declare function dualUseTracker_callOrigMethodOnTarget<O extends object, M extends keyof O>(tracker: DualUseTracker<O>, methodName: M, args: unknown[]): ReturnType<O[M]>;
87
+ /**
88
+ * Like Object.getOwnPropertyDescriptor. But for all parent classes
89
+ * @param o
90
+ * @param p
91
+ */
92
+ export declare function getPropertyDescriptor(o: object, p: PropertyKey): PropertyDescriptor | undefined;
93
+ export type GetterFlags = {
94
+ origHadGetter?: boolean;
95
+ };
96
+ export type SetterFlags = {
97
+ origHadSetter?: boolean;
98
+ };
99
+ /**
100
+ * Informs hooksToServe's beforeListeners + executes changeOperation + informs hooksToServe's afterListeners.
101
+ * 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)
102
+ * <p>
103
+ * 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.
104
+ * </p>
105
+ * @param forTarget object to sync on. All hooks passed to nested runChangeOperation calls will only be fired once.
106
+ * @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.
107
+ * @param hooksToServe these hooks will be called (not twice, as mentioned).
108
+ * @param changeOperationFn
109
+ */
110
+ export declare function runChangeOperation<R>(forTarget: object, paramForListeners: ChangeOperation | undefined, hooksToServe: EventHook[], changeOperationFn: () => R): R;
111
+ export declare function checkEsRuntimeBehaviour(): void;
112
+ export interface IWatchedProxyHandler_common {
113
+ /**
114
+ * Registers the Read to this WatchedProxyHandler and fires it on the WatchedFacade (informs WatchedFacade's listeners)
115
+ * @param read
116
+ */
117
+ fireAfterRead(read: RecordedReadOnProxiedObject): void;
118
+ getFacade(): ProxyFacade<any>;
119
+ }
120
+ export interface ForWatchedProxyHandler<T> extends DualUseTracker<T> {
121
+ /**
122
+ * Will return the handler when called through the handler
123
+ */
124
+ get _watchedProxyHandler(): IWatchedProxyHandler_common;
125
+ /**
126
+ * The original (unproxied) object
127
+ */
128
+ get _target(): T;
129
+ }
130
+ /**
131
+ * Configures tracking behaviour for a certain class
132
+ */
133
+ export declare abstract class ClassTrackingConfiguration {
134
+ /**
135
+ * For which is this config?
136
+ */
137
+ abstract clazz: Clazz;
138
+ worksForSubclasses: boolean;
139
+ readTracker?: Clazz;
140
+ changeTracker?: Clazz;
141
+ /**
142
+ * Built-in Methods, which are using fields / calling methods on the proxy transparently/loyally, so those methods don't call/use internal stuff directly.
143
+ * Tested with, see dev_generateEsRuntimeBehaviourCheckerCode.ts
144
+ * May include read-only / reader methods
145
+ */
146
+ knownHighLevelMethods: Set<ObjKey>;
147
+ /**
148
+ * Non-high level. These fire `RecordedUnspecificRead`s then. So better implement them instead to fire i.e RecordedArrayValuesRead.
149
+ */
150
+ readOnlyMethods: Set<ObjKey>;
151
+ /**
152
+ * Non-high level. Same as above: better implement them
153
+ */
154
+ readOnlyFields: Set<ObjKey>;
155
+ /**
156
+ * Default, if not listed as high-level method
157
+ */
158
+ receiverMustBeNonProxied: boolean;
159
+ /**
160
+ * Makes the WatchedProxyFacade's handler also track/fire reads for methods that are not **directly** in the this.readTracker class.
161
+ */
162
+ trackTreads: boolean;
163
+ /**
164
+ * (For Array:) Flags to track setting properties, meaning changes are not only done by calling methods. This will use a Proxy (install a Proxy as Prototype).
165
+ */
166
+ trackSettingObjectProperties: boolean;
167
+ /**
168
+ * Wrap the results of methods which are not in the readTracker or changeTracker in proxies
169
+ * Take caution when enabling this. It is not always a good idea. I.e. Map#entries() return new intermediates arrays [] and these will then also be proxied and result in a false positive something-has-changed detection when comparing recorded Reads.
170
+ */
171
+ proxyUnhandledMethodResults: boolean;
172
+ /**
173
+ * Lists read and changeTracker as far as they're present
174
+ */
175
+ getTrackerClasses(): Clazz[];
176
+ }
177
+ export declare function recordedReadsArraysAreEqual(a: RecordedRead[], b: RecordedRead[]): boolean;
178
+ /**
179
+ * Patches the iterator so it runs the value through the translateFn
180
+ * @param iterator
181
+ * @param translateFn
182
+ */
183
+ export declare function makeIteratorTranslateValue<V, IT extends Iterator<V>>(iterator: IT, translateFn: (value: V) => V): IT;
184
+ /**
185
+ * Base for ProxyFacades and change-tracking of original objects (without proxy facades) See {@see changeTrackedOriginaObjects the changeTrackedOriginaObjects global instance}
186
+ */
187
+ export declare class PartialGraph {
188
+ /**
189
+ * True means, it spreads it's self when members are read or set. Not yet implemented for non-proxy-facades.
190
+ * Always true for proxy-facade subclasses (that's their job).
191
+ */
192
+ viral: boolean;
193
+ /**
194
+ * Called after a change has been made to any object inside this graph
195
+ * Note: There are also listeners for specified properties/situations (which are more capable)
196
+ * @protected
197
+ */
198
+ _changeHook: EventHook;
199
+ /**
200
+ *
201
+ * @param listener Called when a change is made to any object inside this graph.
202
+ * The listener is called when the change is not yet written unlike {@see onAfterChange}. So throwing an exception in the listener will prevent the actual change from happening.
203
+ */
204
+ onBeforeChange(listener: ChangeListener): void;
205
+ /**
206
+ * Unregister listener from {@see PartialGraph#onBeforeChange}
207
+ * @param listener
208
+ */
209
+ offBeforeChange(listener: ChangeListener): void;
210
+ /**
211
+ *
212
+ * @param listener Called after a change has been made to any object inside this graph
213
+ */
214
+ onAfterChange(listener: ChangeListener): void;
215
+ /**
216
+ * Unregister listener from {@see PartialGraph#onAfterChange}
217
+ * @param listener
218
+ */
219
+ offAfterChange(listener: ChangeListener): void;
220
+ hasObj(obj: object): boolean | undefined;
221
+ _register(obj: object): void;
222
+ }
223
+ export declare const objectMembershipInGraphs: WeakMapSet<object, PartialGraph>;
224
+ /**
225
+ * TODO: Implement subclasses
226
+ */
227
+ export declare class UnspecificObjectChange extends ChangeOperation {
228
+ constructor(target?: object);
229
+ _do(...inputs: unknown[]): {
230
+ result: undefined;
231
+ undoInfo: undefined;
232
+ };
233
+ _unDo(undoInfo: ReturnType<this["_do"]>["undoInfo"]): void;
234
+ }
235
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["common.ts"],"names":[],"mappings":"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"}