@woltz/rich-domain 1.7.0 → 1.8.0

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 (204) hide show
  1. package/dist/cjs/core/aggregate-changes.d.ts +206 -0
  2. package/dist/cjs/core/aggregate-changes.d.ts.map +1 -0
  3. package/dist/cjs/core/aggregate-changes.js +365 -0
  4. package/dist/cjs/core/aggregate-changes.js.map +1 -0
  5. package/dist/cjs/core/base-entity.d.ts +88 -0
  6. package/dist/cjs/core/base-entity.d.ts.map +1 -0
  7. package/dist/cjs/core/base-entity.js +329 -0
  8. package/dist/cjs/core/base-entity.js.map +1 -0
  9. package/dist/cjs/core/change-tracker.d.ts +96 -0
  10. package/dist/cjs/core/change-tracker.d.ts.map +1 -0
  11. package/dist/cjs/core/change-tracker.js +789 -0
  12. package/dist/cjs/core/change-tracker.js.map +1 -0
  13. package/dist/cjs/core/domain-event.d.ts +23 -0
  14. package/dist/cjs/core/domain-event.d.ts.map +1 -0
  15. package/dist/cjs/core/domain-event.js +36 -0
  16. package/dist/cjs/core/domain-event.js.map +1 -0
  17. package/dist/cjs/core/entity-changes.d.ts +84 -0
  18. package/dist/cjs/core/entity-changes.d.ts.map +1 -0
  19. package/dist/cjs/core/entity-changes.js +136 -0
  20. package/dist/cjs/core/entity-changes.js.map +1 -0
  21. package/dist/cjs/core/entity.d.ts +7 -0
  22. package/dist/cjs/core/entity.d.ts.map +1 -0
  23. package/dist/cjs/core/entity.js +11 -0
  24. package/dist/cjs/core/entity.js.map +1 -0
  25. package/dist/cjs/core/id.d.ts +59 -0
  26. package/dist/cjs/core/id.d.ts.map +1 -0
  27. package/dist/cjs/core/id.js +92 -0
  28. package/dist/cjs/core/id.js.map +1 -0
  29. package/dist/cjs/core/index.d.ts +9 -0
  30. package/dist/cjs/core/index.d.ts.map +1 -0
  31. package/dist/cjs/core/index.js +25 -0
  32. package/dist/cjs/core/index.js.map +1 -0
  33. package/dist/cjs/core/value-object.d.ts +49 -0
  34. package/dist/cjs/core/value-object.d.ts.map +1 -0
  35. package/dist/cjs/core/value-object.js +129 -0
  36. package/dist/cjs/core/value-object.js.map +1 -0
  37. package/dist/cjs/index.d.ts +5 -11
  38. package/dist/cjs/index.d.ts.map +1 -1
  39. package/dist/cjs/index.js +21 -19
  40. package/dist/cjs/index.js.map +1 -1
  41. package/dist/cjs/repository/base-repository.d.ts +49 -3
  42. package/dist/cjs/repository/base-repository.d.ts.map +1 -1
  43. package/dist/cjs/repository/base-repository.js.map +1 -1
  44. package/dist/cjs/repository/entity-schema-registry.d.ts +281 -0
  45. package/dist/cjs/repository/entity-schema-registry.d.ts.map +1 -0
  46. package/dist/cjs/repository/entity-schema-registry.js +370 -0
  47. package/dist/cjs/repository/entity-schema-registry.js.map +1 -0
  48. package/dist/cjs/repository/index.d.ts +4 -2
  49. package/dist/cjs/repository/index.d.ts.map +1 -1
  50. package/dist/cjs/repository/index.js +4 -6
  51. package/dist/cjs/repository/index.js.map +1 -1
  52. package/dist/cjs/repository/mapper.d.ts +4 -0
  53. package/dist/cjs/repository/mapper.d.ts.map +1 -0
  54. package/dist/cjs/repository/mapper.js +7 -0
  55. package/dist/cjs/repository/mapper.js.map +1 -0
  56. package/dist/cjs/repository/paginated-result.d.ts +54 -0
  57. package/dist/cjs/repository/paginated-result.d.ts.map +1 -0
  58. package/dist/cjs/repository/paginated-result.js +197 -0
  59. package/dist/cjs/repository/paginated-result.js.map +1 -0
  60. package/dist/cjs/types/change-tracker.d.ts +1 -2
  61. package/dist/cjs/types/change-tracker.d.ts.map +1 -1
  62. package/dist/cjs/types/criteria.d.ts +13 -5
  63. package/dist/cjs/types/criteria.d.ts.map +1 -1
  64. package/dist/cjs/types/criteria.js +2 -2
  65. package/dist/cjs/types/criteria.js.map +1 -1
  66. package/dist/cjs/types/domain.d.ts +1 -1
  67. package/dist/cjs/types/domain.d.ts.map +1 -1
  68. package/dist/cjs/types/unit-of-work.d.ts +1 -1
  69. package/dist/cjs/types/unit-of-work.d.ts.map +1 -1
  70. package/dist/cjs/types/utils.d.ts +1 -2
  71. package/dist/cjs/types/utils.d.ts.map +1 -1
  72. package/dist/cjs/utils/criteria-operator-validation.d.ts.map +1 -1
  73. package/dist/cjs/utils/criteria-operator-validation.js +1 -1
  74. package/dist/cjs/utils/criteria-operator-validation.js.map +1 -1
  75. package/dist/cjs/utils/crypto.d.ts +3 -0
  76. package/dist/cjs/utils/crypto.d.ts.map +1 -0
  77. package/dist/cjs/utils/crypto.js +32 -0
  78. package/dist/cjs/utils/crypto.js.map +1 -0
  79. package/dist/esm/core/aggregate-changes.d.ts +206 -0
  80. package/dist/esm/core/aggregate-changes.d.ts.map +1 -0
  81. package/dist/esm/core/aggregate-changes.js +361 -0
  82. package/dist/esm/core/aggregate-changes.js.map +1 -0
  83. package/dist/esm/core/base-entity.d.ts +88 -0
  84. package/dist/esm/core/base-entity.d.ts.map +1 -0
  85. package/dist/esm/core/base-entity.js +325 -0
  86. package/dist/esm/core/base-entity.js.map +1 -0
  87. package/dist/esm/core/change-tracker.d.ts +96 -0
  88. package/dist/esm/core/change-tracker.d.ts.map +1 -0
  89. package/dist/esm/core/change-tracker.js +785 -0
  90. package/dist/esm/core/change-tracker.js.map +1 -0
  91. package/dist/esm/core/domain-event.d.ts +23 -0
  92. package/dist/esm/core/domain-event.d.ts.map +1 -0
  93. package/dist/esm/core/domain-event.js +32 -0
  94. package/dist/esm/core/domain-event.js.map +1 -0
  95. package/dist/esm/core/entity-changes.d.ts +84 -0
  96. package/dist/esm/core/entity-changes.d.ts.map +1 -0
  97. package/dist/esm/core/entity-changes.js +132 -0
  98. package/dist/esm/core/entity-changes.js.map +1 -0
  99. package/dist/esm/core/entity.d.ts +7 -0
  100. package/dist/esm/core/entity.d.ts.map +1 -0
  101. package/dist/esm/core/entity.js +6 -0
  102. package/dist/esm/core/entity.js.map +1 -0
  103. package/dist/esm/core/id.d.ts +59 -0
  104. package/dist/esm/core/id.d.ts.map +1 -0
  105. package/dist/esm/core/id.js +85 -0
  106. package/dist/esm/core/id.js.map +1 -0
  107. package/dist/esm/core/index.d.ts +9 -0
  108. package/dist/esm/core/index.d.ts.map +1 -0
  109. package/dist/esm/core/index.js +9 -0
  110. package/dist/esm/core/index.js.map +1 -0
  111. package/dist/esm/core/value-object.d.ts +49 -0
  112. package/dist/esm/core/value-object.d.ts.map +1 -0
  113. package/dist/esm/core/value-object.js +125 -0
  114. package/dist/esm/core/value-object.js.map +1 -0
  115. package/dist/esm/index.d.ts +5 -11
  116. package/dist/esm/index.d.ts.map +1 -1
  117. package/dist/esm/index.js +4 -10
  118. package/dist/esm/index.js.map +1 -1
  119. package/dist/esm/repository/base-repository.d.ts +49 -3
  120. package/dist/esm/repository/base-repository.d.ts.map +1 -1
  121. package/dist/esm/repository/base-repository.js.map +1 -1
  122. package/dist/esm/repository/entity-schema-registry.d.ts +281 -0
  123. package/dist/esm/repository/entity-schema-registry.d.ts.map +1 -0
  124. package/dist/esm/repository/entity-schema-registry.js +366 -0
  125. package/dist/esm/repository/entity-schema-registry.js.map +1 -0
  126. package/dist/esm/repository/index.d.ts +4 -2
  127. package/dist/esm/repository/index.d.ts.map +1 -1
  128. package/dist/esm/repository/index.js +4 -2
  129. package/dist/esm/repository/index.js.map +1 -1
  130. package/dist/esm/repository/mapper.d.ts +4 -0
  131. package/dist/esm/repository/mapper.d.ts.map +1 -0
  132. package/dist/esm/repository/mapper.js +3 -0
  133. package/dist/esm/repository/mapper.js.map +1 -0
  134. package/dist/esm/repository/paginated-result.d.ts +54 -0
  135. package/dist/esm/repository/paginated-result.d.ts.map +1 -0
  136. package/dist/esm/repository/paginated-result.js +193 -0
  137. package/dist/esm/repository/paginated-result.js.map +1 -0
  138. package/dist/esm/types/change-tracker.d.ts +1 -2
  139. package/dist/esm/types/change-tracker.d.ts.map +1 -1
  140. package/dist/esm/types/criteria.d.ts +13 -5
  141. package/dist/esm/types/criteria.d.ts.map +1 -1
  142. package/dist/esm/types/criteria.js +3 -1
  143. package/dist/esm/types/criteria.js.map +1 -1
  144. package/dist/esm/types/domain.d.ts +1 -1
  145. package/dist/esm/types/domain.d.ts.map +1 -1
  146. package/dist/esm/types/unit-of-work.d.ts +1 -1
  147. package/dist/esm/types/unit-of-work.d.ts.map +1 -1
  148. package/dist/esm/types/utils.d.ts +1 -2
  149. package/dist/esm/types/utils.d.ts.map +1 -1
  150. package/dist/esm/utils/criteria-operator-validation.d.ts.map +1 -1
  151. package/dist/esm/utils/criteria-operator-validation.js +1 -1
  152. package/dist/esm/utils/criteria-operator-validation.js.map +1 -1
  153. package/dist/esm/utils/crypto.d.ts +3 -0
  154. package/dist/esm/utils/crypto.d.ts.map +1 -0
  155. package/dist/esm/utils/crypto.js +29 -0
  156. package/dist/esm/utils/crypto.js.map +1 -0
  157. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  158. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  159. package/dist/tsconfig.types.tsbuildinfo +1 -1
  160. package/dist/types/core/aggregate-changes.d.ts +206 -0
  161. package/dist/types/core/aggregate-changes.d.ts.map +1 -0
  162. package/dist/types/core/base-entity.d.ts +88 -0
  163. package/dist/types/core/base-entity.d.ts.map +1 -0
  164. package/dist/types/core/change-tracker.d.ts +96 -0
  165. package/dist/types/core/change-tracker.d.ts.map +1 -0
  166. package/dist/types/core/domain-event.d.ts +23 -0
  167. package/dist/types/core/domain-event.d.ts.map +1 -0
  168. package/dist/types/core/entity-changes.d.ts +84 -0
  169. package/dist/types/core/entity-changes.d.ts.map +1 -0
  170. package/dist/types/core/entity.d.ts +7 -0
  171. package/dist/types/core/entity.d.ts.map +1 -0
  172. package/dist/types/core/id.d.ts +59 -0
  173. package/dist/types/core/id.d.ts.map +1 -0
  174. package/dist/types/core/index.d.ts +9 -0
  175. package/dist/types/core/index.d.ts.map +1 -0
  176. package/dist/types/core/value-object.d.ts +49 -0
  177. package/dist/types/core/value-object.d.ts.map +1 -0
  178. package/dist/types/index.d.ts +5 -11
  179. package/dist/types/index.d.ts.map +1 -1
  180. package/dist/types/paginated-result.d.ts +54 -46
  181. package/dist/types/repository/base-repository.d.ts +49 -3
  182. package/dist/types/repository/base-repository.d.ts.map +1 -1
  183. package/dist/types/repository/entity-schema-registry.d.ts +281 -0
  184. package/dist/types/repository/entity-schema-registry.d.ts.map +1 -0
  185. package/dist/types/repository/index.d.ts +4 -2
  186. package/dist/types/repository/index.d.ts.map +1 -1
  187. package/dist/types/repository/mapper.d.ts +4 -0
  188. package/dist/types/repository/mapper.d.ts.map +1 -0
  189. package/dist/types/repository/paginated-result.d.ts +54 -0
  190. package/dist/types/repository/paginated-result.d.ts.map +1 -0
  191. package/dist/types/types/change-tracker.d.ts +1 -2
  192. package/dist/types/types/change-tracker.d.ts.map +1 -1
  193. package/dist/types/types/criteria.d.ts +13 -5
  194. package/dist/types/types/criteria.d.ts.map +1 -1
  195. package/dist/types/types/domain.d.ts +1 -1
  196. package/dist/types/types/domain.d.ts.map +1 -1
  197. package/dist/types/types/unit-of-work.d.ts +1 -1
  198. package/dist/types/types/unit-of-work.d.ts.map +1 -1
  199. package/dist/types/types/utils.d.ts +1 -2
  200. package/dist/types/types/utils.d.ts.map +1 -1
  201. package/dist/types/utils/criteria-operator-validation.d.ts.map +1 -1
  202. package/dist/types/utils/crypto.d.ts +3 -0
  203. package/dist/types/utils/crypto.d.ts.map +1 -0
  204. package/package.json +1 -1
@@ -0,0 +1,88 @@
1
+ import { ValidationError } from "../validation-error.js";
2
+ import { BaseProps, HistoryEntry, DeepJsonResult, EntityHooks, EntityValidation, IDomainEventBus, IDomainEvent } from "../types/index.js";
3
+ import { AggregateChanges, Id } from "./index";
4
+ export declare abstract class BaseEntity<T extends BaseProps> {
5
+ private _props;
6
+ private tracker;
7
+ private proxiedProps;
8
+ private snapshot;
9
+ private validationConfig;
10
+ private entityHooks?;
11
+ private entitySchema?;
12
+ private domainEvents;
13
+ protected static validation?: EntityValidation<any>;
14
+ protected static hooks?: EntityHooks<any, any>;
15
+ constructor(props: Omit<T, "id"> & {
16
+ id?: Id;
17
+ });
18
+ private validateProps;
19
+ private extractPathKey;
20
+ /**
21
+ * Setup validation that runs on every property change.
22
+ * Uses the ChangeTracker's onChangeValidator callback.
23
+ */
24
+ private setupUpdateValidation;
25
+ private takeSnapshot;
26
+ private deepCloneProps;
27
+ get id(): Id;
28
+ isNew(): boolean;
29
+ /**
30
+ * Check equality with another entity by comparing IDs
31
+ */
32
+ equals(other: BaseEntity<T> | Id | string): boolean;
33
+ get props(): T;
34
+ /**
35
+ * Check if entity has validation errors (when throwOnError is false)
36
+ */
37
+ get hasValidationErrors(): boolean;
38
+ /**
39
+ * Get validation errors (when throwOnError is false)
40
+ */
41
+ get validationErrors(): ValidationError | undefined;
42
+ /**
43
+ * Returns all detected changes as AggregateChanges.
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * const changes = user.getChanges();
48
+ * const batch = changes.toBatchOperations();
49
+ *
50
+ * for (const del of batch.deletes) { ... }
51
+ * for (const create of batch.creates) { ... }
52
+ * for (const upd of batch.updates) { ... }
53
+ * ```
54
+ */
55
+ getChanges<TEntityMap = Record<string, any>>(): AggregateChanges<TEntityMap>;
56
+ /**
57
+ * Returns the change history (for debugging).
58
+ */
59
+ getHistory(): HistoryEntry[];
60
+ /**
61
+ * Clears history and marks entity as "clean".
62
+ * Call this after successfully persisting to the database.
63
+ */
64
+ markAsClean(): void;
65
+ /**
66
+ * Add a domain event to this entity
67
+ */
68
+ protected addDomainEvent(event: IDomainEvent): void;
69
+ /**
70
+ * Dispatch all events through the event bus
71
+ */
72
+ dispatchAll(bus: IDomainEventBus): Promise<void>;
73
+ /**
74
+ * Get all uncommitted domain events
75
+ */
76
+ getUncommittedEvents(): IDomainEvent[];
77
+ /**
78
+ * Clear all domain events (call after publishing)
79
+ */
80
+ clearEvents(): void;
81
+ /**
82
+ * Check if entity has uncommitted events
83
+ */
84
+ hasUncommittedEvents(): boolean;
85
+ toJSON(): DeepJsonResult<T>;
86
+ private deepToJson;
87
+ }
88
+ //# sourceMappingURL=base-entity.d.ts.map
@@ -0,0 +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,UAAU,IAAI,YAAY,EAAE;IAI5B;;;OAGG;IACH,WAAW,IAAI,IAAI;IAKnB;;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"}
@@ -0,0 +1,96 @@
1
+ import { HistoryEntry } from "../types/index.js";
2
+ import { AggregateChanges } from "./aggregate-changes.js";
3
+ /**
4
+ * Callback for validation on property change.
5
+ * Return false to reject the change, or throw an error.
6
+ */
7
+ export type OnChangeValidator = (path: string, newValue: any) => boolean | void;
8
+ /**
9
+ * Tracks changes in Aggregates using Proxy.
10
+ *
11
+ * Features:
12
+ * - Tracks changes in primitive properties
13
+ * - Tracks changes in nested entities (1:1)
14
+ * - Tracks changes in collections (1:N)
15
+ * - Calculates depth automatically
16
+ * - Generates AggregateChanges for persistence
17
+ * - Supports validation on change via onChangeValidator
18
+ */
19
+ export declare class ChangeTracker {
20
+ private target;
21
+ private rootEntityName;
22
+ private path;
23
+ private depth;
24
+ private parentId?;
25
+ private parentEntity?;
26
+ private rootTracker?;
27
+ private history;
28
+ private originalValues;
29
+ private trackedArrays;
30
+ private trackedEntities;
31
+ private onChangeValidator?;
32
+ constructor(target: any, rootEntityName: string, path?: string, depth?: number, parentId?: string | undefined, parentEntity?: string | undefined, rootTracker?: ChangeTracker | undefined);
33
+ /**
34
+ * Sets a validator callback that will be called on every property change.
35
+ * The validator can:
36
+ * - Return false to reject the change (value will be reverted)
37
+ * - Throw an error to reject the change with an error
38
+ * - Return true/undefined to accept the change
39
+ */
40
+ setOnChangeValidator(validator: OnChangeValidator): void;
41
+ private captureInitialState;
42
+ private captureEntityState;
43
+ private captureArrayState;
44
+ createProxy(): any;
45
+ private createArrayProxy;
46
+ /**
47
+ * Returns all detected changes as AggregateChanges.
48
+ */
49
+ getChanges<TEntityMap = Record<string, any>>(): AggregateChanges<TEntityMap>;
50
+ private analyzeRootChanges;
51
+ private analyzeCollectionChanges;
52
+ /**
53
+ * Recursively marks all nested items as created when a parent is created.
54
+ */
55
+ private markNestedItemsAsCreated;
56
+ /**
57
+ * Recursively marks all nested items as deleted when a parent is deleted.
58
+ * Uses the original captured state to find nested items.
59
+ */
60
+ private markNestedItemsAsDeleted;
61
+ /**
62
+ * Recursively marks nested items as deleted from a JSON object.
63
+ * This is used when processing cloned (JSON) state.
64
+ */
65
+ private markNestedJsonItemAsDeleted;
66
+ /**
67
+ * Extracts identity key from a JSON object by looking at the original Entity instances.
68
+ */
69
+ private extractIdentityKeyFromJson;
70
+ private collectNestedArrays;
71
+ private analyzeEntityChanges;
72
+ private detectEntityChangeState;
73
+ private detectArrayChanges;
74
+ private detectChangedFields;
75
+ private handleArrayAssignment;
76
+ private handleEntityChange;
77
+ private getRootTracker;
78
+ private buildPath;
79
+ private shouldSkipProperty;
80
+ private getValueAtPath;
81
+ private extractRelationField;
82
+ private getItemKey;
83
+ private getEntityId;
84
+ private getEntityName;
85
+ private isEqual;
86
+ private deepEqual;
87
+ private hasChanged;
88
+ private cloneArray;
89
+ private deepClone;
90
+ private normalizeAndStringify;
91
+ getHistory(): HistoryEntry[];
92
+ clearHistory(): void;
93
+ markAsClean(): void;
94
+ getTarget(): any;
95
+ }
96
+ //# sourceMappingURL=change-tracker.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,23 @@
1
+ import { IDomainEvent } from "..";
2
+ /**
3
+ * Base class for domain events
4
+ */
5
+ export declare abstract class DomainEvent<P> implements IDomainEvent<P> {
6
+ readonly eventId: string;
7
+ readonly occurredOn: Date;
8
+ readonly payload: P;
9
+ static readonly queueName?: string;
10
+ constructor(payload: P);
11
+ /**
12
+ * Get the event name (defaults to class name)
13
+ */
14
+ get eventName(): string;
15
+ private generateEventId;
16
+ toJSON(): {
17
+ eventId: string;
18
+ eventName: string;
19
+ occurredOn: string;
20
+ payload: P;
21
+ };
22
+ }
23
+ //# sourceMappingURL=domain-event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-event.d.ts","sourceRoot":"","sources":["../../../src/core/domain-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC;;GAEG;AACH,8BAAsB,WAAW,CAAC,CAAC,CAAE,YAAW,YAAY,CAAC,CAAC,CAAC;IAC7D,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,UAAU,EAAE,IAAI,CAAC;IACjC,SAAgB,OAAO,EAAE,CAAC,CAAC;IAC3B,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEvB,OAAO,EAAE,CAAC;IAMtB;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,OAAO,CAAC,eAAe;IAIvB,MAAM;;;;;;CAQP"}
@@ -0,0 +1,84 @@
1
+ import { Operation } from "../types/change-tracker.js";
2
+ /**
3
+ * Represents the changes filtered for a specific entity.
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * const changes = user.getChanges();
8
+ * const postChanges = changes.for('Post');
9
+ *
10
+ * if (postChanges.hasCreates()) {
11
+ * console.log('Created posts:', postChanges.creates);
12
+ * }
13
+ *
14
+ * if (postChanges.hasUpdates()) {
15
+ * postChanges.updates.forEach(({ entity, changed }) => {
16
+ * console.log(`Post ${entity.id} has changed:`, changed);
17
+ * });
18
+ * }
19
+ * ```
20
+ */
21
+ export declare class EntityChanges<T = any> {
22
+ private readonly operations;
23
+ constructor(operations: Operation<T>[]);
24
+ /**
25
+ * Returns all created entities
26
+ */
27
+ get creates(): T[];
28
+ /**
29
+ * Returns all updated entities with their changed fields
30
+ */
31
+ get updates(): Array<{
32
+ entity: T;
33
+ changed: Record<string, any>;
34
+ }>;
35
+ /**
36
+ * Returns all deleted entities
37
+ */
38
+ get deletes(): T[];
39
+ /**
40
+ * Returns the IDs of the created entities
41
+ */
42
+ get createIds(): string[];
43
+ /**
44
+ * Returns the IDs of the updated entities
45
+ */
46
+ get updateIds(): string[];
47
+ /**
48
+ * Returns the IDs of the deleted entities
49
+ */
50
+ get deleteIds(): string[];
51
+ /**
52
+ * Checks if there are any creates
53
+ */
54
+ hasCreates(): boolean;
55
+ /**
56
+ * Checks if there are any updates
57
+ */
58
+ hasUpdates(): boolean;
59
+ /**
60
+ * Checks if there are any deletes
61
+ */
62
+ hasDeletes(): boolean;
63
+ /**
64
+ * Checks if there is any change
65
+ */
66
+ hasChanges(): boolean;
67
+ /**
68
+ * Checks if it is empty (no changes)
69
+ */
70
+ isEmpty(): boolean;
71
+ /**
72
+ * Returns the total number of operations
73
+ */
74
+ get count(): number;
75
+ /**
76
+ * Returns the raw operations (for advanced use cases)
77
+ */
78
+ get rawOperations(): Operation<T>[];
79
+ /**
80
+ * Extracts the ID from an entity
81
+ */
82
+ private extractId;
83
+ }
84
+ //# sourceMappingURL=entity-changes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-changes.d.ts","sourceRoot":"","sources":["../../../src/core/entity-changes.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAIV,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,aAAa,CAAC,CAAC,GAAG,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;IAEvD;;OAEG;IACH,IAAI,OAAO,IAAI,CAAC,EAAE,CAIjB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,KAAK,CAAC;QAAE,MAAM,EAAE,CAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,CAAC,CAOhE;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,CAAC,EAAE,CAIjB;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,EAAE,CAKxB;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,EAAE,CAIxB;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,EAAE,CAIxB;IAED;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAElC;IAED;;OAEG;IACH,OAAO,CAAC,SAAS;CAMlB"}
@@ -0,0 +1,7 @@
1
+ import { BaseEntity } from "./base-entity.js";
2
+ import { BaseProps } from "../types/index.js";
3
+ export declare class Entity<T extends BaseProps> extends BaseEntity<T> {
4
+ }
5
+ export declare class Aggregate<T extends BaseProps> extends BaseEntity<T> {
6
+ }
7
+ //# sourceMappingURL=entity.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,59 @@
1
+ export declare class Id {
2
+ private readonly _value;
3
+ private readonly _isNew;
4
+ /**
5
+ * Create a new Id
6
+ * @param value - Optional existing ID value. If not provided, generates a new UUID.
7
+ *
8
+ * @example
9
+ * // New entity (generates UUID)
10
+ * const newId = new Id();
11
+ * newuser.isNew() // true
12
+ *
13
+ * // Existing entity (uses provided ID)
14
+ * const existingId = new Id("550e8400-e29b-41d4-a716-446655440000");
15
+ * existinguser.isNew() // false
16
+ */
17
+ constructor(value: string, isNew?: boolean);
18
+ constructor(value?: string);
19
+ /**
20
+ * Get the string value of the ID
21
+ */
22
+ get value(): string;
23
+ /**
24
+ * Check if this ID represents a new entity
25
+ */
26
+ isNew(): boolean;
27
+ /**
28
+ * Convert to string (for JSON serialization and comparisons)
29
+ */
30
+ toString(): string;
31
+ /**
32
+ * Convert to JSON (returns the string value)
33
+ */
34
+ toJSON(): string;
35
+ /**
36
+ * Check equality with another Id or string
37
+ */
38
+ equals(other: Id | string): boolean;
39
+ /**
40
+ * Generate a UUID v4
41
+ */
42
+ private generateUUID;
43
+ /**
44
+ * Create a new Id (convenience static method)
45
+ */
46
+ static create(): Id;
47
+ /**
48
+ * Create an Id from an existing value
49
+ */
50
+ static from(value: string): Id;
51
+ /**
52
+ * Compose two IDs into a single ID
53
+ * @param a - The first ID
54
+ * @param b - The second ID
55
+ * @returns The composed ID
56
+ */
57
+ static compose(a: string | Id, b: string | Id): string;
58
+ }
59
+ //# sourceMappingURL=id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../../src/core/id.ts"],"names":[],"mappings":"AAEA,qBAAa,EAAE;IACb,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IAEjC;;;;;;;;;;;;OAYG;gBACS,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;gBAC9B,KAAK,CAAC,EAAE,MAAM;IAa1B;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;OAEG;IACI,KAAK,IAAI,OAAO;IAIvB;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,MAAM,IAAI,MAAM;IAIhB;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,GAAG,OAAO;IAOnC;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,MAAM,CAAC,MAAM,IAAI,EAAE;IAInB;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE;IAI9B;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,GAAG,MAAM;CAUvD"}
@@ -0,0 +1,9 @@
1
+ export * from "./base-entity";
2
+ export * from "./aggregate-changes";
3
+ export * from "./change-tracker";
4
+ export * from "./domain-event";
5
+ export * from "./entity-changes";
6
+ export * from "./entity";
7
+ export * from "./id";
8
+ export * from "./value-object";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,49 @@
1
+ import { ValidationError } from "../validation-error.js";
2
+ import { IDomainEvent } from "../index.js";
3
+ import { VOHooks, EntityValidation, Primitive } from "../types/index.js";
4
+ export declare abstract class ValueObject<T extends Primitive> {
5
+ readonly value: T;
6
+ private validationConfig;
7
+ private domainHooks?;
8
+ private domainSchema?;
9
+ private domainEvents;
10
+ protected static validation?: EntityValidation<any>;
11
+ protected static hooks?: VOHooks<any, any>;
12
+ constructor(value: T);
13
+ private validateValue;
14
+ private extractPathKey;
15
+ /**
16
+ * Returns true if the value object has validation errors (when throwOnError is false).
17
+ */
18
+ get hasValidationErrors(): boolean;
19
+ /**
20
+ * Returns the validation errors (when throwOnError is false).
21
+ */
22
+ get validationErrors(): ValidationError | undefined;
23
+ /**
24
+ * Compare this ValueObject with another for equality based on their properties.
25
+ */
26
+ 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
+ /**
44
+ * Creates a new ValueObject with updated value.
45
+ * ValueObjects are immutable, so this returns a new instance.
46
+ */
47
+ protected clone(value: T): this;
48
+ }
49
+ //# sourceMappingURL=value-object.d.ts.map
@@ -0,0 +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,16 +1,10 @@
1
1
  export * from "./validation-error.js";
2
- export * from "./domain-event.js";
2
+ export * from "./core/domain-event.js";
3
3
  export * from "./exceptions.js";
4
4
  export * from "./criteria.js";
5
- export * from "./paginated-result.js";
6
- export * from "./repository/index.js";
7
- export { Id } from "./id.js";
8
- export { Entity, Aggregate } from "./entity.js";
9
- export { ValueObject } from "./value-object.js";
10
- export { Mapper } from "./mapper.js";
11
- export { EntitySchemaRegistry } from "./entity-schema-registry.js";
12
- export { AggregateChanges } from "./aggregate-changes.js";
13
- export type { EntityHooks, Filter, EntityValidation, IDomainEvent, VOValidation, VOHooks, ValidationConfig, Primitive, TransactionContext, PaginationMeta, Pagination, OrderDirection, Order, IUnitOfWork, FieldPath, FilterOperator, Search, FilterValueFor, PathValue, OperatorsForType, DateOperators, NumberOperators, StringOperators, BooleanOperators, ArrayOperators, CriteriaOptions, DeepJsonResult, IDomainEventBus, } from "./types/index.js";
14
- export { ARRAY_OPERATORS, BOOLEAN_OPERATORS, DATE_OPERATORS, NUMBER_OPERATORS, STRING_OPERATORS, FILTER_OPERATORS, } from "./constants.js";
15
5
  export { isValidOperatorForType } from "./utils/criteria-operator-validation.js";
6
+ export { ARRAY_OPERATORS, BOOLEAN_OPERATORS, DATE_OPERATORS, NUMBER_OPERATORS, STRING_OPERATORS, FILTER_OPERATORS, } from "./constants.js";
7
+ export { Id, Entity, Aggregate, ValueObject, AggregateChanges, DomainEvent, } from "./core/index.js";
8
+ export { type PaginatedJsonResult, type CollectionConfig, Repository, Mapper, UnitOfWork, PaginatedResult, ReadRepository, WriteAndRead, WriteRepository, BaseTransactionContext, EntitySchemaRegistry, } from "./repository/index.js";
9
+ export type { EntityHooks, Filter, EntityValidation, IDomainEvent, VOValidation, VOHooks, ValidationConfig, Primitive, TransactionContext, PaginationMeta, Pagination, OrderDirection, Order, IUnitOfWork, FieldPath, FilterOperator, Search, FilterValueFor, PathValue, OperatorsForType, DateOperators, NumberOperators, StringOperators, BooleanOperators, ArrayOperators, CriteriaOptions, IDomainEventBus, } from "./types/index.js";
16
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EACV,WAAW,EACX,MAAM,EACN,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,gBAAgB,EAChB,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,cAAc,EACd,KAAK,EACL,WAAW,EACX,SAAS,EACT,cAAc,EACd,MAAM,EACN,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,EAAE,EACF,MAAM,EACN,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,UAAU,EACV,MAAM,EACN,UAAU,EACV,eAAe,EACf,cAAc,EACd,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,WAAW,EACX,MAAM,EACN,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,gBAAgB,EAChB,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,cAAc,EACd,KAAK,EACL,WAAW,EACX,SAAS,EACT,cAAc,EACd,MAAM,EACN,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,kBAAkB,CAAC"}
@@ -1,54 +1,62 @@
1
- import type { Criteria } from "./criteria.js";
2
- import type { Pagination, PaginationMeta, DeepJsonResult } from "./types/index.js";
1
+ import type { Criteria } from "../criteria.js";
2
+ import type {
3
+ Pagination,
4
+ PaginationMeta,
5
+ DeepJsonResult,
6
+ } from "../types/index.js";
3
7
  /**
4
8
  * Type for the serialized result of PaginatedResult.toJSON()
5
9
  * Uses DeepJsonResult to ensure all nested entities are converted to plain objects
6
10
  */
7
11
  export type PaginatedJsonResult<T> = {
8
- data: DeepJsonResult<T>[];
9
- meta: PaginationMeta;
12
+ data: DeepJsonResult<T>[];
13
+ meta: PaginationMeta;
10
14
  };
11
15
  export declare class PaginatedResult<T> {
12
- readonly data: T[];
13
- readonly meta: PaginationMeta;
14
- constructor(data: T[], meta: PaginationMeta);
15
- /**
16
- * Creates a PaginatedResult with calculated metadata
17
- */
18
- static create<T>(data: T[], pagination: Pagination, total: number): PaginatedResult<T>;
19
- /**
20
- * Creates pagination metadata from total count
21
- */
22
- static createMeta(pagination: Pagination, total: number): PaginationMeta;
23
- /**
24
- * Applies criteria to an in-memory array (useful for testing)
25
- */
26
- static fromArray<T>(items: T[], criteria: Criteria<T>): PaginatedResult<T>;
27
- /**
28
- * Converts the result to JSON, deeply serializing all entities/aggregates/value objects
29
- * - Entities/Aggregates → calls toJSON() recursively
30
- * - Value Objects converts to value
31
- * - Id → converts to string
32
- * - Arrays maps recursively
33
- * - Plain objects serializes properties recursively
34
- * - Primitivesreturns as-is
35
- */
36
- toJSON(): PaginatedJsonResult<T>;
37
- /**
38
- * Deep serialization logic (similar to BaseEntity.deepToJson)
39
- */
40
- private deepSerialize;
41
- /**
42
- * Transform each item in the result using a mapper function
43
- */
44
- map<U>(fn: (item: T) => U): PaginatedResult<U>;
45
- /**
46
- * Check if result has no data
47
- */
48
- get isEmpty(): boolean;
49
- /**
50
- * Check if there are more pages available
51
- */
52
- get hasMore(): boolean;
16
+ readonly data: T[];
17
+ readonly meta: PaginationMeta;
18
+ constructor(data: T[], meta: PaginationMeta);
19
+ /**
20
+ * Creates a PaginatedResult with calculated metadata
21
+ */
22
+ static create<T>(
23
+ data: T[],
24
+ pagination: Pagination,
25
+ total: number
26
+ ): PaginatedResult<T>;
27
+ /**
28
+ * Creates pagination metadata from total count
29
+ */
30
+ static createMeta(pagination: Pagination, total: number): PaginationMeta;
31
+ /**
32
+ * Applies criteria to an in-memory array (useful for testing)
33
+ */
34
+ static fromArray<T>(items: T[], criteria: Criteria<T>): PaginatedResult<T>;
35
+ /**
36
+ * Converts the result to JSON, deeply serializing all entities/aggregates/value objects
37
+ * - Entities/Aggregatescalls toJSON() recursively
38
+ * - Value Objects converts to value
39
+ * - Id → converts to string
40
+ * - Arrays → maps recursively
41
+ * - Plain objects → serializes properties recursively
42
+ * - Primitives returns as-is
43
+ */
44
+ toJSON(): PaginatedJsonResult<T>;
45
+ /**
46
+ * Deep serialization logic (similar to BaseEntity.deepToJson)
47
+ */
48
+ private deepSerialize;
49
+ /**
50
+ * Transform each item in the result using a mapper function
51
+ */
52
+ map<U>(fn: (item: T) => U): PaginatedResult<U>;
53
+ /**
54
+ * Check if result has no data
55
+ */
56
+ get isEmpty(): boolean;
57
+ /**
58
+ * Check if there are more pages available
59
+ */
60
+ get hasMore(): boolean;
53
61
  }
54
- //# sourceMappingURL=paginated-result.d.ts.map
62
+ //# sourceMappingURL=paginated-result.d.ts.map