ddd-node 21.0.2 → 22.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 (95) hide show
  1. package/dist/core/aggregate/aggregate-base/aggregate.builder.d.ts +1 -2
  2. package/dist/core/aggregate/aggregate-base/aggregate.builder.js +4 -7
  3. package/dist/core/aggregate/aggregate-base/aggregate.d.ts +2 -2
  4. package/dist/core/aggregate/aggregate-base/aggregate.js +6 -1
  5. package/dist/core/aggregate/event-sourced-aggregate/event-sourced-aggregate-model-metadata.d.ts +9 -0
  6. package/dist/core/aggregate/event-sourced-aggregate/event-sourced-aggregate.builder.d.ts +4 -3
  7. package/dist/core/aggregate/event-sourced-aggregate/event-sourced-aggregate.builder.js +10 -12
  8. package/dist/core/aggregate/event-sourced-aggregate/event-sourced-aggregate.d.ts +8 -10
  9. package/dist/core/aggregate/event-sourced-aggregate/event-sourced-aggregate.js +31 -18
  10. package/dist/core/aggregate/event-sourced-aggregate/index.d.ts +0 -1
  11. package/dist/core/aggregate/event-sourced-aggregate/index.js +0 -1
  12. package/dist/core/aggregate/event-sourced-aggregate/snapshot.d.ts +8 -0
  13. package/dist/core/aggregate/event-sourced-aggregate/snapshot.js +2 -0
  14. package/dist/core/aggregate/state-aggregate/state-aggregate.builder.js +4 -4
  15. package/dist/core/aggregate/state-aggregate/state-aggregate.d.ts +2 -2
  16. package/dist/core/aggregate/state-aggregate/state-aggregate.js +1 -2
  17. package/dist/core/entity/entity.builder.d.ts +2 -2
  18. package/dist/core/entity/entity.builder.js +2 -2
  19. package/dist/core/entity/entity.d.ts +3 -5
  20. package/dist/core/entity/entity.js +3 -3
  21. package/dist/core/enum/enum.d.ts +3 -5
  22. package/dist/core/enum/enum.js +10 -17
  23. package/dist/core/enum/index.d.ts +0 -1
  24. package/dist/core/enum/index.js +0 -1
  25. package/dist/core/id/id.d.ts +6 -4
  26. package/dist/core/id/id.js +17 -8
  27. package/dist/core/id/index.d.ts +0 -2
  28. package/dist/core/id/index.js +0 -2
  29. package/dist/core/identifiable-model/identifiable-model.builder.d.ts +9 -0
  30. package/dist/core/identifiable-model/identifiable-model.builder.js +23 -0
  31. package/dist/core/identifiable-model/identifiable-model.d.ts +13 -0
  32. package/dist/core/identifiable-model/identifiable-model.js +23 -0
  33. package/dist/core/identifiable-model/index.d.ts +2 -0
  34. package/dist/core/{id/services → identifiable-model}/index.js +2 -2
  35. package/dist/core/index.d.ts +3 -3
  36. package/dist/core/index.js +3 -3
  37. package/dist/core/message/command/command-model.metadata.d.ts +6 -0
  38. package/dist/core/message/command/command-model.metadata.js +2 -0
  39. package/dist/core/message/command/command.builder.js +5 -5
  40. package/dist/core/message/command/command.d.ts +4 -9
  41. package/dist/core/message/command/command.js +11 -17
  42. package/dist/core/message/command/index.d.ts +1 -0
  43. package/dist/core/message/command/index.js +1 -0
  44. package/dist/core/message/event/event-model.metadata.d.ts +5 -0
  45. package/dist/core/message/event/event-model.metadata.js +2 -0
  46. package/dist/core/message/event/event.builder.d.ts +1 -1
  47. package/dist/core/message/event/event.builder.js +8 -8
  48. package/dist/core/message/event/event.d.ts +7 -12
  49. package/dist/core/message/event/event.js +16 -16
  50. package/dist/core/message/event/index.d.ts +1 -0
  51. package/dist/core/message/event/index.js +1 -0
  52. package/dist/core/message/message-base/message.builder.d.ts +5 -7
  53. package/dist/core/message/message-base/message.builder.js +15 -22
  54. package/dist/core/message/message-base/message.d.ts +5 -9
  55. package/dist/core/message/message-base/message.js +9 -6
  56. package/dist/core/value-object/value-object.builder.js +2 -2
  57. package/dist/core/value-object/value-object.d.ts +1 -1
  58. package/dist/decorators/aggregate-es/handle.js +1 -1
  59. package/dist/decorators/aggregate-es/when.js +1 -1
  60. package/dist/meta/index.d.ts +0 -1
  61. package/dist/meta/index.js +0 -1
  62. package/dist/model/core/index.d.ts +1 -0
  63. package/dist/model/core/index.js +1 -0
  64. package/dist/model/core/model-metadata.d.ts +13 -0
  65. package/dist/model/core/model-metadata.js +2 -0
  66. package/dist/model/core/model.builder.d.ts +1 -1
  67. package/dist/model/core/model.builder.js +1 -1
  68. package/dist/model/core/model.d.ts +12 -15
  69. package/dist/model/core/model.js +37 -32
  70. package/dist/model/domain.d.ts +4 -0
  71. package/dist/model/domain.js +10 -2
  72. package/dist/model/meta/model-domain.d.ts +0 -1
  73. package/dist/model/meta/model-domain.js +3 -3
  74. package/dist/model/model-registry.js +4 -4
  75. package/dist/package.json +1 -1
  76. package/package.json +1 -2
  77. package/dist/core/aggregate/event-sourced-aggregate/event-sourced-aggregate.model-metadata.d.ts +0 -9
  78. package/dist/core/aggregate/event-sourced-aggregate/event-sourced-aggregate.model-metadata.js +0 -22
  79. package/dist/core/enum/enum.builder.d.ts +0 -9
  80. package/dist/core/enum/enum.builder.js +0 -20
  81. package/dist/core/id/interface.d.ts +0 -4
  82. package/dist/core/id/services/index.d.ts +0 -2
  83. package/dist/core/id/services/snowflake.d.ts +0 -8
  84. package/dist/core/id/services/snowflake.js +0 -14
  85. package/dist/core/id/services/uuid4.d.ts +0 -5
  86. package/dist/core/id/services/uuid4.js +0 -18
  87. package/dist/core/model-with-id/index.d.ts +0 -2
  88. package/dist/core/model-with-id/index.js +0 -18
  89. package/dist/core/model-with-id/model-with-id.builder.d.ts +0 -11
  90. package/dist/core/model-with-id/model-with-id.builder.js +0 -22
  91. package/dist/core/model-with-id/model-with-id.d.ts +0 -9
  92. package/dist/core/model-with-id/model-with-id.js +0 -17
  93. package/dist/meta/id.metadata.d.ts +0 -4
  94. package/dist/meta/id.metadata.js +0 -16
  95. /package/dist/core/{id/interface.js → aggregate/event-sourced-aggregate/event-sourced-aggregate-model-metadata.js} +0 -0
@@ -14,12 +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("./value-object"), exports);
18
+ __exportStar(require("./enum"), exports);
17
19
  __exportStar(require("./id"), exports);
18
- __exportStar(require("./model-with-id"), exports);
20
+ __exportStar(require("./identifiable-model"), exports);
19
21
  __exportStar(require("./entity"), exports);
20
22
  __exportStar(require("./aggregate"), exports);
21
23
  __exportStar(require("./message"), exports);
22
- __exportStar(require("./enum"), exports);
23
- __exportStar(require("./value-object"), exports);
24
24
  __exportStar(require("./repository"), exports);
25
25
  __exportStar(require("./event-pubsub"), exports);
@@ -0,0 +1,6 @@
1
+ import { AnyCommand } from "./command";
2
+ import { CommandType } from "../../../meta";
3
+ import { IModelMetadata } from "../../../model";
4
+ export interface ICommandModelMetadata<T extends AnyCommand> extends IModelMetadata<T> {
5
+ commandType: CommandType;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -8,13 +8,13 @@ class CommandBuilder extends message_base_1.MessageBuilderBase {
8
8
  this.commandClass = commandClass;
9
9
  }
10
10
  build() {
11
- if (!this._props)
11
+ if (!this.props)
12
12
  throw new Error();
13
13
  return new this.commandClass({
14
- id: this.getId(),
15
- timestamp: this.getTimestamp(),
16
- context: this._context,
17
- }, this._props);
14
+ id: this.id,
15
+ timestamp: this.timestamp,
16
+ context: this.context,
17
+ }, this.props);
18
18
  }
19
19
  }
20
20
  exports.CommandBuilder = CommandBuilder;
@@ -2,18 +2,13 @@ import { Class } from "type-fest";
2
2
  import { Props, PropsOf } from "../../../model";
3
3
  import { ClassStatic } from "../../../types";
4
4
  import { MessageBase, MessageMetadata } from "../message-base";
5
- export declare class CommandModelMetadata {
6
- private commandClass;
7
- constructor(commandClass: CommandClass);
8
- get commandType(): string;
9
- }
10
- export interface CommandMetadata extends Omit<MessageMetadata, "messageType"> {
5
+ import { ICommandModelMetadata } from "./command-model.metadata";
6
+ export interface CommandMetadata extends MessageMetadata {
11
7
  }
12
8
  export declare class CommandBase<P extends Props> extends MessageBase<P> {
13
- static readonly COMMAND_MESSAGE_TYPE = "command";
9
+ static commandType(): string;
14
10
  constructor(metadata: CommandMetadata, props: P);
15
- static commandModelMetadata<T extends AnyCommand>(this: CommandClass<T>): CommandModelMetadata;
16
- commandModelMetadata(): CommandModelMetadata;
11
+ modelMetadata(): ICommandModelMetadata<typeof this>;
17
12
  }
18
13
  export type AnyCommand = CommandBase<Props>;
19
14
  export interface CommandClass<T extends AnyCommand = AnyCommand, Arguments extends unknown[] = any[]> extends Class<T, Arguments>, ClassStatic<typeof CommandBase<PropsOf<T>>> {
@@ -1,27 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CommandBase = exports.CommandModelMetadata = void 0;
3
+ exports.CommandBase = void 0;
4
4
  const meta_1 = require("../../../meta");
5
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
6
  class CommandBase extends message_base_1.MessageBase {
16
- constructor(metadata, props) {
17
- super({ ...metadata, messageType: CommandBase.COMMAND_MESSAGE_TYPE }, props);
7
+ static commandType() {
8
+ return (0, meta_1.getCommandType)(this);
18
9
  }
19
- static commandModelMetadata() {
20
- return new CommandModelMetadata(this);
10
+ constructor(metadata, props) {
11
+ super(metadata, props);
21
12
  }
22
- commandModelMetadata() {
23
- return this.constructor.commandModelMetadata();
13
+ modelMetadata() {
14
+ const commandClass = this.constructor;
15
+ return {
16
+ ...super.modelMetadata(),
17
+ commandType: commandClass.commandType(),
18
+ };
24
19
  }
25
20
  }
26
21
  exports.CommandBase = CommandBase;
27
- CommandBase.COMMAND_MESSAGE_TYPE = "command";
@@ -1,2 +1,3 @@
1
+ export * from "./command-model.metadata";
1
2
  export * from "./command";
2
3
  export * from "./command.builder";
@@ -14,5 +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("./command-model.metadata"), exports);
17
18
  __exportStar(require("./command"), exports);
18
19
  __exportStar(require("./command.builder"), exports);
@@ -0,0 +1,5 @@
1
+ import { AnyEvent } from ".";
2
+ import { IModelMetadata } from "../../../model";
3
+ export interface IEventModelMetadata<T extends AnyEvent> extends IModelMetadata<T> {
4
+ eventType: string;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -2,7 +2,7 @@ import { AnyEvent, EventClassWithTypedConstructor, EventSource } from "./event";
2
2
  import { MessageBuilderBase } from "../message-base";
3
3
  export declare class EventBuilder<T extends AnyEvent> extends MessageBuilderBase<T> {
4
4
  private eventClass;
5
- protected _source?: EventSource;
5
+ protected source?: EventSource;
6
6
  constructor(eventClass: EventClassWithTypedConstructor<T>);
7
7
  withSource(source: EventSource): this;
8
8
  build(): T;
@@ -8,20 +8,20 @@ class EventBuilder extends message_base_1.MessageBuilderBase {
8
8
  this.eventClass = eventClass;
9
9
  }
10
10
  withSource(source) {
11
- this._source = source;
11
+ this.source = source;
12
12
  return this;
13
13
  }
14
14
  build() {
15
- if (!this._source)
15
+ if (!this.source)
16
16
  throw new Error("The event source must be set before build");
17
- if (!this._props)
17
+ if (!this.props)
18
18
  throw new Error("The props must be set before build");
19
19
  return new this.eventClass({
20
- id: this.getId(),
21
- timestamp: this.getTimestamp(),
22
- source: this._source,
23
- context: this._context,
24
- }, this._props);
20
+ id: this.id,
21
+ timestamp: this.timestamp,
22
+ source: this.source,
23
+ context: this.context,
24
+ }, this.props);
25
25
  }
26
26
  }
27
27
  exports.EventBuilder = EventBuilder;
@@ -1,29 +1,24 @@
1
1
  import { Class } from "type-fest";
2
- import { ModelId, Props, PropsOf } from "../../../model";
2
+ import { EventType } from "../../../meta";
3
+ import { Props, PropsOf } from "../../../model";
3
4
  import { ClassStatic } from "../../../types";
4
5
  import { Id } from "../../id";
5
6
  import { MessageBase, MessageMetadata } from "../message-base";
6
- export declare class EventModelMetadata {
7
- private eventClass;
8
- constructor(eventClass: EventClass);
9
- get eventType(): string;
10
- }
7
+ import { IEventModelMetadata } from "./event-model.metadata";
11
8
  export type EventSource = Readonly<{
12
- aggregateModelId: ModelId;
13
9
  aggregateId: Id;
14
10
  aggregateVersion: number;
15
11
  }>;
16
- export interface EventMetadata extends Omit<MessageMetadata, "messageType"> {
12
+ export interface EventMetadata extends MessageMetadata {
17
13
  source: EventSource;
18
14
  }
19
15
  export declare class EventBase<P extends Props> extends MessageBase<P> {
20
- static readonly EVENT_MESSAGE_TYPE = "event";
21
16
  private readonly _source;
22
17
  constructor(metadata: EventMetadata, props: P);
23
- static eventModelMetadata<T extends AnyEvent>(this: EventClass<T>): EventModelMetadata;
24
- eventModelMetadata(): EventModelMetadata;
18
+ static eventType(): EventType;
19
+ modelMetadata(): IEventModelMetadata<typeof this>;
20
+ metadata(): EventMetadata;
25
21
  source(): Readonly<{
26
- aggregateModelId: string;
27
22
  aggregateId: Id;
28
23
  aggregateVersion: number;
29
24
  }>;
@@ -1,31 +1,31 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EventBase = exports.EventModelMetadata = void 0;
3
+ exports.EventBase = void 0;
4
4
  const meta_1 = require("../../../meta");
5
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
6
  class EventBase extends message_base_1.MessageBase {
16
7
  constructor(metadata, props) {
17
- super({ ...metadata, messageType: EventBase.EVENT_MESSAGE_TYPE }, props);
8
+ super(metadata, props);
18
9
  this._source = metadata.source;
19
10
  }
20
- static eventModelMetadata() {
21
- return new EventModelMetadata(this);
11
+ static eventType() {
12
+ return (0, meta_1.getEventType)(this);
13
+ }
14
+ modelMetadata() {
15
+ const eventClass = this.constructor;
16
+ return {
17
+ ...super.modelMetadata(),
18
+ eventType: eventClass.eventType(),
19
+ };
22
20
  }
23
- eventModelMetadata() {
24
- return this.constructor.eventModelMetadata();
21
+ metadata() {
22
+ return {
23
+ ...super.metadata(),
24
+ source: this._source,
25
+ };
25
26
  }
26
27
  source() {
27
28
  return this._source;
28
29
  }
29
30
  }
30
31
  exports.EventBase = EventBase;
31
- EventBase.EVENT_MESSAGE_TYPE = "event";
@@ -1,2 +1,3 @@
1
1
  export * from "./event";
2
+ export * from "./event-model.metadata";
2
3
  export * from "./event.builder";
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./event"), exports);
18
+ __exportStar(require("./event-model.metadata"), exports);
18
19
  __exportStar(require("./event.builder"), exports);
@@ -1,13 +1,11 @@
1
- import { ModelWithIdBuilder } from "../../model-with-id";
1
+ import { IdentifiableModelBuilder } from "../../identifiable-model";
2
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;
3
+ export declare abstract class MessageBuilderBase<T extends AnyMessage> extends IdentifiableModelBuilder<T> {
4
+ protected timestamp: number;
5
+ protected context?: MessageContext;
9
6
  withContext(context: MessageContext): this;
10
7
  withTimestamp(timestamp: number): this;
8
+ withTimestampNow(): this;
11
9
  }
12
10
  export declare class MessageBuilder<T extends AnyMessage> extends MessageBuilderBase<T> {
13
11
  private messageClass;
@@ -1,27 +1,23 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  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;
4
+ const identifiable_model_1 = require("../../identifiable-model");
5
+ class MessageBuilderBase extends identifiable_model_1.IdentifiableModelBuilder {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.timestamp = Date.now();
16
9
  }
17
10
  withContext(context) {
18
- this._context = context;
11
+ this.context = context;
19
12
  return this;
20
13
  }
21
14
  withTimestamp(timestamp) {
22
- this._timestamp = timestamp;
15
+ this.timestamp = timestamp;
23
16
  return this;
24
17
  }
18
+ withTimestampNow() {
19
+ return this.withTimestamp(Date.now());
20
+ }
25
21
  }
26
22
  exports.MessageBuilderBase = MessageBuilderBase;
27
23
  class MessageBuilder extends MessageBuilderBase {
@@ -30,16 +26,13 @@ class MessageBuilder extends MessageBuilderBase {
30
26
  this.messageClass = messageClass;
31
27
  }
32
28
  build() {
33
- if (!this._messageType)
34
- throw new Error("The message type must be set before build");
35
- if (!this._props)
29
+ if (!this.props)
36
30
  throw new Error("The props must be set before build");
37
31
  return new this.messageClass({
38
- messageType: this._messageType,
39
- id: this.getId(),
40
- context: this._context,
41
- timestamp: this.getTimestamp(),
42
- }, this._props);
32
+ id: this.id,
33
+ context: this.context,
34
+ timestamp: this.timestamp,
35
+ }, this.props);
43
36
  }
44
37
  }
45
38
  exports.MessageBuilder = MessageBuilder;
@@ -1,25 +1,21 @@
1
1
  import { Class } from "type-fest";
2
2
  import { Props, PropsOf } from "../../../model";
3
3
  import { ClassStatic } from "../../../types";
4
- import { Id } from "../../id";
5
- import { ModelWithId } from "../../model-with-id";
4
+ import { IdentifiableModel, IdentifiableModelMetadata } from "../../identifiable-model";
6
5
  export interface MessageContext {
7
6
  correlationId?: string;
8
7
  causationId?: string;
9
8
  }
10
- export interface MessageMetadata {
11
- readonly id: Id;
12
- readonly messageType: string;
13
- readonly timestamp: number;
9
+ export interface MessageMetadata extends IdentifiableModelMetadata {
10
+ timestamp: number;
14
11
  context?: MessageContext;
15
12
  }
16
- export declare class MessageBase<P extends Props> extends ModelWithId<P> {
17
- private readonly _messageType;
13
+ export declare class MessageBase<P extends Props> extends IdentifiableModel<P> {
18
14
  private readonly _timestamp;
19
15
  private _context?;
20
16
  constructor(metadata: MessageMetadata, props: P);
21
17
  props(): P;
22
- messageType(): string;
18
+ metadata(): MessageMetadata;
23
19
  timestamp(): number;
24
20
  context(): MessageContext | undefined;
25
21
  setContext(context: Partial<MessageContext>): void;
@@ -15,11 +15,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.MessageBase = void 0;
16
16
  const lodash_1 = __importDefault(require("lodash"));
17
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 {
18
+ const identifiable_model_1 = require("../../identifiable-model");
19
+ let MessageBase = class MessageBase extends identifiable_model_1.IdentifiableModel {
20
20
  constructor(metadata, props) {
21
- super(metadata.id);
22
- this._messageType = metadata.messageType;
21
+ super(metadata);
23
22
  this._context = metadata?.context ?? {};
24
23
  this._timestamp = metadata.timestamp;
25
24
  this.initializeProps(props);
@@ -27,8 +26,12 @@ let MessageBase = class MessageBase extends model_with_id_1.ModelWithId {
27
26
  props() {
28
27
  return super.props();
29
28
  }
30
- messageType() {
31
- return this._messageType;
29
+ metadata() {
30
+ return {
31
+ ...super.metadata(),
32
+ timestamp: this._timestamp,
33
+ context: this._context,
34
+ };
32
35
  }
33
36
  timestamp() {
34
37
  return this._timestamp;
@@ -8,9 +8,9 @@ class ValueObjectBuilder extends model_1.ModelBuilder {
8
8
  this.valueObjectClass = valueObjectClass;
9
9
  }
10
10
  build() {
11
- if (!this._props)
11
+ if (!this.props)
12
12
  throw new Error("The props must be set before build");
13
- return new this.valueObjectClass(this._props);
13
+ return new this.valueObjectClass(this.props);
14
14
  }
15
15
  }
16
16
  exports.ValueObjectBuilder = ValueObjectBuilder;
@@ -5,7 +5,7 @@ export declare class ValueObjectBase<P extends Props> extends ModelBase<P> {
5
5
  constructor(props: P);
6
6
  props(): P;
7
7
  equals<V extends AnyValueObject>(vo: V): boolean;
8
- with(props: Partial<P>): this;
8
+ with(props: Partial<P>): typeof this;
9
9
  }
10
10
  export type AnyValueObject = ValueObjectBase<Props>;
11
11
  export interface ValueObjectClass<T extends AnyValueObject = AnyValueObject> extends Class<T>, ClassStatic<typeof ValueObjectBase<PropsOf<T>>> {
@@ -5,7 +5,7 @@ const meta_1 = require("../../meta");
5
5
  const Handle = (commandClass) => {
6
6
  return (target, propertyKey, descriptor) => {
7
7
  if (typeof descriptor.value === "function") {
8
- const { commandType } = commandClass.commandModelMetadata();
8
+ const commandType = commandClass.commandType();
9
9
  (0, meta_1.defineCommandHandler)(target, commandType, descriptor.value);
10
10
  }
11
11
  };
@@ -5,7 +5,7 @@ const meta_1 = require("../../meta");
5
5
  const When = (eventClass) => {
6
6
  return (target, propertyKey, descriptor) => {
7
7
  if (typeof descriptor.value === "function") {
8
- const { eventType } = eventClass.eventModelMetadata();
8
+ const eventType = eventClass.eventType();
9
9
  (0, meta_1.defineEventApplier)(target, eventType, descriptor.value);
10
10
  }
11
11
  };
@@ -1,4 +1,3 @@
1
1
  export * from "./aggregate-es";
2
- export * from "./id.metadata";
3
2
  export * from "./event.metadata";
4
3
  export * from "./command.metadata";
@@ -15,6 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./aggregate-es"), exports);
18
- __exportStar(require("./id.metadata"), exports);
19
18
  __exportStar(require("./event.metadata"), exports);
20
19
  __exportStar(require("./command.metadata"), exports);
@@ -1,2 +1,3 @@
1
1
  export * from "./model";
2
+ export * from "./model-metadata";
2
3
  export * from "./model.builder";
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./model"), exports);
18
+ __exportStar(require("./model-metadata"), exports);
18
19
  __exportStar(require("./model.builder"), exports);
@@ -0,0 +1,13 @@
1
+ import { AnyModel } from "./model";
2
+ import { ModelId, ModelName, ModelVersion, PropsMap, PropsValidator, StaticValuesMap } from "../meta";
3
+ export interface IModelMetadata<T extends AnyModel = AnyModel> {
4
+ modelMutable: boolean;
5
+ modelId: ModelId;
6
+ modelName: ModelName;
7
+ modelVersion: ModelVersion;
8
+ ownPropsValidator?: PropsValidator<T>;
9
+ propsValidators: PropsValidator[];
10
+ ownStaticValues: StaticValuesMap<T>;
11
+ ownPropsMap: PropsMap<T>;
12
+ propsMap: PropsMap<T>;
13
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -4,7 +4,7 @@ export interface IModelBuilder<T extends AnyModel = AnyModel> {
4
4
  build(): T;
5
5
  }
6
6
  export declare abstract class ModelBuilder<T extends AnyModel = AnyModel> implements IModelBuilder<T> {
7
- protected _props?: PropsOf<T>;
7
+ protected props?: PropsOf<T>;
8
8
  withProps(props: PropsOf<T>): this;
9
9
  abstract build(): T;
10
10
  buildSafe(): T | null;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ModelBuilder = void 0;
4
4
  class ModelBuilder {
5
5
  withProps(props) {
6
- this._props = props;
6
+ this.props = props;
7
7
  return this;
8
8
  }
9
9
  buildSafe() {
@@ -1,38 +1,35 @@
1
1
  import { Class } from "type-fest";
2
2
  import { ModelId, ModelName, ModelVersion, PropsMap, PropsValidator, StaticValuesMap } from "../meta";
3
3
  import { ClassStatic } from "../../types";
4
+ import { IModelMetadata } from "./model-metadata";
4
5
  export interface Props {
5
6
  [key: PropertyKey]: any;
6
7
  }
7
8
  export type EmptyProps = {
8
9
  [key: PropertyKey]: never;
9
10
  };
10
- export declare class ModelMetadata<T extends AnyModel = AnyModel> {
11
- private modelClass;
12
- constructor(modelClass: ModelClass<T>);
13
- get modelMutable(): boolean;
14
- get modelName(): ModelName;
15
- get modelVersion(): ModelVersion;
16
- get modelId(): ModelId;
17
- get ownPropsValidator(): PropsValidator<T> | undefined;
18
- get propsValidators(): PropsValidator[];
19
- get ownStaticValues(): StaticValuesMap<T>;
20
- get ownPropsMap(): PropsMap<T>;
21
- get propsMap(): PropsMap<T>;
22
- }
23
11
  export declare class ModelBase<P extends Props> {
24
12
  static readonly EMPTY_PROPS: EmptyProps;
25
13
  protected _props: P;
26
14
  static isModel(model: any): model is AnyModel;
27
- static modelMetadata<T extends AnyModel>(this: ModelClass<T>): ModelMetadata<T>;
15
+ static modelMutable<T extends AnyModel>(this: ModelClass<T>): boolean;
16
+ static modelName<T extends AnyModel>(this: ModelClass<T>): ModelName;
17
+ static modelVersion<T extends AnyModel>(this: ModelClass<T>): ModelVersion;
18
+ static modelId<T extends AnyModel>(this: ModelClass<T>): ModelId;
19
+ static ownPropsValidator<T extends AnyModel>(this: ModelClass<T>): PropsValidator<T> | undefined;
20
+ static propsValidators<T extends AnyModel>(this: ModelClass<T>): PropsValidator[];
21
+ static ownStaticValues<T extends AnyModel>(this: ModelClass<T>): StaticValuesMap<T>;
22
+ static ownPropsMap<T extends AnyModel>(this: ModelClass<T>): PropsMap<T>;
23
+ static propsMap<T extends AnyModel>(this: ModelClass<T>): PropsMap<T>;
28
24
  constructor();
29
25
  redefineModel(): void;
30
26
  protected redefineProp(key: keyof this, propTargetKey: keyof P): void;
31
- modelMetadata(): ModelMetadata<typeof this>;
27
+ modelMetadata(): IModelMetadata<typeof this>;
32
28
  validateProps(props: P): void;
33
29
  validate(): void;
34
30
  propsIsEmpty(): boolean;
35
31
  props(): P | null;
32
+ metadata(): {};
36
33
  protected initializeProps(props: P): void;
37
34
  }
38
35
  export type AnyModel = ModelBase<Props>;