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.
- package/.idea/.name +1 -0
- package/.idea/modules.xml +8 -0
- package/.idea/proxy-facades.iml +8 -0
- package/.idea/vcs.xml +6 -0
- package/DEVELOPMENT.md +15 -0
- package/LICENSE +21 -0
- package/RecordedReadOnProxiedObjectExt.d.ts +22 -0
- package/RecordedReadOnProxiedObjectExt.d.ts.map +1 -0
- package/RecordedReadOnProxiedObjectExt.js +41 -0
- package/RecordedReadOnProxiedObjectExt.js.map +1 -0
- package/RecordedReadOnProxiedObjectExt.ts +41 -0
- package/Util.d.ts +85 -0
- package/Util.d.ts.map +1 -0
- package/Util.js +239 -0
- package/Util.js.map +1 -0
- package/Util.ts +254 -0
- package/class-trackers/Array.d.ts +93 -0
- package/class-trackers/Array.d.ts.map +1 -0
- package/class-trackers/Array.js +193 -0
- package/class-trackers/Array.js.map +1 -0
- package/class-trackers/Array.ts +245 -0
- package/class-trackers/Iterator.d.ts +38 -0
- package/class-trackers/Iterator.d.ts.map +1 -0
- package/class-trackers/Iterator.js +69 -0
- package/class-trackers/Iterator.js.map +1 -0
- package/class-trackers/Iterator.ts +73 -0
- package/class-trackers/Map.d.ts +128 -0
- package/class-trackers/Map.d.ts.map +1 -0
- package/class-trackers/Map.js +310 -0
- package/class-trackers/Map.js.map +1 -0
- package/class-trackers/Map.ts +403 -0
- package/class-trackers/Set.d.ts +85 -0
- package/class-trackers/Set.d.ts.map +1 -0
- package/class-trackers/Set.js +197 -0
- package/class-trackers/Set.js.map +1 -0
- package/class-trackers/Set.ts +245 -0
- package/class-trackers/index.d.ts +7 -0
- package/class-trackers/index.d.ts.map +1 -0
- package/class-trackers/index.js +36 -0
- package/class-trackers/index.js.map +1 -0
- package/class-trackers/index.ts +38 -0
- package/class-trackers/readme.md +2 -0
- package/common.d.ts +235 -0
- package/common.d.ts.map +1 -0
- package/common.js +378 -0
- package/common.js.map +1 -0
- package/common.ts +501 -0
- package/dev_generateEsRuntimeBehaviourCheckerCode.d.ts +10 -0
- package/dev_generateEsRuntimeBehaviourCheckerCode.d.ts.map +1 -0
- package/dev_generateEsRuntimeBehaviourCheckerCode.js +76 -0
- package/dev_generateEsRuntimeBehaviourCheckerCode.js.map +1 -0
- package/dev_generateEsRuntimeBehaviourCheckerCode.ts +85 -0
- package/dist/mjs/RecordedReadOnProxiedObjectExt.d.ts +22 -0
- package/dist/mjs/RecordedReadOnProxiedObjectExt.d.ts.map +1 -0
- package/dist/mjs/RecordedReadOnProxiedObjectExt.js +37 -0
- package/dist/mjs/RecordedReadOnProxiedObjectExt.js.map +1 -0
- package/dist/mjs/Util.d.ts +85 -0
- package/dist/mjs/Util.d.ts.map +1 -0
- package/dist/mjs/Util.js +223 -0
- package/dist/mjs/Util.js.map +1 -0
- package/dist/mjs/class-trackers/Array.d.ts +93 -0
- package/dist/mjs/class-trackers/Array.d.ts.map +1 -0
- package/dist/mjs/class-trackers/Array.js +186 -0
- package/dist/mjs/class-trackers/Array.js.map +1 -0
- package/dist/mjs/class-trackers/Iterator.d.ts +38 -0
- package/dist/mjs/class-trackers/Iterator.d.ts.map +1 -0
- package/dist/mjs/class-trackers/Iterator.js +65 -0
- package/dist/mjs/class-trackers/Iterator.js.map +1 -0
- package/dist/mjs/class-trackers/Map.d.ts +128 -0
- package/dist/mjs/class-trackers/Map.d.ts.map +1 -0
- package/dist/mjs/class-trackers/Map.js +299 -0
- package/dist/mjs/class-trackers/Map.js.map +1 -0
- package/dist/mjs/class-trackers/Set.d.ts +85 -0
- package/dist/mjs/class-trackers/Set.d.ts.map +1 -0
- package/dist/mjs/class-trackers/Set.js +189 -0
- package/dist/mjs/class-trackers/Set.js.map +1 -0
- package/dist/mjs/class-trackers/index.d.ts +7 -0
- package/dist/mjs/class-trackers/index.d.ts.map +1 -0
- package/dist/mjs/class-trackers/index.js +32 -0
- package/dist/mjs/class-trackers/index.js.map +1 -0
- package/dist/mjs/common.d.ts +235 -0
- package/dist/mjs/common.d.ts.map +1 -0
- package/dist/mjs/common.js +361 -0
- package/dist/mjs/common.js.map +1 -0
- package/dist/mjs/dev_generateEsRuntimeBehaviourCheckerCode.d.ts +10 -0
- package/dist/mjs/dev_generateEsRuntimeBehaviourCheckerCode.d.ts.map +1 -0
- package/dist/mjs/dev_generateEsRuntimeBehaviourCheckerCode.js +76 -0
- package/dist/mjs/dev_generateEsRuntimeBehaviourCheckerCode.js.map +1 -0
- package/dist/mjs/index.d.ts +8 -0
- package/dist/mjs/index.d.ts.map +1 -0
- package/dist/mjs/index.js +8 -0
- package/dist/mjs/index.js.map +1 -0
- package/dist/mjs/objectChangeTracking.d.ts +43 -0
- package/dist/mjs/objectChangeTracking.d.ts.map +1 -0
- package/dist/mjs/objectChangeTracking.js +209 -0
- package/dist/mjs/objectChangeTracking.js.map +1 -0
- package/dist/mjs/origChangeTracking.d.ts +14 -0
- package/dist/mjs/origChangeTracking.d.ts.map +1 -0
- package/dist/mjs/origChangeTracking.js +58 -0
- package/dist/mjs/origChangeTracking.js.map +1 -0
- package/dist/mjs/proxyFacade.d.ts +45 -0
- package/dist/mjs/proxyFacade.d.ts.map +1 -0
- package/dist/mjs/proxyFacade.js +179 -0
- package/dist/mjs/proxyFacade.js.map +1 -0
- package/dist/mjs/watchedProxyFacade.d.ts +84 -0
- package/dist/mjs/watchedProxyFacade.d.ts.map +1 -0
- package/dist/mjs/watchedProxyFacade.js +300 -0
- package/dist/mjs/watchedProxyFacade.js.map +1 -0
- package/index.d.ts +8 -0
- package/index.d.ts.map +1 -0
- package/index.js +36 -0
- package/index.js.map +1 -0
- package/index.ts +7 -0
- package/index_esm.mjs +44 -0
- package/objectChangeTracking.d.ts +43 -0
- package/objectChangeTracking.d.ts.map +1 -0
- package/objectChangeTracking.js +214 -0
- package/objectChangeTracking.js.map +1 -0
- package/objectChangeTracking.ts +251 -0
- package/origChangeTracking.d.ts +14 -0
- package/origChangeTracking.d.ts.map +1 -0
- package/origChangeTracking.js +63 -0
- package/origChangeTracking.js.map +1 -0
- package/origChangeTracking.ts +72 -0
- package/package.json +52 -0
- package/proxyFacade.d.ts +45 -0
- package/proxyFacade.d.ts.map +1 -0
- package/proxyFacade.js +187 -0
- package/proxyFacade.js.map +1 -0
- package/proxyFacade.ts +222 -0
- package/readme.md +111 -0
- package/watchedProxyFacade.d.ts +84 -0
- package/watchedProxyFacade.d.ts.map +1 -0
- package/watchedProxyFacade.js +312 -0
- package/watchedProxyFacade.js.map +1 -0
- package/watchedProxyFacade.ts +369 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { ClassTrackingConfiguration, makeIteratorTranslateValue, runChangeOperation, UnspecificObjectChange } from "../common";
|
|
2
|
+
import { arraysAreShallowlyEqual } from "../Util";
|
|
3
|
+
import { getChangeHooksForObject } from "../objectChangeTracking";
|
|
4
|
+
import { RecordedReadOnProxiedObjectExt } from "../RecordedReadOnProxiedObjectExt";
|
|
5
|
+
/**
|
|
6
|
+
* Listeners for one array.
|
|
7
|
+
* 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.
|
|
8
|
+
* {@link ObjectChangeHooks} are also subscribed on Arrays
|
|
9
|
+
*/
|
|
10
|
+
class ArrayChangeHooks {
|
|
11
|
+
}
|
|
12
|
+
export const changeHooksForArray = new WeakMap();
|
|
13
|
+
export function getChangeHooksForArray(array) {
|
|
14
|
+
let result = changeHooksForArray.get(array);
|
|
15
|
+
if (result === undefined) {
|
|
16
|
+
changeHooksForArray.set(array, result = new ArrayChangeHooks());
|
|
17
|
+
}
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Can be either used as a supervisor-class in a WatchedProxyHandler, or installed on the non-proxied object via Object.setPrototypeOf
|
|
22
|
+
* The "this" may be different in these cases.
|
|
23
|
+
*/
|
|
24
|
+
export class ArrayChangeTracker extends Array {
|
|
25
|
+
// TODO: In the future, implement more fine granular change listeners that act on change of a certain index.
|
|
26
|
+
get _watchedProxyHandler() {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
_withUnspecificChange(changeFn) {
|
|
30
|
+
return runChangeOperation(this, new UnspecificObjectChange(this), [getChangeHooksForObject(this).unspecificChange], changeFn);
|
|
31
|
+
}
|
|
32
|
+
//push(...items: any[]): number //already calls set
|
|
33
|
+
pop(...args) {
|
|
34
|
+
return this._withUnspecificChange(() => super.pop());
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Will return the original object when this class is used as supervisor class in the WatchedProxyHandler
|
|
38
|
+
*/
|
|
39
|
+
get _target() {
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Pretend that this is an array
|
|
44
|
+
*/
|
|
45
|
+
get ["constructor"]() {
|
|
46
|
+
return Array;
|
|
47
|
+
}
|
|
48
|
+
shift(...args) {
|
|
49
|
+
return this._withUnspecificChange(() => super.shift());
|
|
50
|
+
}
|
|
51
|
+
//@ts-ignore
|
|
52
|
+
sort(...args) {
|
|
53
|
+
return this._withUnspecificChange(() => super.sort());
|
|
54
|
+
}
|
|
55
|
+
//@ts-ignore
|
|
56
|
+
fill(...args) {
|
|
57
|
+
return this._withUnspecificChange(() => super.fill(...args));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export class RecordedArrayValuesRead extends RecordedReadOnProxiedObjectExt {
|
|
61
|
+
get origObj() {
|
|
62
|
+
return this.obj;
|
|
63
|
+
}
|
|
64
|
+
constructor(values) {
|
|
65
|
+
super();
|
|
66
|
+
this.values = values;
|
|
67
|
+
}
|
|
68
|
+
getAffectingChangeHooks(target) {
|
|
69
|
+
return [
|
|
70
|
+
getChangeHooksForObject(target).changeOwnKeys,
|
|
71
|
+
getChangeHooksForObject(target).changeAnyProperty,
|
|
72
|
+
getChangeHooksForObject(target).unspecificChange,
|
|
73
|
+
];
|
|
74
|
+
}
|
|
75
|
+
equals(other) {
|
|
76
|
+
if (!(other instanceof RecordedArrayValuesRead)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
return this.proxyHandler === other.proxyHandler && this.obj === other.obj && arraysAreShallowlyEqual(this.values, other.values);
|
|
80
|
+
}
|
|
81
|
+
get isChanged() {
|
|
82
|
+
return !arraysAreShallowlyEqual(this.values, this.origObj);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Patches methods / accessors
|
|
87
|
+
*/
|
|
88
|
+
export class ArrayReadTracker extends Array {
|
|
89
|
+
get _watchedProxyHandler() {
|
|
90
|
+
throw new Error("not calling from inside a WatchedProxyHandler"); // Will return the handler when called through the handler
|
|
91
|
+
}
|
|
92
|
+
get _target() {
|
|
93
|
+
throw new Error("not calling from inside a WatchedProxyHandler"); // Will return the value when called through the handler
|
|
94
|
+
}
|
|
95
|
+
_fireAfterValuesRead() {
|
|
96
|
+
var _a;
|
|
97
|
+
let recordedArrayValuesRead = new RecordedArrayValuesRead([...this._target]);
|
|
98
|
+
(_a = this._watchedProxyHandler) === null || _a === void 0 ? void 0 : _a.fireAfterRead(recordedArrayValuesRead);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Pretend that this is an array
|
|
102
|
+
*/
|
|
103
|
+
get ["constructor"]() {
|
|
104
|
+
return Array;
|
|
105
|
+
}
|
|
106
|
+
values() {
|
|
107
|
+
const result = this._target.values();
|
|
108
|
+
this._fireAfterValuesRead();
|
|
109
|
+
return makeIteratorTranslateValue(result, (value) => this._watchedProxyHandler.getFacade().getProxyFor(value));
|
|
110
|
+
}
|
|
111
|
+
entries() {
|
|
112
|
+
const result = this._target.entries();
|
|
113
|
+
this._fireAfterValuesRead();
|
|
114
|
+
return makeIteratorTranslateValue(result, ([index, value]) => [index, this._watchedProxyHandler.getFacade().getProxyFor(value)]);
|
|
115
|
+
}
|
|
116
|
+
[Symbol.iterator]() {
|
|
117
|
+
const result = this._target[Symbol.iterator]();
|
|
118
|
+
this._fireAfterValuesRead();
|
|
119
|
+
return makeIteratorTranslateValue(result, (value) => this._watchedProxyHandler.getFacade().getProxyFor(value));
|
|
120
|
+
}
|
|
121
|
+
get length() {
|
|
122
|
+
const result = this._target.length;
|
|
123
|
+
this._fireAfterValuesRead();
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
//@ts-ignore
|
|
127
|
+
shift(...args) {
|
|
128
|
+
if (this.length == 0) {
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
return runChangeOperation(this, new UnspecificObjectChange(this), [getChangeHooksForObject(this).changeOwnKeys, getChangeHooksForObject(this).unspecificChange], () => {
|
|
132
|
+
//@ts-ignore
|
|
133
|
+
const result = super.shift(...args);
|
|
134
|
+
this._fireAfterValuesRead();
|
|
135
|
+
return result;
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Keep this method so it it treated as handled and not as making-unspecific-reads
|
|
140
|
+
* @param args
|
|
141
|
+
*/
|
|
142
|
+
forEach(...args) {
|
|
143
|
+
//@ts-ignore
|
|
144
|
+
return super.forEach(...args); //reads "length" an thererfore triggers the read
|
|
145
|
+
}
|
|
146
|
+
//@ts-ignore
|
|
147
|
+
pop(...args) {
|
|
148
|
+
if (this.length == 0) {
|
|
149
|
+
return undefined;
|
|
150
|
+
}
|
|
151
|
+
return runChangeOperation(this, new UnspecificObjectChange(this), [getChangeHooksForObject(this).changeOwnKeys, getChangeHooksForObject(this).unspecificChange], () => {
|
|
152
|
+
//@ts-ignore
|
|
153
|
+
const result = super.pop(...args);
|
|
154
|
+
this._fireAfterValuesRead();
|
|
155
|
+
return result;
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
export const config = new class extends ClassTrackingConfiguration {
|
|
160
|
+
constructor() {
|
|
161
|
+
super(...arguments);
|
|
162
|
+
this.clazz = Array;
|
|
163
|
+
this.readTracker = ArrayReadTracker;
|
|
164
|
+
this.changeTracker = ArrayChangeTracker;
|
|
165
|
+
/**
|
|
166
|
+
* Built-in Methods, which are using fields / calling methods on the proxy transparently/loyally, so those methods don't call/use internal stuff directly.
|
|
167
|
+
* Tested with, see dev_generateEsRuntimeBehaviourCheckerCode.ts
|
|
168
|
+
* May include read-only / reader methods
|
|
169
|
+
*/
|
|
170
|
+
this.knownHighLevelMethods = new Set(["at", "concat", "map", "forEach", "join", "slice", "some", "filter", "find", "every", "findIndex", "includes", "indexOf", Symbol.iterator, "lastIndexOf", "push", "reduce", "reduceRight", "toLocaleString", "toString", "unshift", "splice", "copyWithin", "reverse"]);
|
|
171
|
+
/**
|
|
172
|
+
* Non-high level. These fire `RecordedUnspecificRead`s then. So better implement them instead to fire i.e RecordedArrayValuesRead.
|
|
173
|
+
*/
|
|
174
|
+
this.readOnlyMethods = new Set(["keys" /* TODO: Implement .keys, mind, that it is different to RecordedOwnKeysRead which allows gaps*/]);
|
|
175
|
+
/**
|
|
176
|
+
* Non-high level. Same as above: better implement them
|
|
177
|
+
*/
|
|
178
|
+
this.readOnlyFields = new Set([Symbol.unscopables]);
|
|
179
|
+
/**
|
|
180
|
+
*
|
|
181
|
+
*/
|
|
182
|
+
this.receiverMustBeNonProxied = false;
|
|
183
|
+
this.trackSettingObjectProperties = true;
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
//# sourceMappingURL=Array.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Array.js","sourceRoot":"","sources":["../../../class-trackers/Array.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Clazz, ForWatchedProxyHandler, GetIteratorValueProxiedFn } from "../common";
|
|
2
|
+
import { WatchedProxyHandler } from "../watchedProxyFacade";
|
|
3
|
+
export declare class IteratorReadTracker<T> extends Iterator<T> implements ForWatchedProxyHandler<Iterator<T>> {
|
|
4
|
+
/**
|
|
5
|
+
* This field should be set by the method that returns the Iterator. I.e. Array#values
|
|
6
|
+
*/
|
|
7
|
+
_getValueProxied?: GetIteratorValueProxiedFn<T>;
|
|
8
|
+
get _watchedProxyHandler(): WatchedProxyHandler;
|
|
9
|
+
get _target(): Iterator<T>;
|
|
10
|
+
constructor();
|
|
11
|
+
/**
|
|
12
|
+
* Pretend that this is an Iterator
|
|
13
|
+
*/
|
|
14
|
+
get ["constructor"](): IteratorConstructor;
|
|
15
|
+
next(...args: unknown[]): IteratorResult<T, any>;
|
|
16
|
+
}
|
|
17
|
+
export declare const IteratorConfig: {
|
|
18
|
+
clazz: Clazz;
|
|
19
|
+
worksForSubclasses: boolean;
|
|
20
|
+
readTracker: typeof IteratorReadTracker;
|
|
21
|
+
changeTracker: undefined;
|
|
22
|
+
/**
|
|
23
|
+
* The methods, not implemented in readTracker, are high-level
|
|
24
|
+
*/
|
|
25
|
+
receiverMustBeNonProxied: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* The Array/Set/Map's [Symbol.Iterator]/keys/values methods already fires a read of **all** values (simply stupid). So the Iterator/IteratorResult does not need to fire any more. The tests also don't expect this to fire.
|
|
28
|
+
* Still could be enabled in the future for really fine granular behaviour tracking
|
|
29
|
+
*/
|
|
30
|
+
trackTreads: boolean;
|
|
31
|
+
proxyUnhandledMethodResults: boolean;
|
|
32
|
+
knownHighLevelMethods: Set<import("../common").ObjKey>;
|
|
33
|
+
readOnlyMethods: Set<import("../common").ObjKey>;
|
|
34
|
+
readOnlyFields: Set<import("../common").ObjKey>;
|
|
35
|
+
trackSettingObjectProperties: boolean;
|
|
36
|
+
getTrackerClasses(): Clazz[];
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=Iterator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Iterator.d.ts","sourceRoot":"","sources":["../../../class-trackers/Iterator.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,EAAE,sBAAsB,EAAE,yBAAyB,EAAC,MAAM,WAAW,CAAC;AAC/G,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAqB1D,qBAAa,mBAAmB,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAE,YAAW,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClG;;OAEG;IACH,gBAAgB,CAAC,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAAC;IAEhD,IAAI,oBAAoB,IAAI,mBAAmB,CAE9C;IAED,IAAI,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,CAEzB;;IAMD;;OAEG;IACH,IAAI,CAAC,aAAa,CAAC,wBAElB;IAED,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC;CAQnD;AAED,eAAO,MAAM,cAAc;WACE,KAAK;;;;IAI9B;;OAEG;;IAEH;;;OAGG;;;;;;;;CAGN,CAAA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { ClassTrackingConfiguration } from "../common";
|
|
2
|
+
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
3
|
+
// ******** THIS FILE IS NOT USED !!!!!! *********
|
|
4
|
+
// ***********************************************
|
|
5
|
+
// Currently we use a much simpler way to translate the iteration values to proxies, see common.ts/makeIteratorTranslateValue
|
|
6
|
+
// Still we leave this file, cause may be in the future there will be super fine per-iteration read tracking
|
|
7
|
+
// ---------------------------------------------------------------------------------------------------------
|
|
8
|
+
// Supplying a proxy with ReadTracker for to
|
|
9
|
+
// - easily handle all kinds of Subclasses (Array/Set/Map-Iterator)
|
|
10
|
+
// - easily allow high-level methods like forEach, filter, ... This would be difficult when subclassing these
|
|
11
|
+
//
|
|
12
|
+
// TO make it work:
|
|
13
|
+
//inside class ArrayReadTacker {
|
|
14
|
+
// values(): ArrayIterator<T> {
|
|
15
|
+
// const result = this._target.values();
|
|
16
|
+
// this._fireAfterValuesRead();
|
|
17
|
+
// result._getValueProxied = (value) => this._watchedProxyHandler.getFacade().getProxyFor(value)
|
|
18
|
+
// return this._watchedProxyHandler.getFacade().getProxyFor(result); // Wrap in proxy. There's special handling for proxied iterators to return the iteration value proxied.
|
|
19
|
+
// }
|
|
20
|
+
//}
|
|
21
|
+
export class IteratorReadTracker extends Iterator {
|
|
22
|
+
get _watchedProxyHandler() {
|
|
23
|
+
throw new Error("not calling from inside a WatchedProxyHandler"); // Will return the handler when called through the handler
|
|
24
|
+
}
|
|
25
|
+
get _target() {
|
|
26
|
+
throw new Error("not calling from inside a WatchedProxyHandler"); // Will return the value when called through the handler
|
|
27
|
+
}
|
|
28
|
+
constructor() {
|
|
29
|
+
super();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Pretend that this is an Iterator
|
|
33
|
+
*/
|
|
34
|
+
get ["constructor"]() {
|
|
35
|
+
return Iterator; // TODO: subclass
|
|
36
|
+
}
|
|
37
|
+
next(...args) {
|
|
38
|
+
const { value, done } = this._target.next(...args);
|
|
39
|
+
//@ts-ignore
|
|
40
|
+
return {
|
|
41
|
+
value: this._watchedProxyHandler.getFacade().getProxyFor(value),
|
|
42
|
+
done
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export const IteratorConfig = new class extends ClassTrackingConfiguration {
|
|
47
|
+
constructor() {
|
|
48
|
+
super(...arguments);
|
|
49
|
+
this.clazz = Iterator;
|
|
50
|
+
this.worksForSubclasses = true;
|
|
51
|
+
this.readTracker = IteratorReadTracker;
|
|
52
|
+
this.changeTracker = undefined;
|
|
53
|
+
/**
|
|
54
|
+
* The methods, not implemented in readTracker, are high-level
|
|
55
|
+
*/
|
|
56
|
+
this.receiverMustBeNonProxied = false;
|
|
57
|
+
/**
|
|
58
|
+
* The Array/Set/Map's [Symbol.Iterator]/keys/values methods already fires a read of **all** values (simply stupid). So the Iterator/IteratorResult does not need to fire any more. The tests also don't expect this to fire.
|
|
59
|
+
* Still could be enabled in the future for really fine granular behaviour tracking
|
|
60
|
+
*/
|
|
61
|
+
this.trackTreads = false;
|
|
62
|
+
this.proxyUnhandledMethodResults = false;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=Iterator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Iterator.js","sourceRoot":"","sources":["../../../class-trackers/Iterator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,0BAA0B,EAA2D,MAAM,WAAW,CAAC;AAG/G,kDAAkD;AAClD,kDAAkD;AAClD,kDAAkD;AAClD,6HAA6H;AAC7H,4GAA4G;AAC5G,4GAA4G;AAC5G,4CAA4C;AAC5C,mEAAmE;AACnE,6GAA6G;AAC7G,EAAE;AACF,mBAAmB;AACnB,gCAAgC;AAChC,kCAAkC;AAClC,+CAA+C;AAC/C,sCAAsC;AACtC,uGAAuG;AACvG,mLAAmL;AACnL,KAAK;AACL,GAAG;AACH,MAAM,OAAO,mBAAuB,SAAQ,QAAW;IAMnD,IAAI,oBAAoB;QACpB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC,CAAC,0DAA0D;IAChI,CAAC;IAED,IAAI,OAAO;QACP,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC,CAAC,wDAAwD;IAC9H,CAAC;IAED;QACI,KAAK,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,aAAa,CAAC;QACf,OAAO,QAAQ,CAAC,CAAC,iBAAiB;IACtC,CAAC;IAED,IAAI,CAAC,GAAG,IAAe;QACnB,MAAM,EAAC,KAAK,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAW,CAAC,CAAC;QACxD,YAAY;QACZ,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;YAC/D,IAAI;SACP,CAAA;IACL,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,KAAM,SAAQ,0BAA0B;IAAxC;;QAC9B,UAAK,GAAC,QAAwB,CAAC;QAC/B,uBAAkB,GAAC,IAAI,CAAC;QACxB,gBAAW,GAAE,mBAAmB,CAAC;QACjC,kBAAa,GAAG,SAAS,CAAC;QAC1B;;WAEG;QACH,6BAAwB,GAAG,KAAK,CAAC;QACjC;;;WAGG;QACH,gBAAW,GAAG,KAAK,CAAC;QACpB,gCAA2B,GAAG,KAAK,CAAC;IACxC,CAAC;CAAA,CAAA"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { EventHook, DualUseTracker, ForWatchedProxyHandler, IWatchedProxyHandler_common, ObjKey, RecordedRead } from "../common";
|
|
2
|
+
import { WatchedProxyHandler } from "../watchedProxyFacade";
|
|
3
|
+
import { RecordedReadOnProxiedObjectExt } from "../RecordedReadOnProxiedObjectExt";
|
|
4
|
+
/**
|
|
5
|
+
* Hooks for one map.
|
|
6
|
+
* 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.
|
|
7
|
+
* {@link ObjectChangeHooks} are also subscribed on Maps
|
|
8
|
+
*/
|
|
9
|
+
declare class MapChangeHooks {
|
|
10
|
+
specificKeyAddedOrRemoved: import("../Util").DefaultMap<unknown, EventHook>;
|
|
11
|
+
anyKeyAddedOrRemoved: EventHook;
|
|
12
|
+
specificValueChanged: import("../Util").DefaultMap<unknown, EventHook>;
|
|
13
|
+
anyValueChanged: EventHook;
|
|
14
|
+
}
|
|
15
|
+
export declare const changeHooksForMap: WeakMap<Map<unknown, unknown>, MapChangeHooks>;
|
|
16
|
+
export declare function getChangeHooksForMap(map: Map<unknown, unknown>): MapChangeHooks;
|
|
17
|
+
/**
|
|
18
|
+
* Can be either used as a supervisor-class in a WatchedProxyHandler, or installed on the non-proxied object via Object.setPrototypeOf
|
|
19
|
+
* The "this" may be different in these cases.
|
|
20
|
+
*/
|
|
21
|
+
export declare class MapChangeTracker<K, V> extends Map<K, V> implements DualUseTracker<Map<K, V>> {
|
|
22
|
+
get _watchedProxyHandler(): IWatchedProxyHandler_common | undefined;
|
|
23
|
+
protected _withUnspecificChange<R>(changeFn: () => R): R;
|
|
24
|
+
/**
|
|
25
|
+
* Will return the original object when this class is used as supervisor class in the WatchedProxyHandler
|
|
26
|
+
*/
|
|
27
|
+
get _target(): Map<K, V>;
|
|
28
|
+
/**
|
|
29
|
+
* Pretend that this is a Map
|
|
30
|
+
*/
|
|
31
|
+
get ["constructor"](): MapConstructor;
|
|
32
|
+
set(key: K, value: V): this;
|
|
33
|
+
delete(key: K): boolean;
|
|
34
|
+
clear(): void;
|
|
35
|
+
}
|
|
36
|
+
export declare class RecordedMap_get extends RecordedReadOnProxiedObjectExt {
|
|
37
|
+
key: unknown;
|
|
38
|
+
keyExists: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Result of the .get call
|
|
41
|
+
*/
|
|
42
|
+
value: unknown;
|
|
43
|
+
obj: Map<unknown, unknown>;
|
|
44
|
+
constructor(key: unknown, keyExists: boolean, value: unknown);
|
|
45
|
+
get isChanged(): boolean;
|
|
46
|
+
getAffectingChangeHooks(target: this["obj"]): EventHook[];
|
|
47
|
+
equals(other: RecordedRead): boolean;
|
|
48
|
+
}
|
|
49
|
+
export declare class RecordedMap_has extends RecordedReadOnProxiedObjectExt {
|
|
50
|
+
key: unknown;
|
|
51
|
+
/**
|
|
52
|
+
* Result of the .has call
|
|
53
|
+
*/
|
|
54
|
+
keyExists: boolean;
|
|
55
|
+
obj: Map<unknown, unknown>;
|
|
56
|
+
constructor(key: unknown, keyExists: boolean);
|
|
57
|
+
get isChanged(): boolean;
|
|
58
|
+
getAffectingChangeHooks(target: this["obj"]): EventHook[];
|
|
59
|
+
equals(other: RecordedRead): boolean;
|
|
60
|
+
}
|
|
61
|
+
export declare class RecordedMapKeysRead extends RecordedReadOnProxiedObjectExt {
|
|
62
|
+
keys: Array<unknown>;
|
|
63
|
+
obj: Map<unknown, unknown>;
|
|
64
|
+
constructor(keys: Array<unknown>);
|
|
65
|
+
getAffectingChangeHooks(target: this["obj"]): EventHook[];
|
|
66
|
+
equals(other: RecordedRead): boolean;
|
|
67
|
+
get isChanged(): boolean;
|
|
68
|
+
}
|
|
69
|
+
export declare class RecordedMapValuesRead extends RecordedReadOnProxiedObjectExt {
|
|
70
|
+
values: Array<unknown>;
|
|
71
|
+
obj: Map<unknown, unknown>;
|
|
72
|
+
constructor(values: Array<unknown>);
|
|
73
|
+
getAffectingChangeHooks(target: this["obj"]): EventHook[];
|
|
74
|
+
equals(other: RecordedRead): boolean;
|
|
75
|
+
get isChanged(): boolean;
|
|
76
|
+
}
|
|
77
|
+
export declare class RecordedMapEntriesRead extends RecordedReadOnProxiedObjectExt {
|
|
78
|
+
values: Array<[unknown, unknown]>;
|
|
79
|
+
obj: Map<unknown, unknown>;
|
|
80
|
+
constructor(values: Array<[unknown, unknown]>);
|
|
81
|
+
getAffectingChangeHooks(target: this["obj"]): EventHook[];
|
|
82
|
+
equals(other: RecordedRead): boolean;
|
|
83
|
+
get isChanged(): boolean;
|
|
84
|
+
}
|
|
85
|
+
export declare class MapReadTracker<K, V> extends Map<K, V> implements ForWatchedProxyHandler<Map<K, V>> {
|
|
86
|
+
get _watchedProxyHandler(): WatchedProxyHandler;
|
|
87
|
+
get _target(): Map<K, V>;
|
|
88
|
+
protected _fireAfterEntriesRead(): void;
|
|
89
|
+
/**
|
|
90
|
+
* Pretend that this is a Map
|
|
91
|
+
*/
|
|
92
|
+
get ["constructor"](): MapConstructor;
|
|
93
|
+
get(key: K): V | undefined;
|
|
94
|
+
has(key: K): boolean;
|
|
95
|
+
values(): MapIterator<V>;
|
|
96
|
+
entries(): MapIterator<[K, V]>;
|
|
97
|
+
keys(): MapIterator<K>;
|
|
98
|
+
forEach(callbackfn: (value: V, key: K, map: Map<K, V>, ...restOfArgs: unknown[]) => void, ...restOfArgs: unknown[]): void;
|
|
99
|
+
[Symbol.iterator](): MapIterator<[K, V]>;
|
|
100
|
+
get size(): number;
|
|
101
|
+
}
|
|
102
|
+
export declare const config: {
|
|
103
|
+
clazz: MapConstructor;
|
|
104
|
+
readTracker: typeof MapReadTracker;
|
|
105
|
+
changeTracker: typeof MapChangeTracker;
|
|
106
|
+
/**
|
|
107
|
+
* Built-in Methods, which are using fields / calling methods on the proxy transparently/loyally, so those methods don't call/use internal stuff directly.
|
|
108
|
+
* Tested with, see dev_generateEsRuntimeBehaviourCheckerCode.ts
|
|
109
|
+
* May include read-only / reader methods
|
|
110
|
+
*/
|
|
111
|
+
knownHighLevelMethods: Set<ObjKey>;
|
|
112
|
+
/**
|
|
113
|
+
* Non-high level
|
|
114
|
+
*/
|
|
115
|
+
readOnlyMethods: Set<ObjKey>;
|
|
116
|
+
/**
|
|
117
|
+
* Non-high level
|
|
118
|
+
*/
|
|
119
|
+
readOnlyFields: Set<ObjKey>;
|
|
120
|
+
receiverMustBeNonProxied: boolean;
|
|
121
|
+
worksForSubclasses: boolean;
|
|
122
|
+
trackTreads: boolean;
|
|
123
|
+
trackSettingObjectProperties: boolean;
|
|
124
|
+
proxyUnhandledMethodResults: boolean;
|
|
125
|
+
getTrackerClasses(): import("../common").Clazz[];
|
|
126
|
+
};
|
|
127
|
+
export {};
|
|
128
|
+
//# sourceMappingURL=Map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Map.d.ts","sourceRoot":"","sources":["../../../class-trackers/Map.ts"],"names":[],"mappings":"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"}
|