@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
package/dist/criteria.js
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
import { InvalidCriteriaError } from "./exceptions";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
// Filter Types
|
|
5
|
-
// ============================================================================
|
|
2
|
+
import { isValidOperatorForType, getValidOperatorsForType, isOperator, } from "./utils/criteria-operator-validation";
|
|
3
|
+
import { parseQueryValue } from "./utils/helpers";
|
|
6
4
|
export class Criteria {
|
|
7
5
|
constructor() {
|
|
8
6
|
this._filters = [];
|
|
9
7
|
this._orders = [];
|
|
10
8
|
this._pagination = { page: 1, limit: 20, offset: 0 };
|
|
11
9
|
}
|
|
12
|
-
/**
|
|
13
|
-
* Create a new Criteria instance
|
|
14
|
-
*/
|
|
15
10
|
static create() {
|
|
16
11
|
return new Criteria();
|
|
17
12
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
13
|
+
useAdapter(map) {
|
|
14
|
+
this._adapter = map;
|
|
15
|
+
return this;
|
|
16
|
+
}
|
|
17
|
+
getAdapter() {
|
|
18
|
+
return this._adapter;
|
|
19
|
+
}
|
|
20
|
+
where(field, operator, value, options) {
|
|
21
|
+
this.validateOperator(operator, value);
|
|
22
22
|
this._filters.push({
|
|
23
|
-
field,
|
|
23
|
+
field: this.resolveFieldPath(field),
|
|
24
24
|
operator,
|
|
25
25
|
value,
|
|
26
|
+
options,
|
|
26
27
|
});
|
|
27
28
|
return this;
|
|
28
29
|
}
|
|
29
|
-
// === Shorthand methods (tipados) ===
|
|
30
30
|
whereEquals(field, value) {
|
|
31
31
|
return this.where(field, "equals", value);
|
|
32
32
|
}
|
|
@@ -45,10 +45,18 @@ export class Criteria {
|
|
|
45
45
|
whereNotNull(field) {
|
|
46
46
|
return this.where(field, "isNotNull");
|
|
47
47
|
}
|
|
48
|
-
|
|
48
|
+
whereSome(field, operator, value) {
|
|
49
|
+
return this.where(field, operator, value, { quantifier: "some" });
|
|
50
|
+
}
|
|
51
|
+
whereEvery(field, operator, value) {
|
|
52
|
+
return this.where(field, operator, value, { quantifier: "every" });
|
|
53
|
+
}
|
|
54
|
+
whereNone(field, operator, value) {
|
|
55
|
+
return this.where(field, operator, value, { quantifier: "none" });
|
|
56
|
+
}
|
|
49
57
|
orderBy(field, direction = "asc") {
|
|
50
58
|
this._orders.push({
|
|
51
|
-
field:
|
|
59
|
+
field: this.resolveFieldPath(field),
|
|
52
60
|
direction,
|
|
53
61
|
});
|
|
54
62
|
return this;
|
|
@@ -59,12 +67,9 @@ export class Criteria {
|
|
|
59
67
|
orderByDesc(field) {
|
|
60
68
|
return this.orderBy(field, "desc");
|
|
61
69
|
}
|
|
62
|
-
// --------------------------------------------------------------------------
|
|
63
|
-
// Search (tipado)
|
|
64
|
-
// --------------------------------------------------------------------------
|
|
65
70
|
search(fields, value) {
|
|
66
71
|
this._search = {
|
|
67
|
-
fields,
|
|
72
|
+
fields: fields.map(this.resolveFieldPath),
|
|
68
73
|
value,
|
|
69
74
|
};
|
|
70
75
|
return this;
|
|
@@ -73,9 +78,13 @@ export class Criteria {
|
|
|
73
78
|
return !!this._search;
|
|
74
79
|
}
|
|
75
80
|
getSearch() {
|
|
76
|
-
return this._search
|
|
81
|
+
return this._search
|
|
82
|
+
? {
|
|
83
|
+
fields: this._search.fields.map(this.resolveFieldPath),
|
|
84
|
+
value: this._search.value,
|
|
85
|
+
}
|
|
86
|
+
: undefined;
|
|
77
87
|
}
|
|
78
|
-
// === Pagination ===
|
|
79
88
|
paginate(page, limit) {
|
|
80
89
|
if (page < 1)
|
|
81
90
|
page = 1;
|
|
@@ -91,12 +100,19 @@ export class Criteria {
|
|
|
91
100
|
limit(limit) {
|
|
92
101
|
return this.paginate(1, limit);
|
|
93
102
|
}
|
|
94
|
-
// === Getters ===
|
|
95
103
|
getFilters() {
|
|
96
|
-
return this._filters
|
|
104
|
+
return this._filters.map((filter) => ({
|
|
105
|
+
field: this.resolveFieldPath(filter.field),
|
|
106
|
+
operator: filter.operator,
|
|
107
|
+
value: filter.value,
|
|
108
|
+
options: filter.options,
|
|
109
|
+
}));
|
|
97
110
|
}
|
|
98
111
|
getOrders() {
|
|
99
|
-
return this._orders
|
|
112
|
+
return this._orders.map((order) => ({
|
|
113
|
+
field: this.resolveFieldPath(order.field),
|
|
114
|
+
direction: order.direction,
|
|
115
|
+
}));
|
|
100
116
|
}
|
|
101
117
|
getPagination() {
|
|
102
118
|
return this._pagination;
|
|
@@ -110,40 +126,109 @@ export class Criteria {
|
|
|
110
126
|
hasPagination() {
|
|
111
127
|
return this._pagination !== undefined;
|
|
112
128
|
}
|
|
113
|
-
// === Utilities ===
|
|
114
129
|
clone() {
|
|
115
130
|
const cloned = Criteria.create();
|
|
116
|
-
cloned._filters = [
|
|
117
|
-
|
|
131
|
+
cloned._filters = [
|
|
132
|
+
...this._filters.map((filter) => ({
|
|
133
|
+
field: this.resolveFieldPath(filter.field),
|
|
134
|
+
operator: filter.operator,
|
|
135
|
+
value: filter.value,
|
|
136
|
+
options: filter.options,
|
|
137
|
+
})),
|
|
138
|
+
];
|
|
139
|
+
cloned._orders = [
|
|
140
|
+
...this._orders.map((order) => ({
|
|
141
|
+
field: this.resolveFieldPath(order.field),
|
|
142
|
+
direction: order.direction,
|
|
143
|
+
})),
|
|
144
|
+
];
|
|
118
145
|
cloned._pagination = { ...this._pagination };
|
|
146
|
+
cloned._search = this._search
|
|
147
|
+
? {
|
|
148
|
+
fields: this._search.fields.map(this.resolveFieldPath),
|
|
149
|
+
value: this._search.value,
|
|
150
|
+
}
|
|
151
|
+
: undefined;
|
|
152
|
+
if (this._adapter) {
|
|
153
|
+
cloned.useAdapter(this._adapter);
|
|
154
|
+
}
|
|
119
155
|
return cloned;
|
|
120
156
|
}
|
|
121
157
|
toJSON() {
|
|
122
158
|
return {
|
|
123
|
-
filters: this._filters
|
|
124
|
-
|
|
159
|
+
filters: this._filters.map((filter) => ({
|
|
160
|
+
field: this.resolveFieldPath(filter.field),
|
|
161
|
+
operator: filter.operator,
|
|
162
|
+
value: filter.value,
|
|
163
|
+
options: filter.options,
|
|
164
|
+
})),
|
|
165
|
+
orders: this._orders.map((order) => ({
|
|
166
|
+
field: this.resolveFieldPath(order.field),
|
|
167
|
+
direction: order.direction,
|
|
168
|
+
})),
|
|
125
169
|
pagination: this._pagination,
|
|
126
|
-
search: this._search
|
|
170
|
+
search: this._search
|
|
171
|
+
? {
|
|
172
|
+
fields: this._search.fields.map(this.resolveFieldPath),
|
|
173
|
+
value: this._search.value,
|
|
174
|
+
}
|
|
175
|
+
: undefined,
|
|
127
176
|
};
|
|
128
177
|
}
|
|
129
|
-
static fromObject(obj) {
|
|
178
|
+
static fromObject(obj, adapter) {
|
|
130
179
|
const criteria = Criteria.create();
|
|
131
|
-
if (
|
|
180
|
+
if (adapter) {
|
|
181
|
+
criteria.useAdapter(adapter);
|
|
182
|
+
}
|
|
183
|
+
if (obj.filters) {
|
|
184
|
+
for (const filter of obj.filters) {
|
|
185
|
+
filter.field = criteria.resolveFieldPath(filter.field);
|
|
186
|
+
criteria.validateOperator(filter.operator, filter.value);
|
|
187
|
+
}
|
|
132
188
|
criteria._filters = [...obj.filters];
|
|
189
|
+
}
|
|
133
190
|
if (obj.orders)
|
|
134
|
-
criteria._orders = [
|
|
191
|
+
criteria._orders = [
|
|
192
|
+
...obj.orders.map((order) => ({
|
|
193
|
+
field: criteria.resolveFieldPath(order.field),
|
|
194
|
+
direction: order.direction,
|
|
195
|
+
})),
|
|
196
|
+
];
|
|
135
197
|
if (obj.pagination)
|
|
136
198
|
criteria._pagination = { ...obj.pagination };
|
|
137
199
|
if (obj.search)
|
|
138
|
-
criteria._search = {
|
|
200
|
+
criteria._search = {
|
|
201
|
+
...obj.search,
|
|
202
|
+
fields: obj.search.fields.map(criteria.resolveFieldPath),
|
|
203
|
+
};
|
|
139
204
|
return criteria;
|
|
140
205
|
}
|
|
141
|
-
|
|
206
|
+
resolveFieldPath(field) {
|
|
207
|
+
if (!this?._adapter)
|
|
208
|
+
return field;
|
|
209
|
+
if (this._adapter[field]) {
|
|
210
|
+
return this._adapter[field];
|
|
211
|
+
}
|
|
212
|
+
const parts = field.split(".");
|
|
213
|
+
for (let i = parts.length; i > 0; i--) {
|
|
214
|
+
const prefix = parts.slice(0, i).join(".");
|
|
215
|
+
if (this._adapter[prefix]) {
|
|
216
|
+
const rest = parts.slice(i).join(".");
|
|
217
|
+
return rest
|
|
218
|
+
? `${this._adapter[prefix]}.${rest}`
|
|
219
|
+
: this._adapter[prefix];
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return field;
|
|
223
|
+
}
|
|
224
|
+
static fromQueryParams(query, adapter) {
|
|
142
225
|
const criteria = Criteria.create();
|
|
226
|
+
if (adapter) {
|
|
227
|
+
criteria.useAdapter(adapter);
|
|
228
|
+
}
|
|
143
229
|
for (const [key, value] of Object.entries(query)) {
|
|
144
|
-
// Pagination
|
|
145
230
|
if (key === "page") {
|
|
146
|
-
continue;
|
|
231
|
+
continue;
|
|
147
232
|
}
|
|
148
233
|
if (key === "limit") {
|
|
149
234
|
continue;
|
|
@@ -151,36 +236,49 @@ export class Criteria {
|
|
|
151
236
|
if (key === "sort") {
|
|
152
237
|
continue;
|
|
153
238
|
}
|
|
154
|
-
const [field,
|
|
155
|
-
if (!
|
|
239
|
+
const [field, operatorWithQuantifier] = key.split(":");
|
|
240
|
+
if (!operatorWithQuantifier || !field)
|
|
156
241
|
continue;
|
|
242
|
+
const [operatorRaw, quantifierRaw] = operatorWithQuantifier.split("@");
|
|
157
243
|
const operator = isOperator(operatorRaw) ? operatorRaw : null;
|
|
158
|
-
if (!operator)
|
|
244
|
+
if (!operator) {
|
|
159
245
|
throw new InvalidCriteriaError(`Invalid filter operator`, operatorRaw);
|
|
246
|
+
}
|
|
247
|
+
const validQuantifiers = ["some", "every", "none"];
|
|
248
|
+
const quantifier = quantifierRaw && validQuantifiers.includes(quantifierRaw)
|
|
249
|
+
? quantifierRaw
|
|
250
|
+
: undefined;
|
|
251
|
+
if (quantifierRaw && !quantifier) {
|
|
252
|
+
throw new InvalidCriteriaError(`Invalid quantifier. Valid values: ${validQuantifiers.join(", ")}`, quantifierRaw);
|
|
253
|
+
}
|
|
254
|
+
const options = quantifier
|
|
255
|
+
? { quantifier }
|
|
256
|
+
: undefined;
|
|
160
257
|
let parsedValue = value;
|
|
258
|
+
const resolvedField = criteria.resolveFieldPath(field);
|
|
161
259
|
if (operator === "between") {
|
|
162
260
|
parsedValue = value
|
|
163
261
|
.split(",")
|
|
164
262
|
.map((v) => parseQueryValue(v.trim()));
|
|
165
263
|
if (parsedValue.length === 2) {
|
|
166
|
-
criteria.
|
|
264
|
+
criteria.where(resolvedField, "between", [parsedValue[0], parsedValue[1]], options);
|
|
167
265
|
}
|
|
168
266
|
continue;
|
|
169
267
|
}
|
|
170
268
|
if (operator === "in" || operator === "notIn") {
|
|
171
269
|
parsedValue = value.split(",").map(parseQueryValue);
|
|
172
|
-
criteria.where(field, operator, parsedValue);
|
|
270
|
+
criteria.where(field, operator, parsedValue, options);
|
|
173
271
|
continue;
|
|
174
272
|
}
|
|
175
|
-
|
|
273
|
+
const parsedFinalValue = parseQueryValue(value);
|
|
274
|
+
criteria.validateOperator(operator, parsedFinalValue);
|
|
275
|
+
criteria.where(field, operator, parsedFinalValue, options);
|
|
176
276
|
}
|
|
177
|
-
// Pagination
|
|
178
277
|
const page = query.page ? parseInt(query.page) : undefined;
|
|
179
278
|
const limit = query.limit ? parseInt(query.limit) : undefined;
|
|
180
279
|
if (page && limit) {
|
|
181
280
|
criteria.paginate(page, limit);
|
|
182
281
|
}
|
|
183
|
-
// Sorting
|
|
184
282
|
if (query.orderBy) {
|
|
185
283
|
const sortParts = query.orderBy.split(",");
|
|
186
284
|
sortParts.forEach((part) => {
|
|
@@ -192,24 +290,16 @@ export class Criteria {
|
|
|
192
290
|
const fields = query.searchFields
|
|
193
291
|
.split(",")
|
|
194
292
|
.filter(Boolean);
|
|
195
|
-
|
|
293
|
+
const resolvedFields = fields.map(criteria.resolveFieldPath);
|
|
294
|
+
criteria.search(resolvedFields, query.search);
|
|
196
295
|
}
|
|
197
296
|
return criteria;
|
|
198
297
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
return Number(value); // number
|
|
206
|
-
if (value === "true" || value === "false")
|
|
207
|
-
return value === "true"; // boolean
|
|
208
|
-
if (!isNaN(Date.parse(value)))
|
|
209
|
-
return new Date(value); // Date
|
|
210
|
-
return value; // string
|
|
211
|
-
}
|
|
212
|
-
function isOperator(value) {
|
|
213
|
-
return FILTER_OPERATORS.includes(value);
|
|
298
|
+
validateOperator(operator, value) {
|
|
299
|
+
if (value !== undefined && !isValidOperatorForType(value, operator)) {
|
|
300
|
+
const validOps = getValidOperatorsForType(value);
|
|
301
|
+
throw new InvalidCriteriaError(`Operator "${operator}" is not valid for type "${typeof value}". Valid operators: ${validOps.join(", ")}`, operator);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
214
304
|
}
|
|
215
305
|
//# sourceMappingURL=criteria.js.map
|
package/dist/criteria.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"criteria.js","sourceRoot":"","sources":["../src/criteria.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"criteria.js","sourceRoot":"","sources":["../src/criteria.ts"],"names":[],"mappings":"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"}
|
package/dist/crypto.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AA6BA,eAAO,MAAM,IAAI,cAA0B,CAAC;AAC5C,eAAe,IAAI,CAAC"}
|
package/dist/crypto.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const customCrypto = {
|
|
2
|
+
randomUUID: () => {
|
|
3
|
+
if (typeof globalThis !== "undefined" &&
|
|
4
|
+
globalThis?.crypto &&
|
|
5
|
+
typeof globalThis.crypto.randomUUID === "function") {
|
|
6
|
+
return globalThis.crypto.randomUUID();
|
|
7
|
+
}
|
|
8
|
+
const hexChars = "0123456789abcdef";
|
|
9
|
+
let uuid = "";
|
|
10
|
+
for (let i = 0; i < 36; i++) {
|
|
11
|
+
if (i === 8 || i === 13 || i === 18 || i === 23) {
|
|
12
|
+
uuid += "-";
|
|
13
|
+
}
|
|
14
|
+
else if (i === 14) {
|
|
15
|
+
uuid += "4";
|
|
16
|
+
}
|
|
17
|
+
else if (i === 19) {
|
|
18
|
+
uuid += hexChars.charAt(Math.floor(Math.random() * 4) + 8);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
uuid += hexChars.charAt(Math.floor(Math.random() * 16));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return uuid;
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
export const UUID = customCrypto.randomUUID;
|
|
28
|
+
export default UUID;
|
|
29
|
+
//# sourceMappingURL=crypto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAG;IACnB,UAAU,EAAE,GAAG,EAAE;QACf,IACE,OAAO,UAAU,KAAK,WAAW;YACjC,UAAU,EAAE,MAAM;YAClB,OAAO,UAAU,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,EAClD,CAAC;YACD,OAAO,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACxC,CAAC;QAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC;QACpC,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gBAChD,IAAI,IAAI,GAAG,CAAC;YACd,CAAC;iBAAM,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gBACpB,IAAI,IAAI,GAAG,CAAC;YACd,CAAC;iBAAM,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gBACpB,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC;AAC5C,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Operation } from "./types/change-tracker";
|
|
2
|
+
/**
|
|
3
|
+
* Represents the changes filtered for a specific entity.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* const changes = user.getChanges();
|
|
8
|
+
* const postChanges = changes.for('Post');
|
|
9
|
+
*
|
|
10
|
+
* if (postChanges.hasCreates()) {
|
|
11
|
+
* console.log('Created posts:', postChanges.creates);
|
|
12
|
+
* }
|
|
13
|
+
*
|
|
14
|
+
* if (postChanges.hasUpdates()) {
|
|
15
|
+
* postChanges.updates.forEach(({ entity, changed }) => {
|
|
16
|
+
* console.log(`Post ${entity.id} has changed:`, changed);
|
|
17
|
+
* });
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare class EntityChanges<T = any> {
|
|
22
|
+
private readonly operations;
|
|
23
|
+
constructor(operations: Operation<T>[]);
|
|
24
|
+
/**
|
|
25
|
+
* Returns all created entities
|
|
26
|
+
*/
|
|
27
|
+
get creates(): T[];
|
|
28
|
+
/**
|
|
29
|
+
* Returns all updated entities with their changed fields
|
|
30
|
+
*/
|
|
31
|
+
get updates(): Array<{
|
|
32
|
+
entity: T;
|
|
33
|
+
changed: Record<string, any>;
|
|
34
|
+
}>;
|
|
35
|
+
/**
|
|
36
|
+
* Returns all deleted entities
|
|
37
|
+
*/
|
|
38
|
+
get deletes(): T[];
|
|
39
|
+
/**
|
|
40
|
+
* Returns the IDs of the created entities
|
|
41
|
+
*/
|
|
42
|
+
get createIds(): string[];
|
|
43
|
+
/**
|
|
44
|
+
* Returns the IDs of the updated entities
|
|
45
|
+
*/
|
|
46
|
+
get updateIds(): string[];
|
|
47
|
+
/**
|
|
48
|
+
* Returns the IDs of the deleted entities
|
|
49
|
+
*/
|
|
50
|
+
get deleteIds(): string[];
|
|
51
|
+
/**
|
|
52
|
+
* Checks if there are any creates
|
|
53
|
+
*/
|
|
54
|
+
hasCreates(): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Checks if there are any updates
|
|
57
|
+
*/
|
|
58
|
+
hasUpdates(): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Checks if there are any deletes
|
|
61
|
+
*/
|
|
62
|
+
hasDeletes(): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Checks if there is any change
|
|
65
|
+
*/
|
|
66
|
+
hasChanges(): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Checks if it is empty (no changes)
|
|
69
|
+
*/
|
|
70
|
+
isEmpty(): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Returns the total number of operations
|
|
73
|
+
*/
|
|
74
|
+
get count(): number;
|
|
75
|
+
/**
|
|
76
|
+
* Returns the raw operations (for advanced use cases)
|
|
77
|
+
*/
|
|
78
|
+
get rawOperations(): Operation<T>[];
|
|
79
|
+
/**
|
|
80
|
+
* Extracts the ID from an entity
|
|
81
|
+
*/
|
|
82
|
+
private extractId;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=entity-changes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-changes.d.ts","sourceRoot":"","sources":["../src/entity-changes.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,SAAS,EAIV,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,aAAa,CAAC,CAAC,GAAG,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;IAEvD;;OAEG;IACH,IAAI,OAAO,IAAI,CAAC,EAAE,CAIjB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,KAAK,CAAC;QAAE,MAAM,EAAE,CAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,CAAC,CAOhE;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,CAAC,EAAE,CAIjB;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,EAAE,CAKxB;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,EAAE,CAIxB;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,EAAE,CAIxB;IAED;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAElC;IAED;;OAEG;IACH,OAAO,CAAC,SAAS;CAMlB"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Entity Changes
|
|
3
|
+
// Changes filtered by entity type
|
|
4
|
+
// ============================================================================
|
|
5
|
+
/**
|
|
6
|
+
* Represents the changes filtered for a specific entity.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const changes = user.getChanges();
|
|
11
|
+
* const postChanges = changes.for('Post');
|
|
12
|
+
*
|
|
13
|
+
* if (postChanges.hasCreates()) {
|
|
14
|
+
* console.log('Created posts:', postChanges.creates);
|
|
15
|
+
* }
|
|
16
|
+
*
|
|
17
|
+
* if (postChanges.hasUpdates()) {
|
|
18
|
+
* postChanges.updates.forEach(({ entity, changed }) => {
|
|
19
|
+
* console.log(`Post ${entity.id} has changed:`, changed);
|
|
20
|
+
* });
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export class EntityChanges {
|
|
25
|
+
constructor(operations) {
|
|
26
|
+
this.operations = operations;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Returns all created entities
|
|
30
|
+
*/
|
|
31
|
+
get creates() {
|
|
32
|
+
return this.operations
|
|
33
|
+
.filter((op) => op.type === "create")
|
|
34
|
+
.map((op) => op.data);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Returns all updated entities with their changed fields
|
|
38
|
+
*/
|
|
39
|
+
get updates() {
|
|
40
|
+
return this.operations
|
|
41
|
+
.filter((op) => op.type === "update")
|
|
42
|
+
.map((op) => ({
|
|
43
|
+
entity: op.data,
|
|
44
|
+
changed: op.changedFields,
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Returns all deleted entities
|
|
49
|
+
*/
|
|
50
|
+
get deletes() {
|
|
51
|
+
return this.operations
|
|
52
|
+
.filter((op) => op.type === "delete")
|
|
53
|
+
.map((op) => op.data);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Returns the IDs of the created entities
|
|
57
|
+
*/
|
|
58
|
+
get createIds() {
|
|
59
|
+
return this.operations
|
|
60
|
+
.filter((op) => op.type === "create")
|
|
61
|
+
.map((op) => this.extractId(op.data))
|
|
62
|
+
.filter((id) => id !== undefined);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Returns the IDs of the updated entities
|
|
66
|
+
*/
|
|
67
|
+
get updateIds() {
|
|
68
|
+
return this.operations
|
|
69
|
+
.filter((op) => op.type === "update")
|
|
70
|
+
.map((op) => op.id);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Returns the IDs of the deleted entities
|
|
74
|
+
*/
|
|
75
|
+
get deleteIds() {
|
|
76
|
+
return this.operations
|
|
77
|
+
.filter((op) => op.type === "delete")
|
|
78
|
+
.map((op) => op.id);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Checks if there are any creates
|
|
82
|
+
*/
|
|
83
|
+
hasCreates() {
|
|
84
|
+
return this.creates.length > 0;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Checks if there are any updates
|
|
88
|
+
*/
|
|
89
|
+
hasUpdates() {
|
|
90
|
+
return this.updates.length > 0;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Checks if there are any deletes
|
|
94
|
+
*/
|
|
95
|
+
hasDeletes() {
|
|
96
|
+
return this.deletes.length > 0;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Checks if there is any change
|
|
100
|
+
*/
|
|
101
|
+
hasChanges() {
|
|
102
|
+
return this.operations.length > 0;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Checks if it is empty (no changes)
|
|
106
|
+
*/
|
|
107
|
+
isEmpty() {
|
|
108
|
+
return this.operations.length === 0;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Returns the total number of operations
|
|
112
|
+
*/
|
|
113
|
+
get count() {
|
|
114
|
+
return this.operations.length;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Returns the raw operations (for advanced use cases)
|
|
118
|
+
*/
|
|
119
|
+
get rawOperations() {
|
|
120
|
+
return [...this.operations];
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Extracts the ID from an entity
|
|
124
|
+
*/
|
|
125
|
+
extractId(entity) {
|
|
126
|
+
if (!entity)
|
|
127
|
+
return undefined;
|
|
128
|
+
if (entity.id?.value)
|
|
129
|
+
return entity.id.value;
|
|
130
|
+
if (typeof entity.id === "string")
|
|
131
|
+
return entity.id;
|
|
132
|
+
return undefined;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=entity-changes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-changes.js","sourceRoot":"","sources":["../src/entity-changes.ts"],"names":[],"mappings":"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"}
|