ddd-node 17.3.0 → 20.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 (179) hide show
  1. package/dist/core/aggregate/aggregate-base/aggregate.builder.d.ts +7 -0
  2. package/dist/core/aggregate/aggregate-base/aggregate.builder.js +18 -0
  3. package/dist/core/aggregate/aggregate-base/aggregate.d.ts +16 -0
  4. package/dist/core/aggregate/{base.js → aggregate-base/aggregate.js} +12 -5
  5. package/dist/core/aggregate/aggregate-base/index.d.ts +2 -0
  6. package/dist/core/aggregate/aggregate-base/index.js +18 -0
  7. package/dist/core/aggregate/event-dispatcher.interface.d.ts +4 -0
  8. package/dist/core/aggregate/event-dispatcher.interface.js +2 -0
  9. package/dist/core/aggregate/event-sourced-aggregate/event-sourced-aggregate.builder.d.ts +12 -0
  10. package/dist/core/aggregate/event-sourced-aggregate/event-sourced-aggregate.builder.js +35 -0
  11. package/dist/core/aggregate/{event-sourced-aggregate.d.ts → event-sourced-aggregate/event-sourced-aggregate.d.ts} +11 -13
  12. package/dist/core/aggregate/{event-sourced-aggregate.js → event-sourced-aggregate/event-sourced-aggregate.js} +26 -36
  13. package/dist/core/aggregate/event-sourced-aggregate/event-sourced-aggregate.model-metadata.d.ts +9 -0
  14. package/dist/core/aggregate/event-sourced-aggregate/event-sourced-aggregate.model-metadata.js +22 -0
  15. package/dist/core/aggregate/event-sourced-aggregate/index.d.ts +3 -0
  16. package/dist/core/aggregate/event-sourced-aggregate/index.js +19 -0
  17. package/dist/core/aggregate/index.d.ts +2 -0
  18. package/dist/core/aggregate/index.js +2 -0
  19. package/dist/core/aggregate/state-aggregate/index.d.ts +2 -0
  20. package/dist/core/aggregate/state-aggregate/index.js +18 -0
  21. package/dist/core/aggregate/state-aggregate/state-aggregate.builder.d.ts +7 -0
  22. package/dist/core/aggregate/state-aggregate/state-aggregate.builder.js +19 -0
  23. package/dist/core/aggregate/{state-aggregate.d.ts → state-aggregate/state-aggregate.d.ts} +5 -9
  24. package/dist/core/aggregate/{state-aggregate.js → state-aggregate/state-aggregate.js} +2 -8
  25. package/dist/core/aggregate/types.d.ts +3 -3
  26. package/dist/core/entity/entity.builder.d.ts +9 -0
  27. package/dist/core/entity/entity.builder.js +17 -0
  28. package/dist/core/{entity.d.ts → entity/entity.d.ts} +4 -5
  29. package/dist/core/entity/entity.js +26 -0
  30. package/dist/core/entity/index.d.ts +2 -0
  31. package/dist/core/entity/index.js +18 -0
  32. package/dist/core/enum/enum.builder.d.ts +9 -0
  33. package/dist/core/enum/enum.builder.js +20 -0
  34. package/dist/core/enum/enum.d.ts +21 -0
  35. package/dist/core/enum/enum.js +60 -0
  36. package/dist/core/enum/index.d.ts +2 -0
  37. package/dist/{meta/helpers → core/enum}/index.js +2 -1
  38. package/dist/core/id/index.d.ts +1 -1
  39. package/dist/core/id/index.js +1 -1
  40. package/dist/core/index.d.ts +3 -4
  41. package/dist/core/index.js +3 -4
  42. package/dist/core/message/command/command.builder.d.ts +7 -0
  43. package/dist/core/message/command/command.builder.js +20 -0
  44. package/dist/core/message/{command.d.ts → command/command.d.ts} +10 -7
  45. package/dist/core/message/command/command.js +27 -0
  46. package/dist/core/message/command/index.d.ts +2 -0
  47. package/dist/core/message/command/index.js +18 -0
  48. package/dist/core/message/event/event.builder.d.ts +9 -0
  49. package/dist/core/message/event/event.builder.js +27 -0
  50. package/dist/core/message/{event.d.ts → event/event.d.ts} +13 -10
  51. package/dist/core/message/event/event.js +31 -0
  52. package/dist/core/message/event/index.d.ts +2 -0
  53. package/dist/core/message/event/index.js +18 -0
  54. package/dist/core/message/index.d.ts +1 -1
  55. package/dist/core/message/index.js +1 -1
  56. package/dist/core/message/message-base/index.d.ts +2 -0
  57. package/dist/core/message/message-base/index.js +18 -0
  58. package/dist/core/message/message-base/message.builder.d.ts +16 -0
  59. package/dist/core/message/message-base/message.builder.js +45 -0
  60. package/dist/core/message/message-base/message.d.ts +31 -0
  61. package/dist/core/message/message-base/message.js +47 -0
  62. package/dist/core/model-with-id/index.d.ts +2 -0
  63. package/dist/core/model-with-id/index.js +18 -0
  64. package/dist/core/model-with-id/model-with-id.builder.d.ts +11 -0
  65. package/dist/core/model-with-id/model-with-id.builder.js +22 -0
  66. package/dist/core/{model → model-with-id}/model-with-id.d.ts +1 -3
  67. package/dist/core/{model → model-with-id}/model-with-id.js +1 -10
  68. package/dist/core/value-object/index.d.ts +2 -0
  69. package/dist/core/value-object/index.js +18 -0
  70. package/dist/core/value-object/value-object.builder.d.ts +7 -0
  71. package/dist/core/value-object/value-object.builder.js +16 -0
  72. package/dist/core/{value-object.d.ts → value-object/value-object.d.ts} +2 -2
  73. package/dist/core/value-object/value-object.js +40 -0
  74. package/dist/decorators/aggregate-es/handle.js +1 -1
  75. package/dist/decorators/aggregate-es/when.js +1 -1
  76. package/dist/decorators/enum.d.ts +2 -0
  77. package/dist/decorators/{model/enum.js → enum.js} +2 -2
  78. package/dist/decorators/index.d.ts +1 -2
  79. package/dist/decorators/index.js +1 -2
  80. package/dist/decorators/message/command.js +1 -1
  81. package/dist/decorators/message/event.js +1 -1
  82. package/dist/index.d.ts +2 -0
  83. package/dist/index.js +2 -0
  84. package/dist/meta/aggregate-es/command-handler-map.d.ts +8 -0
  85. package/dist/meta/aggregate-es/command-handler-map.js +43 -0
  86. package/dist/meta/aggregate-es/event-applier-map.d.ts +9 -0
  87. package/dist/meta/aggregate-es/event-applier-map.js +43 -0
  88. package/dist/meta/aggregate-es/index.d.ts +2 -0
  89. package/dist/meta/aggregate-es/index.js +18 -0
  90. package/dist/meta/command.metadata.d.ts +6 -2
  91. package/dist/meta/command.metadata.js +19 -5
  92. package/dist/meta/event.metadata.d.ts +6 -2
  93. package/dist/meta/event.metadata.js +19 -5
  94. package/dist/meta/id.metadata.js +2 -3
  95. package/dist/meta/index.d.ts +1 -3
  96. package/dist/meta/index.js +1 -3
  97. package/dist/model/core/index.d.ts +2 -0
  98. package/dist/{core/model → model/core}/index.js +1 -1
  99. package/dist/model/core/model.builder.d.ts +11 -0
  100. package/dist/model/core/model.builder.js +18 -0
  101. package/dist/model/core/model.d.ts +41 -0
  102. package/dist/{core/model → model/core}/model.js +36 -57
  103. package/dist/model/decorators/index.d.ts +4 -0
  104. package/dist/{decorators/model → model/decorators}/index.js +1 -3
  105. package/dist/model/decorators/model.d.ts +12 -0
  106. package/dist/model/decorators/model.js +54 -0
  107. package/dist/model/decorators/mutable.d.ts +2 -0
  108. package/dist/model/decorators/mutable.js +10 -0
  109. package/dist/model/decorators/prop.d.ts +2 -0
  110. package/dist/{decorators/model → model/decorators}/prop.js +2 -2
  111. package/dist/model/decorators/static.d.ts +3 -0
  112. package/dist/model/decorators/static.js +11 -0
  113. package/dist/model/domain.d.ts +20 -0
  114. package/dist/model/domain.js +40 -0
  115. package/dist/model/index.d.ts +5 -0
  116. package/dist/model/index.js +21 -0
  117. package/dist/model/meta/index.d.ts +8 -0
  118. package/dist/model/meta/index.js +24 -0
  119. package/dist/model/meta/model-domain.d.ts +5 -0
  120. package/dist/model/meta/model-domain.js +15 -0
  121. package/dist/model/meta/model-id.d.ts +16 -0
  122. package/dist/model/meta/model-id.js +39 -0
  123. package/dist/model/meta/model-mutable.d.ts +2 -0
  124. package/dist/model/meta/model-mutable.js +14 -0
  125. package/dist/model/meta/model-name.d.ts +8 -0
  126. package/dist/model/meta/model-name.js +25 -0
  127. package/dist/model/meta/model-props-map.d.ts +6 -0
  128. package/dist/model/meta/model-props-map.js +45 -0
  129. package/dist/model/meta/model-props-validator.d.ts +6 -0
  130. package/dist/model/meta/model-props-validator.js +33 -0
  131. package/dist/model/meta/model-static-values.d.ts +13 -0
  132. package/dist/model/meta/model-static-values.js +54 -0
  133. package/dist/model/meta/model-version.d.ts +8 -0
  134. package/dist/model/meta/model-version.js +25 -0
  135. package/dist/model/model-registry.d.ts +17 -0
  136. package/dist/model/model-registry.js +55 -0
  137. package/dist/package.json +1 -1
  138. package/package.json +2 -2
  139. package/dist/core/aggregate/base.d.ts +0 -12
  140. package/dist/core/domain.d.ts +0 -17
  141. package/dist/core/domain.js +0 -47
  142. package/dist/core/entity.js +0 -20
  143. package/dist/core/enum.d.ts +0 -18
  144. package/dist/core/enum.js +0 -45
  145. package/dist/core/message/command.js +0 -25
  146. package/dist/core/message/event.js +0 -30
  147. package/dist/core/message/message.d.ts +0 -23
  148. package/dist/core/message/message.js +0 -33
  149. package/dist/core/model/index.d.ts +0 -2
  150. package/dist/core/model/model.d.ts +0 -47
  151. package/dist/core/value-object.js +0 -27
  152. package/dist/decorators/id.d.ts +0 -2
  153. package/dist/decorators/id.js +0 -10
  154. package/dist/decorators/model/enum.d.ts +0 -2
  155. package/dist/decorators/model/index.d.ts +0 -6
  156. package/dist/decorators/model/model.d.ts +0 -2
  157. package/dist/decorators/model/model.js +0 -10
  158. package/dist/decorators/model/prop.d.ts +0 -2
  159. package/dist/decorators/model/static.d.ts +0 -3
  160. package/dist/decorators/model/static.js +0 -20
  161. package/dist/decorators/model/validator.d.ts +0 -3
  162. package/dist/decorators/model/validator.js +0 -11
  163. package/dist/decorators/model/version.d.ts +0 -2
  164. package/dist/decorators/model/version.js +0 -10
  165. package/dist/meta/aggregate.metadata.d.ts +0 -8
  166. package/dist/meta/aggregate.metadata.js +0 -34
  167. package/dist/meta/helpers/index.d.ts +0 -1
  168. package/dist/meta/helpers/static-value.d.ts +0 -7
  169. package/dist/meta/helpers/static-value.js +0 -15
  170. package/dist/meta/model.metadata.d.ts +0 -24
  171. package/dist/meta/model.metadata.js +0 -145
  172. /package/dist/core/id/{common → services}/index.d.ts +0 -0
  173. /package/dist/core/id/{common → services}/index.js +0 -0
  174. /package/dist/core/id/{common → services}/snowflake.d.ts +0 -0
  175. /package/dist/core/id/{common → services}/snowflake.js +0 -0
  176. /package/dist/core/id/{common → services}/uuid4.d.ts +0 -0
  177. /package/dist/core/id/{common → services}/uuid4.js +0 -0
  178. /package/dist/{core/model → model/core}/errors.d.ts +0 -0
  179. /package/dist/{core/model → model/core}/errors.js +0 -0
@@ -0,0 +1,21 @@
1
+ import { Class } from "type-fest";
2
+ import { ModelBase } from "../../model";
3
+ import { ClassStatic } from "../../types";
4
+ export type EnumValue = string | number;
5
+ export interface EnumProps {
6
+ value: EnumValue;
7
+ }
8
+ export declare class EnumBase extends ModelBase<EnumProps> {
9
+ static values(): EnumBase[];
10
+ static parse<T extends AnyEnum>(this: EnumClass<T>, providedValue: EnumValue): T;
11
+ static parseSafe<T extends AnyEnum>(this: EnumClass<T>, providedValue: EnumValue): T | null;
12
+ constructor(value: EnumValue);
13
+ props(): EnumProps;
14
+ get value(): EnumValue;
15
+ equals<T extends AnyEnum>(other: T): boolean;
16
+ }
17
+ export type AnyEnum = EnumBase;
18
+ export interface EnumClass<T extends AnyEnum = AnyEnum, Arguments extends unknown[] = any[]> extends Class<T, Arguments>, ClassStatic<typeof EnumBase> {
19
+ }
20
+ export interface EnumClassWithTypedConstructor<T extends AnyEnum = AnyEnum> extends EnumClass<T, ConstructorParameters<typeof EnumBase>> {
21
+ }
@@ -0,0 +1,60 @@
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.EnumBase = void 0;
13
+ const model_1 = require("../../model");
14
+ let EnumBase = class EnumBase extends model_1.ModelBase {
15
+ static values() {
16
+ return Array.from(this.modelMetadata().ownStaticValues.values()).map((staticValue) => staticValue.value);
17
+ }
18
+ static parse(providedValue) {
19
+ let result = undefined;
20
+ this.modelMetadata().ownStaticValues.forEach((staticValue) => {
21
+ if (staticValue.value instanceof this) {
22
+ const staticEnum = staticValue.value;
23
+ if (staticEnum.value === providedValue && !result) {
24
+ result = staticEnum;
25
+ }
26
+ }
27
+ });
28
+ if (!result)
29
+ throw new Error(`Invalid provided value for enum ${this.modelMetadata().modelName}`);
30
+ return result;
31
+ }
32
+ static parseSafe(providedValue) {
33
+ try {
34
+ return this.parse(providedValue);
35
+ }
36
+ catch (error) {
37
+ return null;
38
+ }
39
+ }
40
+ constructor(value) {
41
+ super();
42
+ this.initializeProps({ value });
43
+ }
44
+ props() {
45
+ return super.props();
46
+ }
47
+ get value() {
48
+ return this._props.value;
49
+ }
50
+ equals(other) {
51
+ const equalType = other instanceof this.constructor;
52
+ const equalValue = other.value === this.value;
53
+ return equalType && equalValue;
54
+ }
55
+ };
56
+ exports.EnumBase = EnumBase;
57
+ exports.EnumBase = EnumBase = __decorate([
58
+ (0, model_1.Mutable)(false),
59
+ __metadata("design:paramtypes", [Object])
60
+ ], EnumBase);
@@ -0,0 +1,2 @@
1
+ export * from "./enum";
2
+ export * from "./enum.builder";
@@ -14,4 +14,5 @@ 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("./static-value"), exports);
17
+ __exportStar(require("./enum"), exports);
18
+ __exportStar(require("./enum.builder"), exports);
@@ -1,3 +1,3 @@
1
1
  export * from "./interface";
2
2
  export * from "./id";
3
- export * from "./common";
3
+ export * from "./services";
@@ -16,4 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./interface"), exports);
18
18
  __exportStar(require("./id"), exports);
19
- __exportStar(require("./common"), exports);
19
+ __exportStar(require("./services"), exports);
@@ -1,10 +1,9 @@
1
- export * from "./model";
2
1
  export * from "./id";
3
- export * from "./aggregate";
2
+ export * from "./model-with-id";
4
3
  export * from "./entity";
5
- export * from "./enum";
4
+ export * from "./aggregate";
6
5
  export * from "./message";
6
+ export * from "./enum";
7
7
  export * from "./value-object";
8
8
  export * from "./repository";
9
- export * from "./domain";
10
9
  export * from "./event-pubsub";
@@ -14,13 +14,12 @@ 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("./model"), exports);
18
17
  __exportStar(require("./id"), exports);
19
- __exportStar(require("./aggregate"), exports);
18
+ __exportStar(require("./model-with-id"), exports);
20
19
  __exportStar(require("./entity"), exports);
21
- __exportStar(require("./enum"), exports);
20
+ __exportStar(require("./aggregate"), exports);
22
21
  __exportStar(require("./message"), exports);
22
+ __exportStar(require("./enum"), exports);
23
23
  __exportStar(require("./value-object"), exports);
24
24
  __exportStar(require("./repository"), exports);
25
- __exportStar(require("./domain"), exports);
26
25
  __exportStar(require("./event-pubsub"), exports);
@@ -0,0 +1,7 @@
1
+ import { AnyCommand, CommandClassWithTypedConstructor } from "./command";
2
+ import { MessageBuilderBase } from "../message-base";
3
+ export declare class CommandBuilder<T extends AnyCommand> extends MessageBuilderBase<T> {
4
+ private commandClass;
5
+ constructor(commandClass: CommandClassWithTypedConstructor<T>);
6
+ build(): T;
7
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CommandBuilder = void 0;
4
+ const message_base_1 = require("../message-base");
5
+ class CommandBuilder extends message_base_1.MessageBuilderBase {
6
+ constructor(commandClass) {
7
+ super();
8
+ this.commandClass = commandClass;
9
+ }
10
+ build() {
11
+ if (!this._props)
12
+ throw new Error();
13
+ return new this.commandClass({
14
+ id: this.getId(),
15
+ timestamp: this.getTimestamp(),
16
+ context: this._context,
17
+ }, this._props);
18
+ }
19
+ }
20
+ exports.CommandBuilder = CommandBuilder;
@@ -1,16 +1,19 @@
1
- import { ClassStatic } from "../../types";
2
1
  import { Class } from "type-fest";
3
- import { Props, PropsOf } from "../model";
4
- import { MessageBase, MessageContext, MessageMetadata } from "./message";
5
- import { CommandType } from "../../meta";
2
+ import { Props, PropsOf } from "../../../model";
3
+ import { ClassStatic } from "../../../types";
4
+ import { MessageBase, MessageMetadata } from "../message-base";
5
+ export declare class CommandModelMetadata {
6
+ private commandClass;
7
+ constructor(commandClass: CommandClass);
8
+ get commandType(): string;
9
+ }
6
10
  export interface CommandMetadata extends Omit<MessageMetadata, "messageType"> {
7
11
  }
8
12
  export declare class CommandBase<P extends Props> extends MessageBase<P> {
9
13
  static readonly COMMAND_MESSAGE_TYPE = "command";
10
14
  constructor(metadata: CommandMetadata, props: P);
11
- static commandType(): CommandType;
12
- static newCommand<T extends AnyCommand>(this: CommandClassWithTypedConstructor<T>, props: PropsOf<T>, context?: MessageContext, timestamp?: number): T;
13
- commandType(): string;
15
+ static commandModelMetadata<T extends AnyCommand>(this: CommandClass<T>): CommandModelMetadata;
16
+ commandModelMetadata(): CommandModelMetadata;
14
17
  }
15
18
  export type AnyCommand = CommandBase<Props>;
16
19
  export interface CommandClass<T extends AnyCommand = AnyCommand, Arguments extends unknown[] = any[]> extends Class<T, Arguments>, ClassStatic<typeof CommandBase<PropsOf<T>>> {
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CommandBase = exports.CommandModelMetadata = void 0;
4
+ const meta_1 = require("../../../meta");
5
+ const message_base_1 = require("../message-base");
6
+ class CommandModelMetadata {
7
+ constructor(commandClass) {
8
+ this.commandClass = commandClass;
9
+ }
10
+ get commandType() {
11
+ return (0, meta_1.getCommandType)(this.commandClass);
12
+ }
13
+ }
14
+ exports.CommandModelMetadata = CommandModelMetadata;
15
+ class CommandBase extends message_base_1.MessageBase {
16
+ constructor(metadata, props) {
17
+ super({ ...metadata, messageType: CommandBase.COMMAND_MESSAGE_TYPE }, props);
18
+ }
19
+ static commandModelMetadata() {
20
+ return new CommandModelMetadata(this);
21
+ }
22
+ commandModelMetadata() {
23
+ return this.constructor.commandModelMetadata();
24
+ }
25
+ }
26
+ exports.CommandBase = CommandBase;
27
+ CommandBase.COMMAND_MESSAGE_TYPE = "command";
@@ -0,0 +1,2 @@
1
+ export * from "./command";
2
+ export * from "./command.builder";
@@ -0,0 +1,18 @@
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("./command"), exports);
18
+ __exportStar(require("./command.builder"), exports);
@@ -0,0 +1,9 @@
1
+ import { AnyEvent, EventClassWithTypedConstructor, EventSource } from "./event";
2
+ import { MessageBuilderBase } from "../message-base";
3
+ export declare class EventBuilder<T extends AnyEvent> extends MessageBuilderBase<T> {
4
+ private eventClass;
5
+ protected _source?: EventSource;
6
+ constructor(eventClass: EventClassWithTypedConstructor<T>);
7
+ withSource(source: EventSource): this;
8
+ build(): T;
9
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EventBuilder = void 0;
4
+ const message_base_1 = require("../message-base");
5
+ class EventBuilder extends message_base_1.MessageBuilderBase {
6
+ constructor(eventClass) {
7
+ super();
8
+ this.eventClass = eventClass;
9
+ }
10
+ withSource(source) {
11
+ this._source = source;
12
+ return this;
13
+ }
14
+ build() {
15
+ if (!this._source)
16
+ throw new Error("The event source must be set before build");
17
+ if (!this._props)
18
+ throw new Error("The props must be set before build");
19
+ return new this.eventClass({
20
+ id: this.getId(),
21
+ timestamp: this.getTimestamp(),
22
+ source: this._source,
23
+ context: this._context,
24
+ }, this._props);
25
+ }
26
+ }
27
+ exports.EventBuilder = EventBuilder;
@@ -1,11 +1,15 @@
1
- import { ClassStatic } from "../../types";
2
1
  import { Class } from "type-fest";
3
- import { Id } from "../id";
4
- import { Props, PropsOf } from "../model";
5
- import { MessageBase, MessageContext, MessageMetadata } from "./message";
6
- import { EventType } from "../../meta";
2
+ import { ModelId, Props, PropsOf } from "../../../model";
3
+ import { ClassStatic } from "../../../types";
4
+ import { Id } from "../../id";
5
+ import { MessageBase, MessageMetadata } from "../message-base";
6
+ export declare class EventModelMetadata {
7
+ private eventClass;
8
+ constructor(eventClass: EventClass);
9
+ get eventType(): string;
10
+ }
7
11
  export type EventSource = Readonly<{
8
- aggregateModel: string;
12
+ aggregateModelId: ModelId;
9
13
  aggregateId: Id;
10
14
  aggregateVersion: number;
11
15
  }>;
@@ -16,14 +20,13 @@ export declare class EventBase<P extends Props> extends MessageBase<P> {
16
20
  static readonly EVENT_MESSAGE_TYPE = "event";
17
21
  private readonly _source;
18
22
  constructor(metadata: EventMetadata, props: P);
19
- static eventType(): EventType;
20
- static newEvent<T extends AnyEvent>(this: EventClassWithTypedConstructor<T>, source: EventSource, props: PropsOf<T>, context?: MessageContext, timestamp?: number): T;
23
+ static eventModelMetadata<T extends AnyEvent>(this: EventClass<T>): EventModelMetadata;
24
+ eventModelMetadata(): EventModelMetadata;
21
25
  source(): Readonly<{
22
- aggregateModel: string;
26
+ aggregateModelId: string;
23
27
  aggregateId: Id;
24
28
  aggregateVersion: number;
25
29
  }>;
26
- eventType(): string;
27
30
  }
28
31
  export type AnyEvent = EventBase<Props>;
29
32
  export interface EventClass<T extends AnyEvent = AnyEvent, Arguments extends unknown[] = any[]> extends Class<T, Arguments>, ClassStatic<typeof EventBase<PropsOf<T>>> {
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EventBase = exports.EventModelMetadata = void 0;
4
+ const meta_1 = require("../../../meta");
5
+ const message_base_1 = require("../message-base");
6
+ class EventModelMetadata {
7
+ constructor(eventClass) {
8
+ this.eventClass = eventClass;
9
+ }
10
+ get eventType() {
11
+ return (0, meta_1.getEventType)(this.eventClass);
12
+ }
13
+ }
14
+ exports.EventModelMetadata = EventModelMetadata;
15
+ class EventBase extends message_base_1.MessageBase {
16
+ constructor(metadata, props) {
17
+ super({ ...metadata, messageType: EventBase.EVENT_MESSAGE_TYPE }, props);
18
+ this._source = metadata.source;
19
+ }
20
+ static eventModelMetadata() {
21
+ return new EventModelMetadata(this);
22
+ }
23
+ eventModelMetadata() {
24
+ return this.constructor.eventModelMetadata();
25
+ }
26
+ source() {
27
+ return this._source;
28
+ }
29
+ }
30
+ exports.EventBase = EventBase;
31
+ EventBase.EVENT_MESSAGE_TYPE = "event";
@@ -0,0 +1,2 @@
1
+ export * from "./event";
2
+ export * from "./event.builder";
@@ -0,0 +1,18 @@
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"), exports);
18
+ __exportStar(require("./event.builder"), exports);
@@ -1,3 +1,3 @@
1
- export * from "./message";
1
+ export * from "./message-base";
2
2
  export * from "./command";
3
3
  export * from "./event";
@@ -14,6 +14,6 @@ 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("./message"), exports);
17
+ __exportStar(require("./message-base"), exports);
18
18
  __exportStar(require("./command"), exports);
19
19
  __exportStar(require("./event"), exports);
@@ -0,0 +1,2 @@
1
+ export * from "./message";
2
+ export * from "./message.builder";
@@ -0,0 +1,18 @@
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("./message.builder"), exports);
@@ -0,0 +1,16 @@
1
+ import { ModelWithIdBuilder } from "../../model-with-id";
2
+ import { AnyMessage, MessageClassWithTypedConstructor, MessageContext } from "./message";
3
+ export declare abstract class MessageBuilderBase<T extends AnyMessage> extends ModelWithIdBuilder<T> {
4
+ protected _messageType?: string;
5
+ protected _context?: MessageContext;
6
+ protected _timestamp?: number;
7
+ getTimestamp(): number;
8
+ withMessageType(messageType: string): this;
9
+ withContext(context: MessageContext): this;
10
+ withTimestamp(timestamp: number): this;
11
+ }
12
+ export declare class MessageBuilder<T extends AnyMessage> extends MessageBuilderBase<T> {
13
+ private messageClass;
14
+ constructor(messageClass: MessageClassWithTypedConstructor<T>);
15
+ build(): T;
16
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.MessageBuilder = exports.MessageBuilderBase = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const model_with_id_1 = require("../../model-with-id");
9
+ class MessageBuilderBase extends model_with_id_1.ModelWithIdBuilder {
10
+ getTimestamp() {
11
+ return !lodash_1.default.isUndefined(this._timestamp) ? this._timestamp : Date.now();
12
+ }
13
+ withMessageType(messageType) {
14
+ this._messageType = messageType;
15
+ return this;
16
+ }
17
+ withContext(context) {
18
+ this._context = context;
19
+ return this;
20
+ }
21
+ withTimestamp(timestamp) {
22
+ this._timestamp = timestamp;
23
+ return this;
24
+ }
25
+ }
26
+ exports.MessageBuilderBase = MessageBuilderBase;
27
+ class MessageBuilder extends MessageBuilderBase {
28
+ constructor(messageClass) {
29
+ super();
30
+ this.messageClass = messageClass;
31
+ }
32
+ build() {
33
+ if (!this._messageType)
34
+ throw new Error("The message type must be set before build");
35
+ if (!this._props)
36
+ throw new Error("The props must be set before build");
37
+ return new this.messageClass({
38
+ messageType: this._messageType,
39
+ id: this.getId(),
40
+ context: this._context,
41
+ timestamp: this.getTimestamp(),
42
+ }, this._props);
43
+ }
44
+ }
45
+ exports.MessageBuilder = MessageBuilder;
@@ -0,0 +1,31 @@
1
+ import { Class } from "type-fest";
2
+ import { Props, PropsOf } from "../../../model";
3
+ import { ClassStatic } from "../../../types";
4
+ import { Id } from "../../id";
5
+ import { ModelWithId } from "../../model-with-id";
6
+ export interface MessageContext {
7
+ correlationId?: string;
8
+ causationId?: string;
9
+ }
10
+ export interface MessageMetadata {
11
+ readonly id: Id;
12
+ readonly messageType: string;
13
+ readonly timestamp: number;
14
+ context?: MessageContext;
15
+ }
16
+ export declare class MessageBase<P extends Props> extends ModelWithId<P> {
17
+ private readonly _messageType;
18
+ private readonly _timestamp;
19
+ private _context?;
20
+ constructor(metadata: MessageMetadata, props: P);
21
+ props(): P;
22
+ messageType(): string;
23
+ timestamp(): number;
24
+ context(): MessageContext | undefined;
25
+ setContext(context: Partial<MessageContext>): void;
26
+ }
27
+ export type AnyMessage = MessageBase<Props>;
28
+ export interface MessageClass<T extends AnyMessage = AnyMessage, Arguments extends unknown[] = any[]> extends Class<T, Arguments>, ClassStatic<typeof MessageBase<PropsOf<T>>> {
29
+ }
30
+ export interface MessageClassWithTypedConstructor<T extends AnyMessage = AnyMessage> extends MessageClass<T, ConstructorParameters<typeof MessageBase<PropsOf<T>>>> {
31
+ }
@@ -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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.MessageBase = void 0;
16
+ const lodash_1 = __importDefault(require("lodash"));
17
+ const model_1 = require("../../../model");
18
+ const model_with_id_1 = require("../../model-with-id");
19
+ let MessageBase = class MessageBase extends model_with_id_1.ModelWithId {
20
+ constructor(metadata, props) {
21
+ super(metadata.id);
22
+ this._messageType = metadata.messageType;
23
+ this._context = metadata?.context ?? {};
24
+ this._timestamp = metadata.timestamp;
25
+ this.initializeProps(props);
26
+ }
27
+ props() {
28
+ return super.props();
29
+ }
30
+ messageType() {
31
+ return this._messageType;
32
+ }
33
+ timestamp() {
34
+ return this._timestamp;
35
+ }
36
+ context() {
37
+ return this._context;
38
+ }
39
+ setContext(context) {
40
+ this._context = lodash_1.default.merge(this._context, context);
41
+ }
42
+ };
43
+ exports.MessageBase = MessageBase;
44
+ exports.MessageBase = MessageBase = __decorate([
45
+ (0, model_1.Mutable)(false),
46
+ __metadata("design:paramtypes", [Object, Object])
47
+ ], MessageBase);
@@ -0,0 +1,2 @@
1
+ export * from "./model-with-id";
2
+ export * from "./model-with-id.builder";
@@ -0,0 +1,18 @@
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("./model-with-id"), exports);
18
+ __exportStar(require("./model-with-id.builder"), exports);
@@ -0,0 +1,11 @@
1
+ import { ModelBuilder } from "../../model";
2
+ import { IIdService, Id } from "../id";
3
+ import { AnyModelWithId } from "./model-with-id";
4
+ export declare abstract class ModelWithIdBuilder<T extends AnyModelWithId> extends ModelBuilder<T> {
5
+ protected _id?: Id;
6
+ protected _idService?: IIdService;
7
+ getIdService(): IIdService;
8
+ getId(): Id;
9
+ withId(id: Id): this;
10
+ withIdService(idService: IIdService): this;
11
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModelWithIdBuilder = void 0;
4
+ const model_1 = require("../../model");
5
+ const id_1 = require("../id");
6
+ class ModelWithIdBuilder extends model_1.ModelBuilder {
7
+ getIdService() {
8
+ return this._idService ?? new id_1.Uuid4Service();
9
+ }
10
+ getId() {
11
+ return this._id ?? new id_1.Id(this.getIdService().generateValue());
12
+ }
13
+ withId(id) {
14
+ this._id = id;
15
+ return this;
16
+ }
17
+ withIdService(idService) {
18
+ this._idService = idService;
19
+ return this;
20
+ }
21
+ }
22
+ exports.ModelWithIdBuilder = ModelWithIdBuilder;
@@ -1,10 +1,8 @@
1
+ import { ModelBase, Props } from "../../model";
1
2
  import { Id } from "../id";
2
- import { ModelBase, Props } from "./model";
3
3
  export declare class ModelWithId<P extends Props> extends ModelBase<P> {
4
4
  protected readonly _id: Id;
5
5
  constructor(id: Id);
6
- static idService(): import("../id").IIdService;
7
- static id(id?: Id | string): Id;
8
6
  id(): Id;
9
7
  hasId(id: Id): boolean;
10
8
  }