ddd-node 30.1.1 → 31.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.
- package/base/decorators/model.d.ts +5 -5
- package/base/decorators/mutable.d.ts +2 -2
- package/base/decorators/prop.d.ts +2 -2
- package/base/decorators/props-validator.d.ts +2 -2
- package/base/decorators/static.d.ts +2 -2
- package/base/domain.d.ts +1 -0
- package/base/domain.js +3 -0
- package/base/meta/model-domain.d.ts +4 -3
- package/base/meta/model-id.d.ts +3 -3
- package/base/meta/model-mutable.d.ts +1 -0
- package/base/meta/model-mutable.js +1 -0
- package/base/meta/model-name.d.ts +3 -3
- package/base/meta/model-props-map.d.ts +5 -5
- package/base/meta/model-props-map.js +1 -1
- package/base/meta/model-props-validator.d.ts +4 -4
- package/base/meta/model-static-values.d.ts +8 -8
- package/base/meta/model-version.d.ts +3 -3
- package/base/model/index.d.ts +0 -1
- package/base/model/index.js +0 -1
- package/base/model/model-descriptor.d.ts +15 -12
- package/base/model/model-descriptor.js +39 -0
- package/base/model/model.d.ts +10 -20
- package/base/model/model.js +23 -52
- package/base/model-registry.d.ts +14 -10
- package/base/model-registry.js +42 -27
- package/core/decorators/enum/index.d.ts +1 -0
- package/core/decorators/enum/index.js +17 -0
- package/core/decorators/enum/is-enum.d.ts +2 -0
- package/{decorators/enum.js → core/decorators/enum/is-enum.js} +4 -4
- package/core/decorators/es-aggregate/handle.d.ts +2 -0
- package/core/decorators/es-aggregate/when.d.ts +2 -0
- package/{decorators → core/decorators}/index.d.ts +1 -1
- package/{decorators → core/decorators}/index.js +1 -1
- package/core/decorators/message/index.d.ts +2 -0
- package/core/decorators/message/index.js +18 -0
- package/core/decorators/message/is-command.d.ts +4 -0
- package/{decorators/message/command.js → core/decorators/message/is-command.js} +5 -5
- package/core/decorators/message/is-event.d.ts +4 -0
- package/{decorators/message/event.js → core/decorators/message/is-event.js} +5 -5
- package/core/index.d.ts +3 -6
- package/core/index.js +3 -6
- package/{meta → core/meta}/command.metadata.js +2 -2
- package/{meta/aggregate-es → core/meta/es-aggregate}/command-handler-map.d.ts +1 -1
- package/{meta/aggregate-es → core/meta/es-aggregate}/event-applier-map.d.ts +1 -1
- package/{meta → core/meta}/event.metadata.js +1 -1
- package/{meta → core/meta}/index.d.ts +1 -1
- package/{meta → core/meta}/index.js +1 -1
- package/core/{aggregate/aggregate-base → model/aggregate}/aggregate.d.ts +7 -6
- package/core/{aggregate/aggregate-base → model/aggregate}/aggregate.js +12 -12
- package/core/model/aggregate/es-aggregate.d.ts +50 -0
- package/core/{aggregate/event-sourced-aggregate/event-sourced-aggregate.js → model/aggregate/es-aggregate.js} +40 -33
- package/core/model/aggregate/index.d.ts +4 -0
- package/core/{aggregate → model/aggregate}/index.js +2 -2
- package/core/{aggregate/state-aggregate → model/aggregate}/state-aggregate.d.ts +10 -9
- package/core/{aggregate/state-aggregate → model/aggregate}/state-aggregate.js +9 -7
- package/core/model/aggregate/types.d.ts +7 -0
- package/core/model/entity/entity.d.ts +18 -0
- package/core/{entity → model/entity}/entity.js +12 -9
- package/core/model/entity/index.d.ts +1 -0
- package/core/{entity → model/entity}/index.js +0 -1
- package/core/{enum → model/enum}/enum.d.ts +7 -10
- package/core/{enum → model/enum}/enum.js +24 -16
- package/core/model/enum/index.d.ts +1 -0
- package/core/{enum → model/enum}/index.js +0 -1
- package/core/model/index.d.ts +6 -0
- package/core/{aggregate/aggregate-base → model}/index.js +5 -2
- package/core/model/message/command.d.ts +20 -0
- package/core/model/message/command.js +27 -0
- package/core/model/message/event.d.ts +32 -0
- package/core/model/message/event.js +31 -0
- package/{decorators → core/model}/message/index.d.ts +2 -1
- package/{decorators → core/model}/message/index.js +2 -1
- package/core/model/message/message.d.ts +37 -0
- package/core/{message/message-base → model/message}/message.js +13 -6
- package/core/{model-with-id → model/model-with-id}/index.d.ts +0 -1
- package/core/{model-with-id → model/model-with-id}/index.js +0 -1
- package/core/{model-with-id → model/model-with-id}/model-with-id.d.ts +2 -2
- package/core/{model-with-id → model/model-with-id}/model-with-id.js +2 -2
- package/core/model/value-object/index.d.ts +1 -0
- package/core/{value-object → model/value-object}/index.js +0 -1
- package/core/{value-object → model/value-object}/value-object.d.ts +5 -4
- package/core/{value-object → model/value-object}/value-object.js +7 -3
- package/core/repository/repository.d.ts +1 -2
- package/event-pubsub/decorators/subscribe-to-events.d.ts +1 -1
- package/event-pubsub/event-dispatcher.d.ts +7 -0
- package/event-pubsub/{event-publisher.js → event-dispatcher.js} +4 -4
- package/event-pubsub/event-subscriber.d.ts +1 -1
- package/event-pubsub/index.d.ts +1 -1
- package/event-pubsub/index.js +1 -1
- package/event-pubsub/interfaces/event-dispatcher.interface.d.ts +4 -0
- package/event-pubsub/interfaces/index.d.ts +1 -1
- package/event-pubsub/interfaces/index.js +1 -1
- package/index.d.ts +1 -3
- package/index.js +1 -3
- package/package.json +1 -1
- package/base/model/model.builder.d.ts +0 -11
- package/base/model/model.builder.js +0 -18
- package/core/aggregate/aggregate-base/aggregate-event-publisher.interface.d.ts +0 -4
- package/core/aggregate/aggregate-base/aggregate.builder.d.ts +0 -6
- package/core/aggregate/aggregate-base/aggregate.builder.js +0 -15
- package/core/aggregate/aggregate-base/index.d.ts +0 -3
- package/core/aggregate/event-sourced-aggregate/event-sourced-aggregate-model-descriptor.d.ts +0 -9
- package/core/aggregate/event-sourced-aggregate/event-sourced-aggregate-model-descriptor.js +0 -2
- package/core/aggregate/event-sourced-aggregate/event-sourced-aggregate.builder.d.ts +0 -13
- package/core/aggregate/event-sourced-aggregate/event-sourced-aggregate.builder.js +0 -33
- package/core/aggregate/event-sourced-aggregate/event-sourced-aggregate.d.ts +0 -49
- package/core/aggregate/event-sourced-aggregate/index.d.ts +0 -2
- package/core/aggregate/event-sourced-aggregate/index.js +0 -18
- package/core/aggregate/event-sourced-aggregate/snapshot.d.ts +0 -8
- package/core/aggregate/event-sourced-aggregate/snapshot.js +0 -2
- package/core/aggregate/index.d.ts +0 -4
- package/core/aggregate/state-aggregate/index.d.ts +0 -2
- package/core/aggregate/state-aggregate/index.js +0 -18
- package/core/aggregate/state-aggregate/state-aggregate.builder.d.ts +0 -7
- package/core/aggregate/state-aggregate/state-aggregate.builder.js +0 -19
- package/core/aggregate/types.d.ts +0 -4
- package/core/entity/entity.builder.d.ts +0 -7
- package/core/entity/entity.builder.js +0 -16
- package/core/entity/entity.d.ts +0 -18
- package/core/entity/index.d.ts +0 -2
- package/core/enum/enum-builder.d.ts +0 -9
- package/core/enum/enum-builder.js +0 -32
- package/core/enum/index.d.ts +0 -2
- package/core/message/command/command-model-descriptor.d.ts +0 -6
- package/core/message/command/command-model-descriptor.js +0 -2
- package/core/message/command/command.builder.d.ts +0 -7
- package/core/message/command/command.builder.js +0 -21
- package/core/message/command/command.d.ts +0 -24
- package/core/message/command/command.js +0 -29
- package/core/message/command/index.d.ts +0 -3
- package/core/message/command/index.js +0 -19
- package/core/message/event/event-model-descriptor.d.ts +0 -6
- package/core/message/event/event-model-descriptor.js +0 -2
- package/core/message/event/event.builder.d.ts +0 -9
- package/core/message/event/event.builder.js +0 -28
- package/core/message/event/event.d.ts +0 -35
- package/core/message/event/event.js +0 -33
- package/core/message/event/index.d.ts +0 -3
- package/core/message/event/index.js +0 -19
- package/core/message/index.d.ts +0 -3
- package/core/message/index.js +0 -19
- package/core/message/message-base/index.d.ts +0 -2
- package/core/message/message-base/index.js +0 -18
- package/core/message/message-base/message.builder.d.ts +0 -16
- package/core/message/message-base/message.builder.js +0 -44
- package/core/message/message-base/message.d.ts +0 -31
- package/core/model-with-id/model-with-id.builder.d.ts +0 -9
- package/core/model-with-id/model-with-id.builder.js +0 -22
- package/core/value-object/index.d.ts +0 -2
- package/core/value-object/value-object.builder.d.ts +0 -7
- package/core/value-object/value-object.builder.js +0 -16
- package/decorators/aggregate-es/handle.d.ts +0 -2
- package/decorators/aggregate-es/when.d.ts +0 -2
- package/decorators/enum.d.ts +0 -2
- package/decorators/message/command.d.ts +0 -4
- package/decorators/message/event.d.ts +0 -4
- package/event-pubsub/event-publisher.d.ts +0 -7
- package/event-pubsub/interfaces/event-publisher.interface.d.ts +0 -4
- package/event-pubsub/interfaces/event-publisher.interface.js +0 -2
- /package/{decorators/aggregate-es → core/decorators/es-aggregate}/handle.js +0 -0
- /package/{decorators/aggregate-es → core/decorators/es-aggregate}/index.d.ts +0 -0
- /package/{decorators/aggregate-es → core/decorators/es-aggregate}/index.js +0 -0
- /package/{decorators/aggregate-es → core/decorators/es-aggregate}/when.js +0 -0
- /package/{decorators → core/decorators}/type.d.ts +0 -0
- /package/{decorators → core/decorators}/type.js +0 -0
- /package/{meta → core/meta}/command.metadata.d.ts +0 -0
- /package/{meta/aggregate-es → core/meta/es-aggregate}/command-handler-map.js +0 -0
- /package/{meta/aggregate-es → core/meta/es-aggregate}/event-applier-map.js +0 -0
- /package/{meta/aggregate-es → core/meta/es-aggregate}/index.d.ts +0 -0
- /package/{meta/aggregate-es → core/meta/es-aggregate}/index.js +0 -0
- /package/{meta → core/meta}/event.metadata.d.ts +0 -0
- /package/core/{aggregate → model/aggregate}/types.js +0 -0
- /package/core/{model-with-id → model/model-with-id}/id.d.ts +0 -0
- /package/core/{model-with-id → model/model-with-id}/id.js +0 -0
- /package/{core/aggregate/aggregate-base/aggregate-event-publisher.interface.js → event-pubsub/interfaces/event-dispatcher.interface.js} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ModelPropsValidator } from "../meta";
|
|
2
|
-
import {
|
|
3
|
-
export type ModelOptions<T extends
|
|
2
|
+
import { AnyDomainModel, DomainModelClass } from "../model";
|
|
3
|
+
export type ModelOptions<T extends AnyDomainModel = AnyDomainModel> = {
|
|
4
4
|
name?: string;
|
|
5
5
|
version?: number;
|
|
6
6
|
domain?: string;
|
|
@@ -8,6 +8,6 @@ export type ModelOptions<T extends AnyModel = AnyModel> = {
|
|
|
8
8
|
autoRegisterModel?: boolean;
|
|
9
9
|
};
|
|
10
10
|
export declare const DEFAULT_MODEL_OPTIONS: ModelOptions;
|
|
11
|
-
export declare function Model<T extends
|
|
12
|
-
export declare function Model<T extends
|
|
13
|
-
export declare function Model<T extends
|
|
11
|
+
export declare function Model<T extends DomainModelClass, I extends InstanceType<T> = InstanceType<T>>(options?: ModelOptions<I>): any;
|
|
12
|
+
export declare function Model<T extends DomainModelClass, I extends InstanceType<T> = InstanceType<T>>(name: string, options?: ModelOptions<I>): any;
|
|
13
|
+
export declare function Model<T extends DomainModelClass, I extends InstanceType<T> = InstanceType<T>>(name: string, version: number, options?: ModelOptions<I>): any;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const Mutable: (mutable?: boolean) => <T extends
|
|
1
|
+
import { AbstractDomainModelClass, DomainModelClass } from "../model";
|
|
2
|
+
export declare const Mutable: (mutable?: boolean) => <T extends DomainModelClass | AbstractDomainModelClass>(target: T) => void;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const Prop: <T extends
|
|
1
|
+
import { AnyDomainModel, InferredProps } from "../model";
|
|
2
|
+
export declare const Prop: <T extends AnyDomainModel>(propTargetKey?: keyof InferredProps<T> | undefined) => (target: T, key: PropertyKey) => void;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const PropsValidator: <T extends
|
|
1
|
+
import { AnyDomainModel, DomainModelClass, ModelPropsValidator } from "..";
|
|
2
|
+
export declare const PropsValidator: <T extends AnyDomainModel>(target: DomainModelClass<T>, key: string, propertyDescriptor: TypedPropertyDescriptor<ModelPropsValidator<T>>) => void;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DomainModelClass } from "../model";
|
|
2
2
|
import { ModelStaticValueBuilder } from "../meta";
|
|
3
|
-
export declare const Static: <T extends
|
|
3
|
+
export declare const Static: <T extends DomainModelClass, I extends InstanceType<T> = InstanceType<T>>(builder: ModelStaticValueBuilder<I>) => (target: T, key: PropertyKey) => void;
|
package/base/domain.d.ts
CHANGED
package/base/domain.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DomainName } from "../domain";
|
|
2
|
+
import { AnyDomainModel, DomainModelClass } from "../model";
|
|
2
3
|
export declare const ModelDomainMetaKey: unique symbol;
|
|
3
|
-
export declare const defineModelDomain: <T extends
|
|
4
|
-
export declare const getModelDomain: <T extends
|
|
4
|
+
export declare const defineModelDomain: <T extends AnyDomainModel>(target: DomainModelClass<T>, domainName: DomainName) => void;
|
|
5
|
+
export declare const getModelDomain: <T extends AnyDomainModel>(target: DomainModelClass<T>) => string;
|
package/base/meta/model-id.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AnyDomainModel, DomainModelClass } from "../model";
|
|
2
2
|
import { ModelName } from "./model-name";
|
|
3
3
|
import { ModelVersion } from "./model-version";
|
|
4
4
|
export type ModelId = string;
|
|
@@ -12,5 +12,5 @@ export declare class $ModelId extends String {
|
|
|
12
12
|
static makeValue(modelName: ModelName, modelVersion: ModelVersion): ModelId;
|
|
13
13
|
constructor(modelName: ModelName, modelVersion: ModelVersion);
|
|
14
14
|
}
|
|
15
|
-
export declare const setModelId: <T extends
|
|
16
|
-
export declare const getModelId: <T extends
|
|
15
|
+
export declare const setModelId: <T extends AnyDomainModel>(target: DomainModelClass<T>, modelId: $ModelId) => void;
|
|
16
|
+
export declare const getModelId: <T extends AnyDomainModel>(target: DomainModelClass<T>) => ModelId;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getModelMutable = exports.defineModelMutable = void 0;
|
|
4
|
+
require("reflect-metadata");
|
|
4
5
|
const ModelMutableMetaKey = Symbol.for("MODEL_MUTABLE");
|
|
5
6
|
const defineModelMutable = (target, mutable) => {
|
|
6
7
|
if (Reflect.hasMetadata(ModelMutableMetaKey, target))
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AnyDomainModel, DomainModelClass } from "../model";
|
|
2
2
|
export type ModelName = string;
|
|
3
3
|
export declare class $ModelName extends String {
|
|
4
4
|
static validate(modelName: ModelName): void;
|
|
5
5
|
constructor(modelName: ModelName);
|
|
6
6
|
}
|
|
7
|
-
export declare const defineModelName: <T extends
|
|
8
|
-
export declare const getModelName: <T extends
|
|
7
|
+
export declare const defineModelName: <T extends AnyDomainModel>(target: DomainModelClass<T>, modelName: ModelName) => void;
|
|
8
|
+
export declare const getModelName: <T extends AnyDomainModel>(target: DomainModelClass<T>) => ModelName;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare class ModelPropsMap<T extends
|
|
1
|
+
import { AnyDomainModel, InferredProps } from "../model";
|
|
2
|
+
export declare class ModelPropsMap<T extends AnyDomainModel = AnyDomainModel> extends Map<PropertyKey, keyof InferredProps<T>> {
|
|
3
3
|
}
|
|
4
|
-
export declare const getOwnModelPropsMap: <T extends
|
|
5
|
-
export declare const defineModelProp: <T extends
|
|
6
|
-
export declare const getModelPropsMap: <T extends
|
|
4
|
+
export declare const getOwnModelPropsMap: <T extends AnyDomainModel = AnyDomainModel>(target: object) => ModelPropsMap<T>;
|
|
5
|
+
export declare const defineModelProp: <T extends AnyDomainModel = AnyDomainModel>(target: object, key: PropertyKey, propTargetKey?: keyof InferredProps<T> | undefined) => void;
|
|
6
|
+
export declare const getModelPropsMap: <T extends AnyDomainModel = AnyDomainModel>(target: object) => ModelPropsMap<T>;
|
|
@@ -27,7 +27,7 @@ const getModelPropsMap = (target) => {
|
|
|
27
27
|
const result = new ModelPropsMap();
|
|
28
28
|
const ownPropsMapList = [];
|
|
29
29
|
do {
|
|
30
|
-
if (model_1.
|
|
30
|
+
if (model_1.DomainModel.isDomainModel(_target)) {
|
|
31
31
|
const ownModelPropsMap = (0, exports.getOwnModelPropsMap)(_target);
|
|
32
32
|
ownPropsMapList.unshift(ownModelPropsMap);
|
|
33
33
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export type ModelPropsValidator<T extends
|
|
3
|
-
export declare const defineModelPropsValidator: <T extends
|
|
4
|
-
export declare const getOwnModelPropsValidator: <T extends
|
|
1
|
+
import { AnyDomainModel, InferredProps } from "../model";
|
|
2
|
+
export type ModelPropsValidator<T extends AnyDomainModel = AnyDomainModel> = (props: InferredProps<T>) => void;
|
|
3
|
+
export declare const defineModelPropsValidator: <T extends AnyDomainModel>(target: object, validator: ModelPropsValidator<T>) => void;
|
|
4
|
+
export declare const getOwnModelPropsValidator: <T extends AnyDomainModel>(target: object) => ModelPropsValidator<T> | undefined;
|
|
5
5
|
export declare const ModelPropsValidatorsMetaKey: unique symbol;
|
|
6
6
|
export declare const getModelPropsValidators: (target: object) => ModelPropsValidator[];
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export type ModelStaticValueBuilder<T extends
|
|
3
|
-
export declare class ModelStaticValue<T extends
|
|
1
|
+
import { AnyDomainModel, DomainModelClass } from "../model";
|
|
2
|
+
export type ModelStaticValueBuilder<T extends AnyDomainModel = AnyDomainModel> = () => T;
|
|
3
|
+
export declare class ModelStaticValue<T extends AnyDomainModel = AnyDomainModel> {
|
|
4
4
|
private _value;
|
|
5
5
|
constructor(value: T | ModelStaticValueBuilder<T>);
|
|
6
6
|
get value(): T;
|
|
7
7
|
}
|
|
8
|
-
export declare class ModelStaticValuesMap<T extends
|
|
8
|
+
export declare class ModelStaticValuesMap<T extends AnyDomainModel = AnyDomainModel> extends Map<PropertyKey, ModelStaticValue<T>> {
|
|
9
9
|
}
|
|
10
|
-
export declare const getOwnModelStaticValues: <T extends
|
|
11
|
-
export declare const setModelStaticValue: <T extends
|
|
12
|
-
export declare const getModelStaticValue: (target: object, key: PropertyKey) =>
|
|
13
|
-
export declare const defineModelStaticValueProperty: (target:
|
|
10
|
+
export declare const getOwnModelStaticValues: <T extends AnyDomainModel>(target: object) => ModelStaticValuesMap<T>;
|
|
11
|
+
export declare const setModelStaticValue: <T extends AnyDomainModel>(target: object, key: PropertyKey, value: T | ModelStaticValueBuilder<T>) => void;
|
|
12
|
+
export declare const getModelStaticValue: (target: object, key: PropertyKey) => AnyDomainModel | undefined;
|
|
13
|
+
export declare const defineModelStaticValueProperty: (target: DomainModelClass, key: PropertyKey) => void;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AnyDomainModel, DomainModelClass } from "../model";
|
|
2
2
|
export type ModelVersion = number;
|
|
3
3
|
export declare class $ModelVersion extends Number {
|
|
4
4
|
static validate(modelVersion: ModelVersion): void;
|
|
5
5
|
constructor(modelVersion: ModelVersion);
|
|
6
6
|
}
|
|
7
|
-
export declare const defineModelVersion: <T extends
|
|
8
|
-
export declare const getModelVersion: <T extends
|
|
7
|
+
export declare const defineModelVersion: <T extends AnyDomainModel>(target: DomainModelClass<T>, modelVersion: ModelVersion) => void;
|
|
8
|
+
export declare const getModelVersion: <T extends AnyDomainModel>(target: DomainModelClass<T>) => ModelVersion;
|
package/base/model/index.d.ts
CHANGED
package/base/model/index.js
CHANGED
|
@@ -16,4 +16,3 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./model"), exports);
|
|
18
18
|
__exportStar(require("./model-descriptor"), exports);
|
|
19
|
-
__exportStar(require("./model.builder"), exports);
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ModelId, ModelName,
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
modelMutable: boolean;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { AnyDomainModel, DomainModelClass } from ".";
|
|
2
|
+
import { ModelId, ModelName, ModelPropsMap, ModelPropsValidator, ModelStaticValuesMap, ModelVersion } from "../meta";
|
|
3
|
+
export declare class ModelDescriptor<T extends AnyDomainModel = AnyDomainModel> {
|
|
4
|
+
readonly modelClass: DomainModelClass<T>;
|
|
5
|
+
constructor(modelClass: DomainModelClass<T>);
|
|
6
|
+
modelDomain(): string;
|
|
7
|
+
modelMutable(): boolean;
|
|
8
|
+
modelName(): ModelName;
|
|
9
|
+
modelVersion(): ModelVersion;
|
|
10
|
+
modelId(): ModelId;
|
|
11
|
+
ownModelPropsValidator(): ModelPropsValidator<T> | undefined;
|
|
12
|
+
modelPropsValidators(): ModelPropsValidator[];
|
|
13
|
+
ownModelStaticValues(): ModelStaticValuesMap<T>;
|
|
14
|
+
ownModelPropsMap(): ModelPropsMap<T>;
|
|
15
|
+
modelPropsMap(): ModelPropsMap<T>;
|
|
13
16
|
}
|
|
@@ -1,2 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModelDescriptor = void 0;
|
|
4
|
+
const meta_1 = require("../meta");
|
|
5
|
+
class ModelDescriptor {
|
|
6
|
+
constructor(modelClass) {
|
|
7
|
+
this.modelClass = modelClass;
|
|
8
|
+
}
|
|
9
|
+
modelDomain() {
|
|
10
|
+
return (0, meta_1.getModelDomain)(this.modelClass);
|
|
11
|
+
}
|
|
12
|
+
modelMutable() {
|
|
13
|
+
var _a;
|
|
14
|
+
return (_a = (0, meta_1.getModelMutable)(this.modelClass)) !== null && _a !== void 0 ? _a : false;
|
|
15
|
+
}
|
|
16
|
+
modelName() {
|
|
17
|
+
return (0, meta_1.getModelName)(this.modelClass);
|
|
18
|
+
}
|
|
19
|
+
modelVersion() {
|
|
20
|
+
return (0, meta_1.getModelVersion)(this.modelClass);
|
|
21
|
+
}
|
|
22
|
+
modelId() {
|
|
23
|
+
return (0, meta_1.getModelId)(this.modelClass);
|
|
24
|
+
}
|
|
25
|
+
ownModelPropsValidator() {
|
|
26
|
+
return (0, meta_1.getOwnModelPropsValidator)(this.modelClass);
|
|
27
|
+
}
|
|
28
|
+
modelPropsValidators() {
|
|
29
|
+
return (0, meta_1.getModelPropsValidators)(this.modelClass);
|
|
30
|
+
}
|
|
31
|
+
ownModelStaticValues() {
|
|
32
|
+
return (0, meta_1.getOwnModelStaticValues)(this.modelClass);
|
|
33
|
+
}
|
|
34
|
+
ownModelPropsMap() {
|
|
35
|
+
return (0, meta_1.getOwnModelPropsMap)(this.modelClass.prototype);
|
|
36
|
+
}
|
|
37
|
+
modelPropsMap() {
|
|
38
|
+
return (0, meta_1.getModelPropsMap)(this.modelClass.prototype);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.ModelDescriptor = ModelDescriptor;
|
package/base/model/model.d.ts
CHANGED
|
@@ -1,40 +1,30 @@
|
|
|
1
1
|
import { AbstractClass, Class } from "type-fest";
|
|
2
2
|
import { ClassStatic } from "../../types";
|
|
3
|
-
import { ModelId, ModelName, ModelPropsMap, ModelPropsValidator, ModelStaticValuesMap, ModelVersion } from "../meta";
|
|
4
3
|
import { ModelDescriptor } from "./model-descriptor";
|
|
5
4
|
export interface Props {
|
|
6
5
|
[key: PropertyKey]: any;
|
|
7
6
|
}
|
|
7
|
+
export type PropsBuilder<T extends AnyDomainModel> = () => InferredProps<T>;
|
|
8
8
|
export type EmptyProps = {
|
|
9
9
|
[key: PropertyKey]: never;
|
|
10
10
|
};
|
|
11
|
-
export declare class
|
|
11
|
+
export declare class DomainModel<P extends Props> {
|
|
12
12
|
static readonly EMPTY_PROPS: EmptyProps;
|
|
13
|
+
static modelDescriptor<T extends AnyDomainModel>(this: DomainModelClass<T>): ModelDescriptor<T>;
|
|
14
|
+
static isDomainModel(model: any): model is AnyDomainModel;
|
|
13
15
|
protected _props: P;
|
|
14
|
-
static isModel(model: any): model is AnyModel;
|
|
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 ownModelPropsValidator<T extends AnyModel>(this: ModelClass<T>): ModelPropsValidator<T> | undefined;
|
|
20
|
-
static modelPropsValidators<T extends AnyModel>(this: ModelClass<T>): ModelPropsValidator[];
|
|
21
|
-
static ownModelStaticValues<T extends AnyModel>(this: ModelClass<T>): ModelStaticValuesMap<T>;
|
|
22
|
-
static ownModelPropsMap<T extends AnyModel>(this: ModelClass<T>): ModelPropsMap<T>;
|
|
23
|
-
static modelPropsMap<T extends AnyModel>(this: ModelClass<T>): ModelPropsMap<T>;
|
|
24
16
|
constructor();
|
|
25
17
|
redefineModel(): void;
|
|
26
18
|
protected redefineProp<K extends keyof P>(key: keyof this, propTargetKey: K): void;
|
|
27
|
-
modelDescriptor(): ModelDescriptor<
|
|
19
|
+
modelDescriptor(): ModelDescriptor<AnyDomainModel>;
|
|
28
20
|
validateProps(props: P): void;
|
|
29
21
|
validate(): void;
|
|
30
22
|
propsIsEmpty(): boolean;
|
|
31
23
|
props(): P | null;
|
|
32
24
|
metadata(): any;
|
|
33
|
-
protected initializeProps(
|
|
34
|
-
}
|
|
35
|
-
export type AnyModel = ModelBase<Props>;
|
|
36
|
-
export type InferredProps<T extends AnyModel> = T extends ModelBase<infer P> ? P : never;
|
|
37
|
-
export interface ModelClass<T extends AnyModel = AnyModel> extends Class<T>, ClassStatic<typeof ModelBase<InferredProps<T>>> {
|
|
38
|
-
}
|
|
39
|
-
export interface AbstractModelClass<T extends AnyModel = AnyModel> extends AbstractClass<T>, ClassStatic<typeof ModelBase<InferredProps<T>>> {
|
|
25
|
+
protected initializeProps(propsOrBuilder: P | PropsBuilder<typeof this>): void;
|
|
40
26
|
}
|
|
27
|
+
export type AnyDomainModel = DomainModel<Props>;
|
|
28
|
+
export type InferredProps<T extends AnyDomainModel> = T extends DomainModel<infer P> ? P : never;
|
|
29
|
+
export type DomainModelClass<T extends AnyDomainModel = AnyDomainModel> = Class<T> & ClassStatic<typeof DomainModel<InferredProps<T>>>;
|
|
30
|
+
export type AbstractDomainModelClass<T extends AnyDomainModel = AnyDomainModel> = AbstractClass<T> & ClassStatic<typeof DomainModel<InferredProps<T>>>;
|
package/base/model/model.js
CHANGED
|
@@ -3,48 +3,25 @@ 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.DomainModel = void 0;
|
|
7
7
|
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
-
const meta_1 = require("../meta");
|
|
9
8
|
const errors_1 = require("./errors");
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
const model_descriptor_1 = require("./model-descriptor");
|
|
10
|
+
class DomainModel {
|
|
11
|
+
static modelDescriptor() {
|
|
12
|
+
return new model_descriptor_1.ModelDescriptor(this);
|
|
13
13
|
}
|
|
14
|
-
static
|
|
15
|
-
|
|
16
|
-
return (_a = (0, meta_1.getModelMutable)(this)) !== null && _a !== void 0 ? _a : false;
|
|
17
|
-
}
|
|
18
|
-
static modelName() {
|
|
19
|
-
return (0, meta_1.getModelName)(this);
|
|
20
|
-
}
|
|
21
|
-
static modelVersion() {
|
|
22
|
-
return (0, meta_1.getModelVersion)(this);
|
|
23
|
-
}
|
|
24
|
-
static modelId() {
|
|
25
|
-
return (0, meta_1.getModelId)(this);
|
|
26
|
-
}
|
|
27
|
-
static ownModelPropsValidator() {
|
|
28
|
-
return (0, meta_1.getOwnModelPropsValidator)(this);
|
|
29
|
-
}
|
|
30
|
-
static modelPropsValidators() {
|
|
31
|
-
return (0, meta_1.getModelPropsValidators)(this);
|
|
32
|
-
}
|
|
33
|
-
static ownModelStaticValues() {
|
|
34
|
-
return (0, meta_1.getOwnModelStaticValues)(this);
|
|
35
|
-
}
|
|
36
|
-
static ownModelPropsMap() {
|
|
37
|
-
return (0, meta_1.getOwnModelPropsMap)(this.prototype);
|
|
38
|
-
}
|
|
39
|
-
static modelPropsMap() {
|
|
40
|
-
return (0, meta_1.getModelPropsMap)(this.prototype);
|
|
14
|
+
static isDomainModel(model) {
|
|
15
|
+
return model instanceof DomainModel;
|
|
41
16
|
}
|
|
42
17
|
constructor() {
|
|
43
|
-
this._props =
|
|
18
|
+
this._props = DomainModel.EMPTY_PROPS;
|
|
44
19
|
this.redefineModel();
|
|
45
20
|
}
|
|
46
21
|
redefineModel() {
|
|
47
|
-
this.modelDescriptor()
|
|
22
|
+
this.modelDescriptor()
|
|
23
|
+
.modelPropsMap()
|
|
24
|
+
.forEach((propTargetKey, key) => {
|
|
48
25
|
this.redefineProp(key, propTargetKey);
|
|
49
26
|
});
|
|
50
27
|
}
|
|
@@ -60,34 +37,23 @@ class ModelBase {
|
|
|
60
37
|
});
|
|
61
38
|
}
|
|
62
39
|
modelDescriptor() {
|
|
63
|
-
|
|
64
|
-
return {
|
|
65
|
-
modelMutable: modelClass.modelMutable(),
|
|
66
|
-
modelId: modelClass.modelId(),
|
|
67
|
-
modelName: modelClass.modelName(),
|
|
68
|
-
modelVersion: modelClass.modelVersion(),
|
|
69
|
-
ownModelPropsValidator: modelClass.ownModelPropsValidator(),
|
|
70
|
-
modelPropsValidators: modelClass.modelPropsValidators(),
|
|
71
|
-
ownModelStaticValues: modelClass.ownModelStaticValues(),
|
|
72
|
-
ownModelPropsMap: modelClass.ownModelPropsMap(),
|
|
73
|
-
modelPropsMap: modelClass.modelPropsMap(),
|
|
74
|
-
};
|
|
40
|
+
return new model_descriptor_1.ModelDescriptor(this.constructor);
|
|
75
41
|
}
|
|
76
42
|
validateProps(props) {
|
|
77
|
-
const modelPropsValidators = this.modelDescriptor().modelPropsValidators;
|
|
43
|
+
const modelPropsValidators = this.modelDescriptor().modelPropsValidators();
|
|
78
44
|
modelPropsValidators.forEach((propsValidator) => propsValidator.call(this.constructor, props));
|
|
79
45
|
}
|
|
80
46
|
validate() {
|
|
81
47
|
this.validateProps(this._props);
|
|
82
48
|
}
|
|
83
49
|
propsIsEmpty() {
|
|
84
|
-
return this._props ===
|
|
50
|
+
return this._props === DomainModel.EMPTY_PROPS;
|
|
85
51
|
}
|
|
86
52
|
props() {
|
|
87
53
|
if (this.propsIsEmpty())
|
|
88
54
|
return null;
|
|
89
55
|
return lodash_1.default.cloneDeepWith(this._props, (value) => {
|
|
90
|
-
if (
|
|
56
|
+
if (DomainModel.isDomainModel(value)) {
|
|
91
57
|
value.redefineModel();
|
|
92
58
|
return value;
|
|
93
59
|
}
|
|
@@ -96,9 +62,14 @@ class ModelBase {
|
|
|
96
62
|
metadata() {
|
|
97
63
|
return {};
|
|
98
64
|
}
|
|
99
|
-
initializeProps(
|
|
65
|
+
initializeProps(propsOrBuilder) {
|
|
100
66
|
if (!this.propsIsEmpty())
|
|
101
67
|
throw new errors_1.PropsInitializedError();
|
|
68
|
+
let props;
|
|
69
|
+
if (typeof propsOrBuilder === "function")
|
|
70
|
+
props = propsOrBuilder.call(this);
|
|
71
|
+
else
|
|
72
|
+
props = propsOrBuilder;
|
|
102
73
|
if (!this.modelDescriptor().modelMutable) {
|
|
103
74
|
this._props = props;
|
|
104
75
|
Object.freeze(this._props);
|
|
@@ -115,5 +86,5 @@ class ModelBase {
|
|
|
115
86
|
this.validate();
|
|
116
87
|
}
|
|
117
88
|
}
|
|
118
|
-
exports.
|
|
119
|
-
|
|
89
|
+
exports.DomainModel = DomainModel;
|
|
90
|
+
DomainModel.EMPTY_PROPS = {};
|
package/base/model-registry.d.ts
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AnyDomainModel, DomainModelClass } from "./model";
|
|
2
2
|
import { ModelId, ModelName, ModelVersion } from "./meta";
|
|
3
|
-
export declare class
|
|
3
|
+
export declare class ModelVersions<T extends AnyDomainModel = AnyDomainModel> extends Map<ModelVersion, DomainModelClass<T>> {
|
|
4
4
|
readonly modelName: ModelName;
|
|
5
5
|
constructor(modelName: ModelName);
|
|
6
6
|
}
|
|
7
|
-
export declare class
|
|
7
|
+
export declare class ModelStore<T extends AnyDomainModel = AnyDomainModel> extends Map<ModelName, ModelVersions<T>> {
|
|
8
8
|
}
|
|
9
9
|
export declare class ModelRegistry {
|
|
10
|
-
private
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
hasRegisteredModel(
|
|
16
|
-
|
|
10
|
+
private store;
|
|
11
|
+
getModelVersions<T extends AnyDomainModel = AnyDomainModel>(modelName: ModelName): ModelVersions<T>;
|
|
12
|
+
private resolveModelId;
|
|
13
|
+
getModel<T extends AnyDomainModel = AnyDomainModel>(modelName: ModelName, modelVersion?: ModelVersion): DomainModelClass<T> | undefined;
|
|
14
|
+
getModelByModelId<T extends AnyDomainModel = AnyDomainModel>(modelId: ModelId): DomainModelClass<T> | undefined;
|
|
15
|
+
hasRegisteredModel(p1: ModelName | DomainModelClass, p2?: ModelVersion): boolean;
|
|
16
|
+
hasRegisteredModelWithId(modelId: ModelId): boolean;
|
|
17
|
+
registerModel(modelClass: DomainModelClass): this;
|
|
18
|
+
deregisterModel(p1: ModelName | DomainModelClass, p2?: ModelVersion): void;
|
|
19
|
+
clearModelVersions(modelName: ModelName): void;
|
|
20
|
+
clearAll(): void;
|
|
17
21
|
}
|
package/base/model-registry.js
CHANGED
|
@@ -1,55 +1,70 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ModelRegistry = exports.
|
|
3
|
+
exports.ModelRegistry = exports.ModelStore = exports.ModelVersions = void 0;
|
|
4
4
|
const meta_1 = require("./meta");
|
|
5
|
-
class
|
|
5
|
+
class ModelVersions extends Map {
|
|
6
6
|
constructor(modelName) {
|
|
7
7
|
super();
|
|
8
8
|
this.modelName = modelName;
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
-
exports.
|
|
12
|
-
class
|
|
11
|
+
exports.ModelVersions = ModelVersions;
|
|
12
|
+
class ModelStore extends Map {
|
|
13
13
|
}
|
|
14
|
-
exports.
|
|
14
|
+
exports.ModelStore = ModelStore;
|
|
15
15
|
class ModelRegistry {
|
|
16
16
|
constructor() {
|
|
17
|
-
this.
|
|
17
|
+
this.store = new ModelStore();
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
if (!
|
|
22
|
-
this.
|
|
23
|
-
return
|
|
19
|
+
getModelVersions(modelName) {
|
|
20
|
+
const current = () => this.store.get(modelName);
|
|
21
|
+
if (!current())
|
|
22
|
+
this.store.set(modelName, new ModelVersions(modelName));
|
|
23
|
+
return current();
|
|
24
|
+
}
|
|
25
|
+
resolveModelId(p1, p2) {
|
|
26
|
+
if (typeof p1 === "string") {
|
|
27
|
+
return new meta_1.$ModelId(p1, p2);
|
|
28
|
+
}
|
|
29
|
+
return meta_1.$ModelId.fromValue(p1.modelDescriptor().modelId());
|
|
24
30
|
}
|
|
25
31
|
getModel(modelName, modelVersion = 0) {
|
|
26
|
-
const
|
|
27
|
-
return
|
|
32
|
+
const versions = this.getModelVersions(modelName);
|
|
33
|
+
return versions.get(modelVersion);
|
|
28
34
|
}
|
|
29
35
|
getModelByModelId(modelId) {
|
|
30
36
|
const { modelName, modelVersion } = meta_1.$ModelId.fromValue(modelId);
|
|
31
37
|
return this.getModel(modelName, modelVersion);
|
|
32
38
|
}
|
|
33
39
|
hasRegisteredModel(p1, p2) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
modelName = p1.modelName();
|
|
41
|
-
modelVersion = p1.modelVersion();
|
|
42
|
-
}
|
|
40
|
+
const { modelName, modelVersion } = this.resolveModelId(p1, p2);
|
|
41
|
+
return Boolean(this.getModel(modelName, modelVersion));
|
|
42
|
+
}
|
|
43
|
+
hasRegisteredModelWithId(modelId) {
|
|
44
|
+
const { modelName, modelVersion } = meta_1.$ModelId.fromValue(modelId);
|
|
43
45
|
return Boolean(this.getModel(modelName, modelVersion));
|
|
44
46
|
}
|
|
45
47
|
registerModel(modelClass) {
|
|
46
|
-
const modelName = modelClass.modelName();
|
|
47
|
-
const modelVersion = modelClass.modelVersion();
|
|
48
|
+
const modelName = modelClass.modelDescriptor().modelName();
|
|
49
|
+
const modelVersion = modelClass.modelDescriptor().modelVersion();
|
|
48
50
|
if (this.hasRegisteredModel(modelName, modelVersion))
|
|
49
|
-
throw new Error(`Model ${modelName} with version ${modelVersion}
|
|
50
|
-
const
|
|
51
|
-
|
|
51
|
+
throw new Error(`Cannot register: Model ${modelName} with version ${modelVersion} is already registered.`);
|
|
52
|
+
const versions = this.getModelVersions(modelName);
|
|
53
|
+
versions.set(modelVersion, modelClass);
|
|
52
54
|
return this;
|
|
53
55
|
}
|
|
56
|
+
deregisterModel(p1, p2) {
|
|
57
|
+
const { modelName, modelVersion } = this.resolveModelId(p1, p2);
|
|
58
|
+
if (!this.hasRegisteredModel(modelName, modelVersion))
|
|
59
|
+
return;
|
|
60
|
+
const versions = this.getModelVersions(modelName);
|
|
61
|
+
versions.delete(modelVersion);
|
|
62
|
+
}
|
|
63
|
+
clearModelVersions(modelName) {
|
|
64
|
+
this.store.delete(modelName);
|
|
65
|
+
}
|
|
66
|
+
clearAll() {
|
|
67
|
+
this.store = new ModelStore();
|
|
68
|
+
}
|
|
54
69
|
}
|
|
55
70
|
exports.ModelRegistry = ModelRegistry;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./is-enum";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./is-enum"), exports);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const base_1 = require("
|
|
5
|
-
const
|
|
3
|
+
exports.IsEnum = void 0;
|
|
4
|
+
const base_1 = require("../../../base");
|
|
5
|
+
const IsEnum = (value) => {
|
|
6
6
|
return (target, key) => {
|
|
7
7
|
(0, base_1.Static)(() => new target(value !== null && value !== void 0 ? value : key))(target, key);
|
|
8
8
|
};
|
|
9
9
|
};
|
|
10
|
-
exports.
|
|
10
|
+
exports.IsEnum = IsEnum;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { AnyCommand, AnyESAggregate, CommandClass, CommandHandler } from "../..";
|
|
2
|
+
export declare const Handle: <T extends AnyCommand>(commandClass: CommandClass<T>) => <U extends CommandHandler<T>>(target: AnyESAggregate, propertyKey: string, descriptor: TypedPropertyDescriptor<U>) => void;
|