ddd-node 12.2.1 → 13.0.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/dist/core/aggregate.js +1 -1
- package/dist/core/enum.d.ts +5 -3
- package/dist/core/enum.js +6 -3
- package/dist/core/index.d.ts +0 -1
- package/dist/core/index.js +0 -1
- package/dist/core/model/model-with-id.js +2 -2
- package/dist/core/model/model.d.ts +2 -1
- package/dist/core/model/model.js +4 -3
- package/dist/decorators/aggregate/handle.d.ts +2 -0
- package/dist/decorators/aggregate/handle.js +13 -0
- package/dist/decorators/aggregate/index.d.ts +2 -0
- package/dist/decorators/aggregate/index.js +18 -0
- package/dist/decorators/aggregate/when.d.ts +2 -0
- package/dist/decorators/aggregate/when.js +13 -0
- package/dist/decorators/id.d.ts +1 -1
- package/dist/decorators/id.js +3 -3
- package/dist/decorators/model/helpers/static-values.d.ts +12 -0
- package/dist/decorators/model/helpers/static-values.js +30 -0
- package/dist/decorators/model/index.d.ts +5 -0
- package/dist/decorators/model/index.js +21 -0
- package/dist/decorators/{model.d.ts → model/model.d.ts} +3 -6
- package/dist/decorators/model/model.js +26 -0
- package/dist/decorators/model/name.d.ts +2 -0
- package/dist/decorators/model/name.js +10 -0
- package/dist/decorators/model/prop.d.ts +1 -0
- package/dist/decorators/model/prop.js +8 -0
- package/dist/decorators/model/static.d.ts +3 -0
- package/dist/decorators/model/static.js +39 -0
- package/dist/decorators/model/types/static-typed-target.d.ts +5 -0
- package/dist/decorators/model/types/static-typed-target.js +3 -0
- package/dist/decorators/model/types/static-value-builder.d.ts +2 -0
- package/dist/decorators/model/types/static-value-builder.js +2 -0
- package/dist/decorators/model/validate.d.ts +3 -0
- package/dist/decorators/model/validate.js +11 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/{core/metadata → meta}/aggregate.metadata.d.ts +1 -2
- package/dist/{core/metadata → meta}/aggregate.metadata.js +1 -0
- package/dist/{core/metadata → meta}/id.metadata.d.ts +1 -1
- package/dist/{core/metadata → meta}/model.metadata.d.ts +1 -1
- package/package.json +1 -1
- package/tsconfig.json +1 -0
- package/dist/decorators/aggregate.d.ts +0 -3
- package/dist/decorators/aggregate.js +0 -22
- package/dist/decorators/model.js +0 -73
- /package/dist/{core/metadata → meta}/id.metadata.js +0 -0
- /package/dist/{core/metadata → meta}/index.d.ts +0 -0
- /package/dist/{core/metadata → meta}/index.js +0 -0
- /package/dist/{core/metadata → meta}/model.metadata.js +0 -0
package/dist/core/aggregate.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.AggregateESBase = exports.AggregateBase = exports.AggregateCore = void 0;
|
|
4
4
|
const _utils_1 = require("../utils/index");
|
|
5
5
|
const entity_1 = require("./entity");
|
|
6
|
-
const aggregate_metadata_1 = require("
|
|
6
|
+
const aggregate_metadata_1 = require("../meta/aggregate.metadata");
|
|
7
7
|
class AggregateCore extends entity_1.EntityBase {
|
|
8
8
|
constructor(metadata, props) {
|
|
9
9
|
super(metadata, props);
|
package/dist/core/enum.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { Class } from "type-fest";
|
|
2
|
-
import { ValueObjectBase } from "./value-object";
|
|
3
1
|
import { ClassStatic } from "../types/index";
|
|
2
|
+
import { Class } from "type-fest";
|
|
3
|
+
import { ModelBase } from "./model";
|
|
4
4
|
export type EnumValue = string | number;
|
|
5
5
|
export interface EnumProps<V extends EnumValue> {
|
|
6
6
|
value: V;
|
|
7
7
|
}
|
|
8
|
-
export declare class EnumBase<V extends EnumValue = EnumValue> extends
|
|
8
|
+
export declare class EnumBase<V extends EnumValue = EnumValue> extends ModelBase<EnumProps<V>> {
|
|
9
|
+
static values<T extends EnumBase>(): void;
|
|
10
|
+
static parse<T extends EnumBase>(this: EnumClass<T>, value: EnumValue): void;
|
|
9
11
|
constructor(value: V);
|
|
10
12
|
value: V;
|
|
11
13
|
}
|
package/dist/core/enum.js
CHANGED
|
@@ -11,10 +11,13 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.EnumBase = void 0;
|
|
13
13
|
const _decorators_1 = require("../decorators/index");
|
|
14
|
-
const
|
|
15
|
-
class EnumBase extends
|
|
14
|
+
const model_1 = require("./model");
|
|
15
|
+
class EnumBase extends model_1.ModelBase {
|
|
16
|
+
static values() { }
|
|
17
|
+
static parse(value) { }
|
|
16
18
|
constructor(value) {
|
|
17
|
-
super(
|
|
19
|
+
super();
|
|
20
|
+
this.initializeProps({ value });
|
|
18
21
|
}
|
|
19
22
|
}
|
|
20
23
|
exports.EnumBase = EnumBase;
|
package/dist/core/index.d.ts
CHANGED
package/dist/core/index.js
CHANGED
|
@@ -14,7 +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("./metadata"), exports);
|
|
18
17
|
__exportStar(require("./model"), exports);
|
|
19
18
|
__exportStar(require("./id"), exports);
|
|
20
19
|
__exportStar(require("./error"), exports);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ModelWithId = void 0;
|
|
4
|
+
const _meta_1 = require("../../meta/index");
|
|
4
5
|
const id_1 = require("../id");
|
|
5
|
-
const id_metadata_1 = require("../metadata/id.metadata");
|
|
6
6
|
const model_1 = require("./model");
|
|
7
7
|
class ModelWithId extends model_1.ModelBase {
|
|
8
8
|
constructor(id) {
|
|
@@ -10,7 +10,7 @@ class ModelWithId extends model_1.ModelBase {
|
|
|
10
10
|
this._id = id;
|
|
11
11
|
}
|
|
12
12
|
static getIdGenerator() {
|
|
13
|
-
return (0,
|
|
13
|
+
return (0, _meta_1.getIdGenerator)(this) || new id_1.Uuid4Generator();
|
|
14
14
|
}
|
|
15
15
|
static id(id) {
|
|
16
16
|
const generator = this.getIdGenerator();
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { ModelMetadata } from "../../meta/index";
|
|
1
2
|
import { ClassStatic } from "../../types/index";
|
|
2
3
|
import { Class } from "type-fest";
|
|
3
|
-
import { ModelMetadata } from "../metadata/model.metadata";
|
|
4
4
|
export declare class ModelBase<Props extends object> {
|
|
5
|
+
static readonly STATIC_VALUES_KEY: "__STATIC_VALUES__";
|
|
5
6
|
static readonly EMPTY_PROPS: {};
|
|
6
7
|
private _metadata;
|
|
7
8
|
private _propKeys;
|
package/dist/core/model/model.js
CHANGED
|
@@ -4,8 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.ModelBase = void 0;
|
|
7
|
+
const _meta_1 = require("../../meta/index");
|
|
7
8
|
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
-
const model_metadata_1 = require("../metadata/model.metadata");
|
|
9
9
|
class ModelBase {
|
|
10
10
|
static isMutable() {
|
|
11
11
|
return false;
|
|
@@ -37,7 +37,7 @@ class ModelBase {
|
|
|
37
37
|
}
|
|
38
38
|
getPropKeys() {
|
|
39
39
|
if (!this._propKeys) {
|
|
40
|
-
this._propKeys = (0,
|
|
40
|
+
this._propKeys = (0, _meta_1.getPropKeySet)(Reflect.getPrototypeOf(this));
|
|
41
41
|
}
|
|
42
42
|
return this._propKeys;
|
|
43
43
|
}
|
|
@@ -51,7 +51,7 @@ class ModelBase {
|
|
|
51
51
|
}
|
|
52
52
|
getModelMetadata() {
|
|
53
53
|
if (!this._metadata) {
|
|
54
|
-
this._metadata = (0,
|
|
54
|
+
this._metadata = (0, _meta_1.getModelMetadata)(this.constructor);
|
|
55
55
|
}
|
|
56
56
|
return this._metadata;
|
|
57
57
|
}
|
|
@@ -86,4 +86,5 @@ class ModelBase {
|
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
exports.ModelBase = ModelBase;
|
|
89
|
+
ModelBase.STATIC_VALUES_KEY = "__STATIC_VALUES__";
|
|
89
90
|
ModelBase.EMPTY_PROPS = {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { AnyCommand, CommandClass, CommandHandler } from "../../core/index";
|
|
2
|
+
export declare const Handle: <T extends AnyCommand>(commandClass: CommandClass<T>) => <U extends CommandHandler<T>>(target: object, propertyKey: string, descriptor: TypedPropertyDescriptor<U>) => void;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Handle = void 0;
|
|
4
|
+
const _meta_1 = require("../../meta/index");
|
|
5
|
+
const Handle = (commandClass) => {
|
|
6
|
+
return (target, propertyKey, descriptor) => {
|
|
7
|
+
if (typeof descriptor.value === "function") {
|
|
8
|
+
const commandName = (0, _meta_1.getModelName)(commandClass);
|
|
9
|
+
(0, _meta_1.defineCommandHandler)(target, commandName, descriptor.value);
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
exports.Handle = Handle;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./handle"), exports);
|
|
18
|
+
__exportStar(require("./when"), exports);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.When = void 0;
|
|
4
|
+
const _meta_1 = require("../../meta/index");
|
|
5
|
+
const When = (eventClass) => {
|
|
6
|
+
return (target, propertyKey, descriptor) => {
|
|
7
|
+
if (typeof descriptor.value === "function") {
|
|
8
|
+
const eventName = (0, _meta_1.getModelName)(eventClass);
|
|
9
|
+
(0, _meta_1.defineEventApplier)(target, eventName, descriptor.value);
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
exports.When = When;
|
package/dist/decorators/id.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { AnyModelWithId, IdGeneratorBase, ModelClass } from "../core/index";
|
|
2
|
-
export declare const UseId: (
|
|
2
|
+
export declare const UseId: (generator: IdGeneratorBase) => <T extends AnyModelWithId>(target: ModelClass<T>) => void;
|
package/dist/decorators/id.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UseId = void 0;
|
|
4
|
-
const
|
|
5
|
-
const UseId = (
|
|
4
|
+
const _meta_1 = require("../meta/index");
|
|
5
|
+
const UseId = (generator) => {
|
|
6
6
|
return (target) => {
|
|
7
|
-
(0,
|
|
7
|
+
(0, _meta_1.defineIdGenerator)(target, generator);
|
|
8
8
|
};
|
|
9
9
|
};
|
|
10
10
|
exports.UseId = UseId;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AnyModel, ModelClass } from "../../../core/index";
|
|
2
|
+
import { StaticValueBuilder } from "../types/static-value-builder";
|
|
3
|
+
export declare class StaticValues<T extends AnyModel> {
|
|
4
|
+
private readonly _target;
|
|
5
|
+
private readonly _values;
|
|
6
|
+
constructor(target: ModelClass<T>);
|
|
7
|
+
get target(): ModelClass<T>;
|
|
8
|
+
get values(): Map<string | symbol, T | StaticValueBuilder<T>>;
|
|
9
|
+
getValue(key: string | symbol): T | StaticValueBuilder<T> | undefined;
|
|
10
|
+
setValue(key: string | symbol, value: T | StaticValueBuilder<T>): void;
|
|
11
|
+
hasValueOf(key: string | symbol): boolean;
|
|
12
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StaticValues = void 0;
|
|
4
|
+
class StaticValues {
|
|
5
|
+
constructor(target) {
|
|
6
|
+
this._target = target;
|
|
7
|
+
this._values = new Map();
|
|
8
|
+
}
|
|
9
|
+
get target() {
|
|
10
|
+
return this._target;
|
|
11
|
+
}
|
|
12
|
+
get values() {
|
|
13
|
+
return this._values;
|
|
14
|
+
}
|
|
15
|
+
getValue(key) {
|
|
16
|
+
const valueOrBulider = this._values.get(key);
|
|
17
|
+
if (typeof valueOrBulider === "function") {
|
|
18
|
+
const value = valueOrBulider();
|
|
19
|
+
this.setValue(key, value);
|
|
20
|
+
}
|
|
21
|
+
return this._values.get(key);
|
|
22
|
+
}
|
|
23
|
+
setValue(key, value) {
|
|
24
|
+
this._values.set(key, value);
|
|
25
|
+
}
|
|
26
|
+
hasValueOf(key) {
|
|
27
|
+
return this._values.has(key);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.StaticValues = StaticValues;
|
|
@@ -0,0 +1,21 @@
|
|
|
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("./prop"), exports);
|
|
18
|
+
__exportStar(require("./name"), exports);
|
|
19
|
+
__exportStar(require("./validate"), exports);
|
|
20
|
+
__exportStar(require("./model"), exports);
|
|
21
|
+
__exportStar(require("./static"), exports);
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { AnyModel, ModelClass
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export declare const Name: (name?: string) => <T extends AnyModel>(target: ModelClass<T>) => void;
|
|
5
|
-
export declare const Validate: <T extends AnyModel>(validator?: PropsValidator<T> | undefined) => (target: ModelClass<T>) => void;
|
|
1
|
+
import { AnyModel, ModelClass } from "../../core/index";
|
|
2
|
+
import { PropsValidator } from "../../meta/index";
|
|
3
|
+
import { TypedClassDecorator } from "../type";
|
|
6
4
|
export type ModelOptions<T extends AnyModel> = {
|
|
7
5
|
name?: string;
|
|
8
6
|
validator?: PropsValidator<T>;
|
|
@@ -10,4 +8,3 @@ export type ModelOptions<T extends AnyModel> = {
|
|
|
10
8
|
export declare function Model<T extends ModelClass, I extends InstanceType<T> = InstanceType<T>>(options?: ModelOptions<I>): TypedClassDecorator<T>;
|
|
11
9
|
export declare function Model<T extends ModelClass, I extends InstanceType<T> = InstanceType<T>>(name?: string, validator?: PropsValidator<I>): TypedClassDecorator<T>;
|
|
12
10
|
export declare function Model<T extends ModelClass, I extends InstanceType<T> = InstanceType<T>>(name?: string, options?: Omit<ModelOptions<I>, "name">): TypedClassDecorator<T>;
|
|
13
|
-
export declare const Static: <T extends ModelClass, I extends InstanceType<T> = InstanceType<T>>(builder: () => I) => (target: T, key: Extract<keyof T, string>) => void;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Model = void 0;
|
|
4
|
+
const model_1 = require("../model");
|
|
5
|
+
function Model(p1, p2) {
|
|
6
|
+
return (target) => {
|
|
7
|
+
let options = {};
|
|
8
|
+
if (p1 && !p2) {
|
|
9
|
+
if (typeof p1 === "string")
|
|
10
|
+
options = { name: p1 };
|
|
11
|
+
else
|
|
12
|
+
options = p1;
|
|
13
|
+
}
|
|
14
|
+
else if (p1 && p2) {
|
|
15
|
+
p1 = p1;
|
|
16
|
+
if (typeof p2 === "function")
|
|
17
|
+
options = { name: p1, validator: p2 };
|
|
18
|
+
else
|
|
19
|
+
options = Object.assign({ name: p1 }, p2);
|
|
20
|
+
}
|
|
21
|
+
const { name, validator } = options;
|
|
22
|
+
(0, model_1.Name)(name)(target);
|
|
23
|
+
(0, model_1.Validate)(validator)(target);
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
exports.Model = Model;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Name = void 0;
|
|
4
|
+
const _meta_1 = require("../../meta/index");
|
|
5
|
+
const Name = (name) => {
|
|
6
|
+
return (target) => {
|
|
7
|
+
(0, _meta_1.setModelName)(target, name !== null && name !== void 0 ? name : target.name);
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
exports.Name = Name;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const Prop: (target: object, propKey: string) => void;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { ModelClass } from "../../core/index";
|
|
2
|
+
import { StaticValueBuilder } from "./types/static-value-builder";
|
|
3
|
+
export declare const Static: <T extends ModelClass, I extends InstanceType<T> = InstanceType<T>>(builder: StaticValueBuilder<I>) => (target: T, key: string) => void;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Static = void 0;
|
|
4
|
+
const static_values_1 = require("./helpers/static-values");
|
|
5
|
+
// Lazy builder for static value (value of static prop is an instance of that model)
|
|
6
|
+
const Static = (builder) => {
|
|
7
|
+
return (target, key) => {
|
|
8
|
+
const STATIC_VALUES_KEY = target.STATIC_VALUES_KEY;
|
|
9
|
+
const typedTarget = target;
|
|
10
|
+
let staticValues = typedTarget[STATIC_VALUES_KEY];
|
|
11
|
+
if (!staticValues || staticValues.target !== target) {
|
|
12
|
+
Object.defineProperty(target, STATIC_VALUES_KEY, {
|
|
13
|
+
configurable: false,
|
|
14
|
+
enumerable: false,
|
|
15
|
+
writable: false,
|
|
16
|
+
value: new static_values_1.StaticValues(target),
|
|
17
|
+
});
|
|
18
|
+
staticValues = typedTarget[STATIC_VALUES_KEY];
|
|
19
|
+
}
|
|
20
|
+
staticValues.setValue(key, builder);
|
|
21
|
+
Object.defineProperty(target, key, {
|
|
22
|
+
configurable: false,
|
|
23
|
+
enumerable: true,
|
|
24
|
+
get() {
|
|
25
|
+
let loopTarget = typedTarget;
|
|
26
|
+
do {
|
|
27
|
+
const sValues = loopTarget[STATIC_VALUES_KEY];
|
|
28
|
+
if (!sValues)
|
|
29
|
+
return undefined;
|
|
30
|
+
if (sValues.hasValueOf(key))
|
|
31
|
+
return sValues.getValue(key);
|
|
32
|
+
loopTarget = Reflect.getPrototypeOf(loopTarget);
|
|
33
|
+
} while (loopTarget !== null);
|
|
34
|
+
return undefined;
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
exports.Static = Static;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ModelBase, ModelClass } from "../../../core/index";
|
|
2
|
+
import { StaticValues } from "../helpers/static-values";
|
|
3
|
+
export type StaticTypedTarget<T extends ModelClass = ModelClass, I extends InstanceType<T> = InstanceType<T>> = T & {
|
|
4
|
+
[ModelBase.STATIC_VALUES_KEY]?: StaticValues<I>;
|
|
5
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Validate = void 0;
|
|
4
|
+
const _meta_1 = require("../../meta/index");
|
|
5
|
+
const Validate = (validator) => {
|
|
6
|
+
return (target) => {
|
|
7
|
+
if (validator)
|
|
8
|
+
(0, _meta_1.setValidateProps)(target, validator);
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
exports.Validate = Validate;
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -14,6 +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("./meta"), exports);
|
|
17
18
|
__exportStar(require("./core"), exports);
|
|
18
19
|
__exportStar(require("./decorators"), exports);
|
|
19
20
|
__exportStar(require("./types"), exports);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
+
import { AnyCommand, AnyEvent, CommandHandler, EventApplier } from "../core/index";
|
|
1
2
|
import "reflect-metadata";
|
|
2
|
-
import { CommandHandler, EventApplier } from "../aggregate";
|
|
3
|
-
import { AnyCommand, AnyEvent } from "../message";
|
|
4
3
|
export declare const EventAppliersMetaKey: unique symbol;
|
|
5
4
|
export declare const getEventAppliersMap: (target: object) => Map<string, EventApplier>;
|
|
6
5
|
export declare const defineEventApplier: <T extends AnyEvent>(target: object, eventName: string, applier: EventApplier<T>) => void;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.defineCommandHandler = exports.getCommandHandlersMap = exports.CommandHandlersMetaKey = exports.defineEventApplier = exports.getEventAppliersMap = exports.EventAppliersMetaKey = void 0;
|
|
4
4
|
require("reflect-metadata");
|
|
5
|
+
// Event applier map
|
|
5
6
|
exports.EventAppliersMetaKey = Symbol.for("EVENT_APPLIERS");
|
|
6
7
|
const getEventAppliersMap = (target) => {
|
|
7
8
|
return (Reflect.getMetadata(exports.EventAppliersMetaKey, target) ||
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IdGeneratorBase } from "../
|
|
1
|
+
import { IdGeneratorBase } from "../core/index";
|
|
2
2
|
export declare const IdGeneratorMetaKey: unique symbol;
|
|
3
3
|
export declare const defineIdGenerator: (target: object, idGenerator: IdGeneratorBase) => void;
|
|
4
4
|
export declare const getIdGenerator: (target: object) => any;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AnyModel, PropsOf } from "../
|
|
1
|
+
import { AnyModel, PropsOf } from "../core/index";
|
|
2
2
|
export declare const getPropKeySet: (target: object | null) => Set<string | symbol>;
|
|
3
3
|
export declare const setPropKey: (target: object, propKey: string) => void;
|
|
4
4
|
export declare const setModelName: (target: object, name: string) => void;
|
package/package.json
CHANGED
package/tsconfig.json
CHANGED
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
"baseUrl": "./" /* Specify the base directory to resolve non-relative module names. */,
|
|
32
32
|
"paths": {
|
|
33
33
|
"#core": ["src/core/index"],
|
|
34
|
+
"#meta": ["src/meta/index"],
|
|
34
35
|
"#decorators": ["src/decorators/index"],
|
|
35
36
|
"#utils": ["src/utils/index"],
|
|
36
37
|
"#types": ["src/types/index"]
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { AnyCommand, AnyEvent, CommandClass, CommandHandler, EventApplier, EventClass } from "../core/index";
|
|
2
|
-
export declare const ApplyEvent: <T extends AnyEvent>(eventClass: EventClass<T>) => <U extends EventApplier<T>>(target: object, propertyKey: string, descriptor: TypedPropertyDescriptor<U>) => void;
|
|
3
|
-
export declare const HandleCommand: <T extends AnyCommand>(commandClass: CommandClass<T>) => <U extends CommandHandler<T>>(target: object, propertyKey: string, descriptor: TypedPropertyDescriptor<U>) => void;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HandleCommand = exports.ApplyEvent = void 0;
|
|
4
|
-
const _core_1 = require("../core/index");
|
|
5
|
-
const ApplyEvent = (eventClass) => {
|
|
6
|
-
return (target, propertyKey, descriptor) => {
|
|
7
|
-
if (typeof descriptor.value === "function") {
|
|
8
|
-
const eventName = (0, _core_1.getModelName)(eventClass);
|
|
9
|
-
(0, _core_1.defineEventApplier)(target, eventName, descriptor.value);
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
};
|
|
13
|
-
exports.ApplyEvent = ApplyEvent;
|
|
14
|
-
const HandleCommand = (commandClass) => {
|
|
15
|
-
return (target, propertyKey, descriptor) => {
|
|
16
|
-
if (typeof descriptor.value === "function") {
|
|
17
|
-
const commandName = (0, _core_1.getModelName)(commandClass);
|
|
18
|
-
(0, _core_1.defineCommandHandler)(target, commandName, descriptor.value);
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
exports.HandleCommand = HandleCommand;
|
package/dist/decorators/model.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Static = exports.Model = exports.Validate = exports.Name = exports.Prop = void 0;
|
|
4
|
-
const _core_1 = require("../core/index");
|
|
5
|
-
const Prop = (target, propKey) => {
|
|
6
|
-
(0, _core_1.setPropKey)(target, propKey);
|
|
7
|
-
};
|
|
8
|
-
exports.Prop = Prop;
|
|
9
|
-
const Name = (name) => {
|
|
10
|
-
return (target) => {
|
|
11
|
-
(0, _core_1.setModelName)(target, name !== null && name !== void 0 ? name : target.name);
|
|
12
|
-
};
|
|
13
|
-
};
|
|
14
|
-
exports.Name = Name;
|
|
15
|
-
const Validate = (validator) => {
|
|
16
|
-
return (target) => {
|
|
17
|
-
if (validator)
|
|
18
|
-
(0, _core_1.setValidateProps)(target, validator);
|
|
19
|
-
};
|
|
20
|
-
};
|
|
21
|
-
exports.Validate = Validate;
|
|
22
|
-
function Model(p1, p2) {
|
|
23
|
-
return (target) => {
|
|
24
|
-
let options = {};
|
|
25
|
-
if (p1 && !p2) {
|
|
26
|
-
if (typeof p1 === "string")
|
|
27
|
-
options = { name: p1 };
|
|
28
|
-
else
|
|
29
|
-
options = p1;
|
|
30
|
-
}
|
|
31
|
-
else if (p1 && p2) {
|
|
32
|
-
p1 = p1;
|
|
33
|
-
if (typeof p2 === "function")
|
|
34
|
-
options = { name: p1, validator: p2 };
|
|
35
|
-
else
|
|
36
|
-
options = Object.assign({ name: p1 }, p2);
|
|
37
|
-
}
|
|
38
|
-
const { name, validator } = options;
|
|
39
|
-
(0, exports.Name)(name)(target);
|
|
40
|
-
(0, exports.Validate)(validator)(target);
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
exports.Model = Model;
|
|
44
|
-
// Lazy builder for static value (value of static prop is an instance of that model)
|
|
45
|
-
const Static = (builder) => {
|
|
46
|
-
return (target, key) => {
|
|
47
|
-
const type = Reflect.getMetadata("design:type", target, key);
|
|
48
|
-
const STATIC_VALUES_KEY = "_staticValues";
|
|
49
|
-
const typedTarget = target;
|
|
50
|
-
if (!typedTarget[STATIC_VALUES_KEY])
|
|
51
|
-
Object.defineProperty(target, STATIC_VALUES_KEY, {
|
|
52
|
-
configurable: false,
|
|
53
|
-
enumerable: false,
|
|
54
|
-
writable: false,
|
|
55
|
-
value: new Map(),
|
|
56
|
-
});
|
|
57
|
-
Object.defineProperty(target, key, {
|
|
58
|
-
configurable: false,
|
|
59
|
-
enumerable: true,
|
|
60
|
-
get() {
|
|
61
|
-
const staticValues = typedTarget[STATIC_VALUES_KEY];
|
|
62
|
-
if (!staticValues.has(key)) {
|
|
63
|
-
const value = builder();
|
|
64
|
-
if (!(value instanceof type))
|
|
65
|
-
throw new Error(`Invalid return type. The return of builder must be an instance of model ${type.modelName()} (class ${type.name})`);
|
|
66
|
-
staticValues.set(key, value);
|
|
67
|
-
}
|
|
68
|
-
return staticValues.get(key);
|
|
69
|
-
},
|
|
70
|
-
});
|
|
71
|
-
};
|
|
72
|
-
};
|
|
73
|
-
exports.Static = Static;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|