@woltz/rich-domain 1.8.0 → 1.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +106 -47
- package/dist/cjs/core/base-aggregate.d.ts +39 -0
- package/dist/cjs/core/base-aggregate.d.ts.map +1 -0
- package/dist/cjs/core/base-aggregate.js +57 -0
- package/dist/cjs/core/base-aggregate.js.map +1 -0
- package/dist/cjs/core/base-entity.d.ts +6 -22
- package/dist/cjs/core/base-entity.d.ts.map +1 -1
- package/dist/cjs/core/base-entity.js +5 -29
- package/dist/cjs/core/base-entity.js.map +1 -1
- package/dist/cjs/core/entity.d.ts +3 -2
- package/dist/cjs/core/entity.d.ts.map +1 -1
- package/dist/cjs/core/entity.js +2 -1
- package/dist/cjs/core/entity.js.map +1 -1
- package/dist/cjs/core/id.d.ts +9 -1
- package/dist/cjs/core/id.d.ts.map +1 -1
- package/dist/cjs/core/id.js +12 -0
- package/dist/cjs/core/id.js.map +1 -1
- package/dist/cjs/core/index.d.ts +1 -0
- package/dist/cjs/core/index.d.ts.map +1 -1
- package/dist/cjs/core/index.js +1 -0
- package/dist/cjs/core/index.js.map +1 -1
- package/dist/cjs/core/value-object.d.ts +0 -18
- package/dist/cjs/core/value-object.d.ts.map +1 -1
- package/dist/cjs/core/value-object.js +0 -25
- package/dist/cjs/core/value-object.js.map +1 -1
- package/dist/esm/core/base-aggregate.d.ts +39 -0
- package/dist/esm/core/base-aggregate.d.ts.map +1 -0
- package/dist/esm/core/base-aggregate.js +53 -0
- package/dist/esm/core/base-aggregate.js.map +1 -0
- package/dist/esm/core/base-entity.d.ts +6 -22
- package/dist/esm/core/base-entity.d.ts.map +1 -1
- package/dist/esm/core/base-entity.js +5 -29
- package/dist/esm/core/base-entity.js.map +1 -1
- package/dist/esm/core/entity.d.ts +3 -2
- package/dist/esm/core/entity.d.ts.map +1 -1
- package/dist/esm/core/entity.js +2 -1
- package/dist/esm/core/entity.js.map +1 -1
- package/dist/esm/core/id.d.ts +9 -1
- package/dist/esm/core/id.d.ts.map +1 -1
- package/dist/esm/core/id.js +12 -0
- package/dist/esm/core/id.js.map +1 -1
- package/dist/esm/core/index.d.ts +1 -0
- package/dist/esm/core/index.d.ts.map +1 -1
- package/dist/esm/core/index.js +1 -0
- package/dist/esm/core/index.js.map +1 -1
- package/dist/esm/core/value-object.d.ts +0 -18
- package/dist/esm/core/value-object.d.ts.map +1 -1
- package/dist/esm/core/value-object.js +0 -25
- package/dist/esm/core/value-object.js.map +1 -1
- package/dist/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.types.tsbuildinfo +1 -1
- package/dist/types/core/base-aggregate.d.ts +39 -0
- package/dist/types/core/base-aggregate.d.ts.map +1 -0
- package/dist/types/core/base-entity.d.ts +6 -22
- package/dist/types/core/base-entity.d.ts.map +1 -1
- package/dist/types/core/entity.d.ts +3 -2
- package/dist/types/core/entity.d.ts.map +1 -1
- package/dist/types/core/id.d.ts +9 -1
- package/dist/types/core/id.d.ts.map +1 -1
- package/dist/types/core/index.d.ts +1 -0
- package/dist/types/core/index.d.ts.map +1 -1
- package/dist/types/core/value-object.d.ts +0 -18
- package/dist/types/core/value-object.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/aggregate-changes.d.ts +0 -206
- package/dist/cjs/aggregate-changes.d.ts.map +0 -1
- package/dist/cjs/aggregate-changes.js +0 -365
- package/dist/cjs/aggregate-changes.js.map +0 -1
- package/dist/cjs/base-entity.d.ts +0 -90
- package/dist/cjs/base-entity.d.ts.map +0 -1
- package/dist/cjs/base-entity.js +0 -331
- package/dist/cjs/base-entity.js.map +0 -1
- package/dist/cjs/change-tracker.d.ts +0 -96
- package/dist/cjs/change-tracker.d.ts.map +0 -1
- package/dist/cjs/change-tracker.js +0 -789
- package/dist/cjs/change-tracker.js.map +0 -1
- package/dist/cjs/crypto.d.ts +0 -3
- package/dist/cjs/crypto.d.ts.map +0 -1
- package/dist/cjs/crypto.js +0 -32
- package/dist/cjs/crypto.js.map +0 -1
- package/dist/cjs/domain-event.d.ts +0 -23
- package/dist/cjs/domain-event.d.ts.map +0 -1
- package/dist/cjs/domain-event.js +0 -36
- package/dist/cjs/domain-event.js.map +0 -1
- package/dist/cjs/entity-changes.d.ts +0 -84
- package/dist/cjs/entity-changes.d.ts.map +0 -1
- package/dist/cjs/entity-changes.js +0 -136
- package/dist/cjs/entity-changes.js.map +0 -1
- package/dist/cjs/entity-schema-registry.d.ts +0 -282
- package/dist/cjs/entity-schema-registry.d.ts.map +0 -1
- package/dist/cjs/entity-schema-registry.js +0 -372
- package/dist/cjs/entity-schema-registry.js.map +0 -1
- package/dist/cjs/entity.d.ts +0 -7
- package/dist/cjs/entity.d.ts.map +0 -1
- package/dist/cjs/entity.js +0 -11
- package/dist/cjs/entity.js.map +0 -1
- package/dist/cjs/id.d.ts +0 -59
- package/dist/cjs/id.d.ts.map +0 -1
- package/dist/cjs/id.js +0 -92
- package/dist/cjs/id.js.map +0 -1
- package/dist/cjs/mapper.d.ts +0 -4
- package/dist/cjs/mapper.d.ts.map +0 -1
- package/dist/cjs/mapper.js +0 -7
- package/dist/cjs/mapper.js.map +0 -1
- package/dist/cjs/paginated-result.d.ts +0 -54
- package/dist/cjs/paginated-result.d.ts.map +0 -1
- package/dist/cjs/paginated-result.js +0 -197
- package/dist/cjs/paginated-result.js.map +0 -1
- package/dist/cjs/value-object.d.ts +0 -49
- package/dist/cjs/value-object.d.ts.map +0 -1
- package/dist/cjs/value-object.js +0 -129
- package/dist/cjs/value-object.js.map +0 -1
- package/dist/esm/aggregate-changes.d.ts +0 -206
- package/dist/esm/aggregate-changes.d.ts.map +0 -1
- package/dist/esm/aggregate-changes.js +0 -361
- package/dist/esm/aggregate-changes.js.map +0 -1
- package/dist/esm/base-entity.d.ts +0 -90
- package/dist/esm/base-entity.d.ts.map +0 -1
- package/dist/esm/base-entity.js +0 -327
- package/dist/esm/base-entity.js.map +0 -1
- package/dist/esm/change-tracker.d.ts +0 -96
- package/dist/esm/change-tracker.d.ts.map +0 -1
- package/dist/esm/change-tracker.js +0 -785
- package/dist/esm/change-tracker.js.map +0 -1
- package/dist/esm/crypto.d.ts +0 -3
- package/dist/esm/crypto.d.ts.map +0 -1
- package/dist/esm/crypto.js +0 -29
- package/dist/esm/crypto.js.map +0 -1
- package/dist/esm/domain-event.d.ts +0 -23
- package/dist/esm/domain-event.d.ts.map +0 -1
- package/dist/esm/domain-event.js +0 -32
- package/dist/esm/domain-event.js.map +0 -1
- package/dist/esm/entity-changes.d.ts +0 -84
- package/dist/esm/entity-changes.d.ts.map +0 -1
- package/dist/esm/entity-changes.js +0 -132
- package/dist/esm/entity-changes.js.map +0 -1
- package/dist/esm/entity-schema-registry.d.ts +0 -282
- package/dist/esm/entity-schema-registry.d.ts.map +0 -1
- package/dist/esm/entity-schema-registry.js +0 -368
- package/dist/esm/entity-schema-registry.js.map +0 -1
- package/dist/esm/entity.d.ts +0 -7
- package/dist/esm/entity.d.ts.map +0 -1
- package/dist/esm/entity.js +0 -6
- package/dist/esm/entity.js.map +0 -1
- package/dist/esm/id.d.ts +0 -59
- package/dist/esm/id.d.ts.map +0 -1
- package/dist/esm/id.js +0 -85
- package/dist/esm/id.js.map +0 -1
- package/dist/esm/mapper.d.ts +0 -4
- package/dist/esm/mapper.d.ts.map +0 -1
- package/dist/esm/mapper.js +0 -3
- package/dist/esm/mapper.js.map +0 -1
- package/dist/esm/paginated-result.d.ts +0 -54
- package/dist/esm/paginated-result.d.ts.map +0 -1
- package/dist/esm/paginated-result.js +0 -193
- package/dist/esm/paginated-result.js.map +0 -1
- package/dist/esm/value-object.d.ts +0 -49
- package/dist/esm/value-object.d.ts.map +0 -1
- package/dist/esm/value-object.js +0 -125
- package/dist/esm/value-object.js.map +0 -1
- package/dist/types/aggregate-changes.d.ts +0 -206
- package/dist/types/aggregate-changes.d.ts.map +0 -1
- package/dist/types/base-entity.d.ts +0 -90
- package/dist/types/base-entity.d.ts.map +0 -1
- package/dist/types/change-tracker.d.ts +0 -96
- package/dist/types/change-tracker.d.ts.map +0 -1
- package/dist/types/crypto.d.ts +0 -3
- package/dist/types/crypto.d.ts.map +0 -1
- package/dist/types/domain-event.d.ts +0 -23
- package/dist/types/domain-event.d.ts.map +0 -1
- package/dist/types/entity-changes.d.ts +0 -84
- package/dist/types/entity-changes.d.ts.map +0 -1
- package/dist/types/entity-schema-registry.d.ts +0 -282
- package/dist/types/entity-schema-registry.d.ts.map +0 -1
- package/dist/types/entity.d.ts +0 -7
- package/dist/types/entity.d.ts.map +0 -1
- package/dist/types/id.d.ts +0 -59
- package/dist/types/id.d.ts.map +0 -1
- package/dist/types/mapper.d.ts +0 -4
- package/dist/types/mapper.d.ts.map +0 -1
- package/dist/types/paginated-result.d.ts +0 -62
- package/dist/types/paginated-result.d.ts.map +0 -1
- package/dist/types/value-object.d.ts +0 -49
- 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<
|
|
38
|
+
class Email extends ValueObject<string> {
|
|
39
39
|
protected static validation = {
|
|
40
|
-
schema: z.
|
|
41
|
-
value: z.string().email("Invalid email format"),
|
|
42
|
-
}),
|
|
40
|
+
schema: z.string().email("Invalid email format"),
|
|
43
41
|
};
|
|
44
42
|
|
|
45
|
-
|
|
46
|
-
return this.
|
|
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(
|
|
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
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
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
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
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
|
|
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
|
|
371
|
+
class Price extends ValueObject<number> {
|
|
317
372
|
protected static validation = {
|
|
318
|
-
schema: z.
|
|
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
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
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
|
-
|
|
335
|
-
return this.
|
|
388
|
+
discount(percentage: number): Price {
|
|
389
|
+
return this.clone(this.value * (1 - percentage / 100));
|
|
336
390
|
}
|
|
337
391
|
|
|
338
|
-
|
|
339
|
-
return
|
|
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
|
|
344
|
-
const
|
|
345
|
-
const
|
|
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(
|
|
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
|
|
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;
|
|
@@ -63,25 +62,10 @@ export declare abstract class BaseEntity<T extends BaseProps> {
|
|
|
63
62
|
*/
|
|
64
63
|
markAsClean(): void;
|
|
65
64
|
/**
|
|
66
|
-
*
|
|
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
|
|
65
|
+
* Clears history, marks entity as "clean" and marks the Id as not new.
|
|
66
|
+
* Call this after successfully persisting to the database.
|
|
83
67
|
*/
|
|
84
|
-
|
|
68
|
+
markAsPersisted(): void;
|
|
85
69
|
toJSON(): DeepJsonResult<T>;
|
|
86
70
|
private deepToJson;
|
|
87
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-entity.d.ts","sourceRoot":"","sources":["../../../src/core/base-entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,SAAS,EACT,YAAY,EACZ,cAAc,EACd,WAAW,EAGX,gBAAgB,
|
|
1
|
+
{"version":3,"file":"base-entity.d.ts","sourceRoot":"","sources":["../../../src/core/base-entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,SAAS,EACT,YAAY,EACZ,cAAc,EACd,WAAW,EAGX,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAiB,gBAAgB,EAAE,EAAE,EAAe,MAAM,SAAS,CAAC;AAS3E,8BAAsB,UAAU,CAC9B,CAAC,SAAS,SAAS,EACnB,cAAc,SAAS,MAAM,CAAC,GAAG,KAAK;IAEtC,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,WAAW,CAAC,CAAsB;IAC1C,OAAO,CAAC,YAAY,CAAC,CAAoB;IAEzC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACpD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAG7C,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,GAChC;QAAE,EAAE,CAAC,EAAE,EAAE,CAAA;KAAE;IAsDf,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,cAAc;IAgBtB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IA4E7B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,cAAc;IAkDtB,IAAI,EAAE,IAAI,EAAE,CAEX;IAEM,KAAK,IAAI,OAAO;IAIvB;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,OAAO;IAoBnD,IAAW,KAAK,IAAI,CAAC,CAEpB;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,eAAe,GAAG,SAAS,CAElD;IAED;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,gBAAgB,CAAC,UAAU,CAAC;IAK5E;;OAEG;IACH,UAAU,IAAI,YAAY,EAAE;IAI5B;;;OAGG;IACH,WAAW,IAAI,IAAI;IAKnB;;;OAGG;IACH,eAAe,IAAI,IAAI;IAOvB,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC;IAI3B,OAAO,CAAC,UAAU;CAiBnB"}
|
|
@@ -16,7 +16,6 @@ class BaseEntity {
|
|
|
16
16
|
validationConfig;
|
|
17
17
|
entityHooks;
|
|
18
18
|
entitySchema;
|
|
19
|
-
domainEvents = [];
|
|
20
19
|
static validation;
|
|
21
20
|
static hooks;
|
|
22
21
|
constructor(props) {
|
|
@@ -266,35 +265,12 @@ class BaseEntity {
|
|
|
266
265
|
this.takeSnapshot();
|
|
267
266
|
}
|
|
268
267
|
/**
|
|
269
|
-
*
|
|
270
|
-
|
|
271
|
-
addDomainEvent(event) {
|
|
272
|
-
this.domainEvents.push(event);
|
|
273
|
-
}
|
|
274
|
-
/**
|
|
275
|
-
* Dispatch all events through the event bus
|
|
276
|
-
*/
|
|
277
|
-
async dispatchAll(bus) {
|
|
278
|
-
await bus.publishAll(this.getUncommittedEvents());
|
|
279
|
-
this.clearEvents();
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* Get all uncommitted domain events
|
|
283
|
-
*/
|
|
284
|
-
getUncommittedEvents() {
|
|
285
|
-
return [...this.domainEvents];
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* Clear all domain events (call after publishing)
|
|
289
|
-
*/
|
|
290
|
-
clearEvents() {
|
|
291
|
-
this.domainEvents = [];
|
|
292
|
-
}
|
|
293
|
-
/**
|
|
294
|
-
* Check if entity has uncommitted events
|
|
268
|
+
* Clears history, marks entity as "clean" and marks the Id as not new.
|
|
269
|
+
* Call this after successfully persisting to the database.
|
|
295
270
|
*/
|
|
296
|
-
|
|
297
|
-
|
|
271
|
+
markAsPersisted() {
|
|
272
|
+
this.markAsClean();
|
|
273
|
+
this.id.markAsNotNew();
|
|
298
274
|
}
|
|
299
275
|
toJSON() {
|
|
300
276
|
return this.deepToJson(this._props);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-entity.js","sourceRoot":"","sources":["../../../src/core/base-entity.ts"],"names":[],"mappings":";;;AAAA,gEAAyD;
|
|
1
|
+
{"version":3,"file":"base-entity.js","sourceRoot":"","sources":["../../../src/core/base-entity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { BaseEntity } from "./base-entity.js";
|
|
2
|
+
import { BaseAggregate } from "./base-aggregate.js";
|
|
2
3
|
import { BaseProps } from "../types/index.js";
|
|
3
|
-
export declare class Entity<T extends BaseProps> extends BaseEntity<T> {
|
|
4
|
+
export declare class Entity<T extends BaseProps, TOptionalInput extends keyof T = never> extends BaseEntity<T, TOptionalInput> {
|
|
4
5
|
}
|
|
5
|
-
export declare class Aggregate<T extends BaseProps> extends
|
|
6
|
+
export declare class Aggregate<T extends BaseProps, TOptionalInput extends keyof T = never> extends BaseAggregate<T, TOptionalInput> {
|
|
6
7
|
}
|
|
7
8
|
//# sourceMappingURL=entity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../src/core/entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,MAAM,
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../src/core/entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,MAAM,CACjB,CAAC,SAAS,SAAS,EACnB,cAAc,SAAS,MAAM,CAAC,GAAG,KAAK,CACtC,SAAQ,UAAU,CAAC,CAAC,EAAE,cAAc,CAAC;CAAG;AAE1C,qBAAa,SAAS,CACpB,CAAC,SAAS,SAAS,EACnB,cAAc,SAAS,MAAM,CAAC,GAAG,KAAK,CACtC,SAAQ,aAAa,CAAC,CAAC,EAAE,cAAc,CAAC;CAAG"}
|
package/dist/cjs/core/entity.js
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Aggregate = exports.Entity = void 0;
|
|
4
4
|
const base_entity_js_1 = require("./base-entity.js");
|
|
5
|
+
const base_aggregate_js_1 = require("./base-aggregate.js");
|
|
5
6
|
class Entity extends base_entity_js_1.BaseEntity {
|
|
6
7
|
}
|
|
7
8
|
exports.Entity = Entity;
|
|
8
|
-
class Aggregate extends
|
|
9
|
+
class Aggregate extends base_aggregate_js_1.BaseAggregate {
|
|
9
10
|
}
|
|
10
11
|
exports.Aggregate = Aggregate;
|
|
11
12
|
//# sourceMappingURL=entity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../../src/core/entity.ts"],"names":[],"mappings":";;;AAAA,qDAA8C;
|
|
1
|
+
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../../src/core/entity.ts"],"names":[],"mappings":";;;AAAA,qDAA8C;AAC9C,2DAAoD;AAGpD,MAAa,MAGX,SAAQ,2BAA6B;CAAG;AAH1C,wBAG0C;AAE1C,MAAa,SAGX,SAAQ,iCAAgC;CAAG;AAH7C,8BAG6C"}
|
package/dist/cjs/core/id.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare class Id {
|
|
2
2
|
private readonly _value;
|
|
3
|
-
private
|
|
3
|
+
private _isNew;
|
|
4
4
|
/**
|
|
5
5
|
* Create a new Id
|
|
6
6
|
* @param value - Optional existing ID value. If not provided, generates a new UUID.
|
|
@@ -44,6 +44,14 @@ export declare class Id {
|
|
|
44
44
|
* Create a new Id (convenience static method)
|
|
45
45
|
*/
|
|
46
46
|
static create(): Id;
|
|
47
|
+
/**
|
|
48
|
+
* Mark the Id as not new
|
|
49
|
+
*/
|
|
50
|
+
markAsNotNew(): void;
|
|
51
|
+
/**
|
|
52
|
+
* Mark the Id as new
|
|
53
|
+
*/
|
|
54
|
+
markAsNew(): void;
|
|
47
55
|
/**
|
|
48
56
|
* Create an Id from an existing value
|
|
49
57
|
*/
|
|
@@ -1 +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,
|
|
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,MAAM,CAAU;IAExB;;;;;;;;;;;;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;IACI,YAAY,IAAI,IAAI;IAI3B;;OAEG;IACI,SAAS,IAAI,IAAI;IAIxB;;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"}
|
package/dist/cjs/core/id.js
CHANGED
|
@@ -66,6 +66,18 @@ class Id {
|
|
|
66
66
|
static create() {
|
|
67
67
|
return new Id();
|
|
68
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Mark the Id as not new
|
|
71
|
+
*/
|
|
72
|
+
markAsNotNew() {
|
|
73
|
+
this._isNew = false;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Mark the Id as new
|
|
77
|
+
*/
|
|
78
|
+
markAsNew() {
|
|
79
|
+
this._isNew = true;
|
|
80
|
+
}
|
|
69
81
|
/**
|
|
70
82
|
* Create an Id from an existing value
|
|
71
83
|
*/
|
package/dist/cjs/core/id.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../../src/core/id.ts"],"names":[],"mappings":";;;;;;AAAA,mEAAsC;AAEtC,MAAa,EAAE;IACI,MAAM,CAAS;
|
|
1
|
+
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../../src/core/id.ts"],"names":[],"mappings":";;;;;;AAAA,mEAAsC;AAEtC,MAAa,EAAE;IACI,MAAM,CAAS;IACxB,MAAM,CAAU;IAiBxB,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,IAAA,mBAAI,GAAE,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,EAAE,EAAE,CAAC;IAClB,CAAC;IAED;;OAEG;IACI,YAAY;QACjB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,SAAS;QACd,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,KAAa;QACvB,OAAO,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,CAAc,EAAE,CAAc;QAC3C,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACpB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACpB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QACd,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IACrB,CAAC;CACF;AAzHD,gBAyHC"}
|
package/dist/cjs/core/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,MAAM,CAAC;AACrB,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,MAAM,CAAC;AACrB,cAAc,gBAAgB,CAAC"}
|
package/dist/cjs/core/index.js
CHANGED
|
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./base-entity"), exports);
|
|
18
|
+
__exportStar(require("./base-aggregate"), exports);
|
|
18
19
|
__exportStar(require("./aggregate-changes"), exports);
|
|
19
20
|
__exportStar(require("./change-tracker"), exports);
|
|
20
21
|
__exportStar(require("./domain-event"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,sDAAoC;AACpC,mDAAiC;AACjC,iDAA+B;AAC/B,mDAAiC;AACjC,2CAAyB;AACzB,uCAAqB;AACrB,iDAA+B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,mDAAiC;AACjC,sDAAoC;AACpC,mDAAiC;AACjC,iDAA+B;AAC/B,mDAAiC;AACjC,2CAAyB;AACzB,uCAAqB;AACrB,iDAA+B"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { ValidationError } from "../validation-error.js";
|
|
2
|
-
import { IDomainEvent } from "../index.js";
|
|
3
2
|
import { VOHooks, EntityValidation, Primitive } from "../types/index.js";
|
|
4
3
|
export declare abstract class ValueObject<T extends Primitive> {
|
|
5
4
|
readonly value: T;
|
|
6
5
|
private validationConfig;
|
|
7
6
|
private domainHooks?;
|
|
8
7
|
private domainSchema?;
|
|
9
|
-
private domainEvents;
|
|
10
8
|
protected static validation?: EntityValidation<any>;
|
|
11
9
|
protected static hooks?: VOHooks<any, any>;
|
|
12
10
|
constructor(value: T);
|
|
@@ -24,22 +22,6 @@ export declare abstract class ValueObject<T extends Primitive> {
|
|
|
24
22
|
* Compare this ValueObject with another for equality based on their properties.
|
|
25
23
|
*/
|
|
26
24
|
equals(other: ValueObject<T>): boolean;
|
|
27
|
-
/**
|
|
28
|
-
* Adds a domain event to this value object.
|
|
29
|
-
*/
|
|
30
|
-
protected addDomainEvent(event: IDomainEvent): void;
|
|
31
|
-
/**
|
|
32
|
-
* Returns all uncommitted domain events.
|
|
33
|
-
*/
|
|
34
|
-
getUncommittedEvents(): IDomainEvent[];
|
|
35
|
-
/**
|
|
36
|
-
* Clears all domain events (call after publishing).
|
|
37
|
-
*/
|
|
38
|
-
clearEvents(): void;
|
|
39
|
-
/**
|
|
40
|
-
* Returns true if the value object has uncommitted events.
|
|
41
|
-
*/
|
|
42
|
-
hasUncommittedEvents(): boolean;
|
|
43
25
|
/**
|
|
44
26
|
* Creates a new ValueObject with updated value.
|
|
45
27
|
* ValueObjects are immutable, so this returns a new instance.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value-object.d.ts","sourceRoot":"","sources":["../../../src/core/value-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"value-object.d.ts","sourceRoot":"","sources":["../../../src/core/value-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,OAAO,EAGP,gBAAgB,EAChB,SAAS,EACV,MAAM,mBAAmB,CAAC;AAW3B,8BAAsB,WAAW,CAAC,CAAC,SAAS,SAAS;IACnD,SAAgB,KAAK,EAAG,CAAC,CAAC;IAC1B,OAAO,CAAC,gBAAgB,CAA6B;IAErD,OAAO,CAAC,WAAW,CAAC,CAAkB;IACtC,OAAO,CAAC,YAAY,CAAC,CAAoB;IAEzC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACpD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAE/B,KAAK,EAAE,CAAC;IAmCpB,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,eAAe,GAAG,SAAS,CAElD;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO;IAMtC;;;OAGG;IACH,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;CAIhC"}
|