@woltz/rich-domain 1.2.4 → 1.3.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.
Files changed (94) hide show
  1. package/dist/aggregate-changes.d.ts +56 -14
  2. package/dist/aggregate-changes.d.ts.map +1 -1
  3. package/dist/aggregate-changes.js +103 -23
  4. package/dist/aggregate-changes.js.map +1 -1
  5. package/dist/base-entity.d.ts +1 -1
  6. package/dist/base-entity.d.ts.map +1 -1
  7. package/dist/base-entity.js +28 -13
  8. package/dist/base-entity.js.map +1 -1
  9. package/dist/change-tracker.d.ts +2 -1
  10. package/dist/change-tracker.d.ts.map +1 -1
  11. package/dist/change-tracker.js +61 -35
  12. package/dist/change-tracker.js.map +1 -1
  13. package/dist/criteria.d.ts +7 -15
  14. package/dist/criteria.d.ts.map +1 -1
  15. package/dist/criteria.js +105 -81
  16. package/dist/criteria.js.map +1 -1
  17. package/dist/domain-event-bus.js +4 -4
  18. package/dist/domain-event-bus.js.map +1 -1
  19. package/dist/domain-event.js +3 -0
  20. package/dist/domain-event.js.map +1 -1
  21. package/dist/entity-changes.js +1 -0
  22. package/dist/entity-changes.js.map +1 -1
  23. package/dist/entity-schema-registry.d.ts +137 -3
  24. package/dist/entity-schema-registry.d.ts.map +1 -1
  25. package/dist/entity-schema-registry.js +160 -7
  26. package/dist/entity-schema-registry.js.map +1 -1
  27. package/dist/exceptions.js +26 -1
  28. package/dist/exceptions.js.map +1 -1
  29. package/dist/id.js +2 -0
  30. package/dist/id.js.map +1 -1
  31. package/dist/index.d.ts +1 -1
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/paginated-result.d.ts +4 -4
  34. package/dist/paginated-result.d.ts.map +1 -1
  35. package/dist/paginated-result.js +14 -19
  36. package/dist/paginated-result.js.map +1 -1
  37. package/dist/repository/unit-of-work.js +3 -7
  38. package/dist/repository/unit-of-work.js.map +1 -1
  39. package/dist/types/change-tracker.d.ts +30 -0
  40. package/dist/types/change-tracker.d.ts.map +1 -1
  41. package/dist/types/criteria.d.ts +1 -4
  42. package/dist/types/criteria.d.ts.map +1 -1
  43. package/dist/types/domain.d.ts +2 -1
  44. package/dist/types/domain.d.ts.map +1 -1
  45. package/dist/types/utils.d.ts +2 -2
  46. package/dist/utils/helpers.d.ts +1 -0
  47. package/dist/utils/helpers.d.ts.map +1 -1
  48. package/dist/utils/helpers.js +23 -0
  49. package/dist/utils/helpers.js.map +1 -1
  50. package/dist/validation-error.d.ts +15 -1
  51. package/dist/validation-error.d.ts.map +1 -1
  52. package/dist/validation-error.js +46 -3
  53. package/dist/validation-error.js.map +1 -1
  54. package/dist/value-object.d.ts +1 -1
  55. package/dist/value-object.d.ts.map +1 -1
  56. package/dist/value-object.js +30 -2
  57. package/dist/value-object.js.map +1 -1
  58. package/package.json +17 -3
  59. package/src/aggregate-changes.ts +133 -24
  60. package/src/base-entity.ts +22 -11
  61. package/src/change-tracker.ts +113 -54
  62. package/src/criteria.ts +151 -109
  63. package/src/entity-schema-registry.ts +256 -6
  64. package/src/index.ts +1 -1
  65. package/src/paginated-result.ts +21 -29
  66. package/src/types/change-tracker.ts +31 -0
  67. package/src/types/criteria.ts +1 -4
  68. package/src/types/domain.ts +2 -1
  69. package/src/types/utils.ts +2 -2
  70. package/src/utils/helpers.ts +28 -0
  71. package/src/validation-error.ts +54 -4
  72. package/src/value-object.ts +6 -1
  73. package/.versionrc.json +0 -21
  74. package/CHANGELOG.md +0 -163
  75. package/tests/aggregate-changes.test.ts +0 -284
  76. package/tests/criteria.test.ts +0 -716
  77. package/tests/depth/deep-tracking.test.ts +0 -554
  78. package/tests/domain-events.test.ts +0 -431
  79. package/tests/entity-equality.test.ts +0 -464
  80. package/tests/entity-schema-registry.test.ts +0 -382
  81. package/tests/entity-validation.test.ts +0 -252
  82. package/tests/history-tracker.spec.ts +0 -439
  83. package/tests/id.test.ts +0 -338
  84. package/tests/load-test/data.json +0 -347211
  85. package/tests/load-test/entities.ts +0 -97
  86. package/tests/load-test/generate-data.ts +0 -81
  87. package/tests/load-test/lead-to-domain.mapper.ts +0 -24
  88. package/tests/load-test/load.test.ts +0 -38
  89. package/tests/repository.test.ts +0 -635
  90. package/tests/to-json.test.ts +0 -99
  91. package/tests/utils.ts +0 -290
  92. package/tests/value-object-validation.test.ts +0 -219
  93. package/tests/value-objects.test.ts +0 -80
  94. package/tsconfig.json +0 -9
package/dist/criteria.js CHANGED
@@ -2,11 +2,12 @@ import { InvalidCriteriaError } from "./exceptions";
2
2
  import { isValidOperatorForType, getValidOperatorsForType, isOperator, sanitizeFieldValue, } from "./utils/criteria-operator-validation";
3
3
  import { parseQueryValue } from "./utils/helpers";
4
4
  export class Criteria {
5
- constructor() {
6
- this._filters = [];
7
- this._orders = [];
8
- this._pagination = { page: 1, limit: 20, offset: 0 };
9
- }
5
+ _filters = [];
6
+ _orders = [];
7
+ _pagination = { page: 1, limit: 20, offset: 0 };
8
+ _search;
9
+ _adapter;
10
+ constructor() { }
10
11
  static create() {
11
12
  return new Criteria();
12
13
  }
@@ -67,23 +68,15 @@ export class Criteria {
67
68
  orderByDesc(field) {
68
69
  return this.orderBy(field, "desc");
69
70
  }
70
- search(fields, value) {
71
- this._search = {
72
- fields: fields.map(this.resolveFieldPath),
73
- value,
74
- };
71
+ search(value) {
72
+ this._search = value;
75
73
  return this;
76
74
  }
77
75
  hasSearch() {
78
76
  return !!this._search;
79
77
  }
80
78
  getSearch() {
81
- return this._search
82
- ? {
83
- fields: this._search.fields.map(this.resolveFieldPath),
84
- value: this._search.value,
85
- }
86
- : undefined;
79
+ return this._search;
87
80
  }
88
81
  paginate(page, limit) {
89
82
  if (page < 1)
@@ -143,12 +136,7 @@ export class Criteria {
143
136
  })),
144
137
  ];
145
138
  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;
139
+ cloned._search = this._search;
152
140
  if (this._adapter) {
153
141
  cloned.useAdapter(this._adapter);
154
142
  }
@@ -167,12 +155,7 @@ export class Criteria {
167
155
  direction: order.direction,
168
156
  })),
169
157
  pagination: this._pagination,
170
- search: this._search
171
- ? {
172
- fields: this._search.fields.map(this.resolveFieldPath),
173
- value: this._search.value,
174
- }
175
- : undefined,
158
+ search: this._search,
176
159
  };
177
160
  }
178
161
  static fromObject(obj, adapter) {
@@ -197,10 +180,7 @@ export class Criteria {
197
180
  if (obj.pagination)
198
181
  criteria._pagination = { ...obj.pagination };
199
182
  if (obj.search)
200
- criteria._search = {
201
- ...obj.search,
202
- fields: obj.search.fields.map(criteria.resolveFieldPath),
203
- };
183
+ criteria._search = obj.search;
204
184
  return criteria;
205
185
  }
206
186
  resolveFieldPath(field) {
@@ -222,6 +202,8 @@ export class Criteria {
222
202
  return field;
223
203
  }
224
204
  static fromQueryParams(query, adapter) {
205
+ if (!query)
206
+ return Criteria.create();
225
207
  const criteria = Criteria.create();
226
208
  if (adapter) {
227
209
  criteria.useAdapter(adapter);
@@ -233,65 +215,96 @@ export class Criteria {
233
215
  if (key === "limit") {
234
216
  continue;
235
217
  }
236
- if (key === "sort") {
237
- continue;
238
- }
239
- const [field, operatorWithQuantifier] = key.split(":");
240
- if (!operatorWithQuantifier || !field)
241
- continue;
242
- const [operatorRaw, quantifierRaw] = operatorWithQuantifier.split("@");
243
- const operator = isOperator(operatorRaw) ? operatorRaw : null;
244
- if (!operator) {
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;
257
- let parsedValue = value;
258
- const resolvedField = criteria.resolveFieldPath(field);
259
- if (operator === "between") {
260
- parsedValue = value
261
- .split(",")
262
- .map((v) => parseQueryValue(v.trim()));
263
- if (parsedValue.length === 2) {
264
- criteria.where(resolvedField, "between", [parsedValue[0], parsedValue[1]], options);
218
+ if (key === "filters") {
219
+ const filters = criteria.parseFilterValue(value);
220
+ for (let [filterKey, filterValue] of Object.entries(filters)) {
221
+ const [field, operatorWithQuantifier] = filterKey.split(":");
222
+ if (!operatorWithQuantifier || !field)
223
+ continue;
224
+ const [operatorRaw, quantifierRaw] = operatorWithQuantifier.split("@");
225
+ const operator = isOperator(operatorRaw) ? operatorRaw : null;
226
+ if (!operator) {
227
+ throw new InvalidCriteriaError(`Invalid filter operator`, operatorRaw);
228
+ }
229
+ const validQuantifiers = ["some", "every", "none"];
230
+ const quantifier = quantifierRaw && validQuantifiers.includes(quantifierRaw)
231
+ ? quantifierRaw
232
+ : undefined;
233
+ if (quantifierRaw && !quantifier) {
234
+ throw new InvalidCriteriaError(`Invalid quantifier. Valid values: ${validQuantifiers.join(", ")}`, quantifierRaw);
235
+ }
236
+ const options = quantifier
237
+ ? { quantifier }
238
+ : undefined;
239
+ let parsedValue = filterValue;
240
+ const resolvedField = criteria.resolveFieldPath(field);
241
+ if (operator === "between") {
242
+ parsedValue = criteria
243
+ .parseFilterValue(filterValue)
244
+ .map((v) => parseQueryValue(v.trim()));
245
+ if (parsedValue.length === 2) {
246
+ criteria.where(resolvedField, "between", [parsedValue[0], parsedValue[1]], options);
247
+ }
248
+ continue;
249
+ }
250
+ if (operator === "in" || operator === "notIn") {
251
+ parsedValue = criteria
252
+ .parseFilterValue(filterValue)
253
+ .map(parseQueryValue);
254
+ criteria.where(field, operator, parsedValue, options);
255
+ continue;
256
+ }
257
+ const parsedFinalValue = parseQueryValue(filterValue);
258
+ criteria.validateOperator(operator, parsedFinalValue);
259
+ criteria.where(field, operator, parsedFinalValue, options);
265
260
  }
266
- continue;
267
261
  }
268
- if (operator === "in" || operator === "notIn") {
269
- parsedValue = value.split(",").map(parseQueryValue);
270
- criteria.where(field, operator, parsedValue, options);
271
- continue;
272
- }
273
- const parsedFinalValue = parseQueryValue(value);
274
- criteria.validateOperator(operator, parsedFinalValue);
275
- criteria.where(field, operator, parsedFinalValue, options);
276
262
  }
277
263
  const page = query.page ? parseInt(query.page) : undefined;
278
264
  const limit = query.limit ? parseInt(query.limit) : undefined;
279
265
  if (page && limit) {
280
266
  criteria.paginate(page, limit);
281
267
  }
268
+ // 1. orderBy=["field:asc","field2:desc"]
282
269
  if (query.orderBy) {
283
- const sortParts = query.orderBy.split(",");
284
- sortParts.forEach((part) => {
285
- const [field, direction] = part.split(":");
286
- criteria.orderBy(field, direction || "asc");
287
- });
270
+ const orderByValue = query.orderBy;
271
+ if (typeof orderByValue === "string" &&
272
+ orderByValue.trim().startsWith("[")) {
273
+ try {
274
+ const orderArray = JSON.parse(orderByValue);
275
+ if (Array.isArray(orderArray)) {
276
+ orderArray.forEach((item) => {
277
+ const [field, direction] = item.split(":");
278
+ criteria.orderBy(field, direction || "asc");
279
+ });
280
+ }
281
+ }
282
+ catch {
283
+ throw new InvalidCriteriaError("Invalid JSON array format for orderBy", orderByValue);
284
+ }
285
+ }
286
+ else if (Array.isArray(orderByValue)) {
287
+ orderByValue.forEach((item) => {
288
+ const [field, direction] = item.split(":");
289
+ criteria.orderBy(field, direction || "asc");
290
+ });
291
+ }
292
+ // 2. orderBy="field:asc,field2:desc"
293
+ else if (typeof orderByValue === "string" && orderByValue.includes(":")) {
294
+ const sortParts = orderByValue.split(",");
295
+ sortParts.forEach((part) => {
296
+ const [field, direction] = part.split(":");
297
+ criteria.orderBy(field, direction || "asc");
298
+ });
299
+ }
300
+ // 3. orderBy="field" + orderDirection="asc"
301
+ else {
302
+ const direction = query.orderDirection || "asc";
303
+ criteria.orderBy(orderByValue, direction);
304
+ }
288
305
  }
289
- if (query.search && query.searchFields) {
290
- const fields = query.searchFields
291
- .split(",")
292
- .filter(Boolean);
293
- const resolvedFields = fields.map(criteria.resolveFieldPath);
294
- criteria.search(resolvedFields, query.search);
306
+ if (query.search && typeof query.search === "string") {
307
+ criteria.search(query.search);
295
308
  }
296
309
  return criteria;
297
310
  }
@@ -303,5 +316,16 @@ export class Criteria {
303
316
  throw new InvalidCriteriaError(`Operator "${operator}" is not valid for type "${typeof sanitizedValue}". Valid operators: ${validOps.join(", ")}`, operator);
304
317
  }
305
318
  }
319
+ parseFilterValue(value) {
320
+ if (typeof value === "string") {
321
+ try {
322
+ return JSON.parse(value);
323
+ }
324
+ catch {
325
+ throw new InvalidCriteriaError(`Invalid filter value`, value);
326
+ }
327
+ }
328
+ return parseQueryValue(value);
329
+ }
306
330
  }
307
331
  //# sourceMappingURL=criteria.js.map
@@ -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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"}
@@ -2,10 +2,10 @@
2
2
  * Domain Event Bus - Singleton pattern for event pub/sub
3
3
  */
4
4
  export class DomainEventBus {
5
- constructor() {
6
- this.handlers = new Map();
7
- this.wildcardHandlers = new Set();
8
- }
5
+ static instance;
6
+ handlers = new Map();
7
+ wildcardHandlers = new Set();
8
+ constructor() { }
9
9
  /**
10
10
  * Get the singleton instance
11
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"domain-event-bus.js","sourceRoot":"","sources":["../src/domain-event-bus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domain-event-bus.js","sourceRoot":"","sources":["../src/domain-event-bus.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,9 @@ import { Id } from "./id";
3
3
  * Base class for domain events
4
4
  */
5
5
  export class DomainEvent {
6
+ eventId;
7
+ occurredOn;
8
+ aggregateId;
6
9
  constructor(aggregateId) {
7
10
  this.eventId = this.generateEventId();
8
11
  this.occurredOn = new Date();
@@ -1 +1 @@
1
- {"version":3,"file":"domain-event.js","sourceRoot":"","sources":["../src/domain-event.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAE1B;;GAEG;AACH,MAAM,OAAgB,WAAW;IAK/B,YAAY,WAAwB;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW;YACd,WAAW,YAAY,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC/B,CAAC;IAEO,eAAe;QACrB,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YACzC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,GAAG,IAAI,CAAC,UAAU,EAAE;SACrB,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,UAAU;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
1
+ {"version":3,"file":"domain-event.js","sourceRoot":"","sources":["../src/domain-event.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAE1B;;GAEG;AACH,MAAM,OAAgB,WAAW;IACf,OAAO,CAAS;IAChB,UAAU,CAAO;IACjB,WAAW,CAAS;IAEpC,YAAY,WAAwB;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW;YACd,WAAW,YAAY,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC/B,CAAC;IAEO,eAAe;QACrB,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YACzC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,GAAG,IAAI,CAAC,UAAU,EAAE;SACrB,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,UAAU;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
@@ -18,6 +18,7 @@
18
18
  * ```
19
19
  */
20
20
  export class EntityChanges {
21
+ operations;
21
22
  constructor(operations) {
22
23
  this.operations = operations;
23
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"entity-changes.js","sourceRoot":"","sources":["../src/entity-changes.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,aAAa;IACxB,YAA6B,UAA0B;QAA1B,eAAU,GAAV,UAAU,CAAgB;IAAG,CAAC;IAE3D;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,UAAU;aACnB,MAAM,CAAC,CAAC,EAAE,EAA4B,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC;aAC9D,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,UAAU;aACnB,MAAM,CAAC,CAAC,EAAE,EAA4B,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC;aAC9D,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACZ,MAAM,EAAE,EAAE,CAAC,IAAI;YACf,OAAO,EAAE,EAAE,CAAC,aAAa;SAC1B,CAAC,CAAC,CAAC;IACR,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,UAAU;aACnB,MAAM,CAAC,CAAC,EAAE,EAA4B,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC;aAC9D,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU;aACnB,MAAM,CAAC,CAAC,EAAE,EAA4B,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC;aAC9D,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;aACpC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU;aACnB,MAAM,CAAC,CAAC,EAAE,EAA4B,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC;aAC9D,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU;aACnB,MAAM,CAAC,CAAC,EAAE,EAA4B,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC;aAC9D,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,IAAI,aAAa;QACf,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,MAAW;QAC3B,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAC9B,IAAI,MAAM,CAAC,EAAE,EAAE,KAAK;YAAE,OAAO,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC;QAC7C,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,EAAE,CAAC;QACpD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
1
+ {"version":3,"file":"entity-changes.js","sourceRoot":"","sources":["../src/entity-changes.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,40 @@
1
1
  import { Entity } from "./entity";
2
2
  import { ValueObject } from "./value-object";
3
+ /**
4
+ * Type of collection relationship.
5
+ * - 'owned': Parent owns the children (1:N). Delete parent = delete children.
6
+ * - 'reference': Parent references existing entities (N:N). Delete parent = unlink only.
7
+ */
8
+ export type CollectionType = "owned" | "reference";
9
+ /**
10
+ * Configuration for a collection (1:N or N:N relationship).
11
+ */
12
+ export interface CollectionConfig {
13
+ /**
14
+ * Type of relationship.
15
+ * - 'owned': Children are created/deleted with the parent (default for 1:N)
16
+ * - 'reference': Only the link is created/removed (for N:N)
17
+ * @default 'owned'
18
+ */
19
+ type: CollectionType;
20
+ /**
21
+ * Target entity name (required for 'reference' type).
22
+ * @example 'Tag'
23
+ */
24
+ entity?: string;
25
+ /**
26
+ * Junction table configuration (optional, for ORMs that need it like Drizzle).
27
+ * Prisma handles this automatically, so it's optional.
28
+ */
29
+ junction?: {
30
+ /** Junction table name (e.g., 'post_tags', '_PostToTag') */
31
+ table: string;
32
+ /** FK field pointing to the source entity (e.g., 'post_id') */
33
+ sourceKey: string;
34
+ /** FK field pointing to the target entity (e.g., 'tag_id') */
35
+ targetKey: string;
36
+ };
37
+ }
3
38
  /**
4
39
  * Mapping schema for a domain entity.
5
40
  */
@@ -15,7 +50,7 @@ export interface EntitySchema {
15
50
  */
16
51
  fields?: Record<string, string>;
17
52
  /**
18
- * FK configuration for parent relation.
53
+ * FK configuration for parent relation (1:N owned).
19
54
  */
20
55
  parentFk?: {
21
56
  /** Name of the FK field in the database (e.g., 'author_id') */
@@ -23,6 +58,18 @@ export interface EntitySchema {
23
58
  /** Name of the parent entity (e.g., 'User') */
24
59
  parentEntity: string;
25
60
  };
61
+ /**
62
+ * Collection configurations for this entity's relations.
63
+ * Key is the property name in the domain entity.
64
+ * @example
65
+ * ```typescript
66
+ * collections: {
67
+ * comments: { type: 'owned' },
68
+ * tags: { type: 'reference', entity: 'Tag' }
69
+ * }
70
+ * ```
71
+ */
72
+ collections?: Record<string, CollectionConfig>;
26
73
  }
27
74
  /**
28
75
  * Result of entity mapping.
@@ -46,11 +93,15 @@ export interface MappedEntityData {
46
93
  * table: 'blog_posts',
47
94
  * fields: { content: 'post_content' },
48
95
  * parentFk: { field: 'author_id', parentEntity: 'User' },
96
+ * collections: {
97
+ * comments: { type: 'owned' },
98
+ * tags: { type: 'reference', entity: 'Tag' }
99
+ * }
49
100
  * });
50
101
  *
51
102
  * const table = registry.getTable('Post'); // 'blog_posts'
52
- * const mapped = registry.mapFields('User', { email: 'test@test.com' });
53
- * // { user_email: 'test@test.com' }
103
+ * const tagConfig = registry.getCollectionConfig('Post', 'tags');
104
+ * // { type: 'reference', entity: 'Tag' }
54
105
  * ```
55
106
  */
56
107
  export declare class EntitySchemaRegistry {
@@ -73,6 +124,15 @@ export declare class EntitySchemaRegistry {
73
124
  * @throws Error if the entity is not registered.
74
125
  */
75
126
  getSchema(entity: string): EntitySchema;
127
+ /**
128
+ * Gets all registered schemas.
129
+ */
130
+ getAllSchemas(): EntitySchema[];
131
+ /**
132
+ * Tries to get the schema of an entity, returns null if not found.
133
+ * @param entity - Entity name.
134
+ */
135
+ tryGetSchema(entity: string): EntitySchema | null;
76
136
  /**
77
137
  * Checks if an entity is registered.
78
138
  * @param entity - Entity name.
@@ -128,6 +188,70 @@ export declare class EntitySchemaRegistry {
128
188
  * @param entity - Entity name.
129
189
  */
130
190
  getParentFkField(entity: string): string | null;
191
+ /**
192
+ * Gets the collection configuration for a specific field.
193
+ *
194
+ * @param entity - Parent entity name (e.g., 'Post')
195
+ * @param fieldName - Collection field name (e.g., 'tags')
196
+ * @returns CollectionConfig or null if not configured
197
+ *
198
+ * @example
199
+ * ```typescript
200
+ * const config = registry.getCollectionConfig('Post', 'tags');
201
+ * if (config?.type === 'reference') {
202
+ * // Handle N:N relation - use connect/disconnect
203
+ * } else {
204
+ * // Handle 1:N relation - use create/delete
205
+ * }
206
+ * ```
207
+ */
208
+ getCollectionConfig(entity: string, fieldName: string): CollectionConfig | null;
209
+ /**
210
+ * Checks if a collection is a reference type (N:N).
211
+ *
212
+ * @param entity - Parent entity name
213
+ * @param fieldName - Collection field name
214
+ * @returns true if the collection is a reference (N:N), false otherwise
215
+ *
216
+ * @example
217
+ * ```typescript
218
+ * if (registry.isReferenceCollection('Post', 'tags')) {
219
+ * // Use connect/disconnect instead of create/delete
220
+ * }
221
+ * ```
222
+ */
223
+ isReferenceCollection(entity: string, fieldName: string): boolean;
224
+ /**
225
+ * Checks if a collection is owned (1:N).
226
+ * Returns true if explicitly configured as 'owned' or if not configured at all.
227
+ *
228
+ * @param entity - Parent entity name
229
+ * @param fieldName - Collection field name
230
+ * @returns true if the collection is owned (1:N), false if reference
231
+ */
232
+ isOwnedCollection(entity: string, fieldName: string): boolean;
233
+ /**
234
+ * Gets all collections configured for an entity.
235
+ *
236
+ * @param entity - Entity name
237
+ * @returns Record of field names to collection configs, or empty object
238
+ */
239
+ getCollections(entity: string): Record<string, CollectionConfig>;
240
+ /**
241
+ * Gets all reference (N:N) collections for an entity.
242
+ *
243
+ * @param entity - Entity name
244
+ * @returns Array of field names that are reference collections
245
+ */
246
+ getReferenceCollections(entity: string): string[];
247
+ /**
248
+ * Gets the junction table configuration for a reference collection.
249
+ *
250
+ * @param entity - Parent entity name
251
+ * @param fieldName - Collection field name
252
+ * @returns Junction config or null
253
+ */
254
+ getJunctionConfig(entity: string, fieldName: string): CollectionConfig["junction"] | null;
131
255
  /**
132
256
  * Lists all registered entities.
133
257
  */
@@ -144,5 +268,15 @@ export declare class EntitySchemaRegistry {
144
268
  * Normalizes a value for persistence.
145
269
  */
146
270
  private normalizeValue;
271
+ /**
272
+ * Validates that a relation field exists in the entity's collections.
273
+ *
274
+ * @param entity - Parent entity name
275
+ * @param relationField - Relation field to validate
276
+ * @throws ConfigurationError if the field doesn't exist
277
+ *
278
+ */
279
+ validateRelationField(entity: string, relationField: string): void;
280
+ private findSimilarNames;
147
281
  }
148
282
  //# sourceMappingURL=entity-schema-registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity-schema-registry.d.ts","sourceRoot":"","sources":["../src/entity-schema-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC;;OAEG;IACH,QAAQ,CAAC,EAAE;QACT,+DAA+D;QAC/D,KAAK,EAAE,MAAM,CAAC;QACd,+CAA+C;QAC/C,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAmC;IAElD;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAUpC;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI;IAK1C;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAWvC;;;OAGG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI5B;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIhC;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAIpD;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAKvD;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,gBAAgB;IAWtE;;;;;;OAMG;IACH,SAAS,CACP,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAC3C,gBAAgB;IAkBnB;;;;;;OAMG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAM5E;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAK9C;;;OAGG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAK/C;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAIjC;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;OAEG;IACH,OAAO,CAAC,cAAc;CASvB"}
1
+ {"version":3,"file":"entity-schema-registry.d.ts","sourceRoot":"","sources":["../src/entity-schema-registry.ts"],"names":[],"mappings":"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"}