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,299 @@
|
|
|
1
|
+
import { EventHook, ClassTrackingConfiguration, dualUseTracker_callOrigMethodOnTarget, makeIteratorTranslateValue, runChangeOperation, UnspecificObjectChange } from "../common";
|
|
2
|
+
import { getChangeHooksForObject } from "../objectChangeTracking";
|
|
3
|
+
import { arraysAreShallowlyEqual, arraysWithEntriesAreShallowlyEqual, newDefaultMap } from "../Util";
|
|
4
|
+
import { RecordedReadOnProxiedObjectExt } from "../RecordedReadOnProxiedObjectExt";
|
|
5
|
+
/**
|
|
6
|
+
* Hooks for one map.
|
|
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 Maps
|
|
9
|
+
*/
|
|
10
|
+
class MapChangeHooks {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.specificKeyAddedOrRemoved = newDefaultMap(() => new EventHook());
|
|
13
|
+
this.anyKeyAddedOrRemoved = new EventHook();
|
|
14
|
+
this.specificValueChanged = newDefaultMap(() => new EventHook());
|
|
15
|
+
this.anyValueChanged = new EventHook();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export const changeHooksForMap = new WeakMap();
|
|
19
|
+
export function getChangeHooksForMap(map) {
|
|
20
|
+
let result = changeHooksForMap.get(map);
|
|
21
|
+
if (result === undefined) {
|
|
22
|
+
changeHooksForMap.set(map, result = new MapChangeHooks());
|
|
23
|
+
}
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Can be either used as a supervisor-class in a WatchedProxyHandler, or installed on the non-proxied object via Object.setPrototypeOf
|
|
28
|
+
* The "this" may be different in these cases.
|
|
29
|
+
*/
|
|
30
|
+
export class MapChangeTracker extends Map {
|
|
31
|
+
get _watchedProxyHandler() {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
_withUnspecificChange(changeFn) {
|
|
35
|
+
return runChangeOperation(this, new UnspecificObjectChange(this), [getChangeHooksForObject(this).unspecificChange], changeFn);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Will return the original object when this class is used as supervisor class in the WatchedProxyHandler
|
|
39
|
+
*/
|
|
40
|
+
get _target() {
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Pretend that this is a Map
|
|
45
|
+
*/
|
|
46
|
+
get ["constructor"]() {
|
|
47
|
+
return Map;
|
|
48
|
+
}
|
|
49
|
+
set(key, value) {
|
|
50
|
+
key = this._watchedProxyHandler ? this._watchedProxyHandler.getFacade().getUnproxiedValue(key) : key; // Translate to unproxied key
|
|
51
|
+
value = this._watchedProxyHandler ? this._watchedProxyHandler.getFacade().getUnproxiedValue(value) : value; // Translate to unproxied value
|
|
52
|
+
const isNewKey = !this._target.has(key);
|
|
53
|
+
const valueChanged = isNewKey || this._target.get(key) !== value;
|
|
54
|
+
if (!isNewKey && !valueChanged) {
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
const hooksForThisMap = getChangeHooksForMap(this);
|
|
58
|
+
const hooksToServe = [
|
|
59
|
+
...(isNewKey ? [hooksForThisMap.specificKeyAddedOrRemoved.get(key), hooksForThisMap.anyKeyAddedOrRemoved] : []),
|
|
60
|
+
...(valueChanged ? [hooksForThisMap.specificValueChanged.get(key), hooksForThisMap.anyValueChanged] : [])
|
|
61
|
+
];
|
|
62
|
+
runChangeOperation(this, new UnspecificObjectChange(this), hooksToServe, () => {
|
|
63
|
+
return dualUseTracker_callOrigMethodOnTarget(this, "set", [key, value]);
|
|
64
|
+
});
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
delete(key) {
|
|
68
|
+
key = this._watchedProxyHandler ? this._watchedProxyHandler.getFacade().getUnproxiedValue(key) : key; // Translate to unproxied key
|
|
69
|
+
if (!this._target.has(key)) { // no change?
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
const hooksForThisMap = getChangeHooksForMap(this);
|
|
73
|
+
const hooksToServe = [hooksForThisMap.specificKeyAddedOrRemoved.get(key), hooksForThisMap.anyKeyAddedOrRemoved, hooksForThisMap.specificValueChanged.get(key), hooksForThisMap.anyValueChanged];
|
|
74
|
+
return runChangeOperation(this, new UnspecificObjectChange(this), hooksToServe, () => {
|
|
75
|
+
return dualUseTracker_callOrigMethodOnTarget(this, "delete", [key]);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
clear() {
|
|
79
|
+
const hooksToServe = [getChangeHooksForMap(this).anyKeyAddedOrRemoved, getChangeHooksForMap(this).anyValueChanged, getChangeHooksForObject(this).unspecificChange];
|
|
80
|
+
return runChangeOperation(this, new UnspecificObjectChange(this), hooksToServe, () => {
|
|
81
|
+
return dualUseTracker_callOrigMethodOnTarget(this, "clear", []);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
export class RecordedMap_get extends RecordedReadOnProxiedObjectExt {
|
|
86
|
+
constructor(key, keyExists, value) {
|
|
87
|
+
super();
|
|
88
|
+
this.key = key;
|
|
89
|
+
this.keyExists = keyExists;
|
|
90
|
+
this.value = value;
|
|
91
|
+
}
|
|
92
|
+
get isChanged() {
|
|
93
|
+
return !(this.keyExists === this.obj.has(this.key) && this.value === this.obj.get(this.key));
|
|
94
|
+
}
|
|
95
|
+
getAffectingChangeHooks(target) {
|
|
96
|
+
return [
|
|
97
|
+
getChangeHooksForMap(target).specificKeyAddedOrRemoved.get(this.key),
|
|
98
|
+
getChangeHooksForMap(target).specificValueChanged.get(this.key),
|
|
99
|
+
getChangeHooksForObject(target).unspecificChange
|
|
100
|
+
];
|
|
101
|
+
}
|
|
102
|
+
equals(other) {
|
|
103
|
+
if (!(other instanceof RecordedMap_get)) {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
return this.proxyHandler === other.proxyHandler && this.obj === other.obj && this.key === other.key && this.keyExists == other.keyExists && this.value === other.value;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
export class RecordedMap_has extends RecordedReadOnProxiedObjectExt {
|
|
110
|
+
constructor(key, keyExists) {
|
|
111
|
+
super();
|
|
112
|
+
this.key = key;
|
|
113
|
+
this.keyExists = keyExists;
|
|
114
|
+
}
|
|
115
|
+
get isChanged() {
|
|
116
|
+
return this.keyExists !== this.obj.has(this.key);
|
|
117
|
+
}
|
|
118
|
+
getAffectingChangeHooks(target) {
|
|
119
|
+
return [
|
|
120
|
+
getChangeHooksForMap(target).specificKeyAddedOrRemoved.get(this.key),
|
|
121
|
+
getChangeHooksForObject(target).unspecificChange,
|
|
122
|
+
];
|
|
123
|
+
}
|
|
124
|
+
equals(other) {
|
|
125
|
+
if (!(other instanceof RecordedMap_has)) {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
return this.proxyHandler === other.proxyHandler && this.obj === other.obj && this.key === other.key && this.keyExists === other.keyExists;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
export class RecordedMapKeysRead extends RecordedReadOnProxiedObjectExt {
|
|
132
|
+
constructor(keys) {
|
|
133
|
+
super();
|
|
134
|
+
this.keys = keys;
|
|
135
|
+
}
|
|
136
|
+
getAffectingChangeHooks(target) {
|
|
137
|
+
return [
|
|
138
|
+
getChangeHooksForMap(target).anyKeyAddedOrRemoved,
|
|
139
|
+
getChangeHooksForObject(target).unspecificChange
|
|
140
|
+
];
|
|
141
|
+
}
|
|
142
|
+
equals(other) {
|
|
143
|
+
if (!(other instanceof RecordedMapKeysRead)) {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
return this.proxyHandler === other.proxyHandler && this.obj === other.obj && arraysAreShallowlyEqual(this.keys, other.keys);
|
|
147
|
+
}
|
|
148
|
+
get isChanged() {
|
|
149
|
+
return !arraysAreShallowlyEqual(this.keys, [...(this.obj).keys()]);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
export class RecordedMapValuesRead extends RecordedReadOnProxiedObjectExt {
|
|
153
|
+
constructor(values) {
|
|
154
|
+
super();
|
|
155
|
+
this.values = values;
|
|
156
|
+
}
|
|
157
|
+
getAffectingChangeHooks(target) {
|
|
158
|
+
return [
|
|
159
|
+
getChangeHooksForMap(target).anyValueChanged,
|
|
160
|
+
getChangeHooksForObject(target).unspecificChange
|
|
161
|
+
];
|
|
162
|
+
}
|
|
163
|
+
equals(other) {
|
|
164
|
+
if (!(other instanceof RecordedMapValuesRead)) {
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
return this.proxyHandler === other.proxyHandler && this.obj === other.obj && arraysAreShallowlyEqual(this.values, other.values);
|
|
168
|
+
}
|
|
169
|
+
get isChanged() {
|
|
170
|
+
return !arraysAreShallowlyEqual(this.values, [...(this.obj).values()]);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
export class RecordedMapEntriesRead extends RecordedReadOnProxiedObjectExt {
|
|
174
|
+
constructor(values) {
|
|
175
|
+
super();
|
|
176
|
+
this.values = values;
|
|
177
|
+
}
|
|
178
|
+
getAffectingChangeHooks(target) {
|
|
179
|
+
return [
|
|
180
|
+
getChangeHooksForMap(target).anyKeyAddedOrRemoved,
|
|
181
|
+
getChangeHooksForMap(target).anyValueChanged,
|
|
182
|
+
getChangeHooksForObject(target).unspecificChange
|
|
183
|
+
];
|
|
184
|
+
}
|
|
185
|
+
equals(other) {
|
|
186
|
+
if (!(other instanceof RecordedMapEntriesRead)) {
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
return this.proxyHandler === other.proxyHandler && this.obj === other.obj && arraysWithEntriesAreShallowlyEqual(this.values, other.values);
|
|
190
|
+
}
|
|
191
|
+
get isChanged() {
|
|
192
|
+
return !arraysWithEntriesAreShallowlyEqual(this.values, [...(this.obj).entries()]);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
export class MapReadTracker extends Map {
|
|
196
|
+
get _watchedProxyHandler() {
|
|
197
|
+
throw new Error("not calling from inside a WatchedProxyHandler"); // Will return the handler when called through the handler
|
|
198
|
+
}
|
|
199
|
+
get _target() {
|
|
200
|
+
throw new Error("not calling from inside a WatchedProxyHandler"); // Will return the value when called through the handler
|
|
201
|
+
}
|
|
202
|
+
_fireAfterEntriesRead() {
|
|
203
|
+
var _a;
|
|
204
|
+
let recordedMapEntriesRead = new RecordedMapEntriesRead([...this._target.entries()]);
|
|
205
|
+
(_a = this._watchedProxyHandler) === null || _a === void 0 ? void 0 : _a.fireAfterRead(recordedMapEntriesRead);
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Pretend that this is a Map
|
|
209
|
+
*/
|
|
210
|
+
get ["constructor"]() {
|
|
211
|
+
return Map;
|
|
212
|
+
}
|
|
213
|
+
get(key) {
|
|
214
|
+
var _a;
|
|
215
|
+
key = this._watchedProxyHandler.getFacade().getUnproxiedValue(key);
|
|
216
|
+
const keyExists = this._target.has(key);
|
|
217
|
+
const result = this._target.get(key);
|
|
218
|
+
const read = new RecordedMap_get(key, keyExists, result);
|
|
219
|
+
(_a = this._watchedProxyHandler) === null || _a === void 0 ? void 0 : _a.fireAfterRead(read);
|
|
220
|
+
return this._watchedProxyHandler.getFacade().getProxyFor(result);
|
|
221
|
+
}
|
|
222
|
+
has(key) {
|
|
223
|
+
var _a;
|
|
224
|
+
key = this._watchedProxyHandler.getFacade().getUnproxiedValue(key);
|
|
225
|
+
const result = this._target.has(key);
|
|
226
|
+
const read = new RecordedMap_has(key, result);
|
|
227
|
+
(_a = this._watchedProxyHandler) === null || _a === void 0 ? void 0 : _a.fireAfterRead(read);
|
|
228
|
+
return result;
|
|
229
|
+
}
|
|
230
|
+
values() {
|
|
231
|
+
var _a;
|
|
232
|
+
const result = this._target.values();
|
|
233
|
+
let recordedMapValuesRead = new RecordedMapValuesRead([...result]);
|
|
234
|
+
(_a = this._watchedProxyHandler) === null || _a === void 0 ? void 0 : _a.fireAfterRead(recordedMapValuesRead);
|
|
235
|
+
return makeIteratorTranslateValue(result, (value) => this._watchedProxyHandler.getFacade().getProxyFor(value));
|
|
236
|
+
}
|
|
237
|
+
entries() {
|
|
238
|
+
const result = this._target.entries();
|
|
239
|
+
this._fireAfterEntriesRead();
|
|
240
|
+
const facade = this._watchedProxyHandler.getFacade();
|
|
241
|
+
return makeIteratorTranslateValue(result, ([key, value]) => [facade.getProxyFor(key), facade.getProxyFor(value)]);
|
|
242
|
+
}
|
|
243
|
+
keys() {
|
|
244
|
+
var _a;
|
|
245
|
+
const result = this._target.keys();
|
|
246
|
+
let recordedMapKeysRead = new RecordedMapKeysRead([...result]);
|
|
247
|
+
(_a = this._watchedProxyHandler) === null || _a === void 0 ? void 0 : _a.fireAfterRead(recordedMapKeysRead);
|
|
248
|
+
return makeIteratorTranslateValue(result, (key) => this._watchedProxyHandler.getFacade().getProxyFor(key));
|
|
249
|
+
}
|
|
250
|
+
forEach(callbackfn, ...restOfArgs) {
|
|
251
|
+
const getProxyFor = (value) => this._watchedProxyHandler.getFacade().getProxyFor(value);
|
|
252
|
+
/**
|
|
253
|
+
* Calls callbackFn but supplies it it's arguments *proxied*
|
|
254
|
+
*/
|
|
255
|
+
function callCallbackFnWithProxies(value, key, map, ...restOfArgs) {
|
|
256
|
+
callbackfn.apply(this, [getProxyFor(value), getProxyFor(key), getProxyFor(map), ...restOfArgs]);
|
|
257
|
+
}
|
|
258
|
+
const result = this._target.forEach(callCallbackFnWithProxies, ...restOfArgs);
|
|
259
|
+
this._fireAfterEntriesRead();
|
|
260
|
+
return result;
|
|
261
|
+
}
|
|
262
|
+
[Symbol.iterator]() {
|
|
263
|
+
const result = this._target[Symbol.iterator]();
|
|
264
|
+
this._fireAfterEntriesRead();
|
|
265
|
+
const facade = this._watchedProxyHandler.getFacade();
|
|
266
|
+
return makeIteratorTranslateValue(result, ([key, value]) => [facade.getProxyFor(key), facade.getProxyFor(value)]);
|
|
267
|
+
}
|
|
268
|
+
get size() {
|
|
269
|
+
var _a;
|
|
270
|
+
const result = this._target.size;
|
|
271
|
+
let recordedMapKeysRead = new RecordedMapKeysRead([...this._target.keys()]); // TODO: RecordedMapSizeRead
|
|
272
|
+
(_a = this._watchedProxyHandler) === null || _a === void 0 ? void 0 : _a.fireAfterRead(recordedMapKeysRead);
|
|
273
|
+
return result;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
export const config = new class extends ClassTrackingConfiguration {
|
|
277
|
+
constructor() {
|
|
278
|
+
super(...arguments);
|
|
279
|
+
this.clazz = Map;
|
|
280
|
+
this.readTracker = MapReadTracker;
|
|
281
|
+
this.changeTracker = MapChangeTracker;
|
|
282
|
+
/**
|
|
283
|
+
* Built-in Methods, which are using fields / calling methods on the proxy transparently/loyally, so those methods don't call/use internal stuff directly.
|
|
284
|
+
* Tested with, see dev_generateEsRuntimeBehaviourCheckerCode.ts
|
|
285
|
+
* May include read-only / reader methods
|
|
286
|
+
*/
|
|
287
|
+
this.knownHighLevelMethods = new Set([]);
|
|
288
|
+
/**
|
|
289
|
+
* Non-high level
|
|
290
|
+
*/
|
|
291
|
+
this.readOnlyMethods = new Set([]);
|
|
292
|
+
/**
|
|
293
|
+
* Non-high level
|
|
294
|
+
*/
|
|
295
|
+
this.readOnlyFields = new Set(["size"]);
|
|
296
|
+
this.receiverMustBeNonProxied = true;
|
|
297
|
+
}
|
|
298
|
+
};
|
|
299
|
+
//# sourceMappingURL=Map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Map.js","sourceRoot":"","sources":["../../../class-trackers/Map.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { DualUseTracker, ForWatchedProxyHandler, IWatchedProxyHandler_common, ObjKey, RecordedRead, EventHook } from "../common";
|
|
2
|
+
import { WatchedProxyHandler } from "../watchedProxyFacade";
|
|
3
|
+
import { RecordedReadOnProxiedObjectExt } from "../RecordedReadOnProxiedObjectExt";
|
|
4
|
+
/**
|
|
5
|
+
* Listeners for one set.
|
|
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 Sets
|
|
8
|
+
*/
|
|
9
|
+
declare class SetChangeHooks {
|
|
10
|
+
afterSpecificValueChanged: import("../Util").DefaultMap<unknown, EventHook>;
|
|
11
|
+
afterAnyValueChanged: EventHook;
|
|
12
|
+
}
|
|
13
|
+
export declare const changeHooksForSet: WeakMap<Set<unknown>, SetChangeHooks>;
|
|
14
|
+
export declare function getChangeHooksForSet(set: Set<unknown>): SetChangeHooks;
|
|
15
|
+
/**
|
|
16
|
+
* Can be either used as a supervisor-class in a WatchedProxyHandler, or installed on the non-proxied object via Object.setPrototypeOf
|
|
17
|
+
* The "this" may be different in these cases.
|
|
18
|
+
*/
|
|
19
|
+
export declare class SetChangeTracker<T> extends Set<T> implements DualUseTracker<Set<T>> {
|
|
20
|
+
get _watchedProxyHandler(): IWatchedProxyHandler_common | undefined;
|
|
21
|
+
protected _withUnspecificChange<R>(changeFn: () => R): R;
|
|
22
|
+
/**
|
|
23
|
+
* Will return the original object when this class is used as supervisor class in the WatchedProxyHandler
|
|
24
|
+
*/
|
|
25
|
+
get _target(): Set<T>;
|
|
26
|
+
/**
|
|
27
|
+
* Pretend that this is a Set
|
|
28
|
+
*/
|
|
29
|
+
get ["constructor"](): SetConstructor;
|
|
30
|
+
add(value: T): this;
|
|
31
|
+
delete(value: T): boolean;
|
|
32
|
+
clear(): void;
|
|
33
|
+
}
|
|
34
|
+
export declare class RecordedSet_has extends RecordedReadOnProxiedObjectExt {
|
|
35
|
+
value: unknown;
|
|
36
|
+
/**
|
|
37
|
+
* Result of the .has call
|
|
38
|
+
*/
|
|
39
|
+
result: boolean;
|
|
40
|
+
obj: Set<unknown>;
|
|
41
|
+
constructor(value: unknown, result: boolean);
|
|
42
|
+
get isChanged(): boolean;
|
|
43
|
+
getAffectingChangeHooks(target: this["obj"]): EventHook[];
|
|
44
|
+
equals(other: RecordedRead): boolean;
|
|
45
|
+
}
|
|
46
|
+
export declare class RecordedSetValuesRead extends RecordedReadOnProxiedObjectExt {
|
|
47
|
+
values: Array<unknown>;
|
|
48
|
+
obj: Set<unknown>;
|
|
49
|
+
constructor(values: Array<unknown>);
|
|
50
|
+
getAffectingChangeHooks(target: this["obj"]): EventHook[];
|
|
51
|
+
equals(other: RecordedRead): boolean;
|
|
52
|
+
get isChanged(): boolean;
|
|
53
|
+
}
|
|
54
|
+
export declare class SetReadTracker<T> extends Set<T> implements ForWatchedProxyHandler<Set<T>> {
|
|
55
|
+
get _watchedProxyHandler(): WatchedProxyHandler;
|
|
56
|
+
get _target(): Set<T>;
|
|
57
|
+
protected _fireAfterValuesRead(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Pretend that this is a Set
|
|
60
|
+
*/
|
|
61
|
+
get ["constructor"](): SetConstructor;
|
|
62
|
+
has(value: T): boolean;
|
|
63
|
+
values(): SetIterator<T>;
|
|
64
|
+
entries(): SetIterator<[T, T]>;
|
|
65
|
+
keys(): SetIterator<T>;
|
|
66
|
+
forEach(callbackfn: (value: T, value2: T, set: Set<T>, ...restOfArgs: unknown[]) => void, ...restOfArgs: unknown[]): void;
|
|
67
|
+
[Symbol.iterator](): SetIterator<T>;
|
|
68
|
+
get size(): number;
|
|
69
|
+
}
|
|
70
|
+
export declare const config: {
|
|
71
|
+
clazz: SetConstructor;
|
|
72
|
+
readTracker: typeof SetReadTracker;
|
|
73
|
+
changeTracker: typeof SetChangeTracker;
|
|
74
|
+
receiverMustBeNonProxied: boolean;
|
|
75
|
+
worksForSubclasses: boolean;
|
|
76
|
+
knownHighLevelMethods: Set<ObjKey>;
|
|
77
|
+
readOnlyMethods: Set<ObjKey>;
|
|
78
|
+
readOnlyFields: Set<ObjKey>;
|
|
79
|
+
trackTreads: boolean;
|
|
80
|
+
trackSettingObjectProperties: boolean;
|
|
81
|
+
proxyUnhandledMethodResults: boolean;
|
|
82
|
+
getTrackerClasses(): import("../common").Clazz[];
|
|
83
|
+
};
|
|
84
|
+
export {};
|
|
85
|
+
//# sourceMappingURL=Set.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Set.d.ts","sourceRoot":"","sources":["../../../class-trackers/Set.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { dualUseTracker_callOrigMethodOnTarget, ClassTrackingConfiguration, makeIteratorTranslateValue, EventHook, runChangeOperation, UnspecificObjectChange } from "../common";
|
|
2
|
+
import { getChangeHooksForObject } from "../objectChangeTracking";
|
|
3
|
+
import { arraysAreShallowlyEqual, newDefaultMap } from "../Util";
|
|
4
|
+
import { RecordedReadOnProxiedObjectExt } from "../RecordedReadOnProxiedObjectExt";
|
|
5
|
+
/**
|
|
6
|
+
* Listeners for one set.
|
|
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 Sets
|
|
9
|
+
*/
|
|
10
|
+
class SetChangeHooks {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.afterSpecificValueChanged = newDefaultMap(() => new EventHook());
|
|
13
|
+
this.afterAnyValueChanged = new EventHook();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export const changeHooksForSet = new WeakMap();
|
|
17
|
+
export function getChangeHooksForSet(set) {
|
|
18
|
+
let result = changeHooksForSet.get(set);
|
|
19
|
+
if (result === undefined) {
|
|
20
|
+
changeHooksForSet.set(set, result = new SetChangeHooks());
|
|
21
|
+
}
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Can be either used as a supervisor-class in a WatchedProxyHandler, or installed on the non-proxied object via Object.setPrototypeOf
|
|
26
|
+
* The "this" may be different in these cases.
|
|
27
|
+
*/
|
|
28
|
+
export class SetChangeTracker extends Set {
|
|
29
|
+
get _watchedProxyHandler() {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
_withUnspecificChange(changeFn) {
|
|
33
|
+
return runChangeOperation(this, new UnspecificObjectChange(this), [getChangeHooksForObject(this).unspecificChange], changeFn);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Will return the original object when this class is used as supervisor class in the WatchedProxyHandler
|
|
37
|
+
*/
|
|
38
|
+
get _target() {
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Pretend that this is a Set
|
|
43
|
+
*/
|
|
44
|
+
get ["constructor"]() {
|
|
45
|
+
return Set;
|
|
46
|
+
}
|
|
47
|
+
add(value) {
|
|
48
|
+
value = this._watchedProxyHandler ? this._watchedProxyHandler.getFacade().getUnproxiedValue(value) : value; // Translate to unproxied value
|
|
49
|
+
if (this._target.has(value)) { // No change?
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
52
|
+
runChangeOperation(this, new UnspecificObjectChange(this), [getChangeHooksForSet(this).afterSpecificValueChanged.get(value), getChangeHooksForSet(this).afterAnyValueChanged], () => {
|
|
53
|
+
dualUseTracker_callOrigMethodOnTarget(this, "add", [value]);
|
|
54
|
+
});
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
delete(value) {
|
|
58
|
+
value = this._watchedProxyHandler ? this._watchedProxyHandler.getFacade().getUnproxiedValue(value) : value; // Translate to unproxied value
|
|
59
|
+
if (!this._target.has(value)) { // no change?
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
return runChangeOperation(this, new UnspecificObjectChange(this), [getChangeHooksForSet(this).afterSpecificValueChanged.get(value), getChangeHooksForSet(this).afterAnyValueChanged], () => {
|
|
63
|
+
return dualUseTracker_callOrigMethodOnTarget(this, "delete", [value]);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
clear() {
|
|
67
|
+
return runChangeOperation(this, new UnspecificObjectChange(this), [getChangeHooksForSet(this).afterAnyValueChanged, getChangeHooksForObject(this).unspecificChange], () => {
|
|
68
|
+
return dualUseTracker_callOrigMethodOnTarget(this, "clear", []);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
export class RecordedSet_has extends RecordedReadOnProxiedObjectExt {
|
|
73
|
+
constructor(value, result) {
|
|
74
|
+
super();
|
|
75
|
+
this.value = value;
|
|
76
|
+
this.result = result;
|
|
77
|
+
}
|
|
78
|
+
get isChanged() {
|
|
79
|
+
return this.result !== this.obj.has(this.value);
|
|
80
|
+
}
|
|
81
|
+
getAffectingChangeHooks(target) {
|
|
82
|
+
return [
|
|
83
|
+
getChangeHooksForSet(target).afterSpecificValueChanged.get(this.value),
|
|
84
|
+
getChangeHooksForObject(target).unspecificChange
|
|
85
|
+
];
|
|
86
|
+
}
|
|
87
|
+
equals(other) {
|
|
88
|
+
if (!(other instanceof RecordedSet_has)) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
return this.proxyHandler === other.proxyHandler && this.obj === other.obj && this.value === other.value && this.result === other.result;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export class RecordedSetValuesRead extends RecordedReadOnProxiedObjectExt {
|
|
95
|
+
constructor(values) {
|
|
96
|
+
super();
|
|
97
|
+
this.values = values;
|
|
98
|
+
}
|
|
99
|
+
getAffectingChangeHooks(target) {
|
|
100
|
+
return [
|
|
101
|
+
getChangeHooksForSet(target).afterAnyValueChanged,
|
|
102
|
+
getChangeHooksForObject(target).unspecificChange
|
|
103
|
+
];
|
|
104
|
+
}
|
|
105
|
+
equals(other) {
|
|
106
|
+
if (!(other instanceof RecordedSetValuesRead)) {
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
return this.proxyHandler === other.proxyHandler && this.obj === other.obj && arraysAreShallowlyEqual(this.values, other.values);
|
|
110
|
+
}
|
|
111
|
+
get isChanged() {
|
|
112
|
+
return !arraysAreShallowlyEqual(this.values, [...(this.obj).values()]);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
export class SetReadTracker extends Set {
|
|
116
|
+
get _watchedProxyHandler() {
|
|
117
|
+
throw new Error("not calling from inside a WatchedProxyHandler"); // Will return the handler when called through the handler
|
|
118
|
+
}
|
|
119
|
+
get _target() {
|
|
120
|
+
throw new Error("not calling from inside a WatchedProxyHandler"); // Will return the value when called through the handler
|
|
121
|
+
}
|
|
122
|
+
_fireAfterValuesRead() {
|
|
123
|
+
var _a;
|
|
124
|
+
let recordedSetValuesRead = new RecordedSetValuesRead([...this._target]);
|
|
125
|
+
(_a = this._watchedProxyHandler) === null || _a === void 0 ? void 0 : _a.fireAfterRead(recordedSetValuesRead);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Pretend that this is a Set
|
|
129
|
+
*/
|
|
130
|
+
get ["constructor"]() {
|
|
131
|
+
return Set;
|
|
132
|
+
}
|
|
133
|
+
has(value) {
|
|
134
|
+
var _a;
|
|
135
|
+
value = this._watchedProxyHandler.getFacade().getUnproxiedValue(value);
|
|
136
|
+
const result = this._target.has(value);
|
|
137
|
+
const read = new RecordedSet_has(value, result);
|
|
138
|
+
(_a = this._watchedProxyHandler) === null || _a === void 0 ? void 0 : _a.fireAfterRead(read);
|
|
139
|
+
return result;
|
|
140
|
+
}
|
|
141
|
+
values() {
|
|
142
|
+
const result = this._target.values();
|
|
143
|
+
this._fireAfterValuesRead();
|
|
144
|
+
return makeIteratorTranslateValue(result, (value) => this._watchedProxyHandler.getFacade().getProxyFor(value));
|
|
145
|
+
}
|
|
146
|
+
entries() {
|
|
147
|
+
const result = this._target.entries();
|
|
148
|
+
this._fireAfterValuesRead();
|
|
149
|
+
const facade = this._watchedProxyHandler.getFacade();
|
|
150
|
+
return makeIteratorTranslateValue(result, ([value1, value2]) => [facade.getProxyFor(value1), facade.getProxyFor(value2)]);
|
|
151
|
+
}
|
|
152
|
+
keys() {
|
|
153
|
+
const result = this._target.keys();
|
|
154
|
+
this._fireAfterValuesRead();
|
|
155
|
+
return makeIteratorTranslateValue(result, (value) => this._watchedProxyHandler.getFacade().getProxyFor(value));
|
|
156
|
+
}
|
|
157
|
+
forEach(callbackfn, ...restOfArgs) {
|
|
158
|
+
const getProxyFor = (value) => this._watchedProxyHandler.getFacade().getProxyFor(value);
|
|
159
|
+
/**
|
|
160
|
+
* Calls callbackFn but supplies it it's arguments *proxied*
|
|
161
|
+
*/
|
|
162
|
+
function callCallbackFnWithProxies(value, value2, set, ...restOfArgs) {
|
|
163
|
+
callbackfn.apply(this, [getProxyFor(value), getProxyFor(value2), getProxyFor(set), ...restOfArgs]);
|
|
164
|
+
}
|
|
165
|
+
const result = this._target.forEach(callCallbackFnWithProxies, ...restOfArgs);
|
|
166
|
+
this._fireAfterValuesRead();
|
|
167
|
+
return result;
|
|
168
|
+
}
|
|
169
|
+
[Symbol.iterator]() {
|
|
170
|
+
const result = this._target[Symbol.iterator]();
|
|
171
|
+
this._fireAfterValuesRead();
|
|
172
|
+
return makeIteratorTranslateValue(result, (value) => this._watchedProxyHandler.getFacade().getProxyFor(value));
|
|
173
|
+
}
|
|
174
|
+
get size() {
|
|
175
|
+
const result = this._target.size;
|
|
176
|
+
this._fireAfterValuesRead();
|
|
177
|
+
return result;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
export const config = new class extends ClassTrackingConfiguration {
|
|
181
|
+
constructor() {
|
|
182
|
+
super(...arguments);
|
|
183
|
+
this.clazz = Set;
|
|
184
|
+
this.readTracker = SetReadTracker;
|
|
185
|
+
this.changeTracker = SetChangeTracker;
|
|
186
|
+
this.receiverMustBeNonProxied = true;
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
//# sourceMappingURL=Set.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Set.js","sourceRoot":"","sources":["../../../class-trackers/Set.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":["../../../class-trackers/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,32 @@
|
|
|
1
|
+
import { config as arrayConfig } from "./Array";
|
|
2
|
+
import { config as setConfig } from "./Set";
|
|
3
|
+
import { config as mapConfig } from "./Map";
|
|
4
|
+
import { IteratorConfig } from "./Iterator";
|
|
5
|
+
import { classIsSubclassOf, throwError } from "../Util";
|
|
6
|
+
/**
|
|
7
|
+
* Register configurations here:
|
|
8
|
+
*/
|
|
9
|
+
export const classTrackingConfigurations = [arrayConfig, setConfig, mapConfig, IteratorConfig];
|
|
10
|
+
const cache_clazzToConfig = new WeakMap();
|
|
11
|
+
export function getTrackingConfigFor(obj) {
|
|
12
|
+
const clazz = obj.constructor;
|
|
13
|
+
if (clazz === undefined) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
if (cache_clazzToConfig.has(clazz)) {
|
|
17
|
+
return cache_clazzToConfig.get(clazz);
|
|
18
|
+
}
|
|
19
|
+
const result = classTrackingConfigurations.find(cfg => {
|
|
20
|
+
if (cfg.clazz === clazz) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
if (classIsSubclassOf(clazz, cfg.clazz)) {
|
|
24
|
+
cfg.worksForSubclasses || throwError(`Subclasses of ${cfg.clazz.name} are not supported. Actually got: ${clazz.name}`);
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
});
|
|
29
|
+
cache_clazzToConfig.set(clazz, result);
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../class-trackers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,IAAI,WAAW,EAAC,MAAM,SAAS,CAAA;AAC7C,OAAO,EAAC,MAAM,IAAI,SAAS,EAAC,MAAM,OAAO,CAAA;AACzC,OAAO,EAAC,MAAM,IAAI,SAAS,EAAC,MAAM,OAAO,CAAA;AACzC,OAAO,EAAC,cAAc,EAAC,MAAM,YAAY,CAAA;AACzC,OAAO,EAAC,iBAAiB,EAAE,UAAU,EAAC,MAAM,SAAS,CAAC;AAEtD;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAiC,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AAE7H,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAAiD,CAAC;AAEzF,MAAM,UAAU,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,2BAA2B,CAAC,IAAI,CAAC,GAAG,CAAA,EAAE;QACjD,IAAG,GAAG,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAG,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,GAAG,CAAC,kBAAkB,IAAI,UAAU,CAAC,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"}
|