@woltz/rich-domain 1.8.1 → 1.8.3

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 (199) 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 +8 -31
  7. package/dist/cjs/core/base-entity.d.ts.map +1 -1
  8. package/dist/cjs/core/base-entity.js +21 -43
  9. package/dist/cjs/core/base-entity.js.map +1 -1
  10. package/dist/cjs/core/change-tracker.d.ts +16 -1
  11. package/dist/cjs/core/change-tracker.d.ts.map +1 -1
  12. package/dist/cjs/core/change-tracker.js +69 -14
  13. package/dist/cjs/core/change-tracker.js.map +1 -1
  14. package/dist/cjs/core/entity.d.ts +3 -2
  15. package/dist/cjs/core/entity.d.ts.map +1 -1
  16. package/dist/cjs/core/entity.js +2 -1
  17. package/dist/cjs/core/entity.js.map +1 -1
  18. package/dist/cjs/core/index.d.ts +1 -0
  19. package/dist/cjs/core/index.d.ts.map +1 -1
  20. package/dist/cjs/core/index.js +1 -0
  21. package/dist/cjs/core/index.js.map +1 -1
  22. package/dist/cjs/core/value-object.d.ts +0 -18
  23. package/dist/cjs/core/value-object.d.ts.map +1 -1
  24. package/dist/cjs/core/value-object.js +0 -25
  25. package/dist/cjs/core/value-object.js.map +1 -1
  26. package/dist/cjs/repository/base-repository.d.ts +2 -0
  27. package/dist/cjs/repository/base-repository.d.ts.map +1 -1
  28. package/dist/cjs/repository/base-repository.js.map +1 -1
  29. package/dist/cjs/types/change-tracker.d.ts +2 -0
  30. package/dist/cjs/types/change-tracker.d.ts.map +1 -1
  31. package/dist/esm/core/base-aggregate.d.ts +39 -0
  32. package/dist/esm/core/base-aggregate.d.ts.map +1 -0
  33. package/dist/esm/core/base-aggregate.js +53 -0
  34. package/dist/esm/core/base-aggregate.js.map +1 -0
  35. package/dist/esm/core/base-entity.d.ts +8 -31
  36. package/dist/esm/core/base-entity.d.ts.map +1 -1
  37. package/dist/esm/core/base-entity.js +21 -43
  38. package/dist/esm/core/base-entity.js.map +1 -1
  39. package/dist/esm/core/change-tracker.d.ts +16 -1
  40. package/dist/esm/core/change-tracker.d.ts.map +1 -1
  41. package/dist/esm/core/change-tracker.js +69 -14
  42. package/dist/esm/core/change-tracker.js.map +1 -1
  43. package/dist/esm/core/entity.d.ts +3 -2
  44. package/dist/esm/core/entity.d.ts.map +1 -1
  45. package/dist/esm/core/entity.js +2 -1
  46. package/dist/esm/core/entity.js.map +1 -1
  47. package/dist/esm/core/index.d.ts +1 -0
  48. package/dist/esm/core/index.d.ts.map +1 -1
  49. package/dist/esm/core/index.js +1 -0
  50. package/dist/esm/core/index.js.map +1 -1
  51. package/dist/esm/core/value-object.d.ts +0 -18
  52. package/dist/esm/core/value-object.d.ts.map +1 -1
  53. package/dist/esm/core/value-object.js +0 -25
  54. package/dist/esm/core/value-object.js.map +1 -1
  55. package/dist/esm/repository/base-repository.d.ts +2 -0
  56. package/dist/esm/repository/base-repository.d.ts.map +1 -1
  57. package/dist/esm/repository/base-repository.js.map +1 -1
  58. package/dist/esm/types/change-tracker.d.ts +2 -0
  59. package/dist/esm/types/change-tracker.d.ts.map +1 -1
  60. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  61. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  62. package/dist/tsconfig.types.tsbuildinfo +1 -1
  63. package/dist/types/core/base-aggregate.d.ts +39 -0
  64. package/dist/types/core/base-aggregate.d.ts.map +1 -0
  65. package/dist/types/core/base-entity.d.ts +8 -31
  66. package/dist/types/core/base-entity.d.ts.map +1 -1
  67. package/dist/types/core/change-tracker.d.ts +16 -1
  68. package/dist/types/core/change-tracker.d.ts.map +1 -1
  69. package/dist/types/core/entity.d.ts +3 -2
  70. package/dist/types/core/entity.d.ts.map +1 -1
  71. package/dist/types/core/index.d.ts +1 -0
  72. package/dist/types/core/index.d.ts.map +1 -1
  73. package/dist/types/core/value-object.d.ts +0 -18
  74. package/dist/types/core/value-object.d.ts.map +1 -1
  75. package/dist/types/repository/base-repository.d.ts +2 -0
  76. package/dist/types/repository/base-repository.d.ts.map +1 -1
  77. package/dist/types/types/change-tracker.d.ts +2 -0
  78. package/dist/types/types/change-tracker.d.ts.map +1 -1
  79. package/package.json +1 -1
  80. package/dist/cjs/aggregate-changes.d.ts +0 -206
  81. package/dist/cjs/aggregate-changes.d.ts.map +0 -1
  82. package/dist/cjs/aggregate-changes.js +0 -365
  83. package/dist/cjs/aggregate-changes.js.map +0 -1
  84. package/dist/cjs/base-entity.d.ts +0 -90
  85. package/dist/cjs/base-entity.d.ts.map +0 -1
  86. package/dist/cjs/base-entity.js +0 -331
  87. package/dist/cjs/base-entity.js.map +0 -1
  88. package/dist/cjs/change-tracker.d.ts +0 -96
  89. package/dist/cjs/change-tracker.d.ts.map +0 -1
  90. package/dist/cjs/change-tracker.js +0 -789
  91. package/dist/cjs/change-tracker.js.map +0 -1
  92. package/dist/cjs/crypto.d.ts +0 -3
  93. package/dist/cjs/crypto.d.ts.map +0 -1
  94. package/dist/cjs/crypto.js +0 -32
  95. package/dist/cjs/crypto.js.map +0 -1
  96. package/dist/cjs/domain-event.d.ts +0 -23
  97. package/dist/cjs/domain-event.d.ts.map +0 -1
  98. package/dist/cjs/domain-event.js +0 -36
  99. package/dist/cjs/domain-event.js.map +0 -1
  100. package/dist/cjs/entity-changes.d.ts +0 -84
  101. package/dist/cjs/entity-changes.d.ts.map +0 -1
  102. package/dist/cjs/entity-changes.js +0 -136
  103. package/dist/cjs/entity-changes.js.map +0 -1
  104. package/dist/cjs/entity-schema-registry.d.ts +0 -282
  105. package/dist/cjs/entity-schema-registry.d.ts.map +0 -1
  106. package/dist/cjs/entity-schema-registry.js +0 -372
  107. package/dist/cjs/entity-schema-registry.js.map +0 -1
  108. package/dist/cjs/entity.d.ts +0 -7
  109. package/dist/cjs/entity.d.ts.map +0 -1
  110. package/dist/cjs/entity.js +0 -11
  111. package/dist/cjs/entity.js.map +0 -1
  112. package/dist/cjs/id.d.ts +0 -59
  113. package/dist/cjs/id.d.ts.map +0 -1
  114. package/dist/cjs/id.js +0 -92
  115. package/dist/cjs/id.js.map +0 -1
  116. package/dist/cjs/mapper.d.ts +0 -4
  117. package/dist/cjs/mapper.d.ts.map +0 -1
  118. package/dist/cjs/mapper.js +0 -7
  119. package/dist/cjs/mapper.js.map +0 -1
  120. package/dist/cjs/paginated-result.d.ts +0 -54
  121. package/dist/cjs/paginated-result.d.ts.map +0 -1
  122. package/dist/cjs/paginated-result.js +0 -197
  123. package/dist/cjs/paginated-result.js.map +0 -1
  124. package/dist/cjs/value-object.d.ts +0 -49
  125. package/dist/cjs/value-object.d.ts.map +0 -1
  126. package/dist/cjs/value-object.js +0 -129
  127. package/dist/cjs/value-object.js.map +0 -1
  128. package/dist/esm/aggregate-changes.d.ts +0 -206
  129. package/dist/esm/aggregate-changes.d.ts.map +0 -1
  130. package/dist/esm/aggregate-changes.js +0 -361
  131. package/dist/esm/aggregate-changes.js.map +0 -1
  132. package/dist/esm/base-entity.d.ts +0 -90
  133. package/dist/esm/base-entity.d.ts.map +0 -1
  134. package/dist/esm/base-entity.js +0 -327
  135. package/dist/esm/base-entity.js.map +0 -1
  136. package/dist/esm/change-tracker.d.ts +0 -96
  137. package/dist/esm/change-tracker.d.ts.map +0 -1
  138. package/dist/esm/change-tracker.js +0 -785
  139. package/dist/esm/change-tracker.js.map +0 -1
  140. package/dist/esm/crypto.d.ts +0 -3
  141. package/dist/esm/crypto.d.ts.map +0 -1
  142. package/dist/esm/crypto.js +0 -29
  143. package/dist/esm/crypto.js.map +0 -1
  144. package/dist/esm/domain-event.d.ts +0 -23
  145. package/dist/esm/domain-event.d.ts.map +0 -1
  146. package/dist/esm/domain-event.js +0 -32
  147. package/dist/esm/domain-event.js.map +0 -1
  148. package/dist/esm/entity-changes.d.ts +0 -84
  149. package/dist/esm/entity-changes.d.ts.map +0 -1
  150. package/dist/esm/entity-changes.js +0 -132
  151. package/dist/esm/entity-changes.js.map +0 -1
  152. package/dist/esm/entity-schema-registry.d.ts +0 -282
  153. package/dist/esm/entity-schema-registry.d.ts.map +0 -1
  154. package/dist/esm/entity-schema-registry.js +0 -368
  155. package/dist/esm/entity-schema-registry.js.map +0 -1
  156. package/dist/esm/entity.d.ts +0 -7
  157. package/dist/esm/entity.d.ts.map +0 -1
  158. package/dist/esm/entity.js +0 -6
  159. package/dist/esm/entity.js.map +0 -1
  160. package/dist/esm/id.d.ts +0 -59
  161. package/dist/esm/id.d.ts.map +0 -1
  162. package/dist/esm/id.js +0 -85
  163. package/dist/esm/id.js.map +0 -1
  164. package/dist/esm/mapper.d.ts +0 -4
  165. package/dist/esm/mapper.d.ts.map +0 -1
  166. package/dist/esm/mapper.js +0 -3
  167. package/dist/esm/mapper.js.map +0 -1
  168. package/dist/esm/paginated-result.d.ts +0 -54
  169. package/dist/esm/paginated-result.d.ts.map +0 -1
  170. package/dist/esm/paginated-result.js +0 -193
  171. package/dist/esm/paginated-result.js.map +0 -1
  172. package/dist/esm/value-object.d.ts +0 -49
  173. package/dist/esm/value-object.d.ts.map +0 -1
  174. package/dist/esm/value-object.js +0 -125
  175. package/dist/esm/value-object.js.map +0 -1
  176. package/dist/types/aggregate-changes.d.ts +0 -206
  177. package/dist/types/aggregate-changes.d.ts.map +0 -1
  178. package/dist/types/base-entity.d.ts +0 -90
  179. package/dist/types/base-entity.d.ts.map +0 -1
  180. package/dist/types/change-tracker.d.ts +0 -96
  181. package/dist/types/change-tracker.d.ts.map +0 -1
  182. package/dist/types/crypto.d.ts +0 -3
  183. package/dist/types/crypto.d.ts.map +0 -1
  184. package/dist/types/domain-event.d.ts +0 -23
  185. package/dist/types/domain-event.d.ts.map +0 -1
  186. package/dist/types/entity-changes.d.ts +0 -84
  187. package/dist/types/entity-changes.d.ts.map +0 -1
  188. package/dist/types/entity-schema-registry.d.ts +0 -282
  189. package/dist/types/entity-schema-registry.d.ts.map +0 -1
  190. package/dist/types/entity.d.ts +0 -7
  191. package/dist/types/entity.d.ts.map +0 -1
  192. package/dist/types/id.d.ts +0 -59
  193. package/dist/types/id.d.ts.map +0 -1
  194. package/dist/types/mapper.d.ts +0 -4
  195. package/dist/types/mapper.d.ts.map +0 -1
  196. package/dist/types/paginated-result.d.ts +0 -62
  197. package/dist/types/paginated-result.d.ts.map +0 -1
  198. package/dist/types/value-object.d.ts +0 -49
  199. 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,48 +52,26 @@ 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
  */
67
58
  getHistory(): HistoryEntry[];
68
59
  /**
69
60
  * Clears history and marks entity as "clean".
70
- * Call this after successfully persisting to the database.
61
+ * Recursively marks all nested entities as clean.
71
62
  */
72
63
  markAsClean(): void;
73
64
  /**
74
65
  * Clears history, marks entity as "clean" and marks the Id as not new.
66
+ * Recursively marks all nested entities as persisted.
75
67
  * Call this after successfully persisting to the database.
76
68
  */
77
69
  markAsPersisted(): void;
78
70
  /**
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
71
+ * Iterates over all nested entities (direct children only) and executes a callback.
72
+ * This includes entities in arrays and single entity properties.
96
73
  */
97
- hasUncommittedEvents(): boolean;
74
+ private forEachNestedEntity;
98
75
  toJSON(): DeepJsonResult<T>;
99
76
  private deepToJson;
100
77
  }
@@ -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;IAMnB;;;;OAIG;IACH,eAAe,IAAI,IAAI;IAOvB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAgB3B,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
  */
@@ -271,50 +258,41 @@ class BaseEntity {
271
258
  }
272
259
  /**
273
260
  * Clears history and marks entity as "clean".
274
- * Call this after successfully persisting to the database.
261
+ * Recursively marks all nested entities as clean.
275
262
  */
276
263
  markAsClean() {
277
264
  this.tracker.markAsClean();
278
265
  this.takeSnapshot();
266
+ this.forEachNestedEntity((entity) => entity.markAsClean());
279
267
  }
280
268
  /**
281
269
  * Clears history, marks entity as "clean" and marks the Id as not new.
270
+ * Recursively marks all nested entities as persisted.
282
271
  * Call this after successfully persisting to the database.
283
272
  */
284
273
  markAsPersisted() {
285
- this.markAsClean();
274
+ this.tracker.markAsClean();
275
+ this.takeSnapshot();
286
276
  this.id.markAsNotNew();
277
+ this.forEachNestedEntity((entity) => entity.markAsPersisted());
287
278
  }
288
279
  /**
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
280
+ * Iterates over all nested entities (direct children only) and executes a callback.
281
+ * This includes entities in arrays and single entity properties.
303
282
  */
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;
283
+ forEachNestedEntity(callback) {
284
+ for (const value of Object.values(this._props)) {
285
+ if (value instanceof BaseEntity) {
286
+ callback(value);
287
+ }
288
+ else if (Array.isArray(value)) {
289
+ for (const item of value) {
290
+ if (item instanceof BaseEntity) {
291
+ callback(item);
292
+ }
293
+ }
294
+ }
295
+ }
318
296
  }
319
297
  toJSON() {
320
298
  return this.deepToJson(this._props);
@@ -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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"}
@@ -47,7 +47,14 @@ export declare class ChangeTracker {
47
47
  * Returns all detected changes as AggregateChanges.
48
48
  */
49
49
  getChanges<TEntityMap = Record<string, any>>(): AggregateChanges<TEntityMap>;
50
- private analyzeRootChanges;
50
+ /**
51
+ * Collects all root-level changes: primitive properties and primitive arrays.
52
+ */
53
+ private collectRootChanges;
54
+ /**
55
+ * Compares two arrays for equality (shallow comparison for primitives).
56
+ */
57
+ private arraysEqual;
51
58
  private analyzeCollectionChanges;
52
59
  /**
53
60
  * Recursively marks all nested items as created when a parent is created.
@@ -82,6 +89,14 @@ export declare class ChangeTracker {
82
89
  private getItemKey;
83
90
  private getEntityId;
84
91
  private getEntityName;
92
+ /**
93
+ * Checks if a value is a primitive (string, number, boolean, null, undefined, symbol, bigint).
94
+ */
95
+ private isPrimitiveValue;
96
+ /**
97
+ * Checks if an array contains only primitive values.
98
+ */
99
+ private isPrimitiveArray;
85
100
  private isEqual;
86
101
  private deepEqual;
87
102
  private hasChanged;
@@ -1 +1 @@
1
- {"version":3,"file":"change-tracker.d.ts","sourceRoot":"","sources":["../../../src/core/change-tracker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,YAAY,EAAe,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,OAAO,GAAG,IAAI,CAAC;AAEhF;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IAQtB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,KAAK;IAEb,OAAO,CAAC,QAAQ,CAAC;IAEjB,OAAO,CAAC,YAAY,CAAC;IACrB,OAAO,CAAC,WAAW,CAAC;IAftB,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,aAAa,CAAsC;IAC3D,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,iBAAiB,CAAC,CAAoB;gBAGpC,MAAM,EAAE,GAAG,EACX,cAAc,EAAE,MAAM,EACtB,IAAI,GAAE,MAAW,EACjB,KAAK,GAAE,MAAU,EAEjB,QAAQ,CAAC,EAAE,MAAM,YAAA,EAEjB,YAAY,CAAC,EAAE,MAAM,YAAA,EACrB,WAAW,CAAC,EAAE,aAAa,YAAA;IAQrC;;;;;;OAMG;IACH,oBAAoB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAIxD,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,kBAAkB;IAgD1B,OAAO,CAAC,iBAAiB;IAoCzB,WAAW,IAAI,GAAG;IAmFlB,OAAO,CAAC,gBAAgB;IA+GxB;;OAEG;IACH,UAAU,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,gBAAgB,CAAC,UAAU,CAAC;IAW5E,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,wBAAwB;IAsFhC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA8ChC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IA8ChC;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IA0DnC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAmBlC,OAAO,CAAC,mBAAmB;IA+B3B,OAAO,CAAC,oBAAoB;IA0F5B,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,kBAAkB;IA2C1B,OAAO,CAAC,mBAAmB;IA8B3B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,OAAO;IAef,OAAO,CAAC,SAAS;IA4CjB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;IAsCjB,OAAO,CAAC,qBAAqB;IAkB7B,UAAU,IAAI,YAAY,EAAE;IAI5B,YAAY,IAAI,IAAI;IASpB,WAAW,IAAI,IAAI;IAInB,SAAS,IAAI,GAAG;CAGjB"}
1
+ {"version":3,"file":"change-tracker.d.ts","sourceRoot":"","sources":["../../../src/core/change-tracker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,YAAY,EAAe,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,OAAO,GAAG,IAAI,CAAC;AAEhF;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IAQtB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,KAAK;IAEb,OAAO,CAAC,QAAQ,CAAC;IAEjB,OAAO,CAAC,YAAY,CAAC;IACrB,OAAO,CAAC,WAAW,CAAC;IAftB,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,aAAa,CAAsC;IAC3D,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,iBAAiB,CAAC,CAAoB;gBAGpC,MAAM,EAAE,GAAG,EACX,cAAc,EAAE,MAAM,EACtB,IAAI,GAAE,MAAW,EACjB,KAAK,GAAE,MAAU,EAEjB,QAAQ,CAAC,EAAE,MAAM,YAAA,EAEjB,YAAY,CAAC,EAAE,MAAM,YAAA,EACrB,WAAW,CAAC,EAAE,aAAa,YAAA;IAQrC;;;;;;OAMG;IACH,oBAAoB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAIxD,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,kBAAkB;IAgD1B,OAAO,CAAC,iBAAiB;IAyCzB,WAAW,IAAI,GAAG;IAmFlB,OAAO,CAAC,gBAAgB;IA+GxB;;OAEG;IACH,UAAU,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,gBAAgB,CAAC,UAAU,CAAC;IA0B5E;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmC1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,wBAAwB;IAyFhC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA8ChC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IA8ChC;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IA0DnC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAmBlC,OAAO,CAAC,mBAAmB;IA+B3B,OAAO,CAAC,oBAAoB;IA0F5B,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,kBAAkB;IA2C1B,OAAO,CAAC,mBAAmB;IA8B3B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,aAAa;IAKrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,OAAO;IAef,OAAO,CAAC,SAAS;IA4CjB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;IAsCjB,OAAO,CAAC,qBAAqB;IAkB7B,UAAU,IAAI,YAAY,EAAE;IAI5B,YAAY,IAAI,IAAI;IASpB,WAAW,IAAI,IAAI;IAInB,SAAS,IAAI,GAAG;CAGjB"}