@hg-ts/domain 0.2.13 → 0.2.15

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 (41) hide show
  1. package/dist/aggregate-created.event.d.ts +4 -0
  2. package/dist/aggregate-created.event.d.ts.map +1 -0
  3. package/dist/aggregate-created.event.js +8 -0
  4. package/dist/aggregate-created.event.js.map +1 -0
  5. package/dist/base.aggregate.d.ts +8 -0
  6. package/dist/base.aggregate.d.ts.map +1 -1
  7. package/dist/base.aggregate.js +37 -1
  8. package/dist/base.aggregate.js.map +1 -1
  9. package/dist/created-event.not-found.exception.d.ts +5 -0
  10. package/dist/created-event.not-found.exception.d.ts.map +1 -0
  11. package/dist/created-event.not-found.exception.js +11 -0
  12. package/dist/created-event.not-found.exception.js.map +1 -0
  13. package/dist/domain.event.d.ts +14 -0
  14. package/dist/domain.event.d.ts.map +1 -0
  15. package/dist/domain.event.js +18 -0
  16. package/dist/domain.event.js.map +1 -0
  17. package/dist/index.d.ts +3 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +5 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/tests/aggregate.test.d.ts +8 -0
  22. package/dist/tests/aggregate.test.d.ts.map +1 -0
  23. package/dist/tests/aggregate.test.js +79 -0
  24. package/dist/tests/aggregate.test.js.map +1 -0
  25. package/dist/tests/create-example.event.d.ts +1 -0
  26. package/dist/tests/create-example.event.d.ts.map +1 -0
  27. package/dist/tests/create-example.event.js +2 -0
  28. package/dist/tests/create-example.event.js.map +1 -0
  29. package/dist/tests/example-created.event.d.ts +7 -0
  30. package/dist/tests/example-created.event.d.ts.map +1 -0
  31. package/dist/tests/example-created.event.js +15 -0
  32. package/dist/tests/example-created.event.js.map +1 -0
  33. package/dist/tests/example-updated.event.d.ts +7 -0
  34. package/dist/tests/example-updated.event.d.ts.map +1 -0
  35. package/dist/tests/example-updated.event.js +15 -0
  36. package/dist/tests/example-updated.event.js.map +1 -0
  37. package/dist/tests/example.aggregate.d.ts +16 -0
  38. package/dist/tests/example.aggregate.d.ts.map +1 -0
  39. package/dist/tests/example.aggregate.js +40 -0
  40. package/dist/tests/example.aggregate.js.map +1 -0
  41. package/package.json +13 -5
@@ -0,0 +1,4 @@
1
+ import { DomainEvent } from './domain.event';
2
+ export declare abstract class AggregateCreatedEvent<Body, IdType = string> extends DomainEvent<Body, IdType> {
3
+ }
4
+ //# sourceMappingURL=aggregate-created.event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate-created.event.d.ts","sourceRoot":"","sources":["../src/aggregate-created.event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,8BAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAE,SAAQ,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC;CAAG"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AggregateCreatedEvent = void 0;
4
+ const domain_event_1 = require("./domain.event");
5
+ class AggregateCreatedEvent extends domain_event_1.DomainEvent {
6
+ }
7
+ exports.AggregateCreatedEvent = AggregateCreatedEvent;
8
+ //# sourceMappingURL=aggregate-created.event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate-created.event.js","sourceRoot":"","sources":["../src/aggregate-created.event.ts"],"names":[],"mappings":";;;AAAA,iDAA6C;AAE7C,MAAsB,qBAA6C,SAAQ,0BAAyB;CAAG;AAAvG,sDAAuG"}
@@ -1,9 +1,17 @@
1
+ import { AggregateCreatedEvent } from './aggregate-created.event';
1
2
  import { BaseEntity } from './base.entity';
3
+ import { DomainEvent } from './domain.event';
2
4
  import type { Identifiable } from './identifiable';
3
5
  declare const AGGREGATE_SYMBOL: unique symbol;
6
+ export declare const AGGREGATE_EVENTS_SYMBOL: unique symbol;
4
7
  export declare abstract class BaseAggregate<IdType = string> extends BaseEntity<IdType> {
5
8
  protected readonly [AGGREGATE_SYMBOL]: IdType;
9
+ protected readonly [AGGREGATE_EVENTS_SYMBOL]: DomainEvent<any>[];
6
10
  protected constructor(params: Identifiable<IdType>);
11
+ static restoreFromEvents<IdType, Aggregate extends BaseAggregate<IdType>, Dto extends Identifiable>(aggregateCtor: Class<Aggregate, [Dto]>, createdEventCtor: Class<AggregateCreatedEvent<Omit<Dto, 'id'>, IdType>, any[]>, events: DomainEvent<any>[]): Aggregate;
12
+ protected applyEvents(events: DomainEvent<any>[]): void;
13
+ protected produceEvent(event: DomainEvent<any>): void;
14
+ private triggerListeners;
7
15
  }
8
16
  export {};
9
17
  //# sourceMappingURL=base.aggregate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.aggregate.d.ts","sourceRoot":"","sources":["../src/base.aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,QAAA,MAAM,gBAAgB,eAA6B,CAAC;AAEpD,8BAAsB,aAAa,CAAC,MAAM,GAAG,MAAM,CAAE,SAAQ,UAAU,CAAC,MAAM,CAAC;IAC9E,SAAS,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE9C,SAAS,aAAa,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC;CAUlD"}
1
+ {"version":3,"file":"base.aggregate.d.ts","sourceRoot":"","sources":["../src/base.aggregate.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,QAAA,MAAM,gBAAgB,eAA6B,CAAC;AACpD,eAAO,MAAM,uBAAuB,eAAoC,CAAC;AAEzE,8BAAsB,aAAa,CAAC,MAAM,GAAG,MAAM,CAAE,SAAQ,UAAU,CAAC,MAAM,CAAC;IAC9E,SAAS,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,CAAC,uBAAuB,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAM;IAEtE,SAAS,aAAa,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC;WAWpC,iBAAiB,CAAC,MAAM,EAAE,SAAS,SAAS,aAAa,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,YAAY,EACxG,aAAa,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,EACtC,gBAAgB,EAAE,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAC9E,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,GACxB,SAAS;IAgBZ,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;IAIvD,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI;IAMrD,OAAO,CAAC,gBAAgB;CAexB"}
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseAggregate = void 0;
3
+ exports.BaseAggregate = exports.AGGREGATE_EVENTS_SYMBOL = void 0;
4
+ const events_1 = require("@hg-ts/events");
4
5
  const base_entity_1 = require("./base.entity");
6
+ const created_event_not_found_exception_1 = require("./created-event.not-found.exception");
5
7
  const AGGREGATE_SYMBOL = Symbol('AGGREGATE_SYMBOL');
8
+ exports.AGGREGATE_EVENTS_SYMBOL = Symbol('AGGREGATE_EVENTS_SYMBOL');
6
9
  class BaseAggregate extends base_entity_1.BaseEntity {
7
10
  [AGGREGATE_SYMBOL];
11
+ [exports.AGGREGATE_EVENTS_SYMBOL] = [];
8
12
  constructor(params) {
9
13
  super(params);
10
14
  Object.defineProperty(this, AGGREGATE_SYMBOL, {
@@ -14,6 +18,38 @@ class BaseAggregate extends base_entity_1.BaseEntity {
14
18
  writable: true,
15
19
  });
16
20
  }
21
+ static restoreFromEvents(aggregateCtor, createdEventCtor, events) {
22
+ const createdEvent = events.find(event => event instanceof createdEventCtor);
23
+ if (!createdEvent) {
24
+ throw new created_event_not_found_exception_1.CreatedEventNotFoundException(aggregateCtor.name);
25
+ }
26
+ const aggregate = new aggregateCtor({
27
+ id: createdEvent.entityId,
28
+ ...createdEvent.body,
29
+ });
30
+ aggregate.applyEvents(events);
31
+ return aggregate;
32
+ }
33
+ applyEvents(events) {
34
+ events.forEach(event => this.produceEvent(event));
35
+ }
36
+ produceEvent(event) {
37
+ this.triggerListeners(event);
38
+ this[exports.AGGREGATE_EVENTS_SYMBOL].push(event);
39
+ }
40
+ triggerListeners(event) {
41
+ const proto = Object.getPrototypeOf(this);
42
+ const listenMethods = (0, events_1.getListenMethods)(proto);
43
+ listenMethods.forEach(methodName => {
44
+ const method = this[methodName].bind(this);
45
+ const eventsToHandle = (0, events_1.getEventsToHandle)(proto, methodName);
46
+ eventsToHandle.forEach(eventCtor => {
47
+ if (event instanceof eventCtor) {
48
+ method(event);
49
+ }
50
+ });
51
+ });
52
+ }
17
53
  }
18
54
  exports.BaseAggregate = BaseAggregate;
19
55
  //# sourceMappingURL=base.aggregate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.aggregate.js","sourceRoot":"","sources":["../src/base.aggregate.ts"],"names":[],"mappings":";;;AAAA,+CAA2C;AAG3C,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAEpD,MAAsB,aAA+B,SAAQ,wBAAkB;IAC3D,CAAC,gBAAgB,CAAC,CAAS;IAE9C,YAAsB,MAA4B;QACjD,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE;YAC7C,KAAK,EAAE,MAAM,CAAC,EAAE;YAChB,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,IAAI;SACd,CAAC,CAAC;IACJ,CAAC;CACD;AAbD,sCAaC"}
1
+ {"version":3,"file":"base.aggregate.js","sourceRoot":"","sources":["../src/base.aggregate.ts"],"names":[],"mappings":";;;AAAA,0CAIuB;AAGvB,+CAA2C;AAC3C,2FAAoF;AAIpF,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACvC,QAAA,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAEzE,MAAsB,aAA+B,SAAQ,wBAAkB;IAC3D,CAAC,gBAAgB,CAAC,CAAS;IAC3B,CAAC,+BAAuB,CAAC,GAAuB,EAAE,CAAC;IAEtE,YAAsB,MAA4B;QACjD,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE;YAC7C,KAAK,EAAE,MAAM,CAAC,EAAE;YAChB,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,IAAI;SACd,CAAC,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAC9B,aAAsC,EACtC,gBAA8E,EAC9E,MAA0B;QAE1B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,YAAY,gBAAgB,CAAC,CAAC;QAC7E,IAAI,CAAC,YAAY,EAAE,CAAC;YACnB,MAAM,IAAI,iEAA6B,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC;YACnC,EAAE,EAAE,YAAY,CAAC,QAAQ;YACzB,GAAG,YAAY,CAAC,IAAI;SACpB,CAAC,CAAC;QAEH,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE9B,OAAO,SAAS,CAAC;IAClB,CAAC;IAES,WAAW,CAAC,MAA0B;QAC/C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;IAES,YAAY,CAAC,KAAuB;QAC7C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE7B,IAAI,CAAC,+BAAuB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAEO,gBAAgB,CAAC,KAAuB;QAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAE,CAAC;QAC3C,MAAM,aAAa,GAAG,IAAA,yBAAgB,EAAC,KAAK,CAAC,CAAC;QAE9C,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAClC,MAAM,MAAM,GAAI,IAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAiB,CAAC;YACpE,MAAM,cAAc,GAAG,IAAA,0BAAiB,EAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YAE5D,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBAClC,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;oBAChC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACf,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;CACD;AA5DD,sCA4DC"}
@@ -0,0 +1,5 @@
1
+ import { BaseException } from '@hg-ts/exception';
2
+ export declare class CreatedEventNotFoundException extends BaseException {
3
+ constructor(entityName: string);
4
+ }
5
+ //# sourceMappingURL=created-event.not-found.exception.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"created-event.not-found.exception.d.ts","sourceRoot":"","sources":["../src/created-event.not-found.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,6BAA8B,SAAQ,aAAa;gBAC5C,UAAU,EAAE,MAAM;CAGrC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreatedEventNotFoundException = void 0;
4
+ const exception_1 = require("@hg-ts/exception");
5
+ class CreatedEventNotFoundException extends exception_1.BaseException {
6
+ constructor(entityName) {
7
+ super(`Created event for entity "${entityName}" `);
8
+ }
9
+ }
10
+ exports.CreatedEventNotFoundException = CreatedEventNotFoundException;
11
+ //# sourceMappingURL=created-event.not-found.exception.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"created-event.not-found.exception.js","sourceRoot":"","sources":["../src/created-event.not-found.exception.ts"],"names":[],"mappings":";;;AAAA,gDAAiD;AAEjD,MAAa,6BAA8B,SAAQ,yBAAa;IAC/D,YAAmB,UAAkB;QACpC,KAAK,CAAC,6BAA6B,UAAU,IAAI,CAAC,CAAC;IACpD,CAAC;CACD;AAJD,sEAIC"}
@@ -0,0 +1,14 @@
1
+ import { BaseEvent, EventParams } from '@hg-ts/events';
2
+ export declare const STORED_PROPERTY: unique symbol;
3
+ export type DomainEventParams<Body = unknown, IdType = string> = EventParams<Body> & {
4
+ entityName: string;
5
+ entityId: IdType;
6
+ [STORED_PROPERTY]?: true;
7
+ };
8
+ export declare abstract class DomainEvent<Body = unknown, IdType = string> extends BaseEvent<Body> {
9
+ readonly entityName: string;
10
+ readonly entityId: IdType;
11
+ [STORED_PROPERTY]: boolean;
12
+ constructor(params: DomainEventParams<Body, IdType>);
13
+ }
14
+ //# sourceMappingURL=domain.event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.event.d.ts","sourceRoot":"","sources":["../src/domain.event.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,SAAS,EACT,WAAW,EACX,MAAM,eAAe,CAAC;AAEvB,eAAO,MAAM,eAAe,eAAgC,CAAC;AAE7D,MAAM,MAAM,iBAAiB,CAAC,IAAI,GAAG,OAAO,EAAE,MAAM,GAAG,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG;IACpF,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC;CACzB,CAAC;AAGF,8BAAsB,WAAW,CAAC,IAAI,GAAG,OAAO,EAAE,MAAM,GAAG,MAAM,CAAE,SAAQ,SAAS,CAAC,IAAI,CAAC;IACzF,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,QAAQ,EAAE,MAAM,CAAC;IAC1B,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;gBAEf,MAAM,EAAE,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC;CAO1D"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DomainEvent = exports.STORED_PROPERTY = void 0;
4
+ const events_1 = require("@hg-ts/events");
5
+ exports.STORED_PROPERTY = Symbol('Domain event stored');
6
+ class DomainEvent extends events_1.BaseEvent {
7
+ entityName;
8
+ entityId;
9
+ [exports.STORED_PROPERTY];
10
+ constructor(params) {
11
+ super(params);
12
+ this.entityName = params.entityName;
13
+ this.entityId = params.entityId;
14
+ this[exports.STORED_PROPERTY] = params[exports.STORED_PROPERTY] ?? false;
15
+ }
16
+ }
17
+ exports.DomainEvent = DomainEvent;
18
+ //# sourceMappingURL=domain.event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.event.js","sourceRoot":"","sources":["../src/domain.event.ts"],"names":[],"mappings":";;;AAAA,0CAGuB;AAEV,QAAA,eAAe,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAS7D,MAAsB,WAA6C,SAAQ,kBAAe;IACzE,UAAU,CAAS;IACnB,QAAQ,CAAS;IAC1B,CAAC,uBAAe,CAAC,CAAU;IAElC,YAAmB,MAAuC;QACzD,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,uBAAe,CAAC,GAAG,MAAM,CAAC,uBAAe,CAAC,IAAI,KAAK,CAAC;IAC1D,CAAC;CACD;AAZD,kCAYC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export * from './identifiable';
2
- export * from './base.aggregate';
2
+ export { BaseAggregate } from './base.aggregate';
3
3
  export * from './base.entity';
4
+ export * from './domain.event';
5
+ export * from './aggregate-created.event';
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,cAAc,eAAe,CAAC;AAE9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseAggregate = void 0;
3
4
  const tslib_1 = require("tslib");
4
5
  tslib_1.__exportStar(require("./identifiable"), exports);
5
- tslib_1.__exportStar(require("./base.aggregate"), exports);
6
+ var base_aggregate_1 = require("./base.aggregate");
7
+ Object.defineProperty(exports, "BaseAggregate", { enumerable: true, get: function () { return base_aggregate_1.BaseAggregate; } });
6
8
  tslib_1.__exportStar(require("./base.entity"), exports);
9
+ tslib_1.__exportStar(require("./domain.event"), exports);
10
+ tslib_1.__exportStar(require("./aggregate-created.event"), exports);
7
11
  //# 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,yDAA+B;AAC/B,2DAAiC;AACjC,wDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,yDAA+B;AAC/B,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,wDAA8B;AAE9B,yDAA+B;AAC/B,oEAA0C"}
@@ -0,0 +1,8 @@
1
+ import { Suite } from '@hg-ts/tests';
2
+ export declare class AggregateTest extends Suite {
3
+ simpleCreate(): void;
4
+ updateName(): void;
5
+ restoreCreated(): void;
6
+ restoreUpdated(): void;
7
+ }
8
+ //# sourceMappingURL=aggregate.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate.test.d.ts","sourceRoot":"","sources":["../../src/tests/aggregate.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,EAEL,MAAM,cAAc,CAAC;AAStB,qBACa,aAAc,SAAQ,KAAK;IAEhC,YAAY,IAAI,IAAI;IAapB,UAAU,IAAI,IAAI;IAgBlB,cAAc,IAAI,IAAI;IActB,cAAc,IAAI,IAAI;CAa7B"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AggregateTest = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const tests_1 = require("@hg-ts/tests");
6
+ const base_aggregate_1 = require("../base.aggregate");
7
+ const domain_event_1 = require("../domain.event");
8
+ const example_created_event_1 = require("./example-created.event");
9
+ const example_updated_event_1 = require("./example-updated.event");
10
+ const example_aggregate_1 = require("./example.aggregate");
11
+ let AggregateTest = class AggregateTest extends tests_1.Suite {
12
+ simpleCreate() {
13
+ const aggregate = example_aggregate_1.ExampleAggregate.create('original name');
14
+ const events = aggregate[base_aggregate_1.AGGREGATE_EVENTS_SYMBOL];
15
+ (0, tests_1.expect)(aggregate).toBeInstanceOf(example_aggregate_1.ExampleAggregate);
16
+ (0, tests_1.expect)(events).toBeInstanceOf(Array);
17
+ (0, tests_1.expect)(events).toHaveLength(1);
18
+ (0, tests_1.expect)(events[0]).toBeInstanceOf(example_created_event_1.ExampleCreatedEvent);
19
+ (0, tests_1.expect)(events[0][domain_event_1.STORED_PROPERTY]).toBe(false);
20
+ }
21
+ updateName() {
22
+ const aggregate = example_aggregate_1.ExampleAggregate.create('original name');
23
+ aggregate.update('new name');
24
+ const events = aggregate[base_aggregate_1.AGGREGATE_EVENTS_SYMBOL];
25
+ (0, tests_1.expect)(events).toBeInstanceOf(Array);
26
+ (0, tests_1.expect)(events).toHaveLength(2);
27
+ (0, tests_1.expect)(events[0]).toBeInstanceOf(example_created_event_1.ExampleCreatedEvent);
28
+ (0, tests_1.expect)(events[1]).toBeInstanceOf(example_updated_event_1.ExampleUpdatedEvent);
29
+ (0, tests_1.expect)(aggregate.toDto().name).toEqual('new name');
30
+ }
31
+ restoreCreated() {
32
+ const aggregate = example_aggregate_1.ExampleAggregate.create('original name');
33
+ const originalEvents = aggregate[base_aggregate_1.AGGREGATE_EVENTS_SYMBOL];
34
+ originalEvents.forEach(event => {
35
+ event[domain_event_1.STORED_PROPERTY] = true;
36
+ });
37
+ const restored = example_aggregate_1.ExampleAggregate.restoreFromEvents(example_aggregate_1.ExampleAggregate, example_created_event_1.ExampleCreatedEvent, originalEvents);
38
+ (0, tests_1.expect)(restored.toDto()).toMatchObject(aggregate.toDto());
39
+ }
40
+ restoreUpdated() {
41
+ const aggregate = example_aggregate_1.ExampleAggregate.create('original name');
42
+ aggregate.update('new name');
43
+ const originalEvents = aggregate[base_aggregate_1.AGGREGATE_EVENTS_SYMBOL];
44
+ originalEvents.forEach(event => {
45
+ event[domain_event_1.STORED_PROPERTY] = true;
46
+ });
47
+ const restored = example_aggregate_1.ExampleAggregate.restoreFromEvents(example_aggregate_1.ExampleAggregate, example_created_event_1.ExampleCreatedEvent, originalEvents);
48
+ (0, tests_1.expect)(restored.toDto()).toMatchObject(aggregate.toDto());
49
+ }
50
+ };
51
+ exports.AggregateTest = AggregateTest;
52
+ tslib_1.__decorate([
53
+ (0, tests_1.Test)(),
54
+ tslib_1.__metadata("design:type", Function),
55
+ tslib_1.__metadata("design:paramtypes", []),
56
+ tslib_1.__metadata("design:returntype", void 0)
57
+ ], AggregateTest.prototype, "simpleCreate", null);
58
+ tslib_1.__decorate([
59
+ (0, tests_1.Test)(),
60
+ tslib_1.__metadata("design:type", Function),
61
+ tslib_1.__metadata("design:paramtypes", []),
62
+ tslib_1.__metadata("design:returntype", void 0)
63
+ ], AggregateTest.prototype, "updateName", null);
64
+ tslib_1.__decorate([
65
+ (0, tests_1.Test)(),
66
+ tslib_1.__metadata("design:type", Function),
67
+ tslib_1.__metadata("design:paramtypes", []),
68
+ tslib_1.__metadata("design:returntype", void 0)
69
+ ], AggregateTest.prototype, "restoreCreated", null);
70
+ tslib_1.__decorate([
71
+ (0, tests_1.Test)(),
72
+ tslib_1.__metadata("design:type", Function),
73
+ tslib_1.__metadata("design:paramtypes", []),
74
+ tslib_1.__metadata("design:returntype", void 0)
75
+ ], AggregateTest.prototype, "restoreUpdated", null);
76
+ exports.AggregateTest = AggregateTest = tslib_1.__decorate([
77
+ (0, tests_1.Describe)()
78
+ ], AggregateTest);
79
+ //# sourceMappingURL=aggregate.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate.test.js","sourceRoot":"","sources":["../../src/tests/aggregate.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=create-example.event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-example.event.d.ts","sourceRoot":"","sources":["../../src/tests/create-example.event.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=create-example.event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-example.event.js","sourceRoot":"","sources":["../../src/tests/create-example.event.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { AggregateCreatedEvent } from '../aggregate-created.event';
2
+ export declare class ExampleCreatedEvent extends AggregateCreatedEvent<{
3
+ name: string;
4
+ }> {
5
+ constructor(id: string, name: string);
6
+ }
7
+ //# sourceMappingURL=example-created.event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example-created.event.d.ts","sourceRoot":"","sources":["../../src/tests/example-created.event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,qBAAa,mBAAoB,SAAQ,qBAAqB,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;gBAC5D,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAO3C"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExampleCreatedEvent = void 0;
4
+ const aggregate_created_event_1 = require("../aggregate-created.event");
5
+ class ExampleCreatedEvent extends aggregate_created_event_1.AggregateCreatedEvent {
6
+ constructor(id, name) {
7
+ super({
8
+ entityId: id,
9
+ entityName: 'Example',
10
+ body: { name },
11
+ });
12
+ }
13
+ }
14
+ exports.ExampleCreatedEvent = ExampleCreatedEvent;
15
+ //# sourceMappingURL=example-created.event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example-created.event.js","sourceRoot":"","sources":["../../src/tests/example-created.event.ts"],"names":[],"mappings":";;;AAAA,wEAAmE;AAEnE,MAAa,mBAAoB,SAAQ,+CAAuC;IAC/E,YAAmB,EAAU,EAAE,IAAY;QAC1C,KAAK,CAAC;YACL,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,SAAS;YACrB,IAAI,EAAE,EAAE,IAAI,EAAE;SACd,CAAC,CAAC;IACJ,CAAC;CACD;AARD,kDAQC"}
@@ -0,0 +1,7 @@
1
+ import { DomainEvent } from '../domain.event';
2
+ export declare class ExampleUpdatedEvent extends DomainEvent<{
3
+ name: string;
4
+ }> {
5
+ constructor(id: string, name: string);
6
+ }
7
+ //# sourceMappingURL=example-updated.event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example-updated.event.d.ts","sourceRoot":"","sources":["../../src/tests/example-updated.event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,qBAAa,mBAAoB,SAAQ,WAAW,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAC,CAAC;gBACjD,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAO3C"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExampleUpdatedEvent = void 0;
4
+ const domain_event_1 = require("../domain.event");
5
+ class ExampleUpdatedEvent extends domain_event_1.DomainEvent {
6
+ constructor(id, name) {
7
+ super({
8
+ entityId: id,
9
+ entityName: 'Example',
10
+ body: { name },
11
+ });
12
+ }
13
+ }
14
+ exports.ExampleUpdatedEvent = ExampleUpdatedEvent;
15
+ //# sourceMappingURL=example-updated.event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example-updated.event.js","sourceRoot":"","sources":["../../src/tests/example-updated.event.ts"],"names":[],"mappings":";;;AAAA,kDAA8C;AAE9C,MAAa,mBAAoB,SAAQ,0BAA4B;IACpE,YAAmB,EAAU,EAAE,IAAY;QAC1C,KAAK,CAAC;YACL,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,SAAS;YACrB,IAAI,EAAE,EAAE,IAAI,EAAE;SACd,CAAC,CAAC;IACJ,CAAC;CACD;AARD,kDAQC"}
@@ -0,0 +1,16 @@
1
+ import { BaseAggregate } from '../base.aggregate';
2
+ import { ExampleUpdatedEvent } from './example-updated.event';
3
+ type ExampleAggregateDto = {
4
+ id: string;
5
+ name: string;
6
+ };
7
+ export declare class ExampleAggregate extends BaseAggregate {
8
+ private name;
9
+ constructor(dto: ExampleAggregateDto);
10
+ update(newName: string): void;
11
+ toDto(): ExampleAggregateDto;
12
+ static create(name: string): ExampleAggregate;
13
+ protected onUpdated(event: ExampleUpdatedEvent): void;
14
+ }
15
+ export {};
16
+ //# sourceMappingURL=example.aggregate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.aggregate.d.ts","sourceRoot":"","sources":["../../src/tests/example.aggregate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,KAAK,mBAAmB,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,aAAa;IAClD,OAAO,CAAC,IAAI,CAAS;gBAEF,GAAG,EAAE,mBAAmB;IAMpC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI7B,KAAK,IAAI,mBAAmB;WAOrB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IASpD,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;CAGrD"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExampleAggregate = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const events_1 = require("@hg-ts/events");
6
+ const base_aggregate_1 = require("../base.aggregate");
7
+ const example_created_event_1 = require("./example-created.event");
8
+ const example_updated_event_1 = require("./example-updated.event");
9
+ class ExampleAggregate extends base_aggregate_1.BaseAggregate {
10
+ name;
11
+ constructor(dto) {
12
+ super(dto);
13
+ this.name = dto.name;
14
+ }
15
+ update(newName) {
16
+ this.produceEvent(new example_updated_event_1.ExampleUpdatedEvent(this.id, newName));
17
+ }
18
+ toDto() {
19
+ return {
20
+ id: this.id,
21
+ name: this.name,
22
+ };
23
+ }
24
+ static create(name) {
25
+ const aggregate = new ExampleAggregate({ id: crypto.randomUUID(), name });
26
+ aggregate.produceEvent(new example_created_event_1.ExampleCreatedEvent(aggregate.id, name));
27
+ return aggregate;
28
+ }
29
+ onUpdated(event) {
30
+ this.name = event.body.name;
31
+ }
32
+ }
33
+ exports.ExampleAggregate = ExampleAggregate;
34
+ tslib_1.__decorate([
35
+ (0, events_1.Listen)(example_updated_event_1.ExampleUpdatedEvent),
36
+ tslib_1.__metadata("design:type", Function),
37
+ tslib_1.__metadata("design:paramtypes", [example_updated_event_1.ExampleUpdatedEvent]),
38
+ tslib_1.__metadata("design:returntype", void 0)
39
+ ], ExampleAggregate.prototype, "onUpdated", null);
40
+ //# sourceMappingURL=example.aggregate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.aggregate.js","sourceRoot":"","sources":["../../src/tests/example.aggregate.ts"],"names":[],"mappings":";;;;AAAA,0CAAuC;AACvC,sDAAkD;AAClD,mEAA8D;AAC9D,mEAA8D;AAO9D,MAAa,gBAAiB,SAAQ,8BAAa;IAC1C,IAAI,CAAS;IAErB,YAAmB,GAAwB;QAC1C,KAAK,CAAC,GAAG,CAAC,CAAC;QAEX,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,CAAC;IAEM,MAAM,CAAC,OAAe;QAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,2CAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEM,KAAK;QACX,OAAO;YACN,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;SACf,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,IAAY;QAChC,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1E,SAAS,CAAC,YAAY,CAAC,IAAI,2CAAmB,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;QAEpE,OAAO,SAAS,CAAC;IAClB,CAAC;IAGS,SAAS,CAAC,KAA0B;QAC7C,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7B,CAAC;CACD;AAhCD,4CAgCC;AAHU;IADT,IAAA,eAAM,EAAC,2CAAmB,CAAC;;6CACD,2CAAmB;;iDAE7C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hg-ts/domain",
3
- "version": "0.2.13",
3
+ "version": "0.2.15",
4
4
  "main": "dist/index.js",
5
5
  "exports": {
6
6
  ".": "./dist/index.js"
@@ -11,20 +11,28 @@
11
11
  "build": "tsc",
12
12
  "build:dev": "tsc-watch",
13
13
  "lint:ts": "lint-ts",
14
- "lint:ts:fix": "lint-ts --fix"
14
+ "lint:ts:fix": "lint-ts --fix",
15
+ "test": "HG_ENV=test node --require ts-node/register --test src/**/*.test.ts",
16
+ "test:dev": "yarn build:dev --onSuccess \"yarn test\""
15
17
  },
16
18
  "devDependencies": {
17
- "@hg-ts-config/typescript": "0.2.13",
18
- "@hg-ts/linter": "0.2.13",
19
- "@hg-ts/types": "0.2.13",
19
+ "@hg-ts-config/typescript": "0.2.15",
20
+ "@hg-ts/events": "0.2.15",
21
+ "@hg-ts/exception": "0.2.15",
22
+ "@hg-ts/linter": "0.2.15",
23
+ "@hg-ts/tests": "0.2.15",
24
+ "@hg-ts/types": "0.2.15",
20
25
  "@types/node": "22.10.6",
21
26
  "eslint": "9.18.0",
22
27
  "reflect-metadata": "0.2.2",
28
+ "ts-node": "10.9.2",
23
29
  "tsc-watch": "6.3.0",
24
30
  "tslib": "2.8.1",
25
31
  "typescript": "5.7.3"
26
32
  },
27
33
  "peerDependencies": {
34
+ "@hg-ts/events": "0.2.15",
35
+ "@hg-ts/exception": "0.2.15",
28
36
  "reflect-metadata": "*",
29
37
  "tslib": "*"
30
38
  }