@woltz/rich-domain 1.2.1 → 1.2.4

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 (93) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/dist/base-entity.d.ts +1 -1
  3. package/dist/base-entity.d.ts.map +1 -1
  4. package/dist/base-entity.js +13 -46
  5. package/dist/base-entity.js.map +1 -1
  6. package/dist/{history-tracker.d.ts → change-tracker.d.ts} +3 -3
  7. package/dist/change-tracker.d.ts.map +1 -0
  8. package/dist/{history-tracker.js → change-tracker.js} +11 -57
  9. package/dist/change-tracker.js.map +1 -0
  10. package/dist/constants.d.ts +7 -1
  11. package/dist/constants.d.ts.map +1 -1
  12. package/dist/constants.js +65 -0
  13. package/dist/constants.js.map +1 -1
  14. package/dist/criteria.d.ts.map +1 -1
  15. package/dist/criteria.js +6 -4
  16. package/dist/criteria.js.map +1 -1
  17. package/dist/domain-event.d.ts.map +1 -1
  18. package/dist/domain-event.js +0 -3
  19. package/dist/domain-event.js.map +1 -1
  20. package/dist/entity-changes.d.ts.map +1 -1
  21. package/dist/entity-changes.js +0 -4
  22. package/dist/entity-changes.js.map +1 -1
  23. package/dist/entity-schema-registry.d.ts.map +1 -1
  24. package/dist/entity-schema-registry.js +2 -8
  25. package/dist/entity-schema-registry.js.map +1 -1
  26. package/dist/entity.d.ts +0 -6
  27. package/dist/entity.d.ts.map +1 -1
  28. package/dist/entity.js +0 -9
  29. package/dist/entity.js.map +1 -1
  30. package/dist/index.d.ts +9 -6
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +8 -12
  33. package/dist/index.js.map +1 -1
  34. package/dist/paginated-result.d.ts.map +1 -1
  35. package/dist/paginated-result.js +0 -15
  36. package/dist/paginated-result.js.map +1 -1
  37. package/dist/repository/base-repository.d.ts +1 -1
  38. package/dist/repository/base-repository.d.ts.map +1 -1
  39. package/dist/repository/index.d.ts.map +1 -1
  40. package/dist/repository/index.js +0 -6
  41. package/dist/repository/index.js.map +1 -1
  42. package/dist/repository/unit-of-work.d.ts.map +1 -1
  43. package/dist/repository/unit-of-work.js +0 -3
  44. package/dist/repository/unit-of-work.js.map +1 -1
  45. package/dist/types/change-tracker.d.ts +10 -0
  46. package/dist/types/change-tracker.d.ts.map +1 -1
  47. package/dist/types/domain.d.ts +4 -6
  48. package/dist/types/domain.d.ts.map +1 -1
  49. package/dist/types/index.d.ts +1 -1
  50. package/dist/types/index.d.ts.map +1 -1
  51. package/dist/types/index.js +1 -1
  52. package/dist/types/index.js.map +1 -1
  53. package/dist/utils/criteria-operator-validation.d.ts +1 -0
  54. package/dist/utils/criteria-operator-validation.d.ts.map +1 -1
  55. package/dist/utils/criteria-operator-validation.js +39 -17
  56. package/dist/utils/criteria-operator-validation.js.map +1 -1
  57. package/dist/validation-error.d.ts.map +1 -1
  58. package/dist/validation-error.js +1 -3
  59. package/dist/validation-error.js.map +1 -1
  60. package/dist/value-object.d.ts +1 -1
  61. package/dist/value-object.d.ts.map +1 -1
  62. package/dist/value-object.js +0 -1
  63. package/dist/value-object.js.map +1 -1
  64. package/package.json +1 -1
  65. package/src/base-entity.ts +13 -56
  66. package/src/{history-tracker.ts → change-tracker.ts} +23 -73
  67. package/src/constants.ts +75 -1
  68. package/src/criteria.ts +9 -3
  69. package/src/domain-event.ts +0 -4
  70. package/src/entity-changes.ts +0 -5
  71. package/src/entity-schema-registry.ts +2 -22
  72. package/src/entity.ts +0 -11
  73. package/src/index.ts +15 -20
  74. package/src/paginated-result.ts +0 -21
  75. package/src/repository/base-repository.ts +1 -1
  76. package/src/repository/index.ts +0 -9
  77. package/src/repository/unit-of-work.ts +0 -4
  78. package/src/types/change-tracker.ts +16 -4
  79. package/src/types/domain.ts +4 -8
  80. package/src/types/index.ts +1 -1
  81. package/src/utils/criteria-operator-validation.ts +57 -19
  82. package/src/validation-error.ts +1 -3
  83. package/src/value-object.ts +1 -2
  84. package/tests/depth/deep-tracking.test.ts +554 -0
  85. package/tests/history-tracker.spec.ts +1 -1
  86. package/tests/load-test/data.json +248187 -247017
  87. package/dist/history-tracker.d.ts.map +0 -1
  88. package/dist/history-tracker.js.map +0 -1
  89. package/dist/types/history-tracker.d.ts +0 -47
  90. package/dist/types/history-tracker.d.ts.map +0 -1
  91. package/dist/types/history-tracker.js +0 -2
  92. package/dist/types/history-tracker.js.map +0 -1
  93. package/src/types/history-tracker.ts +0 -58
package/CHANGELOG.md CHANGED
@@ -2,6 +2,62 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [1.2.4](https://github.com/tarcisioandrade/rich-domain/compare/v1.2.2...v1.2.4) (2025-11-30)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * critic bug ([474a8d9](https://github.com/tarcisioandrade/rich-domain/commit/474a8d90fc9fb2810dc37018c86dce234d2ac08f))
11
+ * improve deep cloning logic in BaseEntity to handle structuredClone fallback ([78f8fbf](https://github.com/tarcisioandrade/rich-domain/commit/78f8fbf5846650a7e3783aa55023d94db65572f6))
12
+
13
+
14
+ ### Tests
15
+
16
+ * add comprehensive deep tracking tests for nested entity structures ([66b0c33](https://github.com/tarcisioandrade/rich-domain/commit/66b0c3399e825b24925a7ae3056e57a18ec6d93c))
17
+
18
+
19
+ ### Refactoring
20
+
21
+ * change visibility of prisma client in PrismaRepository constructor ([1cf83ed](https://github.com/tarcisioandrade/rich-domain/commit/1cf83ed97585fddd6a25125cedc1bcf72b289713))
22
+
23
+ ### [1.2.3](https://github.com/tarcisioandrade/rich-domain/compare/v1.2.2...v1.2.3) (2025-11-30)
24
+
25
+
26
+ ### Bug Fixes
27
+
28
+ * critic bug ([474a8d9](https://github.com/tarcisioandrade/rich-domain/commit/474a8d90fc9fb2810dc37018c86dce234d2ac08f))
29
+ * improve deep cloning logic in BaseEntity to handle structuredClone fallback ([78f8fbf](https://github.com/tarcisioandrade/rich-domain/commit/78f8fbf5846650a7e3783aa55023d94db65572f6))
30
+
31
+
32
+ ### Tests
33
+
34
+ * add comprehensive deep tracking tests for nested entity structures ([66b0c33](https://github.com/tarcisioandrade/rich-domain/commit/66b0c3399e825b24925a7ae3056e57a18ec6d93c))
35
+
36
+ ### [1.2.2](https://github.com/tarcisioandrade/rich-domain/compare/v0.3.0...v1.2.2) (2025-11-30)
37
+
38
+
39
+ ### Features
40
+
41
+ * filter component with criteria ([a6e5a66](https://github.com/tarcisioandrade/rich-domain/commit/a6e5a664e7b175f8156832b2d42821f73efec522))
42
+
43
+
44
+ ### Bug Fixes
45
+
46
+ * incorrect verification in criteria operator validation ([8b4da16](https://github.com/tarcisioandrade/rich-domain/commit/8b4da16ded67a55afe64adbe60d52359cd168a17))
47
+
48
+
49
+ ### Chores
50
+
51
+ * update dependencies and refactor mappers to use PrismaToPersistence ([5281716](https://github.com/tarcisioandrade/rich-domain/commit/52817161667ce473ffe2f7991d55c03190d097c0))
52
+
53
+
54
+ ### Refactoring
55
+
56
+ * enhance criteria validation by adding field value sanitization ([9991a6b](https://github.com/tarcisioandrade/rich-domain/commit/9991a6b54dbfa8b5d2505ed17897b76f6b794a33))
57
+ * improve filter component logic and UI interactions for adding filters ([3dd8d9f](https://github.com/tarcisioandrade/rich-domain/commit/3dd8d9fb8934ca15357ad62485f74c541c01a680))
58
+ * migrate filter types to filter-utils for improved organization and clarity ([eeb2af4](https://github.com/tarcisioandrade/rich-domain/commit/eeb2af4f563ff7f8dc3eb1836b22392bc229f3af))
59
+ * update FilterDateValue component to handle string dates and improve date handling logic ([6cb0b42](https://github.com/tarcisioandrade/rich-domain/commit/6cb0b4245ce9394389ee208c16035bc49e4aa912))
60
+
5
61
  ### [1.2.1](https://github.com/tarcisioandrade/rich-domain/compare/v1.2.0...v1.2.1) (2025-11-29)
6
62
 
7
63
 
@@ -22,7 +22,7 @@ export declare abstract class BaseEntity<T extends BaseProps> {
22
22
  private extractPathKey;
23
23
  /**
24
24
  * Setup validation that runs on every property change.
25
- * Uses the HistoryTracker's onChangeValidator callback.
25
+ * Uses the ChangeTracker's onChangeValidator callback.
26
26
  */
27
27
  private setupUpdateValidation;
28
28
  private takeSnapshot;
@@ -1 +1 @@
1
- {"version":3,"file":"base-entity.d.ts","sourceRoot":"","sources":["../src/base-entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC;AACjC,OAAO,EACL,SAAS,EACT,YAAY,EACZ,cAAc,EACd,WAAW,EAGX,gBAAgB,EACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAUvD,8BAAsB,UAAU,CAAC,CAAC,SAAS,SAAS;IAClD,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,WAAW,CAAC,CAAsB;IAC1C,OAAO,CAAC,YAAY,CAAC,CAAoB;IACzC,OAAO,CAAC,YAAY,CAAsB;IAG1C,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACpD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAEnC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG;QAAE,EAAE,CAAC,EAAE,EAAE,CAAA;KAAE;IA6D9C,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,cAAc;IAgBtB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAqF7B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,cAAc;IAkDtB,IAAI,EAAE,IAAI,EAAE,CAEX;IAEM,KAAK,IAAI,OAAO;IAIvB;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,OAAO;IAwBnD,IAAW,KAAK,IAAI,CAAC,CAEpB;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,eAAe,GAAG,SAAS,CAElD;IAMD;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,gBAAgB,CAAC,UAAU,CAAC;IAI5E;;OAEG;IACH,UAAU,IAAI,YAAY,EAAE;IAI5B;;;OAGG;IACH,WAAW,IAAI,IAAI;IASnB;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAInD;;OAEG;IACU,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D;;OAEG;IACH,oBAAoB,IAAI,YAAY,EAAE;IAItC;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAQ/B,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC;IAI3B,OAAO,CAAC,UAAU;CAgBnB"}
1
+ {"version":3,"file":"base-entity.d.ts","sourceRoot":"","sources":["../src/base-entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC;AACjC,OAAO,EACL,SAAS,EACT,YAAY,EACZ,cAAc,EACd,WAAW,EAGX,gBAAgB,EACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AASvD,8BAAsB,UAAU,CAAC,CAAC,SAAS,SAAS;IAClD,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,WAAW,CAAC,CAAsB;IAC1C,OAAO,CAAC,YAAY,CAAC,CAAoB;IACzC,OAAO,CAAC,YAAY,CAAsB;IAE1C,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACpD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAEnC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG;QAAE,EAAE,CAAC,EAAE,EAAE,CAAA;KAAE;IAgD9C,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,cAAc;IAgBtB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAyE7B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,cAAc;IAkDtB,IAAI,EAAE,IAAI,EAAE,CAEX;IAEM,KAAK,IAAI,OAAO;IAIvB;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,OAAO;IAoBnD,IAAW,KAAK,IAAI,CAAC,CAEpB;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,eAAe,GAAG,SAAS,CAElD;IAED;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,gBAAgB,CAAC,UAAU,CAAC;IAI5E;;OAEG;IACH,UAAU,IAAI,YAAY,EAAE;IAI5B;;;OAGG;IACH,WAAW,IAAI,IAAI;IAKnB;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAInD;;OAEG;IACU,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D;;OAEG;IACH,oBAAoB,IAAI,YAAY,EAAE;IAItC;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC;IAI3B,OAAO,CAAC,UAAU;CAgBnB"}
@@ -2,8 +2,7 @@ import { Id } from "./id";
2
2
  import { ValidationError } from "./validation-error";
3
3
  import { DEFAULT_VALIDATION_CONFIG } from "./constants";
4
4
  import { DomainError } from "./exceptions";
5
- import { HistoryTracker } from "./history-tracker";
6
- // Helper to get static properties from constructor
5
+ import { ChangeTracker } from "./change-tracker";
7
6
  function getStaticProperty(instance, propertyName) {
8
7
  return instance.constructor[propertyName];
9
8
  }
@@ -11,7 +10,6 @@ export class BaseEntity {
11
10
  constructor(props) {
12
11
  this.snapshot = null;
13
12
  this.domainEvents = [];
14
- // Get static configuration from subclass
15
13
  const validation = getStaticProperty(this, "validation");
16
14
  const hooks = getStaticProperty(this, "hooks");
17
15
  this.entityHooks = hooks;
@@ -23,36 +21,26 @@ export class BaseEntity {
23
21
  ...validation?.config,
24
22
  };
25
23
  let finalProps = { ...props };
26
- // Generate ID if not provided
27
24
  if (!finalProps.id) {
28
25
  finalProps.id = new Id();
29
26
  }
30
- // Validate schema on creation
31
27
  if (this.entitySchema && this.validationConfig.onCreate) {
32
28
  this.validateProps(finalProps);
33
29
  }
34
30
  this._props = finalProps;
35
- // Initialize tracker and proxy
36
- this.tracker = new HistoryTracker(this._props, this.constructor.name);
37
- // Setup validation on update BEFORE creating proxy
31
+ this.tracker = new ChangeTracker(this._props, this.constructor.name);
38
32
  if (this.validationConfig.onUpdate) {
39
33
  this.setupUpdateValidation();
40
34
  }
41
35
  this.proxiedProps = this.tracker.createProxy();
42
- // Execute rules (custom validations)
43
36
  if (hooks?.rules) {
44
37
  hooks.rules(this);
45
38
  }
46
- // Hook onCreate
47
39
  if (hooks?.onCreate) {
48
40
  hooks.onCreate(this);
49
41
  }
50
- // Take initial snapshot for onBeforeUpdate
51
42
  this.takeSnapshot();
52
43
  }
53
- // ============================================================================
54
- // Validation
55
- // ============================================================================
56
44
  validateProps(props) {
57
45
  if (!this.entitySchema)
58
46
  return;
@@ -88,25 +76,21 @@ export class BaseEntity {
88
76
  }
89
77
  /**
90
78
  * Setup validation that runs on every property change.
91
- * Uses the HistoryTracker's onChangeValidator callback.
79
+ * Uses the ChangeTracker's onChangeValidator callback.
92
80
  */
93
81
  setupUpdateValidation() {
94
82
  const self = this;
95
83
  this.tracker.setOnChangeValidator((path, oldValue, newValue) => {
96
- // Temporarily apply the change to validate
97
84
  const originalValue = self._props[path];
98
85
  self._props[path] = newValue;
99
86
  try {
100
- // Check onBeforeUpdate hook
101
87
  if (self.entityHooks?.onBeforeUpdate && self.snapshot) {
102
88
  const shouldContinue = self.entityHooks.onBeforeUpdate(self, self.snapshot);
103
89
  if (!shouldContinue) {
104
- // Revert change
105
90
  self._props[path] = originalValue;
106
91
  return false;
107
92
  }
108
93
  }
109
- // Validate with schema
110
94
  if (self.entitySchema) {
111
95
  const result = self.entitySchema["~standard"].validate(self._props);
112
96
  if (result instanceof Promise) {
@@ -119,7 +103,6 @@ export class BaseEntity {
119
103
  path: issue.path?.map((p) => self.extractPathKey(p)) || [],
120
104
  message: issue.message,
121
105
  })));
122
- // Revert change before throwing
123
106
  self._props[path] = originalValue;
124
107
  if (self.validationConfig.throwOnError) {
125
108
  throw validationError;
@@ -128,13 +111,11 @@ export class BaseEntity {
128
111
  return false;
129
112
  }
130
113
  }
131
- // Execute rules after schema validation
132
114
  if (self.entityHooks?.rules) {
133
115
  try {
134
116
  self.entityHooks.rules(self);
135
117
  }
136
118
  catch (error) {
137
- // Revert change before throwing
138
119
  self._props[path] = originalValue;
139
120
  if (self.validationConfig.throwOnError) {
140
121
  throw error;
@@ -143,14 +124,10 @@ export class BaseEntity {
143
124
  return false;
144
125
  }
145
126
  }
146
- // Revert for now - the actual set will happen in the proxy
147
127
  self._props[path] = originalValue;
148
- // Update snapshot after successful validation
149
- // Note: snapshot is updated after the change is applied
150
128
  return true;
151
129
  }
152
130
  catch (error) {
153
- // Revert on any error
154
131
  self._props[path] = originalValue;
155
132
  throw error;
156
133
  }
@@ -187,19 +164,21 @@ export class BaseEntity {
187
164
  return obj.map((item) => this.deepCloneProps(item, seen));
188
165
  }
189
166
  if (obj.constructor === Object) {
190
- const cloned = {};
191
- for (const key in obj) {
192
- if (obj.hasOwnProperty(key)) {
193
- cloned[key] = this.deepCloneProps(obj[key], seen);
167
+ try {
168
+ return structuredClone(obj);
169
+ }
170
+ catch {
171
+ const cloned = {};
172
+ for (const key in obj) {
173
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
174
+ cloned[key] = this.deepCloneProps(obj[key], seen);
175
+ }
194
176
  }
177
+ return cloned;
195
178
  }
196
- return cloned;
197
179
  }
198
180
  return obj;
199
181
  }
200
- // ============================================================================
201
- // Identity
202
- // ============================================================================
203
182
  get id() {
204
183
  return this._props.id;
205
184
  }
@@ -224,9 +203,6 @@ export class BaseEntity {
224
203
  }
225
204
  return false;
226
205
  }
227
- // ============================================================================
228
- // Props Access
229
- // ============================================================================
230
206
  get props() {
231
207
  return this.proxiedProps;
232
208
  }
@@ -242,9 +218,6 @@ export class BaseEntity {
242
218
  get validationErrors() {
243
219
  return this._validationError;
244
220
  }
245
- // ============================================================================
246
- // Change Tracking
247
- // ============================================================================
248
221
  /**
249
222
  * Returns all detected changes as AggregateChanges.
250
223
  *
@@ -275,9 +248,6 @@ export class BaseEntity {
275
248
  this.tracker.markAsClean();
276
249
  this.takeSnapshot();
277
250
  }
278
- // ============================================================================
279
- // Domain Events
280
- // ============================================================================
281
251
  /**
282
252
  * Add a domain event to this entity
283
253
  */
@@ -309,9 +279,6 @@ export class BaseEntity {
309
279
  hasUncommittedEvents() {
310
280
  return this.domainEvents.length > 0;
311
281
  }
312
- // ============================================================================
313
- // Serialization
314
- // ============================================================================
315
282
  toJson() {
316
283
  return this.deepToJson(this._props);
317
284
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base-entity.js","sourceRoot":"","sources":["../src/base-entity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-entity.js","sourceRoot":"","sources":["../src/base-entity.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ export type OnChangeValidator = (path: string, oldValue: any, newValue: any) =>
17
17
  * - Generates AggregateChanges for persistence
18
18
  * - Supports validation on change via onChangeValidator
19
19
  */
20
- export declare class HistoryTracker {
20
+ export declare class ChangeTracker {
21
21
  private target;
22
22
  private rootEntityName;
23
23
  private path;
@@ -30,7 +30,7 @@ export declare class HistoryTracker {
30
30
  private trackedArrays;
31
31
  private trackedEntities;
32
32
  private onChangeValidator?;
33
- constructor(target: any, rootEntityName: string, path?: string, depth?: number, parentId?: string | undefined, parentEntity?: string | undefined, rootTracker?: HistoryTracker | undefined);
33
+ constructor(target: any, rootEntityName: string, path?: string, depth?: number, parentId?: string | undefined, parentEntity?: string | undefined, rootTracker?: ChangeTracker | undefined);
34
34
  /**
35
35
  * Sets a validator callback that will be called on every property change.
36
36
  * The validator can:
@@ -94,4 +94,4 @@ export declare class HistoryTracker {
94
94
  markAsClean(): void;
95
95
  getTarget(): any;
96
96
  }
97
- //# sourceMappingURL=history-tracker.d.ts.map
97
+ //# sourceMappingURL=change-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-tracker.d.ts","sourceRoot":"","sources":["../src/change-tracker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,YAAY,EAAe,MAAM,SAAS,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,GAAG,KACV,OAAO,GAAG,IAAI,CAAC;AAEpB;;;;;;;;;;;GAWG;AACH,qBAAa,aAAa;IAQtB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,QAAQ,CAAC;IACjB,OAAO,CAAC,YAAY,CAAC;IACrB,OAAO,CAAC,WAAW,CAAC;IAbtB,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,aAAa,CAAsC;IAC3D,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,iBAAiB,CAAC,CAAoB;gBAGpC,MAAM,EAAE,GAAG,EACX,cAAc,EAAE,MAAM,EACtB,IAAI,GAAE,MAAW,EACjB,KAAK,GAAE,MAAU,EACjB,QAAQ,CAAC,EAAE,MAAM,YAAA,EACjB,YAAY,CAAC,EAAE,MAAM,YAAA,EACrB,WAAW,CAAC,EAAE,aAAa,YAAA;IAQrC;;;;;;OAMG;IACH,oBAAoB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAIxD,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,kBAAkB;IAgD1B,OAAO,CAAC,iBAAiB;IAoCzB,WAAW,IAAI,GAAG;IAuFlB,OAAO,CAAC,gBAAgB;IAmHxB;;OAEG;IACH,UAAU,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,gBAAgB,CAAC,UAAU,CAAC;IAW5E,OAAO,CAAC,kBAAkB;IAgC1B,OAAO,CAAC,wBAAwB;IAqEhC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA0ChC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAkChC;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IAgDnC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAmBlC,OAAO,CAAC,mBAAmB;IA+B3B,OAAO,CAAC,oBAAoB;IAsE5B,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,kBAAkB;IA2C1B,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,OAAO;IAaf,OAAO,CAAC,SAAS;IA4CjB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;IAkCjB,OAAO,CAAC,qBAAqB;IAkB7B,UAAU,IAAI,YAAY,EAAE;IAI5B,YAAY,IAAI,IAAI;IASpB,WAAW,IAAI,IAAI;IAInB,SAAS,IAAI,GAAG;CAGjB"}
@@ -14,7 +14,7 @@ import { AggregateChanges } from "./aggregate-changes";
14
14
  * - Generates AggregateChanges for persistence
15
15
  * - Supports validation on change via onChangeValidator
16
16
  */
17
- export class HistoryTracker {
17
+ export class ChangeTracker {
18
18
  constructor(target, rootEntityName, path = "", depth = 0, parentId, parentEntity, rootTracker) {
19
19
  this.target = target;
20
20
  this.rootEntityName = rootEntityName;
@@ -42,9 +42,6 @@ export class HistoryTracker {
42
42
  setOnChangeValidator(validator) {
43
43
  this.getRootTracker().onChangeValidator = validator;
44
44
  }
45
- // ============================================================================
46
- // Initial State Capture
47
- // ============================================================================
48
45
  captureInitialState() {
49
46
  if (this.depth > 0)
50
47
  return;
@@ -100,9 +97,6 @@ export class HistoryTracker {
100
97
  }
101
98
  });
102
99
  }
103
- // ============================================================================
104
- // Proxy Creation
105
- // ============================================================================
106
100
  createProxy() {
107
101
  const handler = {
108
102
  get: (target, prop, receiver) => {
@@ -118,7 +112,7 @@ export class HistoryTracker {
118
112
  return this.createArrayProxy(value, currentPath);
119
113
  }
120
114
  if (this.isEntityOrVO(value)) {
121
- const nestedTracker = new HistoryTracker(value, this.getEntityName(value), currentPath, this.depth + 1, this.getEntityId(this.target), this.rootEntityName, this.rootTracker);
115
+ const nestedTracker = new ChangeTracker(value, this.getEntityName(value), currentPath, this.depth + 1, this.getEntityId(this.target), this.rootEntityName, this.rootTracker);
122
116
  return nestedTracker.createProxy();
123
117
  }
124
118
  return value;
@@ -129,26 +123,21 @@ export class HistoryTracker {
129
123
  if (!Array.isArray(newValue) && oldValue === newValue) {
130
124
  return true;
131
125
  }
132
- // Call validator before making the change
133
126
  const rootTracker = this.getRootTracker();
134
127
  if (rootTracker.onChangeValidator) {
135
128
  try {
136
129
  const result = rootTracker.onChangeValidator(currentPath, oldValue, newValue);
137
130
  if (result === false) {
138
- // Validator rejected the change
139
- return true; // Return true to not throw, but don't apply change
131
+ return true;
140
132
  }
141
133
  }
142
134
  catch (error) {
143
- // Validator threw an error - propagate it
144
135
  throw error;
145
136
  }
146
137
  }
147
- // Store original value
148
138
  if (!rootTracker.originalValues.has(currentPath)) {
149
139
  rootTracker.originalValues.set(currentPath, oldValue);
150
140
  }
151
- // Record in history
152
141
  rootTracker.history.push({
153
142
  path: currentPath,
154
143
  previousValue: oldValue,
@@ -156,7 +145,6 @@ export class HistoryTracker {
156
145
  timestamp: Date.now(),
157
146
  });
158
147
  const result = Reflect.set(target, prop, newValue, receiver);
159
- // Handle special cases
160
148
  if (Array.isArray(newValue)) {
161
149
  this.handleArrayAssignment(currentPath, oldValue);
162
150
  }
@@ -193,11 +181,12 @@ export class HistoryTracker {
193
181
  if (mutatingMethods.includes(String(prop))) {
194
182
  return function (...args) {
195
183
  const oldArray = target.slice();
196
- // Call validator before array mutation
197
184
  if (rootTracker.onChangeValidator) {
198
185
  try {
199
- const result = rootTracker.onChangeValidator(path, oldArray, [...oldArray, ...args] // Preview of change
200
- );
186
+ const result = rootTracker.onChangeValidator(path, oldArray, [
187
+ ...oldArray,
188
+ ...args,
189
+ ]);
201
190
  if (result === false) {
202
191
  return undefined;
203
192
  }
@@ -220,7 +209,7 @@ export class HistoryTracker {
220
209
  }
221
210
  if (!isNaN(Number(prop)) && tracker.isEntityOrVO(value)) {
222
211
  const nestedPath = `${path}[${String(prop)}]`;
223
- const nestedTracker = new HistoryTracker(value, tracker.getEntityName(value), nestedPath, tracker.depth + 1, tracker.getEntityId(tracker.target), tracker.rootEntityName, rootTracker);
212
+ const nestedTracker = new ChangeTracker(value, tracker.getEntityName(value), nestedPath, tracker.depth + 1, tracker.getEntityId(tracker.target), tracker.rootEntityName, rootTracker);
224
213
  return nestedTracker.createProxy();
225
214
  }
226
215
  return value;
@@ -228,7 +217,6 @@ export class HistoryTracker {
228
217
  set(target, prop, newValue, receiver) {
229
218
  if (!isNaN(Number(prop))) {
230
219
  const oldArray = target.slice();
231
- // Call validator before array item change
232
220
  if (rootTracker.onChangeValidator) {
233
221
  try {
234
222
  const result = rootTracker.onChangeValidator(path, oldArray, newValue);
@@ -253,9 +241,6 @@ export class HistoryTracker {
253
241
  },
254
242
  });
255
243
  }
256
- // ============================================================================
257
- // getChanges() - Main Method
258
- // ============================================================================
259
244
  /**
260
245
  * Returns all detected changes as AggregateChanges.
261
246
  */
@@ -306,7 +291,6 @@ export class HistoryTracker {
306
291
  for (const item of created) {
307
292
  const itemEntityName = this.getEntityName(item);
308
293
  changes.addCreate(itemEntityName, item, depth, parentId, parentEntity);
309
- // Recursively mark nested items as created
310
294
  this.markNestedItemsAsCreated(item, depth, changes);
311
295
  }
312
296
  for (const item of updated) {
@@ -327,7 +311,6 @@ export class HistoryTracker {
327
311
  const itemEntityName = this.getEntityName(item);
328
312
  const deleteId = id || key;
329
313
  changes.addDelete(itemEntityName, deleteId, item, depth);
330
- // Recursively mark nested items as deleted using ORIGINAL state
331
314
  this.markNestedItemsAsDeleted(item, depth, changes, rootTracker);
332
315
  }
333
316
  }
@@ -347,7 +330,6 @@ export class HistoryTracker {
347
330
  if (propName === "id")
348
331
  continue;
349
332
  if (Array.isArray(value)) {
350
- // Process all items in the array
351
333
  for (const nestedItem of value) {
352
334
  if (this.isEntityOrVO(nestedItem)) {
353
335
  const nestedId = this.getEntityId(nestedItem);
@@ -355,7 +337,6 @@ export class HistoryTracker {
355
337
  if (nestedId || nestedKey) {
356
338
  const entityName = this.getEntityName(nestedItem);
357
339
  changes.addCreate(entityName, nestedItem, parentDepth + 1, itemId, this.getEntityName(item));
358
- // Recursively process nested items
359
340
  this.markNestedItemsAsCreated(nestedItem, parentDepth + 1, changes);
360
341
  }
361
342
  }
@@ -370,25 +351,18 @@ export class HistoryTracker {
370
351
  markNestedItemsAsDeleted(item, parentDepth, changes, rootTracker) {
371
352
  if (!item || typeof item !== "object")
372
353
  return;
373
- // Get the ID to look up the original state
374
354
  const itemId = this.getEntityId(item);
375
355
  if (!itemId)
376
356
  return;
377
- // Look through all tracked arrays to find nested items
378
357
  for (const [, arrayState] of rootTracker.trackedArrays) {
379
- // Check if this array belongs to our deleted item
380
358
  if (arrayState.metadata.parentId === itemId) {
381
- // Use the CLONED (original) state to get the items
382
- // Note: cloned items are JSON objects, not Entity/VO instances
383
359
  for (const nestedItem of arrayState.cloned) {
384
- // Cloned items are JSON objects with an 'id' property
385
360
  const id = typeof nestedItem === "object" && nestedItem !== null
386
361
  ? nestedItem.id
387
362
  : undefined;
388
363
  if (id) {
389
364
  const entityName = arrayState.metadata.entityName;
390
365
  changes.addDelete(entityName, id, nestedItem, parentDepth + 1);
391
- // Recursively process this item's nested arrays
392
366
  this.markNestedJsonItemAsDeleted(id, parentDepth + 1, changes, rootTracker);
393
367
  }
394
368
  }
@@ -400,10 +374,8 @@ export class HistoryTracker {
400
374
  * This is used when processing cloned (JSON) state.
401
375
  */
402
376
  markNestedJsonItemAsDeleted(itemId, parentDepth, changes, rootTracker) {
403
- // Look through all tracked arrays to find nested items of this parent
404
377
  for (const [, arrayState] of rootTracker.trackedArrays) {
405
378
  if (arrayState.metadata.parentId === itemId) {
406
- // Process all items in this nested array
407
379
  for (const nestedJsonItem of arrayState.cloned) {
408
380
  if (typeof nestedJsonItem !== "object" || nestedJsonItem === null)
409
381
  continue;
@@ -411,11 +383,9 @@ export class HistoryTracker {
411
383
  const entityName = arrayState.metadata.entityName;
412
384
  if (nestedId) {
413
385
  changes.addDelete(entityName, nestedId, nestedJsonItem, parentDepth + 1);
414
- // Recursively process further nesting
415
386
  this.markNestedJsonItemAsDeleted(nestedId, parentDepth + 1, changes, rootTracker);
416
387
  }
417
388
  else {
418
- // Value object - try to extract identity key
419
389
  const key = this.extractIdentityKeyFromJson(nestedJsonItem, arrayState.original);
420
390
  if (key) {
421
391
  changes.addDelete(entityName, key, nestedJsonItem, parentDepth + 1);
@@ -429,20 +399,16 @@ export class HistoryTracker {
429
399
  * Extracts identity key from a JSON object by looking at the original ValueObject instances.
430
400
  */
431
401
  extractIdentityKeyFromJson(jsonItem, originalArray) {
432
- // Try to find the original ValueObject to get its identity key
433
402
  for (const originalItem of originalArray) {
434
403
  if (this.isEntityOrVO(originalItem)) {
435
404
  const originalJson = this.deepClone(originalItem);
436
- // Check if this matches our JSON item (rough comparison)
437
405
  if (JSON.stringify(originalJson) === JSON.stringify(jsonItem)) {
438
- // Found the matching original item - extract its identity key
439
406
  const key = this.getItemKey(originalItem);
440
407
  if (key)
441
408
  return key;
442
409
  }
443
410
  }
444
411
  }
445
- // Fallback: if it has an id, use that
446
412
  if (jsonItem.id)
447
413
  return jsonItem.id;
448
414
  return undefined;
@@ -484,14 +450,12 @@ export class HistoryTracker {
484
450
  case "deleted":
485
451
  const id = this.getEntityId(originalValue);
486
452
  if (id) {
487
- // Use originalEntity instead of originalValue to preserve entity instance
488
453
  changes.addDelete(entityName, id, originalEntity, depth);
489
454
  }
490
455
  break;
491
456
  case "replaced":
492
457
  const oldId = this.getEntityId(originalValue);
493
458
  if (oldId) {
494
- // Use originalEntity instead of originalValue to preserve entity instance
495
459
  changes.addDelete(entityName, oldId, originalEntity, depth);
496
460
  }
497
461
  changes.addCreate(entityName, currentValue, depth, parentId, parentEntity);
@@ -508,9 +472,6 @@ export class HistoryTracker {
508
472
  }
509
473
  }
510
474
  }
511
- // ============================================================================
512
- // Change Detection Helpers
513
- // ============================================================================
514
475
  detectEntityChangeState(previous, current) {
515
476
  if (previous === null && current !== null) {
516
477
  return "created";
@@ -586,9 +547,6 @@ export class HistoryTracker {
586
547
  }
587
548
  return changes;
588
549
  }
589
- // ============================================================================
590
- // Internal Handlers
591
- // ============================================================================
592
550
  handleArrayAssignment(path, oldValue) {
593
551
  const rootTracker = this.getRootTracker();
594
552
  if (!rootTracker.trackedArrays.has(path)) {
@@ -603,7 +561,6 @@ export class HistoryTracker {
603
561
  : this.getEntityName(oldValue);
604
562
  const existingTracked = rootTracker.trackedEntities.get(path);
605
563
  rootTracker.trackedEntities.set(path, {
606
- // Preserve original entity, or use oldValue if this is the first change
607
564
  entity: existingTracked?.entity || oldValue,
608
565
  metadata: {
609
566
  entityName,
@@ -612,13 +569,9 @@ export class HistoryTracker {
612
569
  parentEntity: this.rootEntityName,
613
570
  path,
614
571
  },
615
- // Preserve original state
616
572
  originalState: existingTracked?.originalState,
617
573
  });
618
574
  }
619
- // ============================================================================
620
- // Utility Methods
621
- // ============================================================================
622
575
  getRootTracker() {
623
576
  return this.rootTracker || this;
624
577
  }
@@ -644,7 +597,8 @@ export class HistoryTracker {
644
597
  for (const part of parts) {
645
598
  if (current === null || current === undefined)
646
599
  return undefined;
647
- current = current[part];
600
+ const propsToAccess = current.props || current;
601
+ current = propsToAccess[part];
648
602
  }
649
603
  return current;
650
604
  }
@@ -802,4 +756,4 @@ export class HistoryTracker {
802
756
  return this.target;
803
757
  }
804
758
  }
805
- //# sourceMappingURL=history-tracker.js.map
759
+ //# sourceMappingURL=change-tracker.js.map