@woltz/rich-domain 1.8.1 → 1.8.2

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 (175) hide show
  1. package/README.md +106 -47
  2. package/dist/cjs/core/base-aggregate.d.ts +39 -0
  3. package/dist/cjs/core/base-aggregate.d.ts.map +1 -0
  4. package/dist/cjs/core/base-aggregate.js +57 -0
  5. package/dist/cjs/core/base-aggregate.js.map +1 -0
  6. package/dist/cjs/core/base-entity.d.ts +3 -32
  7. package/dist/cjs/core/base-entity.d.ts.map +1 -1
  8. package/dist/cjs/core/base-entity.js +0 -44
  9. package/dist/cjs/core/base-entity.js.map +1 -1
  10. package/dist/cjs/core/entity.d.ts +3 -2
  11. package/dist/cjs/core/entity.d.ts.map +1 -1
  12. package/dist/cjs/core/entity.js +2 -1
  13. package/dist/cjs/core/entity.js.map +1 -1
  14. package/dist/cjs/core/index.d.ts +1 -0
  15. package/dist/cjs/core/index.d.ts.map +1 -1
  16. package/dist/cjs/core/index.js +1 -0
  17. package/dist/cjs/core/index.js.map +1 -1
  18. package/dist/cjs/core/value-object.d.ts +0 -18
  19. package/dist/cjs/core/value-object.d.ts.map +1 -1
  20. package/dist/cjs/core/value-object.js +0 -25
  21. package/dist/cjs/core/value-object.js.map +1 -1
  22. package/dist/esm/core/base-aggregate.d.ts +39 -0
  23. package/dist/esm/core/base-aggregate.d.ts.map +1 -0
  24. package/dist/esm/core/base-aggregate.js +53 -0
  25. package/dist/esm/core/base-aggregate.js.map +1 -0
  26. package/dist/esm/core/base-entity.d.ts +3 -32
  27. package/dist/esm/core/base-entity.d.ts.map +1 -1
  28. package/dist/esm/core/base-entity.js +0 -44
  29. package/dist/esm/core/base-entity.js.map +1 -1
  30. package/dist/esm/core/entity.d.ts +3 -2
  31. package/dist/esm/core/entity.d.ts.map +1 -1
  32. package/dist/esm/core/entity.js +2 -1
  33. package/dist/esm/core/entity.js.map +1 -1
  34. package/dist/esm/core/index.d.ts +1 -0
  35. package/dist/esm/core/index.d.ts.map +1 -1
  36. package/dist/esm/core/index.js +1 -0
  37. package/dist/esm/core/index.js.map +1 -1
  38. package/dist/esm/core/value-object.d.ts +0 -18
  39. package/dist/esm/core/value-object.d.ts.map +1 -1
  40. package/dist/esm/core/value-object.js +0 -25
  41. package/dist/esm/core/value-object.js.map +1 -1
  42. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  43. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  44. package/dist/tsconfig.types.tsbuildinfo +1 -1
  45. package/dist/types/core/base-aggregate.d.ts +39 -0
  46. package/dist/types/core/base-aggregate.d.ts.map +1 -0
  47. package/dist/types/core/base-entity.d.ts +3 -32
  48. package/dist/types/core/base-entity.d.ts.map +1 -1
  49. package/dist/types/core/entity.d.ts +3 -2
  50. package/dist/types/core/entity.d.ts.map +1 -1
  51. package/dist/types/core/index.d.ts +1 -0
  52. package/dist/types/core/index.d.ts.map +1 -1
  53. package/dist/types/core/value-object.d.ts +0 -18
  54. package/dist/types/core/value-object.d.ts.map +1 -1
  55. package/package.json +1 -1
  56. package/dist/cjs/aggregate-changes.d.ts +0 -206
  57. package/dist/cjs/aggregate-changes.d.ts.map +0 -1
  58. package/dist/cjs/aggregate-changes.js +0 -365
  59. package/dist/cjs/aggregate-changes.js.map +0 -1
  60. package/dist/cjs/base-entity.d.ts +0 -90
  61. package/dist/cjs/base-entity.d.ts.map +0 -1
  62. package/dist/cjs/base-entity.js +0 -331
  63. package/dist/cjs/base-entity.js.map +0 -1
  64. package/dist/cjs/change-tracker.d.ts +0 -96
  65. package/dist/cjs/change-tracker.d.ts.map +0 -1
  66. package/dist/cjs/change-tracker.js +0 -789
  67. package/dist/cjs/change-tracker.js.map +0 -1
  68. package/dist/cjs/crypto.d.ts +0 -3
  69. package/dist/cjs/crypto.d.ts.map +0 -1
  70. package/dist/cjs/crypto.js +0 -32
  71. package/dist/cjs/crypto.js.map +0 -1
  72. package/dist/cjs/domain-event.d.ts +0 -23
  73. package/dist/cjs/domain-event.d.ts.map +0 -1
  74. package/dist/cjs/domain-event.js +0 -36
  75. package/dist/cjs/domain-event.js.map +0 -1
  76. package/dist/cjs/entity-changes.d.ts +0 -84
  77. package/dist/cjs/entity-changes.d.ts.map +0 -1
  78. package/dist/cjs/entity-changes.js +0 -136
  79. package/dist/cjs/entity-changes.js.map +0 -1
  80. package/dist/cjs/entity-schema-registry.d.ts +0 -282
  81. package/dist/cjs/entity-schema-registry.d.ts.map +0 -1
  82. package/dist/cjs/entity-schema-registry.js +0 -372
  83. package/dist/cjs/entity-schema-registry.js.map +0 -1
  84. package/dist/cjs/entity.d.ts +0 -7
  85. package/dist/cjs/entity.d.ts.map +0 -1
  86. package/dist/cjs/entity.js +0 -11
  87. package/dist/cjs/entity.js.map +0 -1
  88. package/dist/cjs/id.d.ts +0 -59
  89. package/dist/cjs/id.d.ts.map +0 -1
  90. package/dist/cjs/id.js +0 -92
  91. package/dist/cjs/id.js.map +0 -1
  92. package/dist/cjs/mapper.d.ts +0 -4
  93. package/dist/cjs/mapper.d.ts.map +0 -1
  94. package/dist/cjs/mapper.js +0 -7
  95. package/dist/cjs/mapper.js.map +0 -1
  96. package/dist/cjs/paginated-result.d.ts +0 -54
  97. package/dist/cjs/paginated-result.d.ts.map +0 -1
  98. package/dist/cjs/paginated-result.js +0 -197
  99. package/dist/cjs/paginated-result.js.map +0 -1
  100. package/dist/cjs/value-object.d.ts +0 -49
  101. package/dist/cjs/value-object.d.ts.map +0 -1
  102. package/dist/cjs/value-object.js +0 -129
  103. package/dist/cjs/value-object.js.map +0 -1
  104. package/dist/esm/aggregate-changes.d.ts +0 -206
  105. package/dist/esm/aggregate-changes.d.ts.map +0 -1
  106. package/dist/esm/aggregate-changes.js +0 -361
  107. package/dist/esm/aggregate-changes.js.map +0 -1
  108. package/dist/esm/base-entity.d.ts +0 -90
  109. package/dist/esm/base-entity.d.ts.map +0 -1
  110. package/dist/esm/base-entity.js +0 -327
  111. package/dist/esm/base-entity.js.map +0 -1
  112. package/dist/esm/change-tracker.d.ts +0 -96
  113. package/dist/esm/change-tracker.d.ts.map +0 -1
  114. package/dist/esm/change-tracker.js +0 -785
  115. package/dist/esm/change-tracker.js.map +0 -1
  116. package/dist/esm/crypto.d.ts +0 -3
  117. package/dist/esm/crypto.d.ts.map +0 -1
  118. package/dist/esm/crypto.js +0 -29
  119. package/dist/esm/crypto.js.map +0 -1
  120. package/dist/esm/domain-event.d.ts +0 -23
  121. package/dist/esm/domain-event.d.ts.map +0 -1
  122. package/dist/esm/domain-event.js +0 -32
  123. package/dist/esm/domain-event.js.map +0 -1
  124. package/dist/esm/entity-changes.d.ts +0 -84
  125. package/dist/esm/entity-changes.d.ts.map +0 -1
  126. package/dist/esm/entity-changes.js +0 -132
  127. package/dist/esm/entity-changes.js.map +0 -1
  128. package/dist/esm/entity-schema-registry.d.ts +0 -282
  129. package/dist/esm/entity-schema-registry.d.ts.map +0 -1
  130. package/dist/esm/entity-schema-registry.js +0 -368
  131. package/dist/esm/entity-schema-registry.js.map +0 -1
  132. package/dist/esm/entity.d.ts +0 -7
  133. package/dist/esm/entity.d.ts.map +0 -1
  134. package/dist/esm/entity.js +0 -6
  135. package/dist/esm/entity.js.map +0 -1
  136. package/dist/esm/id.d.ts +0 -59
  137. package/dist/esm/id.d.ts.map +0 -1
  138. package/dist/esm/id.js +0 -85
  139. package/dist/esm/id.js.map +0 -1
  140. package/dist/esm/mapper.d.ts +0 -4
  141. package/dist/esm/mapper.d.ts.map +0 -1
  142. package/dist/esm/mapper.js +0 -3
  143. package/dist/esm/mapper.js.map +0 -1
  144. package/dist/esm/paginated-result.d.ts +0 -54
  145. package/dist/esm/paginated-result.d.ts.map +0 -1
  146. package/dist/esm/paginated-result.js +0 -193
  147. package/dist/esm/paginated-result.js.map +0 -1
  148. package/dist/esm/value-object.d.ts +0 -49
  149. package/dist/esm/value-object.d.ts.map +0 -1
  150. package/dist/esm/value-object.js +0 -125
  151. package/dist/esm/value-object.js.map +0 -1
  152. package/dist/types/aggregate-changes.d.ts +0 -206
  153. package/dist/types/aggregate-changes.d.ts.map +0 -1
  154. package/dist/types/base-entity.d.ts +0 -90
  155. package/dist/types/base-entity.d.ts.map +0 -1
  156. package/dist/types/change-tracker.d.ts +0 -96
  157. package/dist/types/change-tracker.d.ts.map +0 -1
  158. package/dist/types/crypto.d.ts +0 -3
  159. package/dist/types/crypto.d.ts.map +0 -1
  160. package/dist/types/domain-event.d.ts +0 -23
  161. package/dist/types/domain-event.d.ts.map +0 -1
  162. package/dist/types/entity-changes.d.ts +0 -84
  163. package/dist/types/entity-changes.d.ts.map +0 -1
  164. package/dist/types/entity-schema-registry.d.ts +0 -282
  165. package/dist/types/entity-schema-registry.d.ts.map +0 -1
  166. package/dist/types/entity.d.ts +0 -7
  167. package/dist/types/entity.d.ts.map +0 -1
  168. package/dist/types/id.d.ts +0 -59
  169. package/dist/types/id.d.ts.map +0 -1
  170. package/dist/types/mapper.d.ts +0 -4
  171. package/dist/types/mapper.d.ts.map +0 -1
  172. package/dist/types/paginated-result.d.ts +0 -62
  173. package/dist/types/paginated-result.d.ts.map +0 -1
  174. package/dist/types/value-object.d.ts +0 -49
  175. package/dist/types/value-object.d.ts.map +0 -1
package/README.md CHANGED
@@ -35,15 +35,13 @@ import { Aggregate, Entity, Id } from "@woltz/rich-domain";
35
35
  import { z } from "zod";
36
36
 
37
37
  // Value Object
38
- class Email extends ValueObject<{ value: string }> {
38
+ class Email extends ValueObject<string> {
39
39
  protected static validation = {
40
- schema: z.object({
41
- value: z.string().email("Invalid email format"),
42
- }),
40
+ schema: z.string().email("Invalid email format"),
43
41
  };
44
42
 
45
- get value() {
46
- return this.props.value;
43
+ getDomain(): string {
44
+ return this.value.split("@")[1];
47
45
  }
48
46
  }
49
47
 
@@ -109,7 +107,7 @@ Changes are tracked automatically - no manual tracking needed:
109
107
  // Load existing user
110
108
  const user = new User({
111
109
  id: Id.from("user-123"),
112
- email: new Email({ value: "john@example.com" }),
110
+ email: new Email("john@example.com"),
113
111
  name: "John Doe",
114
112
  posts: [
115
113
  new Post({
@@ -240,30 +238,87 @@ Add validation and side effects at key points:
240
238
  class Product extends Aggregate<ProductProps> {
241
239
  protected static validation = {
242
240
  schema: ProductSchema,
243
- hooks: {
244
- onCreate: (props) => {
245
- console.log(`Product created: ${props.name}`);
246
- },
247
- onBeforeUpdate: (current, updates) => {
248
- // Prevent price changes on inactive products
249
- if (current.status === "inactive" && "price" in updates) {
250
- delete updates.price;
251
- }
252
- },
241
+ };
242
+
243
+ protected static hooks = {
244
+ onBeforeCreate: (props) => {
245
+ // Set default values before validation
246
+ if (!props.createdAt) {
247
+ props.createdAt = new Date();
248
+ }
249
+ },
250
+
251
+ onCreate: (entity) => {
252
+ console.log(`Product created: ${entity.name}`);
253
+ },
254
+
255
+ onBeforeUpdate: (entity, snapshot) => {
256
+ // Prevent price changes on inactive products
257
+ if (snapshot.status === "inactive" && entity.price !== snapshot.price) {
258
+ return false; // Reject the change
259
+ }
260
+ return true;
253
261
  },
254
- rules: (props) => {
255
- if (props.price > 1000 && props.stock === 0) {
256
- throw new ValidationError(
257
- "Product",
258
- "stock",
259
- "Premium products must have stock available"
260
- );
262
+
263
+ rules: (entity) => {
264
+ if (entity.price > 1000 && entity.stock === 0) {
265
+ throw new ValidationError([{
266
+ path: ["stock"],
267
+ message: "Premium products must have stock available"
268
+ }]);
261
269
  }
262
270
  },
263
271
  };
264
272
  }
265
273
  ```
266
274
 
275
+ ### Optional Input Properties
276
+
277
+ Make properties optional at construction but required in the entity:
278
+
279
+ ```typescript
280
+ const userSchema = z.object({
281
+ id: z.custom<Id>(),
282
+ email: z.string().email(),
283
+ password: z.string().min(8), // Required in entity
284
+ createdAt: z.date(), // Required in entity
285
+ });
286
+
287
+ type UserProps = z.infer<typeof userSchema>;
288
+
289
+ // Second generic makes 'password' and 'createdAt' optional at input
290
+ class User extends Aggregate<UserProps, "password" | "createdAt"> {
291
+ protected static validation = { schema: userSchema };
292
+
293
+ protected static hooks = {
294
+ onBeforeCreate: (props) => {
295
+ // Generate values before validation
296
+ if (!props.password) {
297
+ props.password = generateEncryptedPassword();
298
+ }
299
+ if (!props.createdAt) {
300
+ props.createdAt = new Date();
301
+ }
302
+ },
303
+ };
304
+
305
+ get email() {
306
+ return this.props.email;
307
+ }
308
+ }
309
+
310
+ // ✅ Works without password and createdAt
311
+ const user = new User({
312
+ email: "user@example.com",
313
+ });
314
+
315
+ // ✅ Also works with explicit values
316
+ const customUser = new User({
317
+ email: "user@example.com",
318
+ password: "custom-pass-12345678",
319
+ });
320
+ ```
321
+
267
322
  ### Domain Events
268
323
 
269
324
  Communicate across aggregate boundaries:
@@ -308,43 +363,47 @@ order.clearEvents();
308
363
 
309
364
  ### Value Objects
310
365
 
311
- Immutable objects compared by value:
366
+ Immutable wrappers for primitive values with domain behavior:
312
367
 
313
368
  ```typescript
314
- import { ValueObject } from "@woltz/rich-domain";
369
+ import { ValueObject, VOHooks, throwValidationError } from "@woltz/rich-domain";
315
370
 
316
- class Money extends ValueObject<{ amount: number; currency: string }> {
371
+ class Price extends ValueObject<number> {
317
372
  protected static validation = {
318
- schema: z.object({
319
- amount: z.number().positive(),
320
- currency: z.enum(["USD", "EUR", "BRL"]),
321
- }),
373
+ schema: z.number().positive("Price must be positive"),
322
374
  };
323
375
 
324
- add(other: Money): Money {
325
- if (this.props.currency !== other.props.currency) {
326
- throw new DomainError("Cannot add different currencies");
327
- }
328
-
329
- return this.clone({
330
- amount: this.props.amount + other.props.amount
331
- });
376
+ protected static hooks: VOHooks<number, Price> = {
377
+ rules: (price) => {
378
+ if (price.value > 1000000) {
379
+ throwValidationError("value", "Price cannot exceed 1,000,000");
380
+ }
381
+ },
382
+ };
383
+
384
+ addTax(taxRate: number): Price {
385
+ return this.clone(this.value * (1 + taxRate));
332
386
  }
333
387
 
334
- get amount() {
335
- return this.props.amount;
388
+ discount(percentage: number): Price {
389
+ return this.clone(this.value * (1 - percentage / 100));
336
390
  }
337
391
 
338
- get currency() {
339
- return this.props.currency;
392
+ format(currency: string = "USD"): string {
393
+ return new Intl.NumberFormat("en-US", {
394
+ style: "currency",
395
+ currency,
396
+ }).format(this.value);
340
397
  }
341
398
  }
342
399
 
343
- const price1 = new Money({ amount: 100, currency: "USD" });
344
- const price2 = new Money({ amount: 50, currency: "USD" });
345
- const total = price1.add(price2);
400
+ const price = new Price(99.99);
401
+ const withTax = price.addTax(0.08);
402
+ const discounted = price.discount(10);
346
403
 
347
- console.log(total.amount); // 150
404
+ console.log(price.format()); // "$99.99"
405
+ console.log(withTax.format()); // "$107.99"
406
+ console.log(discounted.format()); // "$89.99"
348
407
  ```
349
408
 
350
409
  ## Integration with ORMs
@@ -0,0 +1,39 @@
1
+ import { BaseEntity } from "./base-entity.js";
2
+ import { BaseProps, IDomainEvent, IDomainEventBus } from "../types/index.js";
3
+ /**
4
+ * Base class for Aggregates that adds domain event management capabilities.
5
+ * In Domain-Driven Design (DDD), only Aggregates (aggregate roots) should emit domain events.
6
+ * Regular Entities and Value Objects should NOT manage domain events.
7
+ */
8
+ export declare abstract class BaseAggregate<T extends BaseProps, TOptionalInput extends keyof T = never> extends BaseEntity<T, TOptionalInput> {
9
+ private domainEvents;
10
+ /**
11
+ * Add a domain event to this aggregate
12
+ */
13
+ protected addDomainEvent(event: IDomainEvent): void;
14
+ /**
15
+ * Dispatch all events through the event bus
16
+ */
17
+ dispatchAll(bus: IDomainEventBus): Promise<void>;
18
+ /**
19
+ * Get all uncommitted domain events
20
+ */
21
+ getUncommittedEvents(): IDomainEvent[];
22
+ /**
23
+ * Clear all domain events (call after publishing)
24
+ */
25
+ clearEvents(): void;
26
+ /**
27
+ * Check if aggregate has uncommitted events
28
+ */
29
+ hasUncommittedEvents(): boolean;
30
+ /**
31
+ * Get a domain event by name
32
+ */
33
+ getEvent(eventName: string): IDomainEvent | undefined;
34
+ /**
35
+ * Check if an event has been added to the aggregate
36
+ */
37
+ hasEvent(eventName: string): boolean;
38
+ }
39
+ //# sourceMappingURL=base-aggregate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-aggregate.d.ts","sourceRoot":"","sources":["../../../src/core/base-aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE7E;;;;GAIG;AACH,8BAAsB,aAAa,CACjC,CAAC,SAAS,SAAS,EACnB,cAAc,SAAS,MAAM,CAAC,GAAG,KAAK,CACtC,SAAQ,UAAU,CAAC,CAAC,EAAE,cAAc,CAAC;IACrC,OAAO,CAAC,YAAY,CAAsB;IAE1C;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAInD;;OAEG;IACU,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7D;;OAEG;IACH,oBAAoB,IAAI,YAAY,EAAE;IAItC;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIrD;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAGrC"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseAggregate = void 0;
4
+ const base_entity_js_1 = require("./base-entity.js");
5
+ /**
6
+ * Base class for Aggregates that adds domain event management capabilities.
7
+ * In Domain-Driven Design (DDD), only Aggregates (aggregate roots) should emit domain events.
8
+ * Regular Entities and Value Objects should NOT manage domain events.
9
+ */
10
+ class BaseAggregate extends base_entity_js_1.BaseEntity {
11
+ domainEvents = [];
12
+ /**
13
+ * Add a domain event to this aggregate
14
+ */
15
+ addDomainEvent(event) {
16
+ this.domainEvents.push(event);
17
+ }
18
+ /**
19
+ * Dispatch all events through the event bus
20
+ */
21
+ async dispatchAll(bus) {
22
+ await bus.publishAll(this.getUncommittedEvents());
23
+ this.clearEvents();
24
+ }
25
+ /**
26
+ * Get all uncommitted domain events
27
+ */
28
+ getUncommittedEvents() {
29
+ return [...this.domainEvents];
30
+ }
31
+ /**
32
+ * Clear all domain events (call after publishing)
33
+ */
34
+ clearEvents() {
35
+ this.domainEvents = [];
36
+ }
37
+ /**
38
+ * Check if aggregate has uncommitted events
39
+ */
40
+ hasUncommittedEvents() {
41
+ return this.domainEvents.length > 0;
42
+ }
43
+ /**
44
+ * Get a domain event by name
45
+ */
46
+ getEvent(eventName) {
47
+ return this.domainEvents.find((event) => event.eventName === eventName);
48
+ }
49
+ /**
50
+ * Check if an event has been added to the aggregate
51
+ */
52
+ hasEvent(eventName) {
53
+ return this.domainEvents.some((event) => event.eventName === eventName);
54
+ }
55
+ }
56
+ exports.BaseAggregate = BaseAggregate;
57
+ //# sourceMappingURL=base-aggregate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-aggregate.js","sourceRoot":"","sources":["../../../src/core/base-aggregate.ts"],"names":[],"mappings":";;;AAAA,qDAA8C;AAG9C;;;;GAIG;AACH,MAAsB,aAGpB,SAAQ,2BAA6B;IAC7B,YAAY,GAAmB,EAAE,CAAC;IAE1C;;OAEG;IACO,cAAc,CAAC,KAAmB;QAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,WAAW,CAAC,GAAoB;QAC3C,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,SAAiB;QACxB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,SAAiB;QACxB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IAC1E,CAAC;CACF;AAvDD,sCAuDC"}
@@ -1,7 +1,7 @@
1
1
  import { ValidationError } from "../validation-error.js";
2
- import { BaseProps, HistoryEntry, DeepJsonResult, EntityHooks, EntityValidation, IDomainEventBus, IDomainEvent } from "../types/index.js";
2
+ import { BaseProps, HistoryEntry, DeepJsonResult, EntityHooks, EntityValidation } from "../types/index.js";
3
3
  import { AggregateChanges, Id } from "./index";
4
- export declare abstract class BaseEntity<T extends BaseProps> {
4
+ export declare abstract class BaseEntity<T extends BaseProps, TOptionalInput extends keyof T = never> {
5
5
  private _props;
6
6
  private tracker;
7
7
  private proxiedProps;
@@ -9,10 +9,9 @@ export declare abstract class BaseEntity<T extends BaseProps> {
9
9
  private validationConfig;
10
10
  private entityHooks?;
11
11
  private entitySchema?;
12
- private domainEvents;
13
12
  protected static validation?: EntityValidation<any>;
14
13
  protected static hooks?: EntityHooks<any, any>;
15
- constructor(props: Omit<T, "id"> & {
14
+ constructor(props: Omit<T, TOptionalInput | "id"> & Partial<Pick<T, TOptionalInput>> & {
16
15
  id?: Id;
17
16
  });
18
17
  private validateProps;
@@ -53,14 +52,6 @@ export declare abstract class BaseEntity<T extends BaseProps> {
53
52
  * ```
54
53
  */
55
54
  getChanges<TEntityMap = Record<string, any>>(): AggregateChanges<TEntityMap>;
56
- /**
57
- * Get a domain event by name
58
- */
59
- getEvent(eventName: string): IDomainEvent | undefined;
60
- /**
61
- * Check if an event has been added to the entity
62
- */
63
- hasEvent(eventName: string): boolean;
64
55
  /**
65
56
  * Returns the change history (for debugging).
66
57
  */
@@ -75,26 +66,6 @@ export declare abstract class BaseEntity<T extends BaseProps> {
75
66
  * Call this after successfully persisting to the database.
76
67
  */
77
68
  markAsPersisted(): void;
78
- /**
79
- * Add a domain event to this entity
80
- */
81
- protected addDomainEvent(event: IDomainEvent): void;
82
- /**
83
- * Dispatch all events through the event bus
84
- */
85
- dispatchAll(bus: IDomainEventBus): Promise<void>;
86
- /**
87
- * Get all uncommitted domain events
88
- */
89
- getUncommittedEvents(): IDomainEvent[];
90
- /**
91
- * Clear all domain events (call after publishing)
92
- */
93
- clearEvents(): void;
94
- /**
95
- * Check if entity has uncommitted events
96
- */
97
- hasUncommittedEvents(): boolean;
98
69
  toJSON(): DeepJsonResult<T>;
99
70
  private deepToJson;
100
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base-entity.d.ts","sourceRoot":"","sources":["../../../src/core/base-entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,SAAS,EACT,YAAY,EACZ,cAAc,EACd,WAAW,EAGX,gBAAgB,EAChB,eAAe,EACf,YAAY,EACb,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAiB,gBAAgB,EAAE,EAAE,EAAe,MAAM,SAAS,CAAC;AAS3E,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;IAqD9C,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,cAAc;IAgBtB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IA4E7B,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,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIrD;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIpC;;OAEG;IACH,UAAU,IAAI,YAAY,EAAE;IAI5B;;;OAGG;IACH,WAAW,IAAI,IAAI;IAKnB;;;OAGG;IACH,eAAe,IAAI,IAAI;IAKvB;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAInD;;OAEG;IACU,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7D;;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;CAiBnB"}
1
+ {"version":3,"file":"base-entity.d.ts","sourceRoot":"","sources":["../../../src/core/base-entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,SAAS,EACT,YAAY,EACZ,cAAc,EACd,WAAW,EAGX,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAiB,gBAAgB,EAAE,EAAE,EAAe,MAAM,SAAS,CAAC;AAS3E,8BAAsB,UAAU,CAC9B,CAAC,SAAS,SAAS,EACnB,cAAc,SAAS,MAAM,CAAC,GAAG,KAAK;IAEtC,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;IAEzC,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;gBAG7C,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,GAChC;QAAE,EAAE,CAAC,EAAE,EAAE,CAAA;KAAE;IAsDf,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,cAAc;IAgBtB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IA4E7B,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;IAK5E;;OAEG;IACH,UAAU,IAAI,YAAY,EAAE;IAI5B;;;OAGG;IACH,WAAW,IAAI,IAAI;IAKnB;;;OAGG;IACH,eAAe,IAAI,IAAI;IAOvB,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC;IAI3B,OAAO,CAAC,UAAU;CAiBnB"}
@@ -16,7 +16,6 @@ class BaseEntity {
16
16
  validationConfig;
17
17
  entityHooks;
18
18
  entitySchema;
19
- domainEvents = [];
20
19
  static validation;
21
20
  static hooks;
22
21
  constructor(props) {
@@ -251,18 +250,6 @@ class BaseEntity {
251
250
  getChanges() {
252
251
  return this.tracker.getChanges();
253
252
  }
254
- /**
255
- * Get a domain event by name
256
- */
257
- getEvent(eventName) {
258
- return this.domainEvents.find((event) => event.eventName === eventName);
259
- }
260
- /**
261
- * Check if an event has been added to the entity
262
- */
263
- hasEvent(eventName) {
264
- return this.domainEvents.some((event) => event.eventName === eventName);
265
- }
266
253
  /**
267
254
  * Returns the change history (for debugging).
268
255
  */
@@ -285,37 +272,6 @@ class BaseEntity {
285
272
  this.markAsClean();
286
273
  this.id.markAsNotNew();
287
274
  }
288
- /**
289
- * Add a domain event to this entity
290
- */
291
- addDomainEvent(event) {
292
- this.domainEvents.push(event);
293
- }
294
- /**
295
- * Dispatch all events through the event bus
296
- */
297
- async dispatchAll(bus) {
298
- await bus.publishAll(this.getUncommittedEvents());
299
- this.clearEvents();
300
- }
301
- /**
302
- * Get all uncommitted domain events
303
- */
304
- getUncommittedEvents() {
305
- return [...this.domainEvents];
306
- }
307
- /**
308
- * Clear all domain events (call after publishing)
309
- */
310
- clearEvents() {
311
- this.domainEvents = [];
312
- }
313
- /**
314
- * Check if entity has uncommitted events
315
- */
316
- hasUncommittedEvents() {
317
- return this.domainEvents.length > 0;
318
- }
319
275
  toJSON() {
320
276
  return this.deepToJson(this._props);
321
277
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base-entity.js","sourceRoot":"","sources":["../../../src/core/base-entity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-entity.js","sourceRoot":"","sources":["../../../src/core/base-entity.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { BaseEntity } from "./base-entity.js";
2
+ import { BaseAggregate } from "./base-aggregate.js";
2
3
  import { BaseProps } from "../types/index.js";
3
- export declare class Entity<T extends BaseProps> extends BaseEntity<T> {
4
+ export declare class Entity<T extends BaseProps, TOptionalInput extends keyof T = never> extends BaseEntity<T, TOptionalInput> {
4
5
  }
5
- export declare class Aggregate<T extends BaseProps> extends BaseEntity<T> {
6
+ export declare class Aggregate<T extends BaseProps, TOptionalInput extends keyof T = never> extends BaseAggregate<T, TOptionalInput> {
6
7
  }
7
8
  //# sourceMappingURL=entity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../src/core/entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,MAAM,CAAC,CAAC,SAAS,SAAS,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;CAAG;AACjE,qBAAa,SAAS,CAAC,CAAC,SAAS,SAAS,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;CAAG"}
1
+ {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../src/core/entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,MAAM,CACjB,CAAC,SAAS,SAAS,EACnB,cAAc,SAAS,MAAM,CAAC,GAAG,KAAK,CACtC,SAAQ,UAAU,CAAC,CAAC,EAAE,cAAc,CAAC;CAAG;AAE1C,qBAAa,SAAS,CACpB,CAAC,SAAS,SAAS,EACnB,cAAc,SAAS,MAAM,CAAC,GAAG,KAAK,CACtC,SAAQ,aAAa,CAAC,CAAC,EAAE,cAAc,CAAC;CAAG"}
@@ -2,10 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Aggregate = exports.Entity = void 0;
4
4
  const base_entity_js_1 = require("./base-entity.js");
5
+ const base_aggregate_js_1 = require("./base-aggregate.js");
5
6
  class Entity extends base_entity_js_1.BaseEntity {
6
7
  }
7
8
  exports.Entity = Entity;
8
- class Aggregate extends base_entity_js_1.BaseEntity {
9
+ class Aggregate extends base_aggregate_js_1.BaseAggregate {
9
10
  }
10
11
  exports.Aggregate = Aggregate;
11
12
  //# sourceMappingURL=entity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../../src/core/entity.ts"],"names":[],"mappings":";;;AAAA,qDAA8C;AAG9C,MAAa,MAA4B,SAAQ,2BAAa;CAAG;AAAjE,wBAAiE;AACjE,MAAa,SAA+B,SAAQ,2BAAa;CAAG;AAApE,8BAAoE"}
1
+ {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../../src/core/entity.ts"],"names":[],"mappings":";;;AAAA,qDAA8C;AAC9C,2DAAoD;AAGpD,MAAa,MAGX,SAAQ,2BAA6B;CAAG;AAH1C,wBAG0C;AAE1C,MAAa,SAGX,SAAQ,iCAAgC;CAAG;AAH7C,8BAG6C"}
@@ -1,4 +1,5 @@
1
1
  export * from "./base-entity";
2
+ export * from "./base-aggregate";
2
3
  export * from "./aggregate-changes";
3
4
  export * from "./change-tracker";
4
5
  export * from "./domain-event";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,MAAM,CAAC;AACrB,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,MAAM,CAAC;AACrB,cAAc,gBAAgB,CAAC"}
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./base-entity"), exports);
18
+ __exportStar(require("./base-aggregate"), exports);
18
19
  __exportStar(require("./aggregate-changes"), exports);
19
20
  __exportStar(require("./change-tracker"), exports);
20
21
  __exportStar(require("./domain-event"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,sDAAoC;AACpC,mDAAiC;AACjC,iDAA+B;AAC/B,mDAAiC;AACjC,2CAAyB;AACzB,uCAAqB;AACrB,iDAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,mDAAiC;AACjC,sDAAoC;AACpC,mDAAiC;AACjC,iDAA+B;AAC/B,mDAAiC;AACjC,2CAAyB;AACzB,uCAAqB;AACrB,iDAA+B"}
@@ -1,12 +1,10 @@
1
1
  import { ValidationError } from "../validation-error.js";
2
- import { IDomainEvent } from "../index.js";
3
2
  import { VOHooks, EntityValidation, Primitive } from "../types/index.js";
4
3
  export declare abstract class ValueObject<T extends Primitive> {
5
4
  readonly value: T;
6
5
  private validationConfig;
7
6
  private domainHooks?;
8
7
  private domainSchema?;
9
- private domainEvents;
10
8
  protected static validation?: EntityValidation<any>;
11
9
  protected static hooks?: VOHooks<any, any>;
12
10
  constructor(value: T);
@@ -24,22 +22,6 @@ export declare abstract class ValueObject<T extends Primitive> {
24
22
  * Compare this ValueObject with another for equality based on their properties.
25
23
  */
26
24
  equals(other: ValueObject<T>): boolean;
27
- /**
28
- * Adds a domain event to this value object.
29
- */
30
- protected addDomainEvent(event: IDomainEvent): void;
31
- /**
32
- * Returns all uncommitted domain events.
33
- */
34
- getUncommittedEvents(): IDomainEvent[];
35
- /**
36
- * Clears all domain events (call after publishing).
37
- */
38
- clearEvents(): void;
39
- /**
40
- * Returns true if the value object has uncommitted events.
41
- */
42
- hasUncommittedEvents(): boolean;
43
25
  /**
44
26
  * Creates a new ValueObject with updated value.
45
27
  * ValueObjects are immutable, so this returns a new instance.
@@ -1 +1 @@
1
- {"version":3,"file":"value-object.d.ts","sourceRoot":"","sources":["../../../src/core/value-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,OAAO,EAGP,gBAAgB,EAChB,SAAS,EACV,MAAM,mBAAmB,CAAC;AAW3B,8BAAsB,WAAW,CAAC,CAAC,SAAS,SAAS;IACnD,SAAgB,KAAK,EAAG,CAAC,CAAC;IAC1B,OAAO,CAAC,gBAAgB,CAA6B;IAErD,OAAO,CAAC,WAAW,CAAC,CAAkB;IACtC,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,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAE/B,KAAK,EAAE,CAAC;IAmCpB,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,eAAe,GAAG,SAAS,CAElD;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO;IAKtC;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAInD;;OAEG;IACH,oBAAoB,IAAI,YAAY,EAAE;IAItC;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;;OAGG;IACH,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;CAIhC"}
1
+ {"version":3,"file":"value-object.d.ts","sourceRoot":"","sources":["../../../src/core/value-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,OAAO,EAGP,gBAAgB,EAChB,SAAS,EACV,MAAM,mBAAmB,CAAC;AAW3B,8BAAsB,WAAW,CAAC,CAAC,SAAS,SAAS;IACnD,SAAgB,KAAK,EAAG,CAAC,CAAC;IAC1B,OAAO,CAAC,gBAAgB,CAA6B;IAErD,OAAO,CAAC,WAAW,CAAC,CAAkB;IACtC,OAAO,CAAC,YAAY,CAAC,CAAoB;IAEzC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACpD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAE/B,KAAK,EAAE,CAAC;IAmCpB,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,eAAe,GAAG,SAAS,CAElD;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO;IAMtC;;;OAGG;IACH,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;CAIhC"}
@@ -13,7 +13,6 @@ class ValueObject {
13
13
  // @ts-expect-error - This is a private property
14
14
  domainHooks;
15
15
  domainSchema;
16
- domainEvents = [];
17
16
  static validation;
18
17
  static hooks;
19
18
  constructor(value) {
@@ -92,30 +91,6 @@ class ValueObject {
92
91
  return false;
93
92
  return this.value === other.value;
94
93
  }
95
- /**
96
- * Adds a domain event to this value object.
97
- */
98
- addDomainEvent(event) {
99
- this.domainEvents.push(event);
100
- }
101
- /**
102
- * Returns all uncommitted domain events.
103
- */
104
- getUncommittedEvents() {
105
- return [...this.domainEvents];
106
- }
107
- /**
108
- * Clears all domain events (call after publishing).
109
- */
110
- clearEvents() {
111
- this.domainEvents = [];
112
- }
113
- /**
114
- * Returns true if the value object has uncommitted events.
115
- */
116
- hasUncommittedEvents() {
117
- return this.domainEvents.length > 0;
118
- }
119
94
  /**
120
95
  * Creates a new ValueObject with updated value.
121
96
  * ValueObjects are immutable, so this returns a new instance.