@woltz/rich-domain 1.1.0 → 1.2.1
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/CHANGELOG.md +87 -21
- package/dist/aggregate-changes.d.ts +164 -0
- package/dist/aggregate-changes.d.ts.map +1 -0
- package/dist/aggregate-changes.js +281 -0
- package/dist/aggregate-changes.js.map +1 -0
- package/dist/base-entity.d.ts +32 -8
- package/dist/base-entity.d.ts.map +1 -1
- package/dist/base-entity.js +117 -86
- package/dist/base-entity.js.map +1 -1
- package/dist/criteria.d.ts +31 -15
- package/dist/criteria.d.ts.map +1 -1
- package/dist/criteria.js +151 -61
- package/dist/criteria.js.map +1 -1
- package/dist/crypto.d.ts +3 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +29 -0
- package/dist/crypto.js.map +1 -0
- package/dist/entity-changes.d.ts +84 -0
- package/dist/entity-changes.d.ts.map +1 -0
- package/dist/entity-changes.js +135 -0
- package/dist/entity-changes.js.map +1 -0
- package/dist/entity-schema-registry.d.ts +148 -0
- package/dist/entity-schema-registry.d.ts.map +1 -0
- package/dist/entity-schema-registry.js +219 -0
- package/dist/entity-schema-registry.js.map +1 -0
- package/dist/history-tracker.d.ts +97 -0
- package/dist/history-tracker.d.ts.map +1 -0
- package/dist/history-tracker.js +805 -0
- package/dist/history-tracker.js.map +1 -0
- package/dist/id.d.ts +11 -10
- package/dist/id.d.ts.map +1 -1
- package/dist/id.js +4 -28
- package/dist/id.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mapper.d.ts +1 -1
- package/dist/mapper.d.ts.map +1 -1
- package/dist/mapper.js.map +1 -1
- package/dist/paginated-result.d.ts.map +1 -1
- package/dist/paginated-result.js +7 -6
- package/dist/paginated-result.js.map +1 -1
- package/dist/repository/base-repository.d.ts +6 -32
- package/dist/repository/base-repository.d.ts.map +1 -1
- package/dist/repository/base-repository.js +0 -27
- package/dist/repository/base-repository.js.map +1 -1
- package/dist/repository/unit-of-work.d.ts +0 -25
- package/dist/repository/unit-of-work.d.ts.map +1 -1
- package/dist/repository/unit-of-work.js +0 -25
- package/dist/repository/unit-of-work.js.map +1 -1
- package/dist/types/change-tracker.d.ts +186 -0
- package/dist/types/change-tracker.d.ts.map +1 -0
- package/dist/types/change-tracker.js +2 -0
- package/dist/types/change-tracker.js.map +1 -0
- package/dist/types/criteria.d.ts +31 -7
- package/dist/types/criteria.d.ts.map +1 -1
- package/dist/types/history-tracker.d.ts +11 -0
- package/dist/types/history-tracker.d.ts.map +1 -1
- package/dist/types/utils.d.ts +0 -1
- package/dist/types/utils.d.ts.map +1 -1
- package/dist/utils/criteria-operator-validation.d.ts +5 -0
- package/dist/utils/criteria-operator-validation.d.ts.map +1 -0
- package/dist/utils/criteria-operator-validation.js +143 -0
- package/dist/utils/criteria-operator-validation.js.map +1 -0
- package/dist/utils/helpers.d.ts +2 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +10 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/validation-error.d.ts.map +1 -1
- package/dist/validation-error.js +0 -3
- package/dist/validation-error.js.map +1 -1
- package/dist/value-object.d.ts +57 -8
- package/dist/value-object.d.ts.map +1 -1
- package/dist/value-object.js +49 -21
- package/dist/value-object.js.map +1 -1
- package/eslint.config.js +6 -0
- package/package.json +2 -1
- package/src/aggregate-changes.ts +335 -0
- package/src/base-entity.ts +140 -100
- package/src/criteria.ts +264 -82
- package/src/crypto.ts +31 -0
- package/src/entity-changes.ts +151 -0
- package/src/entity-schema-registry.ts +275 -0
- package/src/history-tracker.ts +1114 -0
- package/src/id.ts +17 -26
- package/src/index.ts +8 -2
- package/src/mapper.ts +4 -1
- package/src/paginated-result.ts +7 -8
- package/src/repository/base-repository.ts +6 -37
- package/src/repository/unit-of-work.ts +0 -25
- package/src/types/change-tracker.ts +221 -0
- package/src/types/criteria.ts +95 -17
- package/src/types/history-tracker.ts +13 -0
- package/src/types/utils.ts +0 -9
- package/src/utils/criteria-operator-validation.ts +171 -0
- package/src/utils/helpers.ts +6 -0
- package/src/validation-error.ts +0 -4
- package/src/value-object.ts +84 -23
- package/tests/aggregate-changes.test.ts +284 -0
- package/tests/criteria.test.ts +366 -90
- package/tests/entity-equality.test.ts +38 -61
- package/tests/entity-schema-registry.test.ts +382 -0
- package/tests/entity-validation.test.ts +7 -94
- package/tests/history-tracker.spec.ts +349 -617
- package/tests/id.test.ts +41 -44
- package/tests/load-test/data.json +346041 -0
- package/tests/load-test/entities.ts +97 -0
- package/tests/load-test/generate-data.ts +81 -0
- package/tests/load-test/lead-to-domain.mapper.ts +24 -0
- package/tests/load-test/load.test.ts +38 -0
- package/tests/repository.test.ts +30 -54
- package/tests/to-json.test.ts +14 -18
- package/tests/utils.ts +138 -102
- package/tests/value-objects.test.ts +57 -29
- package/dist/deep-proxy.d.ts +0 -36
- package/dist/deep-proxy.d.ts.map +0 -1
- package/dist/deep-proxy.js +0 -384
- package/dist/deep-proxy.js.map +0 -1
- package/src/deep-proxy.ts +0 -447
- package/tests/entity.test.ts +0 -33
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-entity.d.ts","sourceRoot":"","sources":["../src/base-entity.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/base-entity.js
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
// ============================================================================
|
|
2
|
-
// Base Entity Class with Standard Schema Validation
|
|
3
|
-
// ============================================================================
|
|
4
1
|
import { Id } from "./id";
|
|
5
|
-
import { DeepProxy } from "./deep-proxy";
|
|
6
2
|
import { ValidationError } from "./validation-error";
|
|
7
3
|
import { DEFAULT_VALIDATION_CONFIG } from "./constants";
|
|
8
4
|
import { DomainError } from "./exceptions";
|
|
5
|
+
import { HistoryTracker } from "./history-tracker";
|
|
9
6
|
// Helper to get static properties from constructor
|
|
10
7
|
function getStaticProperty(instance, propertyName) {
|
|
11
8
|
return instance.constructor[propertyName];
|
|
@@ -35,8 +32,13 @@ export class BaseEntity {
|
|
|
35
32
|
this.validateProps(finalProps);
|
|
36
33
|
}
|
|
37
34
|
this._props = finalProps;
|
|
38
|
-
|
|
39
|
-
this.
|
|
35
|
+
// Initialize tracker and proxy
|
|
36
|
+
this.tracker = new HistoryTracker(this._props, this.constructor.name);
|
|
37
|
+
// Setup validation on update BEFORE creating proxy
|
|
38
|
+
if (this.validationConfig.onUpdate) {
|
|
39
|
+
this.setupUpdateValidation();
|
|
40
|
+
}
|
|
41
|
+
this.proxiedProps = this.tracker.createProxy();
|
|
40
42
|
// Execute rules (custom validations)
|
|
41
43
|
if (hooks?.rules) {
|
|
42
44
|
hooks.rules(this);
|
|
@@ -45,13 +47,12 @@ export class BaseEntity {
|
|
|
45
47
|
if (hooks?.onCreate) {
|
|
46
48
|
hooks.onCreate(this);
|
|
47
49
|
}
|
|
48
|
-
// Setup update validation
|
|
49
|
-
if (this.entitySchema && this.validationConfig.onUpdate) {
|
|
50
|
-
this.setupUpdateValidation();
|
|
51
|
-
}
|
|
52
50
|
// Take initial snapshot for onBeforeUpdate
|
|
53
51
|
this.takeSnapshot();
|
|
54
52
|
}
|
|
53
|
+
// ============================================================================
|
|
54
|
+
// Validation
|
|
55
|
+
// ============================================================================
|
|
55
56
|
validateProps(props) {
|
|
56
57
|
if (!this.entitySchema)
|
|
57
58
|
return;
|
|
@@ -67,7 +68,6 @@ export class BaseEntity {
|
|
|
67
68
|
if (this.validationConfig.throwOnError) {
|
|
68
69
|
throw validationError;
|
|
69
70
|
}
|
|
70
|
-
// If not throwing, store error for later retrieval
|
|
71
71
|
this._validationError = validationError;
|
|
72
72
|
}
|
|
73
73
|
}
|
|
@@ -75,75 +75,86 @@ export class BaseEntity {
|
|
|
75
75
|
if (pathSegment === null || pathSegment === undefined) {
|
|
76
76
|
return "";
|
|
77
77
|
}
|
|
78
|
-
// Handle PropertyKey (string | number | symbol)
|
|
79
78
|
if (typeof pathSegment === "string" || typeof pathSegment === "number") {
|
|
80
79
|
return String(pathSegment);
|
|
81
80
|
}
|
|
82
81
|
if (typeof pathSegment === "symbol") {
|
|
83
82
|
return pathSegment.toString();
|
|
84
83
|
}
|
|
85
|
-
// Handle object with 'key' property (Zod's PathSegment)
|
|
86
84
|
if (typeof pathSegment === "object" && "key" in pathSegment) {
|
|
87
85
|
return String(pathSegment.key);
|
|
88
86
|
}
|
|
89
|
-
// Fallback
|
|
90
87
|
return String(pathSegment);
|
|
91
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Setup validation that runs on every property change.
|
|
91
|
+
* Uses the HistoryTracker's onChangeValidator callback.
|
|
92
|
+
*/
|
|
92
93
|
setupUpdateValidation() {
|
|
93
94
|
const self = this;
|
|
94
|
-
|
|
95
|
-
//
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
if (result instanceof Promise) {
|
|
108
|
-
console.warn("Async validation on update not supported. Consider using sync validation.");
|
|
109
|
-
return;
|
|
95
|
+
this.tracker.setOnChangeValidator((path, oldValue, newValue) => {
|
|
96
|
+
// Temporarily apply the change to validate
|
|
97
|
+
const originalValue = self._props[path];
|
|
98
|
+
self._props[path] = newValue;
|
|
99
|
+
try {
|
|
100
|
+
// Check onBeforeUpdate hook
|
|
101
|
+
if (self.entityHooks?.onBeforeUpdate && self.snapshot) {
|
|
102
|
+
const shouldContinue = self.entityHooks.onBeforeUpdate(self, self.snapshot);
|
|
103
|
+
if (!shouldContinue) {
|
|
104
|
+
// Revert change
|
|
105
|
+
self._props[path] = originalValue;
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
110
108
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
109
|
+
// Validate with schema
|
|
110
|
+
if (self.entitySchema) {
|
|
111
|
+
const result = self.entitySchema["~standard"].validate(self._props);
|
|
112
|
+
if (result instanceof Promise) {
|
|
113
|
+
console.warn("Async validation on update not supported. Consider using sync validation.");
|
|
114
|
+
self._props[path] = originalValue;
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
if (result.issues && result.issues.length > 0) {
|
|
118
|
+
const validationError = new ValidationError(result.issues.map((issue) => ({
|
|
119
|
+
path: issue.path?.map((p) => self.extractPathKey(p)) || [],
|
|
120
|
+
message: issue.message,
|
|
121
|
+
})));
|
|
122
|
+
// Revert change before throwing
|
|
123
|
+
self._props[path] = originalValue;
|
|
124
|
+
if (self.validationConfig.throwOnError) {
|
|
125
|
+
throw validationError;
|
|
120
126
|
}
|
|
121
|
-
|
|
127
|
+
console.error("Validation failed on update:", validationError);
|
|
128
|
+
return false;
|
|
122
129
|
}
|
|
123
|
-
console.error("Validation failed on update:", validationError);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
// Execute rules after schema validation
|
|
127
|
-
if (self.entityHooks?.rules) {
|
|
128
|
-
try {
|
|
129
|
-
self.entityHooks.rules(self);
|
|
130
130
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
131
|
+
// Execute rules after schema validation
|
|
132
|
+
if (self.entityHooks?.rules) {
|
|
133
|
+
try {
|
|
134
|
+
self.entityHooks.rules(self);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
// Revert change before throwing
|
|
138
|
+
self._props[path] = originalValue;
|
|
139
|
+
if (self.validationConfig.throwOnError) {
|
|
140
|
+
throw error;
|
|
136
141
|
}
|
|
137
|
-
|
|
142
|
+
console.error("Rules validation failed on update:", error);
|
|
143
|
+
return false;
|
|
138
144
|
}
|
|
139
|
-
console.error("Rules validation failed on update:", error);
|
|
140
145
|
}
|
|
146
|
+
// Revert for now - the actual set will happen in the proxy
|
|
147
|
+
self._props[path] = originalValue;
|
|
148
|
+
// Update snapshot after successful validation
|
|
149
|
+
// Note: snapshot is updated after the change is applied
|
|
150
|
+
return true;
|
|
141
151
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
152
|
+
catch (error) {
|
|
153
|
+
// Revert on any error
|
|
154
|
+
self._props[path] = originalValue;
|
|
155
|
+
throw error;
|
|
156
|
+
}
|
|
157
|
+
});
|
|
147
158
|
}
|
|
148
159
|
takeSnapshot() {
|
|
149
160
|
this.snapshot = this.deepCloneProps(this._props);
|
|
@@ -151,37 +162,30 @@ export class BaseEntity {
|
|
|
151
162
|
deepCloneProps(obj, seen = new WeakSet()) {
|
|
152
163
|
if (obj === null || obj === undefined)
|
|
153
164
|
return obj;
|
|
154
|
-
// Primitives
|
|
155
165
|
if (typeof obj !== "object")
|
|
156
166
|
return obj;
|
|
157
|
-
// Special cases - don't clone these, just return the reference
|
|
158
167
|
if (obj instanceof Id)
|
|
159
168
|
return obj;
|
|
160
169
|
if (obj instanceof Date)
|
|
161
170
|
return new Date(obj.getTime());
|
|
162
|
-
// Check for circular references
|
|
163
171
|
if (seen.has(obj)) {
|
|
164
|
-
return obj;
|
|
172
|
+
return obj;
|
|
165
173
|
}
|
|
166
|
-
// Handle BaseEntity instances - just keep the reference
|
|
167
174
|
if (obj instanceof BaseEntity) {
|
|
168
175
|
return obj;
|
|
169
176
|
}
|
|
170
|
-
// Handle ValueObject instances - just keep the reference (they're immutable)
|
|
171
177
|
if (obj.constructor &&
|
|
172
178
|
obj.constructor.name !== "Object" &&
|
|
173
179
|
obj.constructor.name !== "Array") {
|
|
174
|
-
// Check if it has toJson method (likely a ValueObject or similar)
|
|
175
180
|
if (typeof obj.toJson === "function" &&
|
|
176
181
|
typeof obj.equals === "function") {
|
|
177
|
-
return obj;
|
|
182
|
+
return obj;
|
|
178
183
|
}
|
|
179
184
|
}
|
|
180
185
|
seen.add(obj);
|
|
181
186
|
if (Array.isArray(obj)) {
|
|
182
187
|
return obj.map((item) => this.deepCloneProps(item, seen));
|
|
183
188
|
}
|
|
184
|
-
// Plain objects only
|
|
185
189
|
if (obj.constructor === Object) {
|
|
186
190
|
const cloned = {};
|
|
187
191
|
for (const key in obj) {
|
|
@@ -191,9 +195,11 @@ export class BaseEntity {
|
|
|
191
195
|
}
|
|
192
196
|
return cloned;
|
|
193
197
|
}
|
|
194
|
-
// For other object types (custom classes), just keep the reference
|
|
195
198
|
return obj;
|
|
196
199
|
}
|
|
200
|
+
// ============================================================================
|
|
201
|
+
// Identity
|
|
202
|
+
// ============================================================================
|
|
197
203
|
get id() {
|
|
198
204
|
return this._props.id;
|
|
199
205
|
}
|
|
@@ -202,29 +208,25 @@ export class BaseEntity {
|
|
|
202
208
|
}
|
|
203
209
|
/**
|
|
204
210
|
* Check equality with another entity by comparing IDs
|
|
205
|
-
* Entities are equal if they have the same ID, regardless of other properties
|
|
206
|
-
*
|
|
207
|
-
* @param other - Another entity or an ID to compare with
|
|
208
|
-
* @returns true if entities have the same ID
|
|
209
211
|
*/
|
|
210
212
|
equals(other) {
|
|
211
213
|
if (!other) {
|
|
212
214
|
return false;
|
|
213
215
|
}
|
|
214
|
-
// Compare with another entity
|
|
215
216
|
if (other instanceof BaseEntity) {
|
|
216
217
|
return this.id.equals(other.id);
|
|
217
218
|
}
|
|
218
|
-
// Compare with an ID
|
|
219
219
|
if (other instanceof Id) {
|
|
220
220
|
return this.id.equals(other);
|
|
221
221
|
}
|
|
222
|
-
// Compare with a string ID
|
|
223
222
|
if (typeof other === "string") {
|
|
224
223
|
return this.id.equals(other);
|
|
225
224
|
}
|
|
226
225
|
return false;
|
|
227
226
|
}
|
|
227
|
+
// ============================================================================
|
|
228
|
+
// Props Access
|
|
229
|
+
// ============================================================================
|
|
228
230
|
get props() {
|
|
229
231
|
return this.proxiedProps;
|
|
230
232
|
}
|
|
@@ -240,28 +242,54 @@ export class BaseEntity {
|
|
|
240
242
|
get validationErrors() {
|
|
241
243
|
return this._validationError;
|
|
242
244
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
245
|
+
// ============================================================================
|
|
246
|
+
// Change Tracking
|
|
247
|
+
// ============================================================================
|
|
248
|
+
/**
|
|
249
|
+
* Returns all detected changes as AggregateChanges.
|
|
250
|
+
*
|
|
251
|
+
* @example
|
|
252
|
+
* ```typescript
|
|
253
|
+
* const changes = user.getChanges();
|
|
254
|
+
* const batch = changes.toBatchOperations();
|
|
255
|
+
*
|
|
256
|
+
* for (const del of batch.deletes) { ... }
|
|
257
|
+
* for (const create of batch.creates) { ... }
|
|
258
|
+
* for (const upd of batch.updates) { ... }
|
|
259
|
+
* ```
|
|
260
|
+
*/
|
|
261
|
+
getChanges() {
|
|
262
|
+
return this.tracker.getChanges();
|
|
250
263
|
}
|
|
264
|
+
/**
|
|
265
|
+
* Returns the change history (for debugging).
|
|
266
|
+
*/
|
|
251
267
|
getHistory() {
|
|
252
|
-
return this.
|
|
268
|
+
return this.tracker.getHistory();
|
|
253
269
|
}
|
|
254
|
-
|
|
255
|
-
|
|
270
|
+
/**
|
|
271
|
+
* Clears history and marks entity as "clean".
|
|
272
|
+
* Call this after successfully persisting to the database.
|
|
273
|
+
*/
|
|
274
|
+
markAsClean() {
|
|
275
|
+
this.tracker.markAsClean();
|
|
276
|
+
this.takeSnapshot();
|
|
256
277
|
}
|
|
278
|
+
// ============================================================================
|
|
279
|
+
// Domain Events
|
|
280
|
+
// ============================================================================
|
|
257
281
|
/**
|
|
258
282
|
* Add a domain event to this entity
|
|
259
283
|
*/
|
|
260
284
|
addDomainEvent(event) {
|
|
261
285
|
this.domainEvents.push(event);
|
|
262
286
|
}
|
|
287
|
+
/**
|
|
288
|
+
* Dispatch all events through the event bus
|
|
289
|
+
*/
|
|
263
290
|
async dispatchAll(bus) {
|
|
264
291
|
await bus.publishAll(this.getUncommittedEvents());
|
|
292
|
+
this.clearEvents();
|
|
265
293
|
}
|
|
266
294
|
/**
|
|
267
295
|
* Get all uncommitted domain events
|
|
@@ -281,6 +309,9 @@ export class BaseEntity {
|
|
|
281
309
|
hasUncommittedEvents() {
|
|
282
310
|
return this.domainEvents.length > 0;
|
|
283
311
|
}
|
|
312
|
+
// ============================================================================
|
|
313
|
+
// Serialization
|
|
314
|
+
// ============================================================================
|
|
284
315
|
toJson() {
|
|
285
316
|
return this.deepToJson(this._props);
|
|
286
317
|
}
|
package/dist/base-entity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-entity.js","sourceRoot":"","sources":["../src/base-entity.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"base-entity.js","sourceRoot":"","sources":["../src/base-entity.ts"],"names":[],"mappings":"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"}
|
package/dist/criteria.d.ts
CHANGED
|
@@ -1,30 +1,33 @@
|
|
|
1
|
-
import { FieldPath, Filter,
|
|
1
|
+
import { CriteriaAdapter, CriteriaOptions, FieldPath, Filter, FilterValueFor, OperatorsForType, Order, OrderDirection, Pagination, PathValue, TypedFilter, TypedOrder } from "./types";
|
|
2
2
|
export declare class Criteria<T = any> {
|
|
3
3
|
private _filters;
|
|
4
4
|
private _orders;
|
|
5
5
|
private _pagination;
|
|
6
6
|
private _search?;
|
|
7
|
+
private _adapter?;
|
|
7
8
|
private constructor();
|
|
8
|
-
/**
|
|
9
|
-
* Create a new Criteria instance
|
|
10
|
-
*/
|
|
11
9
|
static create<T = any>(): Criteria<T>;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
where<K extends FieldPath<T>>(field: K, operator: FilterOperator, value?: FilterValueFor<PathValue<T, K>>): this;
|
|
10
|
+
useAdapter<A extends CriteriaAdapter<any, any>>(map: A): this;
|
|
11
|
+
getAdapter(): CriteriaAdapter<any, any> | undefined;
|
|
12
|
+
where<K extends FieldPath<T>>(field: K, operator: OperatorsForType<NonNullable<PathValue<T, K>>>, value?: FilterValueFor<PathValue<T, K>>, options?: CriteriaOptions): this;
|
|
16
13
|
whereEquals<K extends FieldPath<T>>(field: K, value: PathValue<T, K>): this;
|
|
17
14
|
whereContains<K extends FieldPath<T>>(field: K, value: PathValue<T, K>): this;
|
|
18
15
|
whereIn<K extends FieldPath<T>>(field: K, values: PathValue<T, K>[]): this;
|
|
19
16
|
whereBetween<K extends FieldPath<T>>(field: K, min: PathValue<T, K>, max: PathValue<T, K>): this;
|
|
20
17
|
whereNull<K extends FieldPath<T>>(field: K): this;
|
|
21
18
|
whereNotNull<K extends FieldPath<T>>(field: K): this;
|
|
19
|
+
whereSome<K extends FieldPath<T>>(field: K, operator: OperatorsForType<NonNullable<PathValue<T, K>>>, value?: FilterValueFor<PathValue<T, K>>): this;
|
|
20
|
+
whereEvery<K extends FieldPath<T>>(field: K, operator: OperatorsForType<NonNullable<PathValue<T, K>>>, value?: FilterValueFor<PathValue<T, K>>): this;
|
|
21
|
+
whereNone<K extends FieldPath<T>>(field: K, operator: OperatorsForType<NonNullable<PathValue<T, K>>>, value?: FilterValueFor<PathValue<T, K>>): this;
|
|
22
22
|
orderBy<K extends FieldPath<T>>(field: K, direction?: OrderDirection): this;
|
|
23
23
|
orderByAsc<K extends FieldPath<T>>(field: K): this;
|
|
24
24
|
orderByDesc<K extends FieldPath<T>>(field: K): this;
|
|
25
25
|
search<K extends FieldPath<T>>(fields: K[], value: string): this;
|
|
26
26
|
hasSearch(): boolean;
|
|
27
|
-
getSearch():
|
|
27
|
+
getSearch(): {
|
|
28
|
+
fields: FieldPath<T>[];
|
|
29
|
+
value: string;
|
|
30
|
+
} | undefined;
|
|
28
31
|
paginate(page: number, limit: number): this;
|
|
29
32
|
limit(limit: number): this;
|
|
30
33
|
getFilters(): Filter[];
|
|
@@ -35,20 +38,33 @@ export declare class Criteria<T = any> {
|
|
|
35
38
|
hasPagination(): boolean;
|
|
36
39
|
clone(): Criteria<T>;
|
|
37
40
|
toJSON(): {
|
|
38
|
-
filters:
|
|
39
|
-
|
|
41
|
+
filters: {
|
|
42
|
+
field: FieldPath<T>;
|
|
43
|
+
operator: "equals" | "notEquals" | "greaterThan" | "greaterThanOrEqual" | "lessThan" | "lessThanOrEqual" | "contains" | "startsWith" | "endsWith" | "in" | "notIn" | "between" | "isNull" | "isNotNull";
|
|
44
|
+
value: any;
|
|
45
|
+
options: CriteriaOptions | undefined;
|
|
46
|
+
}[];
|
|
47
|
+
orders: {
|
|
48
|
+
field: FieldPath<T>;
|
|
49
|
+
direction: OrderDirection;
|
|
50
|
+
}[];
|
|
40
51
|
pagination: Pagination;
|
|
41
|
-
search:
|
|
52
|
+
search: {
|
|
53
|
+
fields: FieldPath<T>[];
|
|
54
|
+
value: string;
|
|
55
|
+
} | undefined;
|
|
42
56
|
};
|
|
43
57
|
static fromObject<T>(obj: {
|
|
44
58
|
filters?: TypedFilter<T>[];
|
|
45
|
-
orders?:
|
|
59
|
+
orders?: TypedOrder<T>[];
|
|
46
60
|
pagination?: Pagination;
|
|
47
61
|
search?: {
|
|
48
62
|
fields: FieldPath<T>[];
|
|
49
63
|
value: string;
|
|
50
64
|
};
|
|
51
|
-
}): Criteria<T>;
|
|
52
|
-
|
|
65
|
+
}, adapter?: CriteriaAdapter<any, any>): Criteria<T>;
|
|
66
|
+
protected resolveFieldPath(field: FieldPath<T>): FieldPath<T>;
|
|
67
|
+
static fromQueryParams<T>(query: Record<string, any>, adapter?: CriteriaAdapter<any, any>): Criteria<T>;
|
|
68
|
+
private validateOperator;
|
|
53
69
|
}
|
|
54
70
|
//# sourceMappingURL=criteria.d.ts.map
|
package/dist/criteria.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"criteria.d.ts","sourceRoot":"","sources":["../src/criteria.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,MAAM,EAEN,cAAc,EACd,
|
|
1
|
+
{"version":3,"file":"criteria.d.ts","sourceRoot":"","sources":["../src/criteria.ts"],"names":[],"mappings":"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"}
|