ddd-node 35.0.0 → 36.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/base/decorators/model.js +1 -1
- package/base/decorators/static.d.ts +2 -2
- package/base/decorators/static.js +2 -2
- package/base/meta/index.d.ts +4 -4
- package/base/meta/index.js +4 -4
- package/base/meta/model-domain.d.ts +1 -1
- package/base/meta/model-domain.js +4 -4
- package/base/meta/model-id.d.ts +2 -2
- package/base/meta/model-id.js +9 -9
- package/base/meta/model-mutable.d.ts +1 -1
- package/base/meta/model-mutable.js +4 -4
- package/base/meta/model-name.d.ts +1 -1
- package/base/meta/model-name.js +4 -4
- package/base/meta/model-property-accessor.d.ts +2 -2
- package/base/meta/model-property-accessor.js +8 -8
- package/base/meta/model-props-type.d.ts +1 -1
- package/base/meta/model-props-type.js +4 -4
- package/base/meta/model-props-validator.d.ts +2 -2
- package/base/meta/model-props-validator.js +7 -7
- package/base/meta/model-version.d.ts +1 -1
- package/base/meta/model-version.js +4 -4
- package/base/meta/static-entry.d.ts +13 -0
- package/base/meta/static-entry.js +54 -0
- package/base/model/model-descriptor.d.ts +4 -4
- package/base/model/model-descriptor.js +14 -14
- package/base/model/model.js +1 -1
- package/base/model-registry.d.ts +1 -1
- package/base/model-registry.js +4 -4
- package/common/props-validator/use-class-validator.js +1 -1
- package/core/decorators/index.d.ts +3 -3
- package/core/decorators/index.js +3 -3
- package/core/decorators/{enum/is-enum.d.ts → is-enum.d.ts} +1 -1
- package/core/decorators/{enum/is-enum.js → is-enum.js} +3 -3
- package/core/decorators/is-event.d.ts +4 -0
- package/core/decorators/{message/is-event.js → is-event.js} +2 -2
- package/core/decorators/{es-aggregate/when.js → when.js} +1 -1
- package/core/meta/enum.d.ts +2 -2
- package/core/meta/enum.js +8 -8
- package/core/meta/{es-aggregate/event-applier.d.ts → event-applier.d.ts} +3 -3
- package/core/meta/{es-aggregate/event-applier.js → event-applier.js} +9 -9
- package/core/meta/event.d.ts +1 -1
- package/core/meta/event.js +4 -4
- package/core/meta/index.d.ts +1 -2
- package/core/meta/index.js +1 -2
- package/core/model/aggregate/aggregate.d.ts +3 -8
- package/core/model/aggregate/aggregate.js +2 -11
- package/core/model/aggregate/es-aggregate.d.ts +20 -31
- package/core/model/aggregate/es-aggregate.js +36 -68
- package/core/model/aggregate/index.d.ts +0 -1
- package/core/model/aggregate/index.js +0 -1
- package/core/model/aggregate/state-aggregate.d.ts +6 -12
- package/core/model/aggregate/state-aggregate.js +11 -20
- package/core/model/entity/entity.d.ts +4 -7
- package/core/model/entity/entity.js +1 -1
- package/core/model/enum/enum.d.ts +3 -5
- package/core/model/enum/enum.js +4 -4
- package/core/model/event/event.d.ts +25 -0
- package/core/model/event/event.js +47 -0
- package/core/model/event/index.d.ts +1 -0
- package/core/{decorators/enum → model/event}/index.js +1 -1
- package/core/model/identified-model/identified-model.d.ts +3 -7
- package/core/model/identified-model/identified-model.js +2 -9
- package/core/model/index.d.ts +1 -1
- package/core/model/index.js +1 -1
- package/core/model/value-object/value-object.d.ts +5 -6
- package/core/model/value-object/value-object.js +7 -4
- package/{handling-event → event-handling}/decorators/subscribe-to-events.js +1 -1
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/package.json +1 -1
- package/base/meta/model-static-values.d.ts +0 -13
- package/base/meta/model-static-values.js +0 -54
- package/core/decorators/enum/index.d.ts +0 -1
- package/core/decorators/es-aggregate/handle.d.ts +0 -2
- package/core/decorators/es-aggregate/handle.js +0 -13
- package/core/decorators/es-aggregate/index.d.ts +0 -2
- package/core/decorators/es-aggregate/index.js +0 -18
- package/core/decorators/message/index.d.ts +0 -2
- package/core/decorators/message/index.js +0 -18
- package/core/decorators/message/is-command.d.ts +0 -4
- package/core/decorators/message/is-command.js +0 -12
- package/core/decorators/message/is-event.d.ts +0 -4
- package/core/meta/command.d.ts +0 -8
- package/core/meta/command.js +0 -27
- package/core/meta/es-aggregate/command-handler.d.ts +0 -7
- package/core/meta/es-aggregate/command-handler.js +0 -44
- package/core/meta/es-aggregate/index.d.ts +0 -2
- package/core/meta/es-aggregate/index.js +0 -18
- package/core/model/aggregate/event-releaser.d.ts +0 -4
- package/core/model/aggregate/event-releaser.js +0 -2
- package/core/model/message/command.d.ts +0 -22
- package/core/model/message/command.js +0 -25
- package/core/model/message/event.d.ts +0 -30
- package/core/model/message/event.js +0 -29
- package/core/model/message/index.d.ts +0 -3
- package/core/model/message/index.js +0 -19
- package/core/model/message/message.d.ts +0 -27
- package/core/model/message/message.js +0 -59
- /package/core/decorators/{es-aggregate/when.d.ts → when.d.ts} +0 -0
- /package/{handling-event → event-handling}/decorators/index.d.ts +0 -0
- /package/{handling-event → event-handling}/decorators/index.js +0 -0
- /package/{handling-event → event-handling}/decorators/subscribe-to-events.d.ts +0 -0
- /package/{handling-event → event-handling}/event-dispatcher.d.ts +0 -0
- /package/{handling-event → event-handling}/event-dispatcher.js +0 -0
- /package/{handling-event → event-handling}/event-subscriber-registry.d.ts +0 -0
- /package/{handling-event → event-handling}/event-subscriber-registry.js +0 -0
- /package/{handling-event → event-handling}/event-subscriber.d.ts +0 -0
- /package/{handling-event → event-handling}/event-subscriber.js +0 -0
- /package/{handling-event → event-handling}/index.d.ts +0 -0
- /package/{handling-event → event-handling}/index.js +0 -0
- /package/{handling-event → event-handling}/interfaces/event-dispatcher.interface.d.ts +0 -0
- /package/{handling-event → event-handling}/interfaces/event-dispatcher.interface.js +0 -0
- /package/{handling-event → event-handling}/interfaces/event-subscriber-registry.interface.d.ts +0 -0
- /package/{handling-event → event-handling}/interfaces/event-subscriber-registry.interface.js +0 -0
- /package/{handling-event → event-handling}/interfaces/event-subscriber.interface.d.ts +0 -0
- /package/{handling-event → event-handling}/interfaces/event-subscriber.interface.js +0 -0
- /package/{handling-event → event-handling}/interfaces/index.d.ts +0 -0
- /package/{handling-event → event-handling}/interfaces/index.js +0 -0
package/base/decorators/model.js
CHANGED
|
@@ -66,7 +66,7 @@ function defineModel(target, options) {
|
|
|
66
66
|
* Registers the model in its associated domain via DomainManager.
|
|
67
67
|
*/
|
|
68
68
|
function registerModel(target) {
|
|
69
|
-
const domainName = (0, meta_1.
|
|
69
|
+
const domainName = (0, meta_1.resolveModelDomain)(target);
|
|
70
70
|
const domainManager = domain_1.DomainManager.instance();
|
|
71
71
|
if (!domainManager.hasDomain(domainName)) {
|
|
72
72
|
domainManager.addDomain(new domain_1.Domain(domainName));
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { DomainModelClass } from "../model";
|
|
2
|
-
import {
|
|
3
|
-
export declare const Static: <T extends DomainModelClass, I extends InstanceType<T> = InstanceType<T>>(builder:
|
|
2
|
+
import { StaticEntryBuilder } from "../meta";
|
|
3
|
+
export declare const Static: <T extends DomainModelClass, I extends InstanceType<T> = InstanceType<T>>(builder: StaticEntryBuilder<I>) => (target: T, key: PropertyKey) => void;
|
|
@@ -4,8 +4,8 @@ exports.Static = void 0;
|
|
|
4
4
|
const meta_1 = require("../meta");
|
|
5
5
|
const Static = (builder) => {
|
|
6
6
|
return (target, key) => {
|
|
7
|
-
(0, meta_1.
|
|
8
|
-
(0, meta_1.
|
|
7
|
+
(0, meta_1.setStaticEntry)(target, key, builder);
|
|
8
|
+
(0, meta_1.defineStaticEntryProperty)(target, key);
|
|
9
9
|
};
|
|
10
10
|
};
|
|
11
11
|
exports.Static = Static;
|
package/base/meta/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
export * from "./model-domain";
|
|
1
2
|
export * from "./model-id";
|
|
3
|
+
export * from "./model-mutable";
|
|
2
4
|
export * from "./model-name";
|
|
3
5
|
export * from "./model-property-accessor";
|
|
4
|
-
export * from "./model-
|
|
6
|
+
export * from "./model-props-type";
|
|
5
7
|
export * from "./model-props-validator";
|
|
6
8
|
export * from "./model-version";
|
|
7
|
-
export * from "./
|
|
8
|
-
export * from "./model-mutable";
|
|
9
|
-
export * from "./model-props-type";
|
|
9
|
+
export * from "./static-entry";
|
package/base/meta/index.js
CHANGED
|
@@ -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("./model-domain"), exports);
|
|
17
18
|
__exportStar(require("./model-id"), exports);
|
|
19
|
+
__exportStar(require("./model-mutable"), exports);
|
|
18
20
|
__exportStar(require("./model-name"), exports);
|
|
19
21
|
__exportStar(require("./model-property-accessor"), exports);
|
|
20
|
-
__exportStar(require("./model-
|
|
22
|
+
__exportStar(require("./model-props-type"), exports);
|
|
21
23
|
__exportStar(require("./model-props-validator"), exports);
|
|
22
24
|
__exportStar(require("./model-version"), exports);
|
|
23
|
-
__exportStar(require("./
|
|
24
|
-
__exportStar(require("./model-mutable"), exports);
|
|
25
|
-
__exportStar(require("./model-props-type"), exports);
|
|
25
|
+
__exportStar(require("./static-entry"), exports);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { DomainName } from "../domain";
|
|
2
2
|
import { AnyDomainModel, DomainModelClass } from "../model";
|
|
3
3
|
export declare const defineModelDomain: <T extends AnyDomainModel>(target: DomainModelClass<T>, domainName: DomainName) => void;
|
|
4
|
-
export declare const
|
|
4
|
+
export declare const resolveModelDomain: <T extends AnyDomainModel>(target: DomainModelClass<T>) => string;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.resolveModelDomain = exports.defineModelDomain = void 0;
|
|
4
4
|
const domain_1 = require("../domain");
|
|
5
|
-
const MODEL_DOMAIN = Symbol
|
|
5
|
+
const MODEL_DOMAIN = Symbol("MODEL_DOMAIN");
|
|
6
6
|
const defineModelDomain = (target, domainName) => {
|
|
7
7
|
Reflect.defineMetadata(MODEL_DOMAIN, domainName, target);
|
|
8
8
|
};
|
|
9
9
|
exports.defineModelDomain = defineModelDomain;
|
|
10
|
-
const
|
|
10
|
+
const resolveModelDomain = (target) => {
|
|
11
11
|
if (!Reflect.hasOwnMetadata(MODEL_DOMAIN, target))
|
|
12
12
|
(0, exports.defineModelDomain)(target, domain_1.DEFAULT_DOMAIN);
|
|
13
13
|
return Reflect.getOwnMetadata(MODEL_DOMAIN, target);
|
|
14
14
|
};
|
|
15
|
-
exports.
|
|
15
|
+
exports.resolveModelDomain = resolveModelDomain;
|
package/base/meta/model-id.d.ts
CHANGED
|
@@ -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
|
|
16
|
-
export declare const
|
|
15
|
+
export declare const defineModelId: <T extends AnyDomainModel>(target: DomainModelClass<T>, modelId: $ModelId) => void;
|
|
16
|
+
export declare const resolveModelId: <T extends AnyDomainModel>(target: DomainModelClass<T>) => ModelId;
|
package/base/meta/model-id.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.resolveModelId = exports.defineModelId = exports.$ModelId = void 0;
|
|
4
4
|
const model_name_1 = require("./model-name");
|
|
5
5
|
const model_version_1 = require("./model-version");
|
|
6
|
-
const MODEL_ID = Symbol
|
|
6
|
+
const MODEL_ID = Symbol("MODEL_ID");
|
|
7
7
|
class $ModelId extends String {
|
|
8
8
|
static fromValue(value) {
|
|
9
9
|
if (!this.Format.test(value))
|
|
@@ -24,16 +24,16 @@ class $ModelId extends String {
|
|
|
24
24
|
exports.$ModelId = $ModelId;
|
|
25
25
|
$ModelId.Divider = "|";
|
|
26
26
|
$ModelId.Format = new RegExp(/^.+\|[0-9]+$/);
|
|
27
|
-
const
|
|
27
|
+
const defineModelId = (target, modelId) => {
|
|
28
28
|
Reflect.defineMetadata(MODEL_ID, modelId, target);
|
|
29
29
|
};
|
|
30
|
-
exports.
|
|
31
|
-
const
|
|
30
|
+
exports.defineModelId = defineModelId;
|
|
31
|
+
const resolveModelId = (target) => {
|
|
32
32
|
if (!Reflect.hasOwnMetadata(MODEL_ID, target)) {
|
|
33
|
-
const modelName = (0, model_name_1.
|
|
34
|
-
const modelVersion = (0, model_version_1.
|
|
35
|
-
(0, exports.
|
|
33
|
+
const modelName = (0, model_name_1.resolveModelName)(target);
|
|
34
|
+
const modelVersion = (0, model_version_1.resolveModelVersion)(target);
|
|
35
|
+
(0, exports.defineModelId)(target, new $ModelId(modelName, modelVersion));
|
|
36
36
|
}
|
|
37
37
|
return Reflect.getOwnMetadata(MODEL_ID, target).valueOf();
|
|
38
38
|
};
|
|
39
|
-
exports.
|
|
39
|
+
exports.resolveModelId = resolveModelId;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
2
|
export declare const defineModelMutable: (target: object, mutable: boolean) => void;
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const resolveModelMutable: (target: object) => boolean | undefined;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.resolveModelMutable = exports.defineModelMutable = void 0;
|
|
4
4
|
require("reflect-metadata");
|
|
5
|
-
const MODEL_MUTABLE = Symbol
|
|
5
|
+
const MODEL_MUTABLE = Symbol("MODEL_MUTABLE");
|
|
6
6
|
const defineModelMutable = (target, mutable) => {
|
|
7
7
|
if (Reflect.hasMetadata(MODEL_MUTABLE, target))
|
|
8
8
|
return;
|
|
9
9
|
Reflect.defineMetadata(MODEL_MUTABLE, mutable, target);
|
|
10
10
|
};
|
|
11
11
|
exports.defineModelMutable = defineModelMutable;
|
|
12
|
-
const
|
|
12
|
+
const resolveModelMutable = (target) => {
|
|
13
13
|
return Reflect.getMetadata(MODEL_MUTABLE, target);
|
|
14
14
|
};
|
|
15
|
-
exports.
|
|
15
|
+
exports.resolveModelMutable = resolveModelMutable;
|
|
@@ -5,4 +5,4 @@ export declare class $ModelName extends String {
|
|
|
5
5
|
constructor(modelName: ModelName);
|
|
6
6
|
}
|
|
7
7
|
export declare const defineModelName: <T extends AnyDomainModel>(target: DomainModelClass<T>, modelName: ModelName) => void;
|
|
8
|
-
export declare const
|
|
8
|
+
export declare const resolveModelName: <T extends AnyDomainModel>(target: DomainModelClass<T>) => ModelName;
|
package/base/meta/model-name.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const MODEL_NAME = Symbol
|
|
3
|
+
exports.resolveModelName = exports.defineModelName = exports.$ModelName = void 0;
|
|
4
|
+
const MODEL_NAME = Symbol("MODEL_NAME");
|
|
5
5
|
class $ModelName extends String {
|
|
6
6
|
static validate(modelName) {
|
|
7
7
|
if (modelName.trim().length === 0)
|
|
@@ -17,9 +17,9 @@ const defineModelName = (target, modelName) => {
|
|
|
17
17
|
Reflect.defineMetadata(MODEL_NAME, new $ModelName(modelName), target);
|
|
18
18
|
};
|
|
19
19
|
exports.defineModelName = defineModelName;
|
|
20
|
-
const
|
|
20
|
+
const resolveModelName = (target) => {
|
|
21
21
|
if (!Reflect.hasOwnMetadata(MODEL_NAME, target))
|
|
22
22
|
(0, exports.defineModelName)(target, target.name);
|
|
23
23
|
return Reflect.getOwnMetadata(MODEL_NAME, target).valueOf();
|
|
24
24
|
};
|
|
25
|
-
exports.
|
|
25
|
+
exports.resolveModelName = resolveModelName;
|
|
@@ -6,6 +6,6 @@ export type PropertyAccessorMetadata<T extends AnyDomainModel, R> = {
|
|
|
6
6
|
};
|
|
7
7
|
export declare class ModelPropertyAccessorMap<T extends AnyDomainModel = AnyDomainModel> extends Map<PropertyKey, PropertyAccessorMetadata<T, any>> {
|
|
8
8
|
}
|
|
9
|
-
export declare const
|
|
9
|
+
export declare const resolveOwnPropertyAccessors: <T extends AnyDomainModel = AnyDomainModel>(target: object) => ModelPropertyAccessorMap<T>;
|
|
10
10
|
export declare const registerPropertyAccessor: <T extends AnyDomainModel = AnyDomainModel>(target: object, key: PropertyKey, propTargetKey: keyof InferredProps<T>, propConverter?: PropertyConverter) => void;
|
|
11
|
-
export declare const
|
|
11
|
+
export declare const resolvePropertyAccessors: <T extends AnyDomainModel = AnyDomainModel>(target: object) => ModelPropertyAccessorMap<T>;
|
|
@@ -1,38 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.resolvePropertyAccessors = exports.registerPropertyAccessor = exports.resolveOwnPropertyAccessors = exports.ModelPropertyAccessorMap = void 0;
|
|
4
4
|
const model_1 = require("../model");
|
|
5
|
-
const OWN_MODEL_PROPERTY_ACCESSORS = Symbol
|
|
5
|
+
const OWN_MODEL_PROPERTY_ACCESSORS = Symbol("OWN_MODEL_PROPERTY_ACCESSORS");
|
|
6
6
|
class ModelPropertyAccessorMap extends Map {
|
|
7
7
|
}
|
|
8
8
|
exports.ModelPropertyAccessorMap = ModelPropertyAccessorMap;
|
|
9
9
|
// target = prototype
|
|
10
|
-
const
|
|
10
|
+
const resolveOwnPropertyAccessors = (target) => {
|
|
11
11
|
if (!Reflect.hasOwnMetadata(OWN_MODEL_PROPERTY_ACCESSORS, target)) {
|
|
12
12
|
Reflect.defineMetadata(OWN_MODEL_PROPERTY_ACCESSORS, new ModelPropertyAccessorMap(), target);
|
|
13
13
|
}
|
|
14
14
|
return Reflect.getOwnMetadata(OWN_MODEL_PROPERTY_ACCESSORS, target);
|
|
15
15
|
};
|
|
16
|
-
exports.
|
|
16
|
+
exports.resolveOwnPropertyAccessors = resolveOwnPropertyAccessors;
|
|
17
17
|
const registerPropertyAccessor = (target, key, propTargetKey, propConverter) => {
|
|
18
|
-
const declaredMap = (0, exports.
|
|
18
|
+
const declaredMap = (0, exports.resolveOwnPropertyAccessors)(target);
|
|
19
19
|
declaredMap.set(key, {
|
|
20
20
|
targetKey: propTargetKey,
|
|
21
21
|
converter: propConverter,
|
|
22
22
|
});
|
|
23
23
|
};
|
|
24
24
|
exports.registerPropertyAccessor = registerPropertyAccessor;
|
|
25
|
-
const
|
|
25
|
+
const resolvePropertyAccessors = (target) => {
|
|
26
26
|
const result = new ModelPropertyAccessorMap();
|
|
27
27
|
const ownMaps = [];
|
|
28
28
|
let current = target;
|
|
29
29
|
do {
|
|
30
30
|
if (model_1.DomainModel.isDomainModel(current)) {
|
|
31
|
-
ownMaps.unshift((0, exports.
|
|
31
|
+
ownMaps.unshift((0, exports.resolveOwnPropertyAccessors)(current));
|
|
32
32
|
}
|
|
33
33
|
current = Reflect.getPrototypeOf(current);
|
|
34
34
|
} while (current !== null);
|
|
35
35
|
ownMaps.forEach((map) => map.forEach((meta, key) => result.set(key, meta)));
|
|
36
36
|
return result;
|
|
37
37
|
};
|
|
38
|
-
exports.
|
|
38
|
+
exports.resolvePropertyAccessors = resolvePropertyAccessors;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Class } from "type-fest";
|
|
2
2
|
import { AnyDomainModel, DomainModelClass, InferredProps } from "../model";
|
|
3
3
|
export declare const defineModelPropsType: <T extends AnyDomainModel>(target: DomainModelClass<T>, propsType: Class<InferredProps<T>>) => void;
|
|
4
|
-
export declare const
|
|
4
|
+
export declare const resolveModelPropsType: <T extends AnyDomainModel>(target: DomainModelClass<T>) => Class<InferredProps<T>> | undefined;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const MODEL_PROPS_TYPE = Symbol
|
|
3
|
+
exports.resolveModelPropsType = exports.defineModelPropsType = void 0;
|
|
4
|
+
const MODEL_PROPS_TYPE = Symbol("MODEL_PROPS_TYPE");
|
|
5
5
|
const defineModelPropsType = (target, propsType) => {
|
|
6
6
|
Reflect.defineMetadata(MODEL_PROPS_TYPE, propsType, target);
|
|
7
7
|
};
|
|
8
8
|
exports.defineModelPropsType = defineModelPropsType;
|
|
9
|
-
const
|
|
9
|
+
const resolveModelPropsType = (target) => {
|
|
10
10
|
return Reflect.getMetadata(MODEL_PROPS_TYPE, target);
|
|
11
11
|
};
|
|
12
|
-
exports.
|
|
12
|
+
exports.resolveModelPropsType = resolveModelPropsType;
|
|
@@ -12,5 +12,5 @@ export declare class ModelPropsValidatorWrapper<T extends AnyDomainModel> implem
|
|
|
12
12
|
validate(props: InferredProps<T>): void;
|
|
13
13
|
}
|
|
14
14
|
export declare const defineModelPropsValidator: <T extends AnyDomainModel>(target: object, validator: ModelPropsValidator<T>) => void;
|
|
15
|
-
export declare const
|
|
16
|
-
export declare const
|
|
15
|
+
export declare const resolveOwnModelPropsValidator: <T extends AnyDomainModel>(target: object) => ModelPropsValidator<T> | undefined;
|
|
16
|
+
export declare const resolveModelPropsValidators: (target: object) => ModelPropsValidator[];
|
|
@@ -3,10 +3,10 @@ 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.resolveModelPropsValidators = exports.resolveOwnModelPropsValidator = exports.defineModelPropsValidator = exports.ModelPropsValidatorWrapper = void 0;
|
|
7
7
|
const is_class_1 = __importDefault(require("is-class"));
|
|
8
8
|
const lodash_1 = __importDefault(require("lodash"));
|
|
9
|
-
const OWN_MODEL_PROPS_VALIDATOR = Symbol
|
|
9
|
+
const OWN_MODEL_PROPS_VALIDATOR = Symbol("OWN_MODEL_PROPS_VALIDATOR");
|
|
10
10
|
class ModelPropsValidatorWrapper {
|
|
11
11
|
constructor(input) {
|
|
12
12
|
this.input = input;
|
|
@@ -32,15 +32,15 @@ const defineModelPropsValidator = (target, validator) => {
|
|
|
32
32
|
Reflect.defineMetadata(OWN_MODEL_PROPS_VALIDATOR, validator, target);
|
|
33
33
|
};
|
|
34
34
|
exports.defineModelPropsValidator = defineModelPropsValidator;
|
|
35
|
-
const
|
|
35
|
+
const resolveOwnModelPropsValidator = (target) => {
|
|
36
36
|
return Reflect.getOwnMetadata(OWN_MODEL_PROPS_VALIDATOR, target);
|
|
37
37
|
};
|
|
38
|
-
exports.
|
|
39
|
-
const
|
|
38
|
+
exports.resolveOwnModelPropsValidator = resolveOwnModelPropsValidator;
|
|
39
|
+
const resolveModelPropsValidators = (target) => {
|
|
40
40
|
let result = [];
|
|
41
41
|
let _target = target;
|
|
42
42
|
do {
|
|
43
|
-
const ownValidator = (0, exports.
|
|
43
|
+
const ownValidator = (0, exports.resolveOwnModelPropsValidator)(_target);
|
|
44
44
|
if (ownValidator)
|
|
45
45
|
result.push(ownValidator);
|
|
46
46
|
_target = Reflect.getPrototypeOf(_target);
|
|
@@ -48,4 +48,4 @@ const getModelPropsValidators = (target) => {
|
|
|
48
48
|
result = lodash_1.default.uniq(result);
|
|
49
49
|
return result;
|
|
50
50
|
};
|
|
51
|
-
exports.
|
|
51
|
+
exports.resolveModelPropsValidators = resolveModelPropsValidators;
|
|
@@ -5,4 +5,4 @@ export declare class $ModelVersion extends Number {
|
|
|
5
5
|
constructor(modelVersion: ModelVersion);
|
|
6
6
|
}
|
|
7
7
|
export declare const defineModelVersion: <T extends AnyDomainModel>(target: DomainModelClass<T>, modelVersion: ModelVersion) => void;
|
|
8
|
-
export declare const
|
|
8
|
+
export declare const resolveModelVersion: <T extends AnyDomainModel>(target: DomainModelClass<T>) => ModelVersion;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const MODEL_VERSION = Symbol
|
|
3
|
+
exports.resolveModelVersion = exports.defineModelVersion = exports.$ModelVersion = void 0;
|
|
4
|
+
const MODEL_VERSION = Symbol("MODEL_VERSION");
|
|
5
5
|
class $ModelVersion extends Number {
|
|
6
6
|
static validate(modelVersion) {
|
|
7
7
|
if (modelVersion < 0 && Number.isInteger(modelVersion))
|
|
@@ -17,9 +17,9 @@ const defineModelVersion = (target, modelVersion) => {
|
|
|
17
17
|
Reflect.defineMetadata(MODEL_VERSION, new $ModelVersion(modelVersion), target);
|
|
18
18
|
};
|
|
19
19
|
exports.defineModelVersion = defineModelVersion;
|
|
20
|
-
const
|
|
20
|
+
const resolveModelVersion = (target) => {
|
|
21
21
|
if (!Reflect.hasOwnMetadata(MODEL_VERSION, target))
|
|
22
22
|
(0, exports.defineModelVersion)(target, 0);
|
|
23
23
|
return Reflect.getOwnMetadata(MODEL_VERSION, target).valueOf();
|
|
24
24
|
};
|
|
25
|
-
exports.
|
|
25
|
+
exports.resolveModelVersion = resolveModelVersion;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AnyDomainModel, DomainModelClass } from "../model";
|
|
2
|
+
export type StaticEntryBuilder<T extends AnyDomainModel = AnyDomainModel> = () => T;
|
|
3
|
+
export declare class StaticEntry<T extends AnyDomainModel = AnyDomainModel> {
|
|
4
|
+
private _value;
|
|
5
|
+
constructor(value: T | StaticEntryBuilder<T>);
|
|
6
|
+
get value(): T;
|
|
7
|
+
}
|
|
8
|
+
export declare class StaticEntryMap<T extends AnyDomainModel = AnyDomainModel> extends Map<PropertyKey, StaticEntry<T>> {
|
|
9
|
+
}
|
|
10
|
+
export declare const resolveOwnStaticEntries: <T extends AnyDomainModel>(target: object) => StaticEntryMap<T>;
|
|
11
|
+
export declare const setStaticEntry: <T extends AnyDomainModel>(target: object, key: PropertyKey, value: T | StaticEntryBuilder<T>) => void;
|
|
12
|
+
export declare const resolveStaticEntryValue: (target: object, key: PropertyKey) => AnyDomainModel | undefined;
|
|
13
|
+
export declare const defineStaticEntryProperty: (target: DomainModelClass, key: PropertyKey) => void;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defineStaticEntryProperty = exports.resolveStaticEntryValue = exports.setStaticEntry = exports.resolveOwnStaticEntries = exports.StaticEntryMap = exports.StaticEntry = void 0;
|
|
4
|
+
const OWN_STATIC_ENTRIES = Symbol("OWN_STATIC_ENTRIES");
|
|
5
|
+
class StaticEntry {
|
|
6
|
+
constructor(value) {
|
|
7
|
+
this._value = value;
|
|
8
|
+
}
|
|
9
|
+
get value() {
|
|
10
|
+
if (typeof this._value === "function") {
|
|
11
|
+
this._value = this._value();
|
|
12
|
+
}
|
|
13
|
+
return this._value;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.StaticEntry = StaticEntry;
|
|
17
|
+
class StaticEntryMap extends Map {
|
|
18
|
+
}
|
|
19
|
+
exports.StaticEntryMap = StaticEntryMap;
|
|
20
|
+
const resolveOwnStaticEntries = (target) => {
|
|
21
|
+
if (!Reflect.hasOwnMetadata(OWN_STATIC_ENTRIES, target))
|
|
22
|
+
Reflect.defineMetadata(OWN_STATIC_ENTRIES, new StaticEntryMap(), target);
|
|
23
|
+
return Reflect.getOwnMetadata(OWN_STATIC_ENTRIES, target);
|
|
24
|
+
};
|
|
25
|
+
exports.resolveOwnStaticEntries = resolveOwnStaticEntries;
|
|
26
|
+
const setStaticEntry = (target, key, value) => {
|
|
27
|
+
const staticEntries = (0, exports.resolveOwnStaticEntries)(target);
|
|
28
|
+
staticEntries.set(key, new StaticEntry(value));
|
|
29
|
+
};
|
|
30
|
+
exports.setStaticEntry = setStaticEntry;
|
|
31
|
+
const resolveStaticEntryValue = (target, key) => {
|
|
32
|
+
let _target = target;
|
|
33
|
+
do {
|
|
34
|
+
const staticEntries = (0, exports.resolveOwnStaticEntries)(_target);
|
|
35
|
+
if (staticEntries.has(key))
|
|
36
|
+
return staticEntries.get(key)?.value;
|
|
37
|
+
_target = Reflect.getPrototypeOf(_target);
|
|
38
|
+
} while (_target !== null);
|
|
39
|
+
return undefined;
|
|
40
|
+
};
|
|
41
|
+
exports.resolveStaticEntryValue = resolveStaticEntryValue;
|
|
42
|
+
const defineStaticEntryProperty = (target, key) => {
|
|
43
|
+
Object.defineProperty(target, key, {
|
|
44
|
+
configurable: false,
|
|
45
|
+
enumerable: true,
|
|
46
|
+
get() {
|
|
47
|
+
return (0, exports.resolveStaticEntryValue)(target, key);
|
|
48
|
+
},
|
|
49
|
+
set() {
|
|
50
|
+
throw new Error("Static value is readonly");
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
exports.defineStaticEntryProperty = defineStaticEntryProperty;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Class } from "type-fest";
|
|
2
2
|
import { AnyDomainModel, DomainModelClass, InferredProps } from ".";
|
|
3
|
-
import { ModelId, ModelName, ModelPropertyAccessorMap, ModelPropsValidator,
|
|
3
|
+
import { ModelId, ModelName, ModelPropertyAccessorMap, ModelPropsValidator, ModelVersion, StaticEntryMap } from "../meta";
|
|
4
4
|
export declare class ModelDescriptor<T extends AnyDomainModel = AnyDomainModel> {
|
|
5
5
|
readonly modelClass: DomainModelClass<T>;
|
|
6
6
|
constructor(modelClass: DomainModelClass<T>);
|
|
@@ -11,8 +11,8 @@ export declare class ModelDescriptor<T extends AnyDomainModel = AnyDomainModel>
|
|
|
11
11
|
get modelId(): ModelId;
|
|
12
12
|
get ownModelPropsValidator(): ModelPropsValidator<T> | undefined;
|
|
13
13
|
get modelPropsValidators(): ModelPropsValidator[];
|
|
14
|
-
get
|
|
15
|
-
get
|
|
16
|
-
get
|
|
14
|
+
get ownStaticEntries(): StaticEntryMap<T>;
|
|
15
|
+
get ownPropertyAccessors(): ModelPropertyAccessorMap<T>;
|
|
16
|
+
get propertyAccessors(): ModelPropertyAccessorMap<T>;
|
|
17
17
|
get propsType(): Class<InferredProps<T>> | undefined;
|
|
18
18
|
}
|
|
@@ -7,37 +7,37 @@ class ModelDescriptor {
|
|
|
7
7
|
this.modelClass = modelClass;
|
|
8
8
|
}
|
|
9
9
|
get modelDomain() {
|
|
10
|
-
return (0, meta_1.
|
|
10
|
+
return (0, meta_1.resolveModelDomain)(this.modelClass);
|
|
11
11
|
}
|
|
12
12
|
get modelMutable() {
|
|
13
|
-
return (0, meta_1.
|
|
13
|
+
return (0, meta_1.resolveModelMutable)(this.modelClass) ?? false;
|
|
14
14
|
}
|
|
15
15
|
get modelName() {
|
|
16
|
-
return (0, meta_1.
|
|
16
|
+
return (0, meta_1.resolveModelName)(this.modelClass);
|
|
17
17
|
}
|
|
18
18
|
get modelVersion() {
|
|
19
|
-
return (0, meta_1.
|
|
19
|
+
return (0, meta_1.resolveModelVersion)(this.modelClass);
|
|
20
20
|
}
|
|
21
21
|
get modelId() {
|
|
22
|
-
return (0, meta_1.
|
|
22
|
+
return (0, meta_1.resolveModelId)(this.modelClass);
|
|
23
23
|
}
|
|
24
24
|
get ownModelPropsValidator() {
|
|
25
|
-
return (0, meta_1.
|
|
25
|
+
return (0, meta_1.resolveOwnModelPropsValidator)(this.modelClass);
|
|
26
26
|
}
|
|
27
27
|
get modelPropsValidators() {
|
|
28
|
-
return (0, meta_1.
|
|
28
|
+
return (0, meta_1.resolveModelPropsValidators)(this.modelClass);
|
|
29
29
|
}
|
|
30
|
-
get
|
|
31
|
-
return (0, meta_1.
|
|
30
|
+
get ownStaticEntries() {
|
|
31
|
+
return (0, meta_1.resolveOwnStaticEntries)(this.modelClass);
|
|
32
32
|
}
|
|
33
|
-
get
|
|
34
|
-
return (0, meta_1.
|
|
33
|
+
get ownPropertyAccessors() {
|
|
34
|
+
return (0, meta_1.resolveOwnPropertyAccessors)(this.modelClass.prototype);
|
|
35
35
|
}
|
|
36
|
-
get
|
|
37
|
-
return (0, meta_1.
|
|
36
|
+
get propertyAccessors() {
|
|
37
|
+
return (0, meta_1.resolvePropertyAccessors)(this.modelClass.prototype);
|
|
38
38
|
}
|
|
39
39
|
get propsType() {
|
|
40
|
-
return (0, meta_1.
|
|
40
|
+
return (0, meta_1.resolveModelPropsType)(this.modelClass);
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
exports.ModelDescriptor = ModelDescriptor;
|
package/base/model/model.js
CHANGED
|
@@ -19,7 +19,7 @@ class DomainModel {
|
|
|
19
19
|
this.definePropertyAccessors();
|
|
20
20
|
}
|
|
21
21
|
definePropertyAccessors() {
|
|
22
|
-
this.modelDescriptor.
|
|
22
|
+
this.modelDescriptor.propertyAccessors.forEach(({ targetKey, converter }, key) => {
|
|
23
23
|
this.definePropAccessor(key, targetKey, converter);
|
|
24
24
|
});
|
|
25
25
|
}
|
package/base/model-registry.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export declare class ModelStore<T extends AnyDomainModel = AnyDomainModel> exten
|
|
|
8
8
|
}
|
|
9
9
|
export declare class ModelRegistry {
|
|
10
10
|
private store;
|
|
11
|
-
|
|
11
|
+
resolveModelVersions<T extends AnyDomainModel = AnyDomainModel>(modelName: ModelName): ModelVersions<T>;
|
|
12
12
|
private resolveModelId;
|
|
13
13
|
getModel<T extends AnyDomainModel = AnyDomainModel>(modelName: ModelName, modelVersion?: ModelVersion): DomainModelClass<T> | undefined;
|
|
14
14
|
getModelByModelId<T extends AnyDomainModel = AnyDomainModel>(modelId: ModelId): DomainModelClass<T> | undefined;
|
package/base/model-registry.js
CHANGED
|
@@ -16,7 +16,7 @@ class ModelRegistry {
|
|
|
16
16
|
constructor() {
|
|
17
17
|
this.store = new ModelStore();
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
resolveModelVersions(modelName) {
|
|
20
20
|
const current = () => this.store.get(modelName);
|
|
21
21
|
if (!current())
|
|
22
22
|
this.store.set(modelName, new ModelVersions(modelName));
|
|
@@ -29,7 +29,7 @@ class ModelRegistry {
|
|
|
29
29
|
return meta_1.$ModelId.fromValue(p1.modelDescriptor().modelId);
|
|
30
30
|
}
|
|
31
31
|
getModel(modelName, modelVersion = 0) {
|
|
32
|
-
const versions = this.
|
|
32
|
+
const versions = this.resolveModelVersions(modelName);
|
|
33
33
|
return versions.get(modelVersion);
|
|
34
34
|
}
|
|
35
35
|
getModelByModelId(modelId) {
|
|
@@ -49,7 +49,7 @@ class ModelRegistry {
|
|
|
49
49
|
const modelVersion = modelClass.modelDescriptor().modelVersion;
|
|
50
50
|
if (this.hasRegisteredModel(modelName, modelVersion))
|
|
51
51
|
throw new Error(`Cannot register: Model ${modelName} with version ${modelVersion} is already registered.`);
|
|
52
|
-
const versions = this.
|
|
52
|
+
const versions = this.resolveModelVersions(modelName);
|
|
53
53
|
versions.set(modelVersion, modelClass);
|
|
54
54
|
return this;
|
|
55
55
|
}
|
|
@@ -57,7 +57,7 @@ class ModelRegistry {
|
|
|
57
57
|
const { modelName, modelVersion } = this.resolveModelId(p1, p2);
|
|
58
58
|
if (!this.hasRegisteredModel(modelName, modelVersion))
|
|
59
59
|
return;
|
|
60
|
-
const versions = this.
|
|
60
|
+
const versions = this.resolveModelVersions(modelName);
|
|
61
61
|
versions.delete(modelVersion);
|
|
62
62
|
}
|
|
63
63
|
clearModelVersions(modelName) {
|
|
@@ -25,7 +25,7 @@ function resolveUseClassValidatorArgs(p1, p2, target) {
|
|
|
25
25
|
else {
|
|
26
26
|
validatorOptions = p1;
|
|
27
27
|
}
|
|
28
|
-
propsType ?? (propsType = (0, base_1.
|
|
28
|
+
propsType ?? (propsType = (0, base_1.resolveModelPropsType)(target));
|
|
29
29
|
if (!propsType) {
|
|
30
30
|
throw new Error(`Props type must be provided or defined for ${target.name}`);
|
|
31
31
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from "./
|
|
2
|
-
export * from "./
|
|
3
|
-
export * from "./
|
|
1
|
+
export * from "./is-enum";
|
|
2
|
+
export * from "./is-event";
|
|
3
|
+
export * from "./when";
|
package/core/decorators/index.js
CHANGED
|
@@ -14,6 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
18
|
-
__exportStar(require("./
|
|
19
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./is-enum"), exports);
|
|
18
|
+
__exportStar(require("./is-event"), exports);
|
|
19
|
+
__exportStar(require("./when"), exports);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { EnumClassWithTypedConstructor, EnumProperty, EnumValue } from "
|
|
1
|
+
import { EnumClassWithTypedConstructor, EnumProperty, EnumValue } from "..";
|
|
2
2
|
export declare const IsEnum: (value?: EnumValue) => <T extends EnumClassWithTypedConstructor>(target: T, key: EnumProperty<T>) => void;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.IsEnum = void 0;
|
|
4
|
-
const base_1 = require("
|
|
5
|
-
const
|
|
4
|
+
const base_1 = require("../../base");
|
|
5
|
+
const __1 = require("..");
|
|
6
6
|
const IsEnum = (value) => {
|
|
7
7
|
return (target, key) => {
|
|
8
|
-
(0,
|
|
8
|
+
(0, __1.markEnumProperty)(target, key);
|
|
9
9
|
const enumBuilder = () => new target(value ?? key);
|
|
10
10
|
(0, base_1.Static)(enumBuilder)(target, key);
|
|
11
11
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.IsEvent = void 0;
|
|
4
|
-
const base_1 = require("
|
|
5
|
-
const meta_1 = require("
|
|
4
|
+
const base_1 = require("../../base");
|
|
5
|
+
const meta_1 = require("../meta");
|
|
6
6
|
const IsEvent = (eventType, modelOptions) => {
|
|
7
7
|
return (target) => {
|
|
8
8
|
(0, meta_1.defineEventType)(target, eventType);
|