ddd-node 35.1.0 → 36.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/base/decorators/model.js +1 -1
  2. package/base/decorators/static.d.ts +2 -2
  3. package/base/decorators/static.js +2 -2
  4. package/base/meta/index.d.ts +4 -4
  5. package/base/meta/index.js +4 -4
  6. package/base/meta/model-domain.d.ts +1 -1
  7. package/base/meta/model-domain.js +4 -4
  8. package/base/meta/model-id.d.ts +2 -2
  9. package/base/meta/model-id.js +9 -9
  10. package/base/meta/model-mutable.d.ts +1 -1
  11. package/base/meta/model-mutable.js +4 -4
  12. package/base/meta/model-name.d.ts +1 -1
  13. package/base/meta/model-name.js +4 -4
  14. package/base/meta/model-property-accessor.d.ts +2 -2
  15. package/base/meta/model-property-accessor.js +8 -8
  16. package/base/meta/model-props-type.d.ts +1 -1
  17. package/base/meta/model-props-type.js +4 -4
  18. package/base/meta/model-props-validator.d.ts +2 -2
  19. package/base/meta/model-props-validator.js +7 -7
  20. package/base/meta/model-version.d.ts +1 -1
  21. package/base/meta/model-version.js +4 -4
  22. package/base/meta/static-entry.d.ts +13 -0
  23. package/base/meta/static-entry.js +54 -0
  24. package/base/model/model-descriptor.d.ts +4 -4
  25. package/base/model/model-descriptor.js +14 -14
  26. package/base/model/model.js +1 -1
  27. package/base/model-registry.d.ts +1 -1
  28. package/base/model-registry.js +4 -4
  29. package/common/props-validator/use-class-validator.js +1 -1
  30. package/core/decorators/index.d.ts +3 -3
  31. package/core/decorators/index.js +3 -3
  32. package/core/decorators/{enum/is-enum.d.ts → is-enum.d.ts} +1 -1
  33. package/core/decorators/{enum/is-enum.js → is-enum.js} +3 -3
  34. package/core/decorators/is-event.d.ts +4 -0
  35. package/core/decorators/{message/is-event.js → is-event.js} +2 -2
  36. package/core/decorators/{es-aggregate/when.js → when.js} +1 -1
  37. package/core/meta/enum.d.ts +2 -2
  38. package/core/meta/enum.js +8 -8
  39. package/core/meta/{es-aggregate/event-applier.d.ts → event-applier.d.ts} +3 -3
  40. package/core/meta/{es-aggregate/event-applier.js → event-applier.js} +9 -9
  41. package/core/meta/event.d.ts +1 -1
  42. package/core/meta/event.js +4 -4
  43. package/core/meta/index.d.ts +1 -2
  44. package/core/meta/index.js +1 -2
  45. package/core/model/aggregate/aggregate.d.ts +3 -7
  46. package/core/model/aggregate/aggregate.js +2 -11
  47. package/core/model/aggregate/es-aggregate.d.ts +19 -29
  48. package/core/model/aggregate/es-aggregate.js +34 -66
  49. package/core/model/aggregate/state-aggregate.d.ts +6 -11
  50. package/core/model/aggregate/state-aggregate.js +10 -19
  51. package/core/model/entity/entity.d.ts +4 -7
  52. package/core/model/entity/entity.js +1 -1
  53. package/core/model/enum/enum.d.ts +3 -5
  54. package/core/model/enum/enum.js +4 -4
  55. package/core/model/event/event.d.ts +25 -0
  56. package/core/model/event/event.js +47 -0
  57. package/core/model/event/index.d.ts +1 -0
  58. package/core/{decorators/enum → model/event}/index.js +1 -1
  59. package/core/model/identified-model/identified-model.d.ts +3 -7
  60. package/core/model/identified-model/identified-model.js +2 -9
  61. package/core/model/index.d.ts +1 -1
  62. package/core/model/index.js +1 -1
  63. package/core/model/value-object/value-object.d.ts +5 -6
  64. package/core/model/value-object/value-object.js +7 -4
  65. package/{handling-event → event-handling}/decorators/subscribe-to-events.js +1 -1
  66. package/index.d.ts +1 -1
  67. package/index.js +1 -1
  68. package/package.json +1 -1
  69. package/base/meta/model-static-values.d.ts +0 -13
  70. package/base/meta/model-static-values.js +0 -54
  71. package/core/decorators/enum/index.d.ts +0 -1
  72. package/core/decorators/es-aggregate/handle.d.ts +0 -2
  73. package/core/decorators/es-aggregate/handle.js +0 -13
  74. package/core/decorators/es-aggregate/index.d.ts +0 -2
  75. package/core/decorators/es-aggregate/index.js +0 -18
  76. package/core/decorators/message/index.d.ts +0 -2
  77. package/core/decorators/message/index.js +0 -18
  78. package/core/decorators/message/is-command.d.ts +0 -4
  79. package/core/decorators/message/is-command.js +0 -12
  80. package/core/decorators/message/is-event.d.ts +0 -4
  81. package/core/meta/command.d.ts +0 -8
  82. package/core/meta/command.js +0 -27
  83. package/core/meta/es-aggregate/command-handler.d.ts +0 -7
  84. package/core/meta/es-aggregate/command-handler.js +0 -44
  85. package/core/meta/es-aggregate/index.d.ts +0 -2
  86. package/core/meta/es-aggregate/index.js +0 -18
  87. package/core/model/message/command.d.ts +0 -22
  88. package/core/model/message/command.js +0 -25
  89. package/core/model/message/event.d.ts +0 -30
  90. package/core/model/message/event.js +0 -29
  91. package/core/model/message/index.d.ts +0 -3
  92. package/core/model/message/index.js +0 -19
  93. package/core/model/message/message.d.ts +0 -27
  94. package/core/model/message/message.js +0 -59
  95. /package/core/decorators/{es-aggregate/when.d.ts → when.d.ts} +0 -0
  96. /package/{handling-event → event-handling}/decorators/index.d.ts +0 -0
  97. /package/{handling-event → event-handling}/decorators/index.js +0 -0
  98. /package/{handling-event → event-handling}/decorators/subscribe-to-events.d.ts +0 -0
  99. /package/{handling-event → event-handling}/event-dispatcher.d.ts +0 -0
  100. /package/{handling-event → event-handling}/event-dispatcher.js +0 -0
  101. /package/{handling-event → event-handling}/event-subscriber-registry.d.ts +0 -0
  102. /package/{handling-event → event-handling}/event-subscriber-registry.js +0 -0
  103. /package/{handling-event → event-handling}/event-subscriber.d.ts +0 -0
  104. /package/{handling-event → event-handling}/event-subscriber.js +0 -0
  105. /package/{handling-event → event-handling}/index.d.ts +0 -0
  106. /package/{handling-event → event-handling}/index.js +0 -0
  107. /package/{handling-event → event-handling}/interfaces/event-dispatcher.interface.d.ts +0 -0
  108. /package/{handling-event → event-handling}/interfaces/event-dispatcher.interface.js +0 -0
  109. /package/{handling-event → event-handling}/interfaces/event-subscriber-registry.interface.d.ts +0 -0
  110. /package/{handling-event → event-handling}/interfaces/event-subscriber-registry.interface.js +0 -0
  111. /package/{handling-event → event-handling}/interfaces/event-subscriber.interface.d.ts +0 -0
  112. /package/{handling-event → event-handling}/interfaces/event-subscriber.interface.js +0 -0
  113. /package/{handling-event → event-handling}/interfaces/index.d.ts +0 -0
  114. /package/{handling-event → event-handling}/interfaces/index.js +0 -0
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Event = void 0;
13
+ const uuid_1 = require("uuid");
14
+ const base_1 = require("../../../base");
15
+ const meta_1 = require("../../meta");
16
+ const identified_model_1 = require("../identified-model");
17
+ let Event = class Event extends identified_model_1.IdentifiedModel {
18
+ static new(aggregateId, streamPosition, props, id, causationId, correlationIds) {
19
+ return new this(id ?? (0, uuid_1.v4)(), aggregateId, streamPosition, Date.now(), props, causationId, correlationIds);
20
+ }
21
+ static eventType() {
22
+ return (0, meta_1.resolveEventType)(this);
23
+ }
24
+ constructor(id, aggregateId, streamPosition, timestamp, props, causationId, correlationIds) {
25
+ super(id);
26
+ this.aggregateId = aggregateId;
27
+ this.streamPosition = streamPosition;
28
+ this.timestamp = timestamp;
29
+ this.causationId = causationId;
30
+ this.correlationIds = correlationIds ?? {};
31
+ this.initializeProps(props);
32
+ }
33
+ props() {
34
+ return super.props();
35
+ }
36
+ get eventType() {
37
+ return this.typedConstructor().eventType();
38
+ }
39
+ typedConstructor() {
40
+ return this.constructor;
41
+ }
42
+ };
43
+ exports.Event = Event;
44
+ exports.Event = Event = __decorate([
45
+ (0, base_1.Mutable)(false),
46
+ __metadata("design:paramtypes", [String, String, Number, Number, Object, String, Object])
47
+ ], Event);
@@ -0,0 +1 @@
1
+ export * from "./event";
@@ -14,4 +14,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./is-enum"), exports);
17
+ __exportStar(require("./event"), exports);
@@ -3,14 +3,10 @@ import { DomainModel, InferredProps, Props } from "../../../base";
3
3
  import { ClassStatic } from "../../../types";
4
4
  import { Id } from "./id";
5
5
  export declare class IdentifiedModel<P extends Props> extends DomainModel<P> {
6
- private _id;
6
+ readonly id: Id;
7
7
  constructor(id: Id);
8
- get id(): string;
9
- setId(id: Id): void;
10
8
  hasId(id: Id): boolean;
11
9
  }
12
10
  export type AnyIdentifiedModel = IdentifiedModel<Props>;
13
- export interface IdentifiedModelClass<T extends AnyIdentifiedModel = AnyIdentifiedModel, Arguments extends unknown[] = any[]> extends Class<T, Arguments>, ClassStatic<typeof IdentifiedModel<InferredProps<T>>> {
14
- }
15
- export interface IdentifiedModelClassWithTypedConstructor<T extends AnyIdentifiedModel = AnyIdentifiedModel> extends IdentifiedModelClass<T, ConstructorParameters<typeof IdentifiedModel<InferredProps<T>>>> {
16
- }
11
+ export type IdentifiedModelClass<T extends AnyIdentifiedModel = AnyIdentifiedModel, Arguments extends unknown[] = any[]> = Class<T, Arguments> & ClassStatic<typeof IdentifiedModel<InferredProps<T>>>;
12
+ export type IdentifiedModelClassWithTypedConstructor<T extends AnyIdentifiedModel = AnyIdentifiedModel> = IdentifiedModelClass<T, ConstructorParameters<typeof IdentifiedModel<InferredProps<T>>>>;
@@ -5,17 +5,10 @@ const base_1 = require("../../../base");
5
5
  class IdentifiedModel extends base_1.DomainModel {
6
6
  constructor(id) {
7
7
  super();
8
- if (id)
9
- this.setId(id);
10
- }
11
- get id() {
12
- return this._id;
13
- }
14
- setId(id) {
15
- this._id = id;
8
+ this.id = id;
16
9
  }
17
10
  hasId(id) {
18
- return this._id === id;
11
+ return this.id === id;
19
12
  }
20
13
  }
21
14
  exports.IdentifiedModel = IdentifiedModel;
@@ -3,4 +3,4 @@ export * from "./enum";
3
3
  export * from "./identified-model";
4
4
  export * from "./entity";
5
5
  export * from "./aggregate";
6
- export * from "./message";
6
+ export * from "./event";
@@ -19,4 +19,4 @@ __exportStar(require("./enum"), exports);
19
19
  __exportStar(require("./identified-model"), exports);
20
20
  __exportStar(require("./entity"), exports);
21
21
  __exportStar(require("./aggregate"), exports);
22
- __exportStar(require("./message"), exports);
22
+ __exportStar(require("./event"), exports);
@@ -3,16 +3,15 @@ import { DomainModel, InferredProps, Props, PropsBuilder } from "../../../base";
3
3
  import { ClassStatic } from "../../../types";
4
4
  export declare class ValueObject<P extends Props> extends DomainModel<P> {
5
5
  constructor(props?: P | PropsBuilder<ValueObject<P>>);
6
- _constructor(): ValueObjectClass<typeof this>;
6
+ typedConstructor(): ValueObjectClass<typeof this>;
7
7
  props(): P;
8
8
  equals<V extends AnyValueObject>(vo: V): boolean;
9
9
  with(props: Partial<P>): typeof this;
10
10
  clone(): this;
11
- getEqualityValue(): string;
11
+ protected equalityValue(): string;
12
+ protected compareEqualityValues(x: unknown, y: unknown): boolean;
12
13
  protected getEqualityObject(): any;
13
14
  }
14
15
  export type AnyValueObject = ValueObject<Props>;
15
- export interface ValueObjectClass<T extends AnyValueObject = AnyValueObject> extends Class<T>, ClassStatic<typeof ValueObject<InferredProps<T>>> {
16
- }
17
- export interface ValueObjectClassWithTypedConstructor<T extends AnyValueObject = AnyValueObject> extends Class<T, ConstructorParameters<typeof ValueObject<InferredProps<T>>>> {
18
- }
16
+ export type ValueObjectClass<T extends AnyValueObject = AnyValueObject> = Class<T> & ClassStatic<typeof ValueObject<InferredProps<T>>>;
17
+ export type ValueObjectClassWithTypedConstructor<T extends AnyValueObject = AnyValueObject> = Class<T, ConstructorParameters<typeof ValueObject<InferredProps<T>>>>;
@@ -22,7 +22,7 @@ let ValueObject = ValueObject_1 = class ValueObject extends base_1.DomainModel {
22
22
  if (props)
23
23
  this.initializeProps(props);
24
24
  }
25
- _constructor() {
25
+ typedConstructor() {
26
26
  return this.constructor;
27
27
  }
28
28
  props() {
@@ -30,19 +30,22 @@ let ValueObject = ValueObject_1 = class ValueObject extends base_1.DomainModel {
30
30
  }
31
31
  equals(vo) {
32
32
  const equalsType = vo instanceof this.constructor;
33
- const equalsValue = this.getEqualityValue() === vo.getEqualityValue();
33
+ const equalsValue = this.compareEqualityValues(this.equalityValue(), vo.equalityValue());
34
34
  return equalsType && equalsValue;
35
35
  }
36
36
  with(props) {
37
37
  const newProps = lodash_1.default.merge(this.props(), props);
38
- return new this.constructor(newProps);
38
+ return new (this.typedConstructor())(newProps);
39
39
  }
40
40
  clone() {
41
41
  return this.with({});
42
42
  }
43
- getEqualityValue() {
43
+ equalityValue() {
44
44
  return JSON.stringify(this.getEqualityObject());
45
45
  }
46
+ compareEqualityValues(x, y) {
47
+ return x === y;
48
+ }
46
49
  getEqualityObject() {
47
50
  const result = {};
48
51
  const props = this.props();
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SubscribeToEvents = exports.SubscribedEventsMetaKey = void 0;
4
4
  const utils_1 = require("../../utils");
5
- exports.SubscribedEventsMetaKey = Symbol.for("SUBSCRIBED_EVENTS");
5
+ exports.SubscribedEventsMetaKey = Symbol("SUBSCRIBED_EVENTS");
6
6
  const SubscribeToEvents = (subscribedEvents) => {
7
7
  return (target) => {
8
8
  Reflect.defineMetadata(exports.SubscribedEventsMetaKey, (0, utils_1.toArray)(subscribedEvents), target);
package/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export * from "./base";
2
2
  export * from "./types";
3
3
  export * from "./core";
4
- export * from "./handling-event";
4
+ export * from "./event-handling";
5
5
  export * from "./utils";
6
6
  export * from "./common";
package/index.js CHANGED
@@ -18,6 +18,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  __exportStar(require("./base"), exports);
19
19
  __exportStar(require("./types"), exports);
20
20
  __exportStar(require("./core"), exports);
21
- __exportStar(require("./handling-event"), exports);
21
+ __exportStar(require("./event-handling"), exports);
22
22
  __exportStar(require("./utils"), exports);
23
23
  __exportStar(require("./common"), exports);
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"ddd-node","version":"35.1.0","description":"Domain Driven Design base for NodeJs","type":"commonjs","main":"index.js","types":"index.d.ts","repository":{"type":"git","url":"https://github.com/nqd881/ddd-node"},"keywords":["ddd","ddd-node","ddd-base","ddd-ts","ddd-js"],"author":"Quoc Dai","license":"ISC","devDependencies":{"@types/chai":"^4.3.16","@types/lodash":"^4.14.200","@types/mocha":"^10.0.6","@types/uuid":"^9.0.6","chai":"^5.1.1","chai-deep-match":"^1.2.1","ddd-node":"file:dist","mocha":"^10.4.0","tsconfig-paths":"^4.2.0","typescript":"^5.9.3"},"dependencies":{"class-transformer":"^0.5.1","is-class":"^0.0.9","lodash":"^4.17.21","reflect-metadata":"^0.1.13","ts-node":"^10.9.2","tsc-alias":"^1.8.8","type-fest":"^4.20.1","uuid":"^9.0.1"},"peerDependencies":{"class-validator":"^0.14.2"}}
1
+ {"name":"ddd-node","version":"36.0.0","description":"Domain Driven Design base for NodeJs","type":"commonjs","main":"index.js","types":"index.d.ts","repository":{"type":"git","url":"https://github.com/nqd881/ddd-node"},"keywords":["ddd","ddd-node","ddd-base","ddd-ts","ddd-js"],"author":"Quoc Dai","license":"ISC","devDependencies":{"@types/chai":"^4.3.16","@types/lodash":"^4.14.200","@types/mocha":"^10.0.6","@types/uuid":"^9.0.6","chai":"^5.1.1","chai-deep-match":"^1.2.1","ddd-node":"file:dist","mocha":"^10.4.0","tsconfig-paths":"^4.2.0","typescript":"^5.9.3"},"dependencies":{"class-transformer":"^0.5.1","is-class":"^0.0.9","lodash":"^4.17.21","reflect-metadata":"^0.1.13","ts-node":"^10.9.2","tsc-alias":"^1.8.8","type-fest":"^4.20.1","uuid":"^9.0.1"},"peerDependencies":{"class-validator":"^0.14.2"}}
@@ -1,13 +0,0 @@
1
- import { AnyDomainModel, DomainModelClass } from "../model";
2
- export type ModelStaticValueBuilder<T extends AnyDomainModel = AnyDomainModel> = () => T;
3
- export declare class ModelStaticValue<T extends AnyDomainModel = AnyDomainModel> {
4
- private _value;
5
- constructor(value: T | ModelStaticValueBuilder<T>);
6
- get value(): T;
7
- }
8
- export declare class ModelStaticValuesMap<T extends AnyDomainModel = AnyDomainModel> extends Map<PropertyKey, ModelStaticValue<T>> {
9
- }
10
- export declare const getOwnModelStaticValues: <T extends AnyDomainModel>(target: object) => ModelStaticValuesMap<T>;
11
- export declare const setModelStaticValue: <T extends AnyDomainModel>(target: object, key: PropertyKey, value: T | ModelStaticValueBuilder<T>) => void;
12
- export declare const getModelStaticValue: (target: object, key: PropertyKey) => AnyDomainModel | undefined;
13
- export declare const defineModelStaticValueProperty: (target: DomainModelClass, key: PropertyKey) => void;
@@ -1,54 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defineModelStaticValueProperty = exports.getModelStaticValue = exports.setModelStaticValue = exports.getOwnModelStaticValues = exports.ModelStaticValuesMap = exports.ModelStaticValue = void 0;
4
- const OWN_MODEL_STATIC_VALUES = Symbol.for("OWN_MODEL_STATIC_VALUES");
5
- class ModelStaticValue {
6
- constructor(value) {
7
- this._value = value;
8
- }
9
- get value() {
10
- if (typeof this._value === "function") {
11
- this._value = this._value();
12
- }
13
- return this._value;
14
- }
15
- }
16
- exports.ModelStaticValue = ModelStaticValue;
17
- class ModelStaticValuesMap extends Map {
18
- }
19
- exports.ModelStaticValuesMap = ModelStaticValuesMap;
20
- const getOwnModelStaticValues = (target) => {
21
- if (!Reflect.hasOwnMetadata(OWN_MODEL_STATIC_VALUES, target))
22
- Reflect.defineMetadata(OWN_MODEL_STATIC_VALUES, new ModelStaticValuesMap(), target);
23
- return Reflect.getOwnMetadata(OWN_MODEL_STATIC_VALUES, target);
24
- };
25
- exports.getOwnModelStaticValues = getOwnModelStaticValues;
26
- const setModelStaticValue = (target, key, value) => {
27
- const staticValues = (0, exports.getOwnModelStaticValues)(target);
28
- staticValues.set(key, new ModelStaticValue(value));
29
- };
30
- exports.setModelStaticValue = setModelStaticValue;
31
- const getModelStaticValue = (target, key) => {
32
- let _target = target;
33
- do {
34
- const staticValues = (0, exports.getOwnModelStaticValues)(_target);
35
- if (staticValues.has(key))
36
- return staticValues.get(key)?.value;
37
- _target = Reflect.getPrototypeOf(_target);
38
- } while (_target !== null);
39
- return undefined;
40
- };
41
- exports.getModelStaticValue = getModelStaticValue;
42
- const defineModelStaticValueProperty = (target, key) => {
43
- Object.defineProperty(target, key, {
44
- configurable: false,
45
- enumerable: true,
46
- get() {
47
- return (0, exports.getModelStaticValue)(target, key);
48
- },
49
- set() {
50
- throw new Error("Static value is readonly");
51
- },
52
- });
53
- };
54
- exports.defineModelStaticValueProperty = defineModelStaticValueProperty;
@@ -1 +0,0 @@
1
- export * from "./is-enum";
@@ -1,2 +0,0 @@
1
- import { AnyCommand, AnyESAggregate, CommandClass, CommandHandler } from "../..";
2
- export declare const Handle: <T extends AnyCommand>(commandClass: CommandClass<T>) => <U extends CommandHandler<T>>(target: AnyESAggregate, propertyKey: string, descriptor: TypedPropertyDescriptor<U>) => void;
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Handle = void 0;
4
- const meta_1 = require("../../meta");
5
- const Handle = (commandClass) => {
6
- return (target, propertyKey, descriptor) => {
7
- if (typeof descriptor.value === "function") {
8
- const commandType = commandClass.commandType();
9
- (0, meta_1.defineOwnCommandHandler)(target, commandType, descriptor.value);
10
- }
11
- };
12
- };
13
- exports.Handle = Handle;
@@ -1,2 +0,0 @@
1
- export * from "./handle";
2
- export * from "./when";
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./handle"), exports);
18
- __exportStar(require("./when"), exports);
@@ -1,2 +0,0 @@
1
- export * from "./is-command";
2
- export * from "./is-event";
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./is-command"), exports);
18
- __exportStar(require("./is-event"), exports);
@@ -1,4 +0,0 @@
1
- import { ModelOptions } from "../../../base";
2
- import { AnyCommand, CommandClass } from "../../../core";
3
- import { CommandType } from "../../meta";
4
- export declare const IsCommand: (commandType: CommandType, modelOptions?: ModelOptions) => <T extends AnyCommand>(target: CommandClass<T>) => void;
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IsCommand = void 0;
4
- const base_1 = require("../../../base");
5
- const meta_1 = require("../../meta");
6
- const IsCommand = (commandType, modelOptions) => {
7
- return (target) => {
8
- (0, meta_1.defineCommandType)(target, commandType);
9
- (0, base_1.Model)(modelOptions)(target);
10
- };
11
- };
12
- exports.IsCommand = IsCommand;
@@ -1,4 +0,0 @@
1
- import { ModelOptions } from "../../../base";
2
- import { AnyEvent, EventClass } from "../../../core";
3
- import { EventType } from "../../meta";
4
- export declare const IsEvent: (eventType: EventType, modelOptions?: ModelOptions) => <T extends AnyEvent>(target: EventClass<T>) => void;
@@ -1,8 +0,0 @@
1
- import "reflect-metadata";
2
- export type CommandType = string;
3
- export declare class $CommandType extends String {
4
- static validate(commandType: string): void;
5
- constructor(commandType: CommandType);
6
- }
7
- export declare const defineCommandType: (target: object, commandType: CommandType) => void;
8
- export declare const getCommandType: (target: object) => CommandType;
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getCommandType = exports.defineCommandType = exports.$CommandType = void 0;
4
- require("reflect-metadata");
5
- const COMMAND_TYPE = Symbol.for("COMMAND_TYPE");
6
- class $CommandType extends String {
7
- static validate(commandType) {
8
- if (commandType.trim().length === 0)
9
- throw new Error("Command type cannot be an empty string");
10
- }
11
- constructor(commandType) {
12
- $CommandType.validate(commandType);
13
- super(commandType);
14
- }
15
- }
16
- exports.$CommandType = $CommandType;
17
- const defineCommandType = (target, commandType) => {
18
- Reflect.defineMetadata(COMMAND_TYPE, new $CommandType(commandType), target);
19
- };
20
- exports.defineCommandType = defineCommandType;
21
- const getCommandType = (target) => {
22
- const commandType = Reflect.getOwnMetadata(COMMAND_TYPE, target);
23
- if (!commandType)
24
- throw new Error("Command's type is not defined");
25
- return commandType.valueOf();
26
- };
27
- exports.getCommandType = getCommandType;
@@ -1,7 +0,0 @@
1
- import "reflect-metadata";
2
- import { AnyCommand, CommandHandler } from "../../model";
3
- export declare class CommandHandlerMap extends Map<string, CommandHandler> {
4
- }
5
- export declare const getOwnCommandHandlerMap: (target: object) => CommandHandlerMap;
6
- export declare const defineOwnCommandHandler: <T extends AnyCommand>(target: object, commandType: string, handler: CommandHandler<T>) => void;
7
- export declare const getCommandHandlerMap: (target: object) => CommandHandlerMap;
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getCommandHandlerMap = exports.defineOwnCommandHandler = exports.getOwnCommandHandlerMap = exports.CommandHandlerMap = void 0;
4
- require("reflect-metadata");
5
- const OWN_COMMAND_HANDLER_MAP = Symbol.for("OWN_COMMAND_HANDLER_MAP");
6
- const COMMAND_HANDLER_MAP = Symbol.for("COMMAND_HANDLER_MAP");
7
- class CommandHandlerMap extends Map {
8
- }
9
- exports.CommandHandlerMap = CommandHandlerMap;
10
- const getOwnCommandHandlerMap = (target) => {
11
- const ownCommandHandlerMap = () => Reflect.getOwnMetadata(OWN_COMMAND_HANDLER_MAP, target);
12
- if (!ownCommandHandlerMap())
13
- Reflect.defineMetadata(OWN_COMMAND_HANDLER_MAP, new CommandHandlerMap(), target);
14
- return ownCommandHandlerMap();
15
- };
16
- exports.getOwnCommandHandlerMap = getOwnCommandHandlerMap;
17
- const defineOwnCommandHandler = (target, commandType, handler) => {
18
- const commandHandlersMap = (0, exports.getOwnCommandHandlerMap)(target);
19
- commandHandlersMap.set(commandType, handler);
20
- };
21
- exports.defineOwnCommandHandler = defineOwnCommandHandler;
22
- const getCommandHandlerMap = (target) => {
23
- if (!Reflect.hasOwnMetadata(COMMAND_HANDLER_MAP, target)) {
24
- const buildCommandHandlerMap = (target) => {
25
- let _target = target;
26
- const result = new CommandHandlerMap();
27
- const ownCommandHandlerMaps = [];
28
- do {
29
- const ownCommandHandlerMap = (0, exports.getOwnCommandHandlerMap)(_target);
30
- ownCommandHandlerMaps.unshift(ownCommandHandlerMap);
31
- _target = Reflect.getPrototypeOf(_target);
32
- } while (_target !== null);
33
- ownCommandHandlerMaps.forEach((ownCommandHandlerMap) => {
34
- ownCommandHandlerMap.forEach((commandHandler, commandType) => {
35
- result.set(commandType, commandHandler);
36
- });
37
- });
38
- return result;
39
- };
40
- Reflect.defineMetadata(COMMAND_HANDLER_MAP, buildCommandHandlerMap(target), target);
41
- }
42
- return Reflect.getOwnMetadata(COMMAND_HANDLER_MAP, target);
43
- };
44
- exports.getCommandHandlerMap = getCommandHandlerMap;
@@ -1,2 +0,0 @@
1
- export * from "./event-applier";
2
- export * from "./command-handler";
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./event-applier"), exports);
18
- __exportStar(require("./command-handler"), exports);
@@ -1,22 +0,0 @@
1
- import { Class } from "type-fest";
2
- import { InferredProps, Props } from "../../../base";
3
- import { ClassStatic } from "../../../types";
4
- import { CommandType } from "../../meta";
5
- import { Id } from "../identified-model";
6
- import { CausationId, CorrelationIds, Message, MessageClass } from "./message";
7
- export interface NewCommandOptions {
8
- id?: Id;
9
- causationId?: CausationId;
10
- correlationIds?: CorrelationIds;
11
- }
12
- export declare class Command<P extends Props> extends Message<P> {
13
- static new<T extends AnyCommand>(this: CommandClassWithTypedConstructor<T>, props: InferredProps<T>, options?: NewCommandOptions): T;
14
- static commandType<T extends AnyCommand>(this: CommandClass<T>): string;
15
- protected readonly _commandType: CommandType;
16
- constructor(id: Id, timestamp: number, props: P, causationId?: Id, correlationIds?: CorrelationIds);
17
- _constructor(): CommandClass<typeof this>;
18
- commandType(): string;
19
- }
20
- export type AnyCommand = Command<Props>;
21
- export type CommandClass<T extends AnyCommand = AnyCommand, Arguments extends unknown[] = any[]> = MessageClass<T> & Class<T, Arguments> & ClassStatic<typeof Command<InferredProps<T>>>;
22
- export type CommandClassWithTypedConstructor<T extends AnyCommand = AnyCommand> = CommandClass<T, ConstructorParameters<typeof Command<InferredProps<T>>>>;
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Command = void 0;
4
- const uuid_1 = require("uuid");
5
- const meta_1 = require("../../meta");
6
- const message_1 = require("./message");
7
- class Command extends message_1.Message {
8
- static new(props, options) {
9
- return new this(options?.id ?? (0, uuid_1.v4)(), Date.now(), props, options?.causationId, options?.correlationIds);
10
- }
11
- static commandType() {
12
- return (0, meta_1.getCommandType)(this);
13
- }
14
- constructor(id, timestamp, props, causationId, correlationIds) {
15
- super(id, timestamp, props, causationId, correlationIds);
16
- this._commandType = this._constructor().commandType();
17
- }
18
- _constructor() {
19
- return this.constructor;
20
- }
21
- commandType() {
22
- return this._commandType;
23
- }
24
- }
25
- exports.Command = Command;
@@ -1,30 +0,0 @@
1
- import { Class } from "type-fest";
2
- import { InferredProps, Props } from "../../../base";
3
- import { ClassStatic } from "../../../types";
4
- import { Id } from "../identified-model";
5
- import { CausationId, CorrelationIds, Message, MessageClass } from "./message";
6
- export type EventSource = Readonly<{
7
- aggregateId: Id;
8
- aggregateVersion: number;
9
- }>;
10
- export interface NewEventOptions {
11
- id?: Id;
12
- causationId?: CausationId;
13
- correlationIds?: CorrelationIds;
14
- }
15
- export declare class Event<P extends Props> extends Message<P> {
16
- static new<T extends AnyEvent>(this: EventClassWithTypedConstructor<T>, eventSource: EventSource, props: InferredProps<T>, options?: NewEventOptions): T;
17
- static eventType<T extends AnyEvent>(this: EventClass<T>): string;
18
- private readonly _eventType;
19
- private readonly _source;
20
- constructor(id: Id, timestamp: number, eventSource: EventSource, props: P, causationId?: string, correlationIds?: CorrelationIds);
21
- _constructor(): EventClass<typeof this>;
22
- eventType(): string;
23
- source(): Readonly<{
24
- aggregateId: Id;
25
- aggregateVersion: number;
26
- }>;
27
- }
28
- export type AnyEvent = Event<Props>;
29
- export type EventClass<T extends AnyEvent = AnyEvent, Arguments extends unknown[] = any[]> = MessageClass<T> & Class<T, Arguments> & ClassStatic<typeof Event<InferredProps<T>>>;
30
- export type EventClassWithTypedConstructor<T extends AnyEvent = AnyEvent> = EventClass<T, ConstructorParameters<typeof Event<InferredProps<T>>>>;
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Event = void 0;
4
- const uuid_1 = require("uuid");
5
- const meta_1 = require("../../meta");
6
- const message_1 = require("./message");
7
- class Event extends message_1.Message {
8
- static new(eventSource, props, options) {
9
- return new this(options?.id ?? (0, uuid_1.v4)(), Date.now(), eventSource, props, options?.causationId, options?.correlationIds);
10
- }
11
- static eventType() {
12
- return (0, meta_1.getEventType)(this);
13
- }
14
- constructor(id, timestamp, eventSource, props, causationId, correlationIds) {
15
- super(id, timestamp, props, causationId, correlationIds);
16
- this._eventType = this._constructor().eventType();
17
- this._source = eventSource;
18
- }
19
- _constructor() {
20
- return this.constructor;
21
- }
22
- eventType() {
23
- return this._eventType;
24
- }
25
- source() {
26
- return this._source;
27
- }
28
- }
29
- exports.Event = Event;
@@ -1,3 +0,0 @@
1
- export * from "./message";
2
- export * from "./event";
3
- export * from "./command";
@@ -1,19 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./message"), exports);
18
- __exportStar(require("./event"), exports);
19
- __exportStar(require("./command"), exports);