@woltz/rich-domain 1.2.0 → 1.2.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 (143) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/dist/aggregate-changes.d.ts +164 -0
  3. package/dist/aggregate-changes.d.ts.map +1 -0
  4. package/dist/aggregate-changes.js +281 -0
  5. package/dist/aggregate-changes.js.map +1 -0
  6. package/dist/base-entity.d.ts +32 -8
  7. package/dist/base-entity.d.ts.map +1 -1
  8. package/dist/base-entity.js +86 -93
  9. package/dist/base-entity.js.map +1 -1
  10. package/dist/change-tracker.d.ts +97 -0
  11. package/dist/change-tracker.d.ts.map +1 -0
  12. package/dist/change-tracker.js +758 -0
  13. package/dist/change-tracker.js.map +1 -0
  14. package/dist/constants.d.ts +7 -1
  15. package/dist/constants.d.ts.map +1 -1
  16. package/dist/constants.js +65 -0
  17. package/dist/constants.js.map +1 -1
  18. package/dist/criteria.d.ts +3 -3
  19. package/dist/criteria.d.ts.map +1 -1
  20. package/dist/criteria.js +6 -4
  21. package/dist/criteria.js.map +1 -1
  22. package/dist/crypto.d.ts +3 -0
  23. package/dist/crypto.d.ts.map +1 -0
  24. package/dist/crypto.js +29 -0
  25. package/dist/crypto.js.map +1 -0
  26. package/dist/domain-event.d.ts.map +1 -1
  27. package/dist/domain-event.js +0 -3
  28. package/dist/domain-event.js.map +1 -1
  29. package/dist/entity-changes.d.ts +84 -0
  30. package/dist/entity-changes.d.ts.map +1 -0
  31. package/dist/entity-changes.js +131 -0
  32. package/dist/entity-changes.js.map +1 -0
  33. package/dist/entity-schema-registry.d.ts +148 -0
  34. package/dist/entity-schema-registry.d.ts.map +1 -0
  35. package/dist/entity-schema-registry.js +213 -0
  36. package/dist/entity-schema-registry.js.map +1 -0
  37. package/dist/entity.d.ts +0 -6
  38. package/dist/entity.d.ts.map +1 -1
  39. package/dist/entity.js +0 -9
  40. package/dist/entity.js.map +1 -1
  41. package/dist/id.d.ts +11 -10
  42. package/dist/id.d.ts.map +1 -1
  43. package/dist/id.js +4 -28
  44. package/dist/id.js.map +1 -1
  45. package/dist/index.d.ts +9 -5
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +8 -11
  48. package/dist/index.js.map +1 -1
  49. package/dist/mapper.d.ts +1 -1
  50. package/dist/mapper.d.ts.map +1 -1
  51. package/dist/mapper.js.map +1 -1
  52. package/dist/paginated-result.d.ts.map +1 -1
  53. package/dist/paginated-result.js +0 -15
  54. package/dist/paginated-result.js.map +1 -1
  55. package/dist/repository/base-repository.d.ts +7 -33
  56. package/dist/repository/base-repository.d.ts.map +1 -1
  57. package/dist/repository/base-repository.js +0 -27
  58. package/dist/repository/base-repository.js.map +1 -1
  59. package/dist/repository/index.d.ts.map +1 -1
  60. package/dist/repository/index.js +0 -6
  61. package/dist/repository/index.js.map +1 -1
  62. package/dist/repository/unit-of-work.d.ts +0 -25
  63. package/dist/repository/unit-of-work.d.ts.map +1 -1
  64. package/dist/repository/unit-of-work.js +0 -28
  65. package/dist/repository/unit-of-work.js.map +1 -1
  66. package/dist/types/change-tracker.d.ts +196 -0
  67. package/dist/types/change-tracker.d.ts.map +1 -0
  68. package/dist/types/change-tracker.js +2 -0
  69. package/dist/types/change-tracker.js.map +1 -0
  70. package/dist/types/criteria.d.ts +5 -1
  71. package/dist/types/criteria.d.ts.map +1 -1
  72. package/dist/types/domain.d.ts +4 -6
  73. package/dist/types/domain.d.ts.map +1 -1
  74. package/dist/types/index.d.ts +1 -1
  75. package/dist/types/index.d.ts.map +1 -1
  76. package/dist/types/index.js +1 -1
  77. package/dist/types/index.js.map +1 -1
  78. package/dist/types/utils.d.ts +0 -1
  79. package/dist/types/utils.d.ts.map +1 -1
  80. package/dist/utils/criteria-operator-validation.d.ts +1 -0
  81. package/dist/utils/criteria-operator-validation.d.ts.map +1 -1
  82. package/dist/utils/criteria-operator-validation.js +39 -17
  83. package/dist/utils/criteria-operator-validation.js.map +1 -1
  84. package/dist/validation-error.d.ts.map +1 -1
  85. package/dist/validation-error.js +1 -6
  86. package/dist/validation-error.js.map +1 -1
  87. package/dist/value-object.d.ts +57 -8
  88. package/dist/value-object.d.ts.map +1 -1
  89. package/dist/value-object.js +49 -22
  90. package/dist/value-object.js.map +1 -1
  91. package/package.json +2 -1
  92. package/src/aggregate-changes.ts +335 -0
  93. package/src/base-entity.ts +102 -109
  94. package/src/change-tracker.ts +1062 -0
  95. package/src/constants.ts +75 -1
  96. package/src/criteria.ts +11 -4
  97. package/src/crypto.ts +31 -0
  98. package/src/domain-event.ts +0 -4
  99. package/src/entity-changes.ts +146 -0
  100. package/src/entity-schema-registry.ts +255 -0
  101. package/src/entity.ts +0 -11
  102. package/src/id.ts +17 -26
  103. package/src/index.ts +15 -19
  104. package/src/mapper.ts +4 -1
  105. package/src/paginated-result.ts +0 -21
  106. package/src/repository/base-repository.ts +7 -38
  107. package/src/repository/index.ts +0 -9
  108. package/src/repository/unit-of-work.ts +0 -29
  109. package/src/types/change-tracker.ts +233 -0
  110. package/src/types/criteria.ts +6 -1
  111. package/src/types/domain.ts +4 -8
  112. package/src/types/index.ts +1 -1
  113. package/src/types/utils.ts +0 -9
  114. package/src/utils/criteria-operator-validation.ts +57 -19
  115. package/src/validation-error.ts +1 -7
  116. package/src/value-object.ts +84 -24
  117. package/tests/aggregate-changes.test.ts +284 -0
  118. package/tests/criteria.test.ts +122 -161
  119. package/tests/entity-equality.test.ts +38 -61
  120. package/tests/entity-schema-registry.test.ts +382 -0
  121. package/tests/entity-validation.test.ts +7 -94
  122. package/tests/history-tracker.spec.ts +349 -617
  123. package/tests/id.test.ts +41 -44
  124. package/tests/load-test/data.json +346041 -0
  125. package/tests/load-test/entities.ts +97 -0
  126. package/tests/load-test/generate-data.ts +81 -0
  127. package/tests/load-test/lead-to-domain.mapper.ts +24 -0
  128. package/tests/load-test/load.test.ts +38 -0
  129. package/tests/repository.test.ts +30 -54
  130. package/tests/to-json.test.ts +14 -18
  131. package/tests/utils.ts +138 -102
  132. package/tests/value-objects.test.ts +57 -29
  133. package/dist/deep-proxy.d.ts +0 -36
  134. package/dist/deep-proxy.d.ts.map +0 -1
  135. package/dist/deep-proxy.js +0 -384
  136. package/dist/deep-proxy.js.map +0 -1
  137. package/dist/types/history-tracker.d.ts +0 -36
  138. package/dist/types/history-tracker.d.ts.map +0 -1
  139. package/dist/types/history-tracker.js +0 -2
  140. package/dist/types/history-tracker.js.map +0 -1
  141. package/src/deep-proxy.ts +0 -447
  142. package/src/types/history-tracker.ts +0 -45
  143. package/tests/entity.test.ts +0 -33
@@ -0,0 +1,148 @@
1
+ import { Entity } from "./entity";
2
+ import { ValueObject } from "./value-object";
3
+ /**
4
+ * Mapping schema for a domain entity.
5
+ */
6
+ export interface EntitySchema {
7
+ /** Entity name in the domain (e.g., 'User', 'Post') */
8
+ entity: string;
9
+ /** Table name in the database (e.g., 'users', 'blog_posts') */
10
+ table: string;
11
+ /**
12
+ * Field mapping: domain → database.
13
+ * Only include fields with different names.
14
+ * @example { email: 'user_email', createdAt: 'created_at' }
15
+ */
16
+ fields?: Record<string, string>;
17
+ /**
18
+ * FK configuration for parent relation.
19
+ */
20
+ parentFk?: {
21
+ /** Name of the FK field in the database (e.g., 'author_id') */
22
+ field: string;
23
+ /** Name of the parent entity (e.g., 'User') */
24
+ parentEntity: string;
25
+ };
26
+ }
27
+ /**
28
+ * Result of entity mapping.
29
+ */
30
+ export interface MappedEntityData {
31
+ [key: string]: any;
32
+ }
33
+ /**
34
+ * Registry for mapping domain entities to database tables and fields.
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const registry = new EntitySchemaRegistry()
39
+ * .register({
40
+ * entity: 'User',
41
+ * table: 'users',
42
+ * fields: { email: 'user_email', name: 'user_name' },
43
+ * })
44
+ * .register({
45
+ * entity: 'Post',
46
+ * table: 'blog_posts',
47
+ * fields: { content: 'post_content' },
48
+ * parentFk: { field: 'author_id', parentEntity: 'User' },
49
+ * });
50
+ *
51
+ * const table = registry.getTable('Post'); // 'blog_posts'
52
+ * const mapped = registry.mapFields('User', { email: 'test@test.com' });
53
+ * // { user_email: 'test@test.com' }
54
+ * ```
55
+ */
56
+ export declare class EntitySchemaRegistry {
57
+ private schemas;
58
+ /**
59
+ * Registers an entity schema.
60
+ * @param schema - Schema to be registered.
61
+ * @returns this (for chaining)
62
+ */
63
+ register(schema: EntitySchema): this;
64
+ /**
65
+ * Registers multiple schemas at once.
66
+ * @param schemas - Array of schemas.
67
+ * @returns this (for chaining)
68
+ */
69
+ registerAll(schemas: EntitySchema[]): this;
70
+ /**
71
+ * Gets the schema of an entity.
72
+ * @param entity - Entity name.
73
+ * @throws Error if the entity is not registered.
74
+ */
75
+ getSchema(entity: string): EntitySchema;
76
+ /**
77
+ * Checks if an entity is registered.
78
+ * @param entity - Entity name.
79
+ */
80
+ has(entity: string): boolean;
81
+ /**
82
+ * Gets the table name for an entity.
83
+ * @param entity - Entity name.
84
+ */
85
+ getTable(entity: string): string;
86
+ /**
87
+ * Gets the field mapping for an entity.
88
+ * @param entity - Entity name.
89
+ */
90
+ getFieldsMap(entity: string): Record<string, string>;
91
+ /**
92
+ * Maps a domain field name to the database field name.
93
+ * @param entity - Entity name.
94
+ * @param fieldName - Domain field name.
95
+ */
96
+ mapFieldName(entity: string, fieldName: string): string;
97
+ /**
98
+ * Maps fields of a domain object to database field names.
99
+ * Ignores values that are Entity, ValueObject, or Arrays.
100
+ *
101
+ * @param entity - Entity name.
102
+ * @param data - Data to be mapped.
103
+ */
104
+ mapFields(entity: string, data: Record<string, any>): MappedEntityData;
105
+ /**
106
+ * Maps a complete domain entity to database data.
107
+ * Used for CREATE operations.
108
+ *
109
+ * @param entity - Entity name.
110
+ * @param domainEntity - Domain entity instance.
111
+ */
112
+ mapEntity(entity: string, domainEntity: Entity<any> | ValueObject<any>): MappedEntityData;
113
+ /**
114
+ * Gets the FK object to relate with the parent.
115
+ *
116
+ * @param entity - Entity name.
117
+ * @param parentId - Parent ID.
118
+ * @returns Object with the FK field or null if there is no parent.
119
+ */
120
+ getParentFk(entity: string, parentId: string): Record<string, string> | null;
121
+ /**
122
+ * Gets the name of the parent entity.
123
+ * @param entity - Entity name.
124
+ */
125
+ getParentEntity(entity: string): string | null;
126
+ /**
127
+ * Gets the FK field name.
128
+ * @param entity - Entity name.
129
+ */
130
+ getParentFkField(entity: string): string | null;
131
+ /**
132
+ * Lists all registered entities.
133
+ */
134
+ getRegisteredEntities(): string[];
135
+ /**
136
+ * Clears all registered schemas.
137
+ */
138
+ clear(): void;
139
+ /**
140
+ * Checks if a value is Entity, ValueObject, or Array.
141
+ */
142
+ private isEntityOrCollection;
143
+ /**
144
+ * Normalizes a value for persistence.
145
+ */
146
+ private normalizeValue;
147
+ }
148
+ //# sourceMappingURL=entity-schema-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-schema-registry.d.ts","sourceRoot":"","sources":["../src/entity-schema-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC;;OAEG;IACH,QAAQ,CAAC,EAAE;QACT,+DAA+D;QAC/D,KAAK,EAAE,MAAM,CAAC;QACd,+CAA+C;QAC/C,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAmC;IAElD;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAUpC;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI;IAK1C;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAWvC;;;OAGG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI5B;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIhC;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAIpD;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAKvD;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,gBAAgB;IAWtE;;;;;;OAMG;IACH,SAAS,CACP,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAC3C,gBAAgB;IAkBnB;;;;;;OAMG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAM5E;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAK9C;;;OAGG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAK/C;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAIjC;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;OAEG;IACH,OAAO,CAAC,cAAc;CASvB"}
@@ -0,0 +1,213 @@
1
+ import { Entity } from "./entity";
2
+ import { ValueObject } from "./value-object";
3
+ import { Id } from "./id";
4
+ /**
5
+ * Registry for mapping domain entities to database tables and fields.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const registry = new EntitySchemaRegistry()
10
+ * .register({
11
+ * entity: 'User',
12
+ * table: 'users',
13
+ * fields: { email: 'user_email', name: 'user_name' },
14
+ * })
15
+ * .register({
16
+ * entity: 'Post',
17
+ * table: 'blog_posts',
18
+ * fields: { content: 'post_content' },
19
+ * parentFk: { field: 'author_id', parentEntity: 'User' },
20
+ * });
21
+ *
22
+ * const table = registry.getTable('Post'); // 'blog_posts'
23
+ * const mapped = registry.mapFields('User', { email: 'test@test.com' });
24
+ * // { user_email: 'test@test.com' }
25
+ * ```
26
+ */
27
+ export class EntitySchemaRegistry {
28
+ constructor() {
29
+ this.schemas = new Map();
30
+ }
31
+ /**
32
+ * Registers an entity schema.
33
+ * @param schema - Schema to be registered.
34
+ * @returns this (for chaining)
35
+ */
36
+ register(schema) {
37
+ if (this.schemas.has(schema.entity)) {
38
+ console.warn(`EntitySchemaRegistry: Schema for '${schema.entity}' is being overwritten`);
39
+ }
40
+ this.schemas.set(schema.entity, schema);
41
+ return this;
42
+ }
43
+ /**
44
+ * Registers multiple schemas at once.
45
+ * @param schemas - Array of schemas.
46
+ * @returns this (for chaining)
47
+ */
48
+ registerAll(schemas) {
49
+ schemas.forEach((schema) => this.register(schema));
50
+ return this;
51
+ }
52
+ /**
53
+ * Gets the schema of an entity.
54
+ * @param entity - Entity name.
55
+ * @throws Error if the entity is not registered.
56
+ */
57
+ getSchema(entity) {
58
+ const schema = this.schemas.get(entity);
59
+ if (!schema) {
60
+ throw new Error(`EntitySchemaRegistry: No schema registered for entity '${entity}'. ` +
61
+ `Available entities: ${Array.from(this.schemas.keys()).join(", ") || "none"}`);
62
+ }
63
+ return schema;
64
+ }
65
+ /**
66
+ * Checks if an entity is registered.
67
+ * @param entity - Entity name.
68
+ */
69
+ has(entity) {
70
+ return this.schemas.has(entity);
71
+ }
72
+ /**
73
+ * Gets the table name for an entity.
74
+ * @param entity - Entity name.
75
+ */
76
+ getTable(entity) {
77
+ return this.getSchema(entity).table;
78
+ }
79
+ /**
80
+ * Gets the field mapping for an entity.
81
+ * @param entity - Entity name.
82
+ */
83
+ getFieldsMap(entity) {
84
+ return this.getSchema(entity).fields || {};
85
+ }
86
+ /**
87
+ * Maps a domain field name to the database field name.
88
+ * @param entity - Entity name.
89
+ * @param fieldName - Domain field name.
90
+ */
91
+ mapFieldName(entity, fieldName) {
92
+ const fields = this.getFieldsMap(entity);
93
+ return fields[fieldName] ?? fieldName;
94
+ }
95
+ /**
96
+ * Maps fields of a domain object to database field names.
97
+ * Ignores values that are Entity, ValueObject, or Arrays.
98
+ *
99
+ * @param entity - Entity name.
100
+ * @param data - Data to be mapped.
101
+ */
102
+ mapFields(entity, data) {
103
+ const fields = this.getFieldsMap(entity);
104
+ const result = {};
105
+ for (const [key, value] of Object.entries(data)) {
106
+ if (this.isEntityOrCollection(value))
107
+ continue;
108
+ const mappedKey = fields[key] ?? key;
109
+ result[mappedKey] = this.normalizeValue(value);
110
+ }
111
+ return result;
112
+ }
113
+ /**
114
+ * Maps a complete domain entity to database data.
115
+ * Used for CREATE operations.
116
+ *
117
+ * @param entity - Entity name.
118
+ * @param domainEntity - Domain entity instance.
119
+ */
120
+ mapEntity(entity, domainEntity) {
121
+ const fields = this.getFieldsMap(entity);
122
+ const result = {};
123
+ const hasId = domainEntity.id;
124
+ if (hasId) {
125
+ const idValue = hasId.value ?? hasId;
126
+ result["id"] = idValue;
127
+ }
128
+ const props = domainEntity.props || domainEntity;
129
+ for (const [key, value] of Object.entries(props)) {
130
+ if (key === "id")
131
+ continue;
132
+ if (this.isEntityOrCollection(value))
133
+ continue;
134
+ const mappedKey = fields[key] ?? key;
135
+ result[mappedKey] = this.normalizeValue(value);
136
+ }
137
+ return result;
138
+ }
139
+ /**
140
+ * Gets the FK object to relate with the parent.
141
+ *
142
+ * @param entity - Entity name.
143
+ * @param parentId - Parent ID.
144
+ * @returns Object with the FK field or null if there is no parent.
145
+ */
146
+ getParentFk(entity, parentId) {
147
+ const schema = this.getSchema(entity);
148
+ if (!schema.parentFk)
149
+ return null;
150
+ return { [schema.parentFk.field]: parentId };
151
+ }
152
+ /**
153
+ * Gets the name of the parent entity.
154
+ * @param entity - Entity name.
155
+ */
156
+ getParentEntity(entity) {
157
+ const schema = this.getSchema(entity);
158
+ return schema.parentFk?.parentEntity ?? null;
159
+ }
160
+ /**
161
+ * Gets the FK field name.
162
+ * @param entity - Entity name.
163
+ */
164
+ getParentFkField(entity) {
165
+ const schema = this.getSchema(entity);
166
+ return schema.parentFk?.field ?? null;
167
+ }
168
+ /**
169
+ * Lists all registered entities.
170
+ */
171
+ getRegisteredEntities() {
172
+ return Array.from(this.schemas.keys());
173
+ }
174
+ /**
175
+ * Clears all registered schemas.
176
+ */
177
+ clear() {
178
+ this.schemas.clear();
179
+ }
180
+ /**
181
+ * Checks if a value is Entity, ValueObject, or Array.
182
+ */
183
+ isEntityOrCollection(value) {
184
+ if (value === null || value === undefined)
185
+ return false;
186
+ if (Array.isArray(value))
187
+ return true;
188
+ if (value instanceof Entity)
189
+ return true;
190
+ if (value instanceof ValueObject)
191
+ return true;
192
+ if (typeof value === 'object' && value.id && typeof value.id === 'object' && 'value' in value.id) {
193
+ return true;
194
+ }
195
+ return false;
196
+ }
197
+ /**
198
+ * Normalizes a value for persistence.
199
+ */
200
+ normalizeValue(value) {
201
+ if (value === null || value === undefined)
202
+ return value;
203
+ if (value instanceof Id)
204
+ return value.value;
205
+ if (value instanceof Date)
206
+ return value;
207
+ if (typeof value === "object" && "value" in value) {
208
+ return value.value;
209
+ }
210
+ return value;
211
+ }
212
+ }
213
+ //# sourceMappingURL=entity-schema-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-schema-registry.js","sourceRoot":"","sources":["../src/entity-schema-registry.ts"],"names":[],"mappings":"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"}
package/dist/entity.d.ts CHANGED
@@ -1,13 +1,7 @@
1
1
  import { BaseEntity } from "./base-entity";
2
2
  import { BaseProps } from "./types";
3
- /**
4
- * Entity - Has identity and lifecycle, but is not an aggregate root
5
- */
6
3
  export declare class Entity<T extends BaseProps> extends BaseEntity<T> {
7
4
  }
8
- /**
9
- * Aggregate - Aggregate root that manages a consistency boundary
10
- */
11
5
  export declare class Aggregate<T extends BaseProps> extends BaseEntity<T> {
12
6
  }
13
7
  //# sourceMappingURL=entity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC;;GAEG;AACH,qBAAa,MAAM,CAAC,CAAC,SAAS,SAAS,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;CAAG;AAEjE;;GAEG;AACH,qBAAa,SAAS,CAAC,CAAC,SAAS,SAAS,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;CAAG"}
1
+ {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,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"}
package/dist/entity.js CHANGED
@@ -1,15 +1,6 @@
1
- // ============================================================================
2
- // Entity & Aggregate Classes
3
- // ============================================================================
4
1
  import { BaseEntity } from "./base-entity";
5
- /**
6
- * Entity - Has identity and lifecycle, but is not an aggregate root
7
- */
8
2
  export class Entity extends BaseEntity {
9
3
  }
10
- /**
11
- * Aggregate - Aggregate root that manages a consistency boundary
12
- */
13
4
  export class Aggregate extends BaseEntity {
14
5
  }
15
6
  //# sourceMappingURL=entity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity.js","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C;;GAEG;AACH,MAAM,OAAO,MAA4B,SAAQ,UAAa;CAAG;AAEjE;;GAEG;AACH,MAAM,OAAO,SAA+B,SAAQ,UAAa;CAAG"}
1
+ {"version":3,"file":"entity.js","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,MAAM,OAAO,MAA4B,SAAQ,UAAa;CAAG;AACjE,MAAM,OAAO,SAA+B,SAAQ,UAAa;CAAG"}
package/dist/id.d.ts CHANGED
@@ -4,16 +4,17 @@ export declare class Id {
4
4
  /**
5
5
  * Create a new Id
6
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
- */
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);
17
18
  constructor(value?: string);
18
19
  /**
19
20
  * Get the string value of the ID
package/dist/id.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../src/id.ts"],"names":[],"mappings":"AAkBA,qBAAa,EAAE;IACb,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IAEjC;;;;;;;;;;;;OAYG;gBACS,KAAK,CAAC,EAAE,MAAM;IAY1B;;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;CAG/B"}
1
+ {"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../src/id.ts"],"names":[],"mappings":"AAMA,qBAAa,EAAE;IACb,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IAGjC;;;;;;;;;;;;MAYE;gBACU,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;CAG/B"}
package/dist/id.js CHANGED
@@ -1,37 +1,13 @@
1
1
  // ============================================================================
2
2
  // Id Class - Smart Identity Management
3
3
  // ============================================================================
4
- function randomUUID() {
5
- // If we are in the browser, use the browser's crypto API
6
- // @ts-expect-error - window.crypto is not defined in the browser
7
- if (typeof window !== "undefined" && window.crypto) {
8
- // @ts-expect-error - window.crypto is not defined in the browser
9
- return window.crypto.randomUUID();
10
- }
11
- // If we are in the server, use the crypto library
12
- // eslint-disable-next-line @typescript-eslint/no-require-imports
13
- const crypto = require("crypto");
14
- return crypto.randomUUID();
15
- }
4
+ import UUID from "./crypto";
16
5
  export class Id {
17
- /**
18
- * Create a new Id
19
- * @param value - Optional existing ID value. If not provided, generates a new UUID.
20
- *
21
- * @example
22
- * // New entity (generates UUID)
23
- * const newId = new Id();
24
- * newuser.isNew() // true
25
- *
26
- * // Existing entity (uses provided ID)
27
- * const existingId = new Id("550e8400-e29b-41d4-a716-446655440000");
28
- * existinguser.isNew() // false
29
- */
30
- constructor(value) {
6
+ constructor(value, isNew) {
31
7
  if (value !== undefined) {
32
8
  // ID was provided - this is an existing entity
33
9
  this._value = value;
34
- this._isNew = false;
10
+ this._isNew = isNew ?? false;
35
11
  }
36
12
  else {
37
13
  // No ID provided - generate new one, this is a new entity
@@ -77,7 +53,7 @@ export class Id {
77
53
  */
78
54
  generateUUID() {
79
55
  // Simple UUID v4 implementation
80
- return randomUUID();
56
+ return UUID();
81
57
  }
82
58
  /**
83
59
  * Create a new Id (convenience static method)
package/dist/id.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"id.js","sourceRoot":"","sources":["../src/id.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,uCAAuC;AACvC,+EAA+E;AAE/E,SAAS,UAAU;IACjB,yDAAyD;IACzD,iEAAiE;IACjE,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACnD,iEAAiE;QACjE,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IACpC,CAAC;IACD,kDAAkD;IAClD,iEAAiE;IACjE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEjC,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,OAAO,EAAE;IAIb;;;;;;;;;;;;OAYG;IACH,YAAY,KAAc;QACxB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,+CAA+C;YAC/C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,0DAA0D;YAC1D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,KAAK;QACV,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAkB;QACvB,IAAI,KAAK,YAAY,EAAE,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,gCAAgC;QAChC,OAAO,UAAU,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,EAAE,EAAE,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,KAAa;QACvB,OAAO,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"id.js","sourceRoot":"","sources":["../src/id.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,uCAAuC;AACvC,+EAA+E;AAE/E,OAAO,IAAI,MAAM,UAAU,CAAC;AAE5B,MAAM,OAAO,EAAE;IAoBb,YAAY,KAAc,EAAE,KAAe;QACzC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,+CAA+C;YAC/C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,KAAK,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,0DAA0D;YAC1D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,KAAK;QACV,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAkB;QACvB,IAAI,KAAK,YAAY,EAAE,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,gCAAgC;QAChC,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,EAAE,EAAE,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,KAAa;QACvB,OAAO,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,3 @@
1
- export { Id } from "./id";
2
- export { Entity, Aggregate } from "./entity";
3
- export { ValueObject } from "./value-object";
4
- export { Mapper } from "./mapper";
5
1
  export * from "./validation-error";
6
2
  export * from "./domain-event";
7
3
  export * from "./domain-event-bus";
@@ -9,5 +5,13 @@ export * from "./exceptions";
9
5
  export * from "./criteria";
10
6
  export * from "./paginated-result";
11
7
  export * from "./repository";
12
- export { DomainEventHandler, EntityHooks, Filter, EntityValidation, IDomainEvent, VOValidation, VOHooks, ValidationConfig, Primitive, TransactionContext, PaginationMeta, Pagination, OrderDirection, Order, IUnitOfWork, IDomainEventHandler, EntityId, FieldPath, FilterOperator, Search, FilterValueFor, PathValue, OperatorsForType, DateOperators, NumberOperators, StringOperators, BooleanOperators, ArrayOperators, CriteriaOptions, } from "./types";
8
+ export { Id } from "./id";
9
+ export { Entity, Aggregate } from "./entity";
10
+ export { ValueObject } from "./value-object";
11
+ export { Mapper } from "./mapper";
12
+ export { EntitySchemaRegistry } from "./entity-schema-registry";
13
+ export { AggregateChanges } from "./aggregate-changes";
14
+ export { DomainEventHandler, EntityHooks, Filter, EntityValidation, IDomainEvent, VOValidation, VOHooks, ValidationConfig, Primitive, TransactionContext, PaginationMeta, Pagination, OrderDirection, Order, IUnitOfWork, IDomainEventHandler, FieldPath, FilterOperator, Search, FilterValueFor, PathValue, OperatorsForType, DateOperators, NumberOperators, StringOperators, BooleanOperators, ArrayOperators, CriteriaOptions, } from "./types";
15
+ export { ARRAY_OPERATORS, BOOLEAN_OPERATORS, DATE_OPERATORS, NUMBER_OPERATORS, STRING_OPERATORS, FILTER_OPERATORS, } from "./constants";
16
+ export { isValidOperatorForType } from "./utils/criteria-operator-validation";
13
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAG7B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AAGnC,cAAc,cAAc,CAAC;AAG7B,OAAO,EACL,kBAAkB,EAClB,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,mBAAmB,EACnB,QAAQ,EACR,SAAS,EACT,cAAc,EACd,MAAM,EACN,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EACL,kBAAkB,EAClB,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,mBAAmB,EACnB,SAAS,EACT,cAAc,EACd,MAAM,EACN,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC"}
package/dist/index.js CHANGED
@@ -1,19 +1,16 @@
1
- // ============================================================================
2
- // Rich Domain Library - Main Exports
3
- // ============================================================================
4
- // Core Classes
5
- export { Id } from "./id";
6
- export { Entity, Aggregate } from "./entity";
7
- export { ValueObject } from "./value-object";
8
- export { Mapper } from "./mapper";
9
1
  export * from "./validation-error";
10
- // Domain Events
11
2
  export * from "./domain-event";
12
3
  export * from "./domain-event-bus";
13
4
  export * from "./exceptions";
14
- // Criteria
15
5
  export * from "./criteria";
16
6
  export * from "./paginated-result";
17
- // Repository
18
7
  export * from "./repository";
8
+ export { Id } from "./id";
9
+ export { Entity, Aggregate } from "./entity";
10
+ export { ValueObject } from "./value-object";
11
+ export { Mapper } from "./mapper";
12
+ export { EntitySchemaRegistry } from "./entity-schema-registry";
13
+ export { AggregateChanges } from "./aggregate-changes";
14
+ export { ARRAY_OPERATORS, BOOLEAN_OPERATORS, DATE_OPERATORS, NUMBER_OPERATORS, STRING_OPERATORS, FILTER_OPERATORS, } from "./constants";
15
+ export { isValidOperatorForType } from "./utils/criteria-operator-validation";
19
16
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,qCAAqC;AACrC,+EAA+E;AAE/E,eAAe;AACf,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,cAAc,oBAAoB,CAAC;AAEnC,gBAAgB;AAChB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAE7B,WAAW;AACX,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AAEnC,aAAa;AACb,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AA+BvD,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC"}
package/dist/mapper.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export declare abstract class Mapper<Input, Output> {
2
- abstract build(input: Input, ...args: unknown[]): Output;
2
+ abstract build(input: Input, ...args: unknown[]): Output | Promise<Output>;
3
3
  }
4
4
  //# sourceMappingURL=mapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../src/mapper.ts"],"names":[],"mappings":"AAAA,8BAAsB,MAAM,CAAC,KAAK,EAAE,MAAM;aACxB,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM;CAChE"}
1
+ {"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../src/mapper.ts"],"names":[],"mappings":"AAAA,8BAAsB,MAAM,CAAC,KAAK,EAAE,MAAM;aACxB,KAAK,CACnB,KAAK,EAAE,KAAK,EACZ,GAAG,IAAI,EAAE,OAAO,EAAE,GACjB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAC5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"mapper.js","sourceRoot":"","sources":["../src/mapper.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,MAAM;CAE3B"}
1
+ {"version":3,"file":"mapper.js","sourceRoot":"","sources":["../src/mapper.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,MAAM;CAK3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"paginated-result.d.ts","sourceRoot":"","sources":["../src/paginated-result.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAU,MAAM,SAAS,CAAC;AAMlE;;;;GAIG;AACH,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,MAAM,IAAI,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI;IACnC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,IAAI,EAAE,cAAc,CAAC;CACtB,CAAC;AAMF,qBAAa,eAAe,CAAC,CAAC;aAEV,IAAI,EAAE,CAAC,EAAE;aACT,IAAI,EAAE,cAAc;gBADpB,IAAI,EAAE,CAAC,EAAE,EACT,IAAI,EAAE,cAAc;IAGtC;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,CAAC,EACb,IAAI,EAAE,CAAC,EAAE,EACT,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,MAAM,GACZ,eAAe,CAAC,CAAC,CAAC;IAKrB;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc;IAaxE;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAsD1E;;;;;;;;OAQG;IACH,MAAM,IAAI,mBAAmB,CAAC,CAAC,CAAC;IAShC;;OAEG;IACH,OAAO,CAAC,aAAa;IA+BrB;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAI9C;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;CACF"}
1
+ {"version":3,"file":"paginated-result.d.ts","sourceRoot":"","sources":["../src/paginated-result.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAU,MAAM,SAAS,CAAC;AAElE;;;;GAIG;AACH,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,MAAM,IAAI,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI;IACnC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,IAAI,EAAE,cAAc,CAAC;CACtB,CAAC;AAEF,qBAAa,eAAe,CAAC,CAAC;aAEV,IAAI,EAAE,CAAC,EAAE;aACT,IAAI,EAAE,cAAc;gBADpB,IAAI,EAAE,CAAC,EAAE,EACT,IAAI,EAAE,cAAc;IAGtC;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,CAAC,EACb,IAAI,EAAE,CAAC,EAAE,EACT,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,MAAM,GACZ,eAAe,CAAC,CAAC,CAAC;IAKrB;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc;IAaxE;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAkD1E;;;;;;;;OAQG;IACH,MAAM,IAAI,mBAAmB,CAAC,CAAC,CAAC;IAShC;;OAEG;IACH,OAAO,CAAC,aAAa;IA0BrB;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAI9C;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;CACF"}