@squiz/optimization-utils 4.3.0 → 4.4.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.
@@ -0,0 +1,12 @@
1
+ export type ChangeValue<TValue> = {
2
+ oldValue: TValue;
3
+ newValue: TValue;
4
+ };
5
+ export declare class ChangeTracker<T extends object> {
6
+ private modified;
7
+ private readonly proxy;
8
+ static extractChangeTracker<T extends object>(entity: T): ChangeTracker<T> | undefined;
9
+ constructor(target: T);
10
+ getTrackedObject(): T;
11
+ getChanges<TKey extends keyof T>(key: TKey): ChangeValue<T[TKey]> | undefined;
12
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChangeTracker = void 0;
4
+ const CHANGE_TRACKER = Symbol('PROXY_SYMBOL');
5
+ class ChangeTracker {
6
+ modified = new Map();
7
+ proxy;
8
+ static extractChangeTracker(entity) {
9
+ return Reflect.get(entity, CHANGE_TRACKER);
10
+ }
11
+ constructor(target) {
12
+ this.proxy = new Proxy(target, {
13
+ set: (obj, prop, value) => {
14
+ if (Reflect.get(obj, prop) !== value) {
15
+ if (!this.modified.has(prop)) {
16
+ this.modified.set(prop, {
17
+ oldValue: Reflect.get(obj, prop),
18
+ newValue: value,
19
+ });
20
+ }
21
+ else {
22
+ this.modified.get(prop).newValue = value;
23
+ }
24
+ }
25
+ obj[prop] = value;
26
+ return true;
27
+ },
28
+ });
29
+ Reflect.set(this.proxy, CHANGE_TRACKER, this);
30
+ }
31
+ getTrackedObject() {
32
+ return this.proxy;
33
+ }
34
+ getChanges(key) {
35
+ return this.modified.get(key);
36
+ }
37
+ }
38
+ exports.ChangeTracker = ChangeTracker;
39
+ //# sourceMappingURL=ChangeTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangeTracker.js","sourceRoot":"","sources":["../../src/change-tracker/ChangeTracker.ts"],"names":[],"mappings":";;;AAAA,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAI9C,MAAa,aAAa;IAChB,QAAQ,GAA0C,IAAI,GAAG,EAAE,CAAC;IACnD,KAAK,CAAI;IAE1B,MAAM,CAAC,oBAAoB,CACzB,MAAS;QAET,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAqB,CAAC;IACjE,CAAC;IAED,YAAY,MAAS;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE;YAC7B,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAW,EAAE;gBACjC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;oBACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAe,CAAC,EAAE,CAAC;wBACxC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAe,EAAE;4BACjC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;4BAChC,QAAQ,EAAE,KAAK;yBAChB,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAe,CAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;oBACvD,CAAC;gBACH,CAAC;gBAED,GAAG,CAAC,IAAe,CAAC,GAAG,KAAK,CAAC;gBAE7B,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,UAAU,CACR,GAAS;QAET,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAyB,CAAC;IACxD,CAAC;CACF;AA1CD,sCA0CC"}
package/dist/index.d.ts CHANGED
@@ -2,5 +2,6 @@ export * from './types/class-utilities-types';
2
2
  export * from './object/getProperty';
3
3
  export * from './measurement/performance';
4
4
  export * from './data-structures/Result';
5
+ export * from './change-tracker/ChangeTracker';
5
6
  export * from './array/chunkify';
6
7
  export * from './array/unique';
package/dist/index.js CHANGED
@@ -18,6 +18,7 @@ __exportStar(require("./types/class-utilities-types"), exports);
18
18
  __exportStar(require("./object/getProperty"), exports);
19
19
  __exportStar(require("./measurement/performance"), exports);
20
20
  __exportStar(require("./data-structures/Result"), exports);
21
+ __exportStar(require("./change-tracker/ChangeTracker"), exports);
21
22
  __exportStar(require("./array/chunkify"), exports);
22
23
  __exportStar(require("./array/unique"), exports);
23
24
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,uDAAqC;AACrC,4DAA0C;AAC1C,2DAAyC;AACzC,mDAAiC;AACjC,iDAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,uDAAqC;AACrC,4DAA0C;AAC1C,2DAAyC;AACzC,iEAA+C;AAC/C,mDAAiC;AACjC,iDAA+B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@squiz/optimization-utils",
3
- "version": "4.3.0",
3
+ "version": "4.4.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",