proxy-facades 1.7.2 → 1.8.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/.run/performanceTests.ts no profiling.run.xml +15 -0
- package/.run/performanceTests_withProfiling.ts.run.xml +18 -0
- package/DEVELOPMENT.md +4 -0
- package/class-trackers/Array.ts +21 -4
- package/common.ts +4 -0
- package/dist/commonjs/class-trackers/Array.d.ts +2 -2
- package/dist/commonjs/class-trackers/Array.d.ts.map +1 -1
- package/dist/commonjs/class-trackers/Array.js +19 -4
- package/dist/commonjs/class-trackers/Array.js.map +1 -1
- package/dist/commonjs/common.d.ts +1 -0
- package/dist/commonjs/common.d.ts.map +1 -1
- package/dist/commonjs/common.js +3 -0
- package/dist/commonjs/common.js.map +1 -1
- package/dist/commonjs/index.d.ts +1 -1
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +3 -1
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/origChangeTracking.d.ts +11 -0
- package/dist/commonjs/origChangeTracking.d.ts.map +1 -1
- package/dist/commonjs/origChangeTracking.js +52 -1
- package/dist/commonjs/origChangeTracking.js.map +1 -1
- package/dist/commonjs/performanceTests.d.ts +2 -0
- package/dist/commonjs/performanceTests.d.ts.map +1 -0
- package/dist/commonjs/performanceTests.js +31 -0
- package/dist/commonjs/performanceTests.js.map +1 -0
- package/dist/commonjs/watchedProxyFacade.d.ts.map +1 -1
- package/dist/commonjs/watchedProxyFacade.js +8 -6
- package/dist/commonjs/watchedProxyFacade.js.map +1 -1
- package/dist/esm/class-trackers/Array.d.ts +2 -2
- package/dist/esm/class-trackers/Array.d.ts.map +1 -1
- package/dist/esm/class-trackers/Array.js +19 -4
- package/dist/esm/class-trackers/Array.js.map +1 -1
- package/dist/esm/common.d.ts +1 -0
- package/dist/esm/common.d.ts.map +1 -1
- package/dist/esm/common.js +3 -0
- package/dist/esm/common.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/origChangeTracking.d.ts +11 -0
- package/dist/esm/origChangeTracking.d.ts.map +1 -1
- package/dist/esm/origChangeTracking.js +49 -1
- package/dist/esm/origChangeTracking.js.map +1 -1
- package/dist/esm/performanceTests.d.ts +2 -0
- package/dist/esm/performanceTests.d.ts.map +1 -0
- package/dist/esm/performanceTests.js +29 -0
- package/dist/esm/performanceTests.js.map +1 -0
- package/dist/esm/watchedProxyFacade.d.ts.map +1 -1
- package/dist/esm/watchedProxyFacade.js +8 -6
- package/dist/esm/watchedProxyFacade.js.map +1 -1
- package/index.ts +1 -1
- package/origChangeTracking.ts +58 -2
- package/package.json +2 -1
- package/performanceTests.ts +37 -0
- package/watchedProxyFacade.ts +9 -5
package/watchedProxyFacade.ts
CHANGED
|
@@ -19,6 +19,7 @@ import {getChangeHooksForObject, changeHooksForObject} from "./objectChangeTrack
|
|
|
19
19
|
import _ from "underscore"
|
|
20
20
|
import {getTrackingConfigFor} from "./class-trackers/index";
|
|
21
21
|
import {RecordedReadOnProxiedObjectExt} from "./RecordedReadOnProxiedObjectExt";
|
|
22
|
+
import {performance_temporarilyUninstallChangeTrackersIfAllowed} from "./origChangeTracking";
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
/**
|
|
@@ -221,7 +222,8 @@ export class WatchedProxyHandler extends FacadeProxyHandler<WatchedProxyFacade>
|
|
|
221
222
|
const target = this.target;
|
|
222
223
|
const proxy = this.proxy;
|
|
223
224
|
const thisHandler = this;
|
|
224
|
-
const
|
|
225
|
+
const trackingConfig = this.trackingConfig;
|
|
226
|
+
const receiverMustBeNonProxied = trackingConfig?.receiverMustBeNonProxied === true;
|
|
225
227
|
|
|
226
228
|
if(key === "_watchedProxyHandler") {
|
|
227
229
|
return this;
|
|
@@ -230,9 +232,11 @@ export class WatchedProxyHandler extends FacadeProxyHandler<WatchedProxyFacade>
|
|
|
230
232
|
return this.target;
|
|
231
233
|
}
|
|
232
234
|
|
|
235
|
+
performance_temporarilyUninstallChangeTrackersIfAllowed(this.target);
|
|
236
|
+
|
|
233
237
|
// Check for and use supervisor class:
|
|
234
|
-
if(
|
|
235
|
-
for(const TrackerClass of
|
|
238
|
+
if(trackingConfig !== undefined) {
|
|
239
|
+
for(const TrackerClass of trackingConfig.getTrackerClasses()) {
|
|
236
240
|
let propOnSupervisor = Object.getOwnPropertyDescriptor(TrackerClass.prototype, key);
|
|
237
241
|
if(propOnSupervisor !== undefined) { // Supervisor class is responsible for the property (or method) ?
|
|
238
242
|
//@ts-ignore
|
|
@@ -252,12 +256,12 @@ export class WatchedProxyHandler extends FacadeProxyHandler<WatchedProxyFacade>
|
|
|
252
256
|
// When arriving here, the field is not **directly** in one of the tracker classes
|
|
253
257
|
//@ts-ignore
|
|
254
258
|
origMethod = this.target[key];
|
|
255
|
-
if(
|
|
259
|
+
if(trackingConfig.knownHighLevelMethods.has(key)) {
|
|
256
260
|
return trapHighLevelReaderWriterMethod
|
|
257
261
|
}
|
|
258
262
|
|
|
259
263
|
if(typeof origMethod === "function" && !(key as any in Object.prototype)) { // Read+write method that was not handled directly by supervisor class?
|
|
260
|
-
if(
|
|
264
|
+
if(trackingConfig.readOnlyMethods.has(key)) {
|
|
261
265
|
return trapForGenericReaderMethod
|
|
262
266
|
}
|
|
263
267
|
else {
|