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.
Files changed (56) hide show
  1. package/.run/performanceTests.ts no profiling.run.xml +15 -0
  2. package/.run/performanceTests_withProfiling.ts.run.xml +18 -0
  3. package/DEVELOPMENT.md +4 -0
  4. package/class-trackers/Array.ts +21 -4
  5. package/common.ts +4 -0
  6. package/dist/commonjs/class-trackers/Array.d.ts +2 -2
  7. package/dist/commonjs/class-trackers/Array.d.ts.map +1 -1
  8. package/dist/commonjs/class-trackers/Array.js +19 -4
  9. package/dist/commonjs/class-trackers/Array.js.map +1 -1
  10. package/dist/commonjs/common.d.ts +1 -0
  11. package/dist/commonjs/common.d.ts.map +1 -1
  12. package/dist/commonjs/common.js +3 -0
  13. package/dist/commonjs/common.js.map +1 -1
  14. package/dist/commonjs/index.d.ts +1 -1
  15. package/dist/commonjs/index.d.ts.map +1 -1
  16. package/dist/commonjs/index.js +3 -1
  17. package/dist/commonjs/index.js.map +1 -1
  18. package/dist/commonjs/origChangeTracking.d.ts +11 -0
  19. package/dist/commonjs/origChangeTracking.d.ts.map +1 -1
  20. package/dist/commonjs/origChangeTracking.js +52 -1
  21. package/dist/commonjs/origChangeTracking.js.map +1 -1
  22. package/dist/commonjs/performanceTests.d.ts +2 -0
  23. package/dist/commonjs/performanceTests.d.ts.map +1 -0
  24. package/dist/commonjs/performanceTests.js +31 -0
  25. package/dist/commonjs/performanceTests.js.map +1 -0
  26. package/dist/commonjs/watchedProxyFacade.d.ts.map +1 -1
  27. package/dist/commonjs/watchedProxyFacade.js +8 -6
  28. package/dist/commonjs/watchedProxyFacade.js.map +1 -1
  29. package/dist/esm/class-trackers/Array.d.ts +2 -2
  30. package/dist/esm/class-trackers/Array.d.ts.map +1 -1
  31. package/dist/esm/class-trackers/Array.js +19 -4
  32. package/dist/esm/class-trackers/Array.js.map +1 -1
  33. package/dist/esm/common.d.ts +1 -0
  34. package/dist/esm/common.d.ts.map +1 -1
  35. package/dist/esm/common.js +3 -0
  36. package/dist/esm/common.js.map +1 -1
  37. package/dist/esm/index.d.ts +1 -1
  38. package/dist/esm/index.d.ts.map +1 -1
  39. package/dist/esm/index.js +1 -1
  40. package/dist/esm/index.js.map +1 -1
  41. package/dist/esm/origChangeTracking.d.ts +11 -0
  42. package/dist/esm/origChangeTracking.d.ts.map +1 -1
  43. package/dist/esm/origChangeTracking.js +49 -1
  44. package/dist/esm/origChangeTracking.js.map +1 -1
  45. package/dist/esm/performanceTests.d.ts +2 -0
  46. package/dist/esm/performanceTests.d.ts.map +1 -0
  47. package/dist/esm/performanceTests.js +29 -0
  48. package/dist/esm/performanceTests.js.map +1 -0
  49. package/dist/esm/watchedProxyFacade.d.ts.map +1 -1
  50. package/dist/esm/watchedProxyFacade.js +8 -6
  51. package/dist/esm/watchedProxyFacade.js.map +1 -1
  52. package/index.ts +1 -1
  53. package/origChangeTracking.ts +58 -2
  54. package/package.json +2 -1
  55. package/performanceTests.ts +37 -0
  56. package/watchedProxyFacade.ts +9 -5
@@ -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 receiverMustBeNonProxied = this.trackingConfig?.receiverMustBeNonProxied === true;
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(this.trackingConfig !== undefined) {
235
- for(const TrackerClass of this.trackingConfig.getTrackerClasses()) {
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(this.trackingConfig.knownHighLevelMethods.has(key)) {
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(this.trackingConfig.readOnlyMethods.has(key)) {
264
+ if(trackingConfig.readOnlyMethods.has(key)) {
261
265
  return trapForGenericReaderMethod
262
266
  }
263
267
  else {