ddd-node 5.0.1 → 6.1.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.
- package/dist/core/aggregate.d.ts +67 -0
- package/dist/core/aggregate.js +178 -0
- package/dist/core/command.d.ts +13 -0
- package/dist/core/command.js +18 -0
- package/dist/core/entity.d.ts +17 -0
- package/dist/core/entity.js +23 -0
- package/dist/core/event.d.ts +27 -0
- package/dist/core/event.js +23 -0
- package/dist/{base → core}/id.d.ts +2 -1
- package/dist/{base → core}/id.js +6 -0
- package/dist/{base → core}/index.d.ts +5 -3
- package/dist/{base → core}/index.js +5 -3
- package/dist/core/message.d.ts +21 -0
- package/dist/core/message.js +30 -0
- package/dist/core/metadata.d.ts +14 -0
- package/dist/core/metadata.js +43 -0
- package/dist/core/model-type.d.ts +86 -0
- package/dist/core/model-type.js +55 -0
- package/dist/core/model.d.ts +14 -0
- package/dist/{base/props-envelope.js → core/model.js} +17 -14
- package/dist/core/registry.d.ts +12 -0
- package/dist/core/registry.js +28 -0
- package/dist/core/value-object.d.ts +10 -0
- package/dist/{base → core}/value-object.js +3 -11
- package/dist/decorators/aggregate.d.ts +6 -7
- package/dist/decorators/aggregate.js +16 -19
- package/dist/decorators/command.d.ts +2 -2
- package/dist/decorators/command.js +7 -11
- package/dist/decorators/entity.d.ts +2 -2
- package/dist/decorators/entity.js +7 -9
- package/dist/decorators/event.d.ts +2 -2
- package/dist/decorators/event.js +7 -11
- package/dist/decorators/index.d.ts +2 -2
- package/dist/decorators/index.js +2 -2
- package/dist/decorators/model.d.ts +3 -0
- package/dist/decorators/model.js +12 -0
- package/dist/decorators/value-object.d.ts +2 -2
- package/dist/decorators/value-object.js +7 -9
- package/dist/index.d.ts +1 -2
- package/dist/index.js +1 -2
- package/dist/types/class.d.ts +0 -5
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.js +0 -1
- package/package.json +1 -1
- package/tsconfig.json +1 -2
- package/dist/base/aggregate.d.ts +0 -70
- package/dist/base/aggregate.js +0 -175
- package/dist/base/command.d.ts +0 -21
- package/dist/base/command.js +0 -22
- package/dist/base/entity.d.ts +0 -25
- package/dist/base/entity.js +0 -31
- package/dist/base/errors/aggregate.error.d.ts +0 -21
- package/dist/base/errors/aggregate.error.js +0 -45
- package/dist/base/event.d.ts +0 -29
- package/dist/base/event.js +0 -26
- package/dist/base/message.d.ts +0 -33
- package/dist/base/message.js +0 -42
- package/dist/base/props-envelope.d.ts +0 -11
- package/dist/base/repository.d.ts +0 -6
- package/dist/base/repository.js +0 -2
- package/dist/base/value-object.d.ts +0 -16
- package/dist/decorators/message.d.ts +0 -2
- package/dist/decorators/message.js +0 -10
- package/dist/metadata/aggregate.d.ts +0 -14
- package/dist/metadata/aggregate.js +0 -70
- package/dist/metadata/command.d.ts +0 -6
- package/dist/metadata/command.js +0 -19
- package/dist/metadata/constants.d.ts +0 -8
- package/dist/metadata/constants.js +0 -11
- package/dist/metadata/entity.d.ts +0 -6
- package/dist/metadata/entity.js +0 -19
- package/dist/metadata/errors.d.ts +0 -18
- package/dist/metadata/errors.js +0 -39
- package/dist/metadata/event.d.ts +0 -6
- package/dist/metadata/event.js +0 -19
- package/dist/metadata/index.d.ts +0 -7
- package/dist/metadata/index.js +0 -23
- package/dist/metadata/message.d.ts +0 -3
- package/dist/metadata/message.js +0 -16
- package/dist/metadata/registry.d.ts +0 -9
- package/dist/metadata/registry.js +0 -23
- package/dist/metadata/value-object.d.ts +0 -6
- package/dist/metadata/value-object.js +0 -19
- package/dist/utils/id.d.ts +0 -1
- package/dist/utils/id.js +0 -8
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ValueObjectType = exports.ValueObjectTypePrefix = exports.CommandType = exports.CommandTypePrefix = exports.EventType = exports.EventTypePrefix = exports.AggregateType = exports.AggregateTypePrefix = exports.EntityType = exports.EntityTypePrefix = exports.createPrefixedModelTypeClass = exports.ModelType = exports.ModelTypePatternRegex = exports.seperator = void 0;
|
|
4
|
+
exports.seperator = "#";
|
|
5
|
+
exports.ModelTypePatternRegex = new RegExp(".+" + exports.seperator + ".+");
|
|
6
|
+
class ModelType {
|
|
7
|
+
constructor(prefix, name) {
|
|
8
|
+
this.prefix = prefix;
|
|
9
|
+
this.name = name;
|
|
10
|
+
}
|
|
11
|
+
static from(value) {
|
|
12
|
+
if (!this.isPattern(value))
|
|
13
|
+
throw new Error("Invalid value");
|
|
14
|
+
const [prefix, ...names] = value.split(exports.seperator);
|
|
15
|
+
const name = names.join(exports.seperator);
|
|
16
|
+
return new ModelType(prefix, name);
|
|
17
|
+
}
|
|
18
|
+
static isPattern(type) {
|
|
19
|
+
return exports.ModelTypePatternRegex.test(type);
|
|
20
|
+
}
|
|
21
|
+
get value() {
|
|
22
|
+
return `${this.prefix}${exports.seperator}${this.name}`;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.ModelType = ModelType;
|
|
26
|
+
//
|
|
27
|
+
const createPrefixedModelTypeClass = (prefix) => {
|
|
28
|
+
return class extends ModelType {
|
|
29
|
+
constructor(name) {
|
|
30
|
+
super(prefix, name);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
exports.createPrefixedModelTypeClass = createPrefixedModelTypeClass;
|
|
35
|
+
//
|
|
36
|
+
exports.EntityTypePrefix = "Entity";
|
|
37
|
+
class EntityType extends (0, exports.createPrefixedModelTypeClass)(exports.EntityTypePrefix) {
|
|
38
|
+
}
|
|
39
|
+
exports.EntityType = EntityType;
|
|
40
|
+
exports.AggregateTypePrefix = "Aggregate";
|
|
41
|
+
class AggregateType extends (0, exports.createPrefixedModelTypeClass)(exports.AggregateTypePrefix) {
|
|
42
|
+
}
|
|
43
|
+
exports.AggregateType = AggregateType;
|
|
44
|
+
exports.EventTypePrefix = "Event";
|
|
45
|
+
class EventType extends (0, exports.createPrefixedModelTypeClass)(exports.EventTypePrefix) {
|
|
46
|
+
}
|
|
47
|
+
exports.EventType = EventType;
|
|
48
|
+
exports.CommandTypePrefix = "Command";
|
|
49
|
+
class CommandType extends (0, exports.createPrefixedModelTypeClass)(exports.CommandTypePrefix) {
|
|
50
|
+
}
|
|
51
|
+
exports.CommandType = CommandType;
|
|
52
|
+
exports.ValueObjectTypePrefix = "ValueObject";
|
|
53
|
+
class ValueObjectType extends (0, exports.createPrefixedModelTypeClass)(exports.ValueObjectTypePrefix) {
|
|
54
|
+
}
|
|
55
|
+
exports.ValueObjectType = ValueObjectType;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Class } from "../types/class";
|
|
2
|
+
export declare class Model<Props extends object> {
|
|
3
|
+
protected _props?: Props;
|
|
4
|
+
constructor(props?: Props);
|
|
5
|
+
static isModel(obj: object): boolean;
|
|
6
|
+
protected setProps(props: Props): void;
|
|
7
|
+
validate(): void;
|
|
8
|
+
get type(): `${string}#${string}`;
|
|
9
|
+
props(): Props | undefined;
|
|
10
|
+
}
|
|
11
|
+
export type AnyModel = Model<object>;
|
|
12
|
+
export type PropsOf<T> = T extends Model<infer P> ? P : never;
|
|
13
|
+
export type ModelClass<T extends AnyModel = AnyModel> = Class<T>;
|
|
14
|
+
export type EmptyProps = {};
|
|
@@ -3,25 +3,28 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.Model = void 0;
|
|
7
7
|
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
-
|
|
8
|
+
const metadata_1 = require("./metadata");
|
|
9
|
+
class Model {
|
|
9
10
|
constructor(props) {
|
|
10
|
-
if (props)
|
|
11
|
-
this.initProps(props);
|
|
12
|
-
}
|
|
13
|
-
validate() { }
|
|
14
|
-
initProps(props) {
|
|
15
|
-
if (this.props)
|
|
16
|
-
return;
|
|
17
11
|
this._props = props;
|
|
18
|
-
this.validate();
|
|
19
12
|
}
|
|
20
|
-
|
|
21
|
-
return
|
|
13
|
+
static isModel(obj) {
|
|
14
|
+
return obj instanceof Model;
|
|
15
|
+
}
|
|
16
|
+
setProps(props) {
|
|
17
|
+
if (!this._props) {
|
|
18
|
+
this._props = props;
|
|
19
|
+
this.validate();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
validate() { }
|
|
23
|
+
get type() {
|
|
24
|
+
return (0, metadata_1.getModelType)(Object.getPrototypeOf(this));
|
|
22
25
|
}
|
|
23
|
-
|
|
26
|
+
props() {
|
|
24
27
|
return lodash_1.default.cloneDeep(this._props);
|
|
25
28
|
}
|
|
26
29
|
}
|
|
27
|
-
exports.
|
|
30
|
+
exports.Model = Model;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ModelClass } from "./model";
|
|
2
|
+
import { ModelTypePattern } from "./model-type";
|
|
3
|
+
export declare class ModelRegistry {
|
|
4
|
+
private static _instance;
|
|
5
|
+
private modelMap;
|
|
6
|
+
private constructor();
|
|
7
|
+
static instance(): ModelRegistry;
|
|
8
|
+
getMap(): Map<`${string}#${string}`, ModelClass>;
|
|
9
|
+
hasModel(type: ModelTypePattern): boolean;
|
|
10
|
+
registerModel(type: ModelTypePattern, modelClass: ModelClass): void;
|
|
11
|
+
getModel(type: ModelTypePattern): ModelClass | undefined;
|
|
12
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModelRegistry = void 0;
|
|
4
|
+
class ModelRegistry {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.modelMap = new Map();
|
|
7
|
+
}
|
|
8
|
+
static instance() {
|
|
9
|
+
if (!this._instance)
|
|
10
|
+
this._instance = new ModelRegistry();
|
|
11
|
+
return this._instance;
|
|
12
|
+
}
|
|
13
|
+
getMap() {
|
|
14
|
+
return this.modelMap;
|
|
15
|
+
}
|
|
16
|
+
hasModel(type) {
|
|
17
|
+
return this.modelMap.has(type);
|
|
18
|
+
}
|
|
19
|
+
registerModel(type, modelClass) {
|
|
20
|
+
if (this.hasModel(type))
|
|
21
|
+
throw new Error(`Duplicate model for type ${type}`);
|
|
22
|
+
this.modelMap.set(type, modelClass);
|
|
23
|
+
}
|
|
24
|
+
getModel(type) {
|
|
25
|
+
return this.modelMap.get(type);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.ModelRegistry = ModelRegistry;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Class } from "../types/class";
|
|
2
|
+
import { Model, PropsOf } from "./model";
|
|
3
|
+
export declare class ValueObject<Props extends object> extends Model<Props> {
|
|
4
|
+
constructor(props: Props);
|
|
5
|
+
equals<V extends AnyValueObject>(vo: V): boolean;
|
|
6
|
+
with(props: Partial<Props>): this;
|
|
7
|
+
}
|
|
8
|
+
export type AnyValueObject = ValueObject<any>;
|
|
9
|
+
export type ValueObjectClass<T extends AnyValueObject = AnyValueObject> = Class<T>;
|
|
10
|
+
export type ValueObjectClassWithTypedConstructor<T extends AnyValueObject = AnyValueObject> = Class<T, ConstructorParameters<typeof ValueObject<PropsOf<T>>>>;
|
|
@@ -4,27 +4,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.ValueObject = void 0;
|
|
7
|
-
const value_object_1 = require("../metadata/value-object");
|
|
8
7
|
const lodash_1 = __importDefault(require("lodash"));
|
|
9
|
-
const
|
|
10
|
-
class ValueObject extends
|
|
8
|
+
const model_1 = require("./model");
|
|
9
|
+
class ValueObject extends model_1.Model {
|
|
11
10
|
constructor(props) {
|
|
12
11
|
super(props);
|
|
13
12
|
}
|
|
14
|
-
static valueObjectType() {
|
|
15
|
-
return (0, value_object_1.getValueObjectType)(this.prototype);
|
|
16
|
-
}
|
|
17
|
-
valueObjectType() {
|
|
18
|
-
const prototype = Object.getPrototypeOf(this);
|
|
19
|
-
return (0, value_object_1.getValueObjectType)(prototype);
|
|
20
|
-
}
|
|
21
13
|
equals(vo) {
|
|
22
14
|
const equalsType = vo instanceof this.constructor;
|
|
23
15
|
const equalsValue = JSON.stringify(vo) === JSON.stringify(this);
|
|
24
16
|
return equalsType && equalsValue;
|
|
25
17
|
}
|
|
26
18
|
with(props) {
|
|
27
|
-
const newProps = lodash_1.default.merge(this.
|
|
19
|
+
const newProps = lodash_1.default.merge(this.props(), props);
|
|
28
20
|
return new this.constructor(newProps);
|
|
29
21
|
}
|
|
30
22
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { AggregateClass,
|
|
2
|
-
import { AnyCommand } from "../
|
|
3
|
-
import { AnyEvent } from "../
|
|
4
|
-
|
|
5
|
-
export declare const
|
|
6
|
-
export declare const
|
|
7
|
-
export declare const ProcessCommand: <C extends AnyCommand>(commandClass: Class<C>) => <T extends AggregateCommandHandler<C>>(target: object, propertyKey: string, descriptor: TypedPropertyDescriptor<T>) => void;
|
|
1
|
+
import { AggregateClass, AggregateESClass, CommandHandler, EventApplier } from "../core/aggregate";
|
|
2
|
+
import { AnyCommand, CommandClass } from "../core/command";
|
|
3
|
+
import { AnyEvent, EventClass } from "../core/event";
|
|
4
|
+
export declare const aggregate: (name?: string) => <T extends AggregateClass | AggregateESClass>(target: T) => void;
|
|
5
|
+
export declare const applyEvent: <T extends AnyEvent>(eventClass: EventClass<T>) => <U extends EventApplier<T>>(target: object, propertyKey: string, descriptor: TypedPropertyDescriptor<U>) => void;
|
|
6
|
+
export declare const handleCommand: <T extends AnyCommand>(commandClass: CommandClass<T>) => <U extends CommandHandler<T>>(target: object, propertyKey: string, descriptor: TypedPropertyDescriptor<U>) => void;
|
|
@@ -1,32 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
(0, aggregate_1.defineAggregateType)(target.prototype, aggregateType);
|
|
11
|
-
aggregate_1.AggregateRegistry.register(aggregateType, target);
|
|
12
|
-
};
|
|
3
|
+
exports.handleCommand = exports.applyEvent = exports.aggregate = void 0;
|
|
4
|
+
const metadata_1 = require("../core/metadata");
|
|
5
|
+
const model_type_1 = require("../core/model-type");
|
|
6
|
+
const model_1 = require("./model");
|
|
7
|
+
const aggregate = (name) => (target) => {
|
|
8
|
+
const aggregateType = new model_type_1.AggregateType(name !== null && name !== void 0 ? name : target.name);
|
|
9
|
+
(0, model_1.model)(aggregateType.value)(target);
|
|
13
10
|
};
|
|
14
|
-
exports.
|
|
15
|
-
const
|
|
11
|
+
exports.aggregate = aggregate;
|
|
12
|
+
const applyEvent = (eventClass) => {
|
|
16
13
|
return (target, propertyKey, descriptor) => {
|
|
17
14
|
if (typeof descriptor.value === "function") {
|
|
18
|
-
const
|
|
19
|
-
(0,
|
|
15
|
+
const type = (0, metadata_1.getModelType)(eventClass.prototype);
|
|
16
|
+
(0, metadata_1.defineEventApplier)(target, type, descriptor.value);
|
|
20
17
|
}
|
|
21
18
|
};
|
|
22
19
|
};
|
|
23
|
-
exports.
|
|
24
|
-
const
|
|
20
|
+
exports.applyEvent = applyEvent;
|
|
21
|
+
const handleCommand = (commandClass) => {
|
|
25
22
|
return (target, propertyKey, descriptor) => {
|
|
26
23
|
if (typeof descriptor.value === "function") {
|
|
27
|
-
const
|
|
28
|
-
(0,
|
|
24
|
+
const type = (0, metadata_1.getModelType)(commandClass.prototype);
|
|
25
|
+
(0, metadata_1.defineCommandHandler)(target, type, descriptor.value);
|
|
29
26
|
}
|
|
30
27
|
};
|
|
31
28
|
};
|
|
32
|
-
exports.
|
|
29
|
+
exports.handleCommand = handleCommand;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const
|
|
1
|
+
import { CommandClass } from "../core/command";
|
|
2
|
+
export declare const command: (name?: string) => <T extends CommandClass>(target: T) => void;
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
commandType = commandType !== null && commandType !== void 0 ? commandType : target.name;
|
|
10
|
-
(0, command_1.defineCommandType)(target.prototype, commandType);
|
|
11
|
-
command_1.CommandRegistry.register(commandType, target);
|
|
12
|
-
};
|
|
3
|
+
exports.command = void 0;
|
|
4
|
+
const model_type_1 = require("../core/model-type");
|
|
5
|
+
const model_1 = require("./model");
|
|
6
|
+
const command = (name) => (target) => {
|
|
7
|
+
const commandType = new model_type_1.CommandType(name !== null && name !== void 0 ? name : target.name);
|
|
8
|
+
(0, model_1.model)(commandType.value)(target);
|
|
13
9
|
};
|
|
14
|
-
exports.
|
|
10
|
+
exports.command = command;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const
|
|
1
|
+
import { EntityClass } from "../core/entity";
|
|
2
|
+
export declare const entity: (name?: string) => <T extends EntityClass>(target: T) => void;
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
entity_1.EntityRegistry.register(entityType, target);
|
|
10
|
-
};
|
|
3
|
+
exports.entity = void 0;
|
|
4
|
+
const model_type_1 = require("../core/model-type");
|
|
5
|
+
const model_1 = require("./model");
|
|
6
|
+
const entity = (name) => (target) => {
|
|
7
|
+
const entityType = new model_type_1.EntityType(name !== null && name !== void 0 ? name : target.name);
|
|
8
|
+
(0, model_1.model)(entityType.value)(target);
|
|
11
9
|
};
|
|
12
|
-
exports.
|
|
10
|
+
exports.entity = entity;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const
|
|
1
|
+
import { EventClass } from "../core/event";
|
|
2
|
+
export declare const event: (name?: string) => <T extends EventClass>(target: T) => void;
|
package/dist/decorators/event.js
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
eventType = eventType !== null && eventType !== void 0 ? eventType : target.name;
|
|
10
|
-
(0, event_1.defineEventType)(target.prototype, eventType !== null && eventType !== void 0 ? eventType : target.name);
|
|
11
|
-
event_1.EventRegistry.register(eventType, target);
|
|
12
|
-
};
|
|
3
|
+
exports.event = void 0;
|
|
4
|
+
const model_type_1 = require("../core/model-type");
|
|
5
|
+
const model_1 = require("./model");
|
|
6
|
+
const event = (name) => (target) => {
|
|
7
|
+
const eventType = new model_type_1.EventType(name !== null && name !== void 0 ? name : target.name);
|
|
8
|
+
(0, model_1.model)(eventType.value)(target);
|
|
13
9
|
};
|
|
14
|
-
exports.
|
|
10
|
+
exports.event = event;
|
package/dist/decorators/index.js
CHANGED
|
@@ -15,8 +15,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./aggregate"), exports);
|
|
18
|
-
__exportStar(require("./message"), exports);
|
|
19
|
-
__exportStar(require("./entity"), exports);
|
|
20
18
|
__exportStar(require("./command"), exports);
|
|
19
|
+
__exportStar(require("./entity"), exports);
|
|
21
20
|
__exportStar(require("./event"), exports);
|
|
21
|
+
__exportStar(require("./model"), exports);
|
|
22
22
|
__exportStar(require("./value-object"), exports);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.model = void 0;
|
|
4
|
+
const metadata_1 = require("../core/metadata");
|
|
5
|
+
const registry_1 = require("../core/registry");
|
|
6
|
+
const model = (type) => {
|
|
7
|
+
return (target) => {
|
|
8
|
+
registry_1.ModelRegistry.instance().registerModel(type, target);
|
|
9
|
+
(0, metadata_1.defineModelType)(target.prototype, type);
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
exports.model = model;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const
|
|
1
|
+
import { ValueObjectClass } from "../core/value-object";
|
|
2
|
+
export declare const valueObject: (name?: string) => <T extends ValueObjectClass>(target: T) => void;
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
value_object_1.ValueObjectRegistry.register(valueObjectType, target);
|
|
10
|
-
};
|
|
3
|
+
exports.valueObject = void 0;
|
|
4
|
+
const model_type_1 = require("../core/model-type");
|
|
5
|
+
const model_1 = require("./model");
|
|
6
|
+
const valueObject = (name) => (target) => {
|
|
7
|
+
const valueObjectType = new model_type_1.ValueObjectType(name !== null && name !== void 0 ? name : target.name);
|
|
8
|
+
(0, model_1.model)(valueObjectType.value)(target);
|
|
11
9
|
};
|
|
12
|
-
exports.
|
|
10
|
+
exports.valueObject = valueObject;
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -14,8 +14,7 @@ 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("./
|
|
17
|
+
__exportStar(require("./core"), exports);
|
|
18
18
|
__exportStar(require("./decorators"), exports);
|
|
19
|
-
__exportStar(require("./metadata"), exports);
|
|
20
19
|
__exportStar(require("./types"), exports);
|
|
21
20
|
__exportStar(require("./utils"), exports);
|
package/dist/types/class.d.ts
CHANGED
|
@@ -2,8 +2,3 @@ export type Constructor<T, Arguments extends unknown[] = any[]> = new (...argume
|
|
|
2
2
|
export type Class<T, Arguments extends unknown[] = any[]> = Constructor<T, Arguments> & {
|
|
3
3
|
prototype: T;
|
|
4
4
|
};
|
|
5
|
-
export type AbstractConstructor<T, Arguments extends unknown[] = any[]> = abstract new (...arguments_: Arguments) => T;
|
|
6
|
-
export type AbstractClass<T, Arguments extends unknown[] = any[]> = AbstractConstructor<T, Arguments> & {
|
|
7
|
-
prototype: T;
|
|
8
|
-
};
|
|
9
|
-
export type AbstractableClass<T, Arguments extends unknown[] = any[]> = Class<T, Arguments> | AbstractClass<T, Arguments>;
|
package/dist/utils/index.d.ts
CHANGED
package/dist/utils/index.js
CHANGED
|
@@ -14,5 +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("./id"), exports);
|
|
18
17
|
__exportStar(require("./to-array"), exports);
|
package/package.json
CHANGED
package/tsconfig.json
CHANGED
|
@@ -30,9 +30,8 @@
|
|
|
30
30
|
// "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */
|
|
31
31
|
"baseUrl": "./" /* Specify the base directory to resolve non-relative module names. */,
|
|
32
32
|
"paths": {
|
|
33
|
-
"#
|
|
33
|
+
"#core/*": ["src/core/*"],
|
|
34
34
|
"#decorators/*": ["src/decorator/*"],
|
|
35
|
-
"#metadata/*": ["src/metadata/*"],
|
|
36
35
|
"#utils/*": ["src/utils/*"],
|
|
37
36
|
"#types/*": ["src/types/*"]
|
|
38
37
|
} /* Specify a set of entries that re-map imports to additional lookup locations. */,
|
package/dist/base/aggregate.d.ts
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { Class } from "../types/class";
|
|
2
|
-
import { ClassStatic } from "../types/class-static";
|
|
3
|
-
import { AnyCommand } from "./command";
|
|
4
|
-
import { Entity, IEntityMetadata } from "./entity";
|
|
5
|
-
import { AnyEvent, EventClass, NewEventMetadataOptions } from "./event";
|
|
6
|
-
import { Id } from "./id";
|
|
7
|
-
import { PropsOf } from "./props-envelope";
|
|
8
|
-
export interface IAggregateMetadata extends IEntityMetadata {
|
|
9
|
-
readonly aggregateType: string;
|
|
10
|
-
readonly version: number;
|
|
11
|
-
}
|
|
12
|
-
export type AggregateMetadataWithoutEntityType = Omit<IAggregateMetadata, "entityType">;
|
|
13
|
-
export type NewAggregateMetadata = Partial<Omit<IAggregateMetadata, "aggregateType">>;
|
|
14
|
-
export declare class Aggregate<P extends object> extends Entity<P> implements IAggregateMetadata {
|
|
15
|
-
private readonly _aggregateType;
|
|
16
|
-
protected readonly _version: number;
|
|
17
|
-
protected events: AnyEvent[];
|
|
18
|
-
constructor(metadata: AggregateMetadataWithoutEntityType, props?: P);
|
|
19
|
-
static aggregateType(): string;
|
|
20
|
-
static newAggregate<T extends AnyAggregate>(this: AggregateClass<T>, props?: PropsOf<T>, metadata?: NewAggregateMetadata): T;
|
|
21
|
-
get version(): number;
|
|
22
|
-
get aggregateType(): string;
|
|
23
|
-
getEvents(): AnyEvent[];
|
|
24
|
-
hasEvents(): boolean;
|
|
25
|
-
nextVersion(): number;
|
|
26
|
-
protected newEvent<E extends AnyEvent>(eventClass: EventClass<E>, props: PropsOf<E>, metadata?: NewEventMetadataOptions): E;
|
|
27
|
-
protected addEvent<E extends AnyEvent>(event: E): void;
|
|
28
|
-
protected addNewEvent<E extends AnyEvent>(eventClass: EventClass<E>, props: PropsOf<E>, metadata?: NewEventMetadataOptions): void;
|
|
29
|
-
}
|
|
30
|
-
export type SnapshotAggregateMetadata = AggregateMetadataWithoutEntityType;
|
|
31
|
-
export interface SnapshotWithProps<P extends object> {
|
|
32
|
-
metadata: SnapshotAggregateMetadata;
|
|
33
|
-
props: P;
|
|
34
|
-
}
|
|
35
|
-
export interface Snapshot<T extends AnyAggregateES> extends SnapshotWithProps<PropsOf<T>> {
|
|
36
|
-
}
|
|
37
|
-
export declare class AggregateES<P extends object> extends Aggregate<P> {
|
|
38
|
-
protected handledCommands: AnyCommand[];
|
|
39
|
-
protected pastEvents: AnyEvent[];
|
|
40
|
-
static stream<T extends AnyAggregateES>(this: AggregateESClass<T>, id: Id, events: AnyEvent[]): T;
|
|
41
|
-
static snapshot<T extends AnyAggregateES>(this: AggregateESClass<T>, snapshot: Snapshot<T>, eventsAfterSnapshot: AnyEvent[]): T;
|
|
42
|
-
getHandledCommands(): AnyCommand[];
|
|
43
|
-
getPastEvents(): AnyEvent[];
|
|
44
|
-
lastEvent(): AnyEvent | undefined;
|
|
45
|
-
currentVersion(): number;
|
|
46
|
-
nextVersion(): number;
|
|
47
|
-
private addPastEvent;
|
|
48
|
-
private validateEventBeforeApply;
|
|
49
|
-
getEventApplierSafe(eventType: string): AggregateEventApplier<AnyEvent> | null;
|
|
50
|
-
getEventApplier(eventType: string): AggregateEventApplier<AnyEvent>;
|
|
51
|
-
applyEvent<E extends AnyEvent>(event: E, fromHistory?: boolean): void;
|
|
52
|
-
applyEvents(events: AnyEvent[], fromHistory?: boolean): void;
|
|
53
|
-
getCommandHandlerSafe(commandType: string): AggregateCommandHandler<AnyCommand> | null;
|
|
54
|
-
getCommandHandler(commandType: string): AggregateCommandHandler<AnyCommand>;
|
|
55
|
-
private validateCommandBeforeProcess;
|
|
56
|
-
processCommand<C extends AnyCommand>(command: C): AnyEvent[];
|
|
57
|
-
snap(): SnapshotWithProps<P>;
|
|
58
|
-
}
|
|
59
|
-
export type AnyAggregate = Aggregate<any>;
|
|
60
|
-
export type AnyAggregateES = AggregateES<any>;
|
|
61
|
-
export type AggregateEventApplier<E extends AnyEvent> = (event: E) => void;
|
|
62
|
-
export type AggregateCommandHandler<C extends AnyCommand, E extends AnyEvent = AnyEvent> = (command: C) => E | E[];
|
|
63
|
-
export type AggregateConstructorParamsWithProps<P extends object> = ConstructorParameters<typeof Aggregate<P>>;
|
|
64
|
-
export type AggregateClassWithProps<P extends object> = Class<Aggregate<P>, AggregateConstructorParamsWithProps<P>> & ClassStatic<typeof Aggregate<P>>;
|
|
65
|
-
export type AggregateESClassWithProps<P extends object> = Class<AggregateES<P>, AggregateConstructorParamsWithProps<P>> & ClassStatic<typeof AggregateES<P>>;
|
|
66
|
-
export type AggregateConstructorParams<T extends AnyAggregate> = AggregateConstructorParamsWithProps<PropsOf<T>>;
|
|
67
|
-
export type AggregateClass<T extends AnyAggregate> = Class<T, AggregateConstructorParams<T>> & ClassStatic<typeof Aggregate<PropsOf<T>>>;
|
|
68
|
-
export type AggregateESClass<T extends AnyAggregateES> = Class<T, AggregateConstructorParams<T>> & ClassStatic<typeof AggregateES<PropsOf<T>>>;
|
|
69
|
-
export type InferAggregateClass<T extends AnyAggregate> = T extends AnyAggregateES ? AggregateESClass<T> : AggregateClass<T>;
|
|
70
|
-
export type AnyAggregateClass = Class<AnyAggregate>;
|