ddd-node 18.0.0 → 20.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/aggregate-base/aggregate.builder.d.ts +7 -0
- package/dist/core/aggregate/aggregate-base/aggregate.builder.js +18 -0
- package/dist/core/aggregate/aggregate-base/aggregate.d.ts +16 -0
- package/dist/core/aggregate/{base.js → aggregate-base/aggregate.js} +12 -5
- package/dist/core/aggregate/aggregate-base/index.d.ts +2 -0
- package/dist/core/aggregate/aggregate-base/index.js +18 -0
- package/dist/core/aggregate/event-dispatcher.interface.d.ts +4 -0
- package/dist/core/aggregate/event-dispatcher.interface.js +2 -0
- package/dist/core/aggregate/event-sourced-aggregate/event-sourced-aggregate.builder.d.ts +12 -0
- package/dist/core/aggregate/event-sourced-aggregate/event-sourced-aggregate.builder.js +35 -0
- package/dist/core/aggregate/{event-sourced-aggregate.d.ts → event-sourced-aggregate/event-sourced-aggregate.d.ts} +11 -17
- package/dist/core/aggregate/{event-sourced-aggregate.js → event-sourced-aggregate/event-sourced-aggregate.js} +26 -48
- package/dist/core/aggregate/event-sourced-aggregate/event-sourced-aggregate.model-metadata.d.ts +9 -0
- package/dist/core/aggregate/event-sourced-aggregate/event-sourced-aggregate.model-metadata.js +22 -0
- package/dist/core/aggregate/event-sourced-aggregate/index.d.ts +3 -0
- package/dist/core/aggregate/event-sourced-aggregate/index.js +19 -0
- package/dist/core/aggregate/index.d.ts +2 -0
- package/dist/core/aggregate/index.js +2 -0
- package/dist/core/aggregate/state-aggregate/index.d.ts +2 -0
- package/dist/core/aggregate/state-aggregate/index.js +18 -0
- package/dist/core/aggregate/state-aggregate/state-aggregate.builder.d.ts +7 -0
- package/dist/core/aggregate/state-aggregate/state-aggregate.builder.js +19 -0
- package/dist/core/aggregate/{state-aggregate.d.ts → state-aggregate/state-aggregate.d.ts} +5 -9
- package/dist/core/aggregate/{state-aggregate.js → state-aggregate/state-aggregate.js} +2 -8
- package/dist/core/aggregate/types.d.ts +3 -3
- package/dist/core/entity/entity.builder.d.ts +9 -0
- package/dist/core/entity/entity.builder.js +17 -0
- package/dist/core/{entity.d.ts → entity/entity.d.ts} +4 -5
- package/dist/core/entity/entity.js +26 -0
- package/dist/core/entity/index.d.ts +2 -0
- package/dist/core/entity/index.js +18 -0
- package/dist/core/enum/enum.builder.d.ts +9 -0
- package/dist/core/enum/enum.builder.js +20 -0
- package/dist/core/enum/enum.d.ts +21 -0
- package/dist/core/enum/enum.js +60 -0
- package/dist/core/enum/index.d.ts +2 -0
- package/dist/core/enum/index.js +18 -0
- package/dist/core/id/index.d.ts +1 -1
- package/dist/core/id/index.js +1 -1
- package/dist/core/index.d.ts +3 -5
- package/dist/core/index.js +3 -5
- package/dist/core/message/command/command.builder.d.ts +7 -0
- package/dist/core/message/command/command.builder.js +20 -0
- package/dist/core/message/{command.d.ts → command/command.d.ts} +10 -7
- package/dist/core/message/command/command.js +27 -0
- package/dist/core/message/command/index.d.ts +2 -0
- package/dist/core/message/command/index.js +18 -0
- package/dist/core/message/event/event.builder.d.ts +9 -0
- package/dist/core/message/event/event.builder.js +27 -0
- package/dist/core/message/{event.d.ts → event/event.d.ts} +13 -10
- package/dist/core/message/event/event.js +31 -0
- package/dist/core/message/event/index.d.ts +2 -0
- package/dist/core/message/event/index.js +18 -0
- package/dist/core/message/index.d.ts +1 -1
- package/dist/core/message/index.js +1 -1
- package/dist/core/message/message-base/index.d.ts +2 -0
- package/dist/core/message/message-base/index.js +18 -0
- package/dist/core/message/message-base/message.builder.d.ts +16 -0
- package/dist/core/message/message-base/message.builder.js +45 -0
- package/dist/core/message/message-base/message.d.ts +31 -0
- package/dist/core/message/message-base/message.js +47 -0
- package/dist/core/model-with-id/index.d.ts +2 -0
- package/dist/core/model-with-id/index.js +18 -0
- package/dist/core/model-with-id/model-with-id.builder.d.ts +11 -0
- package/dist/core/model-with-id/model-with-id.builder.js +22 -0
- package/dist/core/{model → model-with-id}/model-with-id.d.ts +1 -3
- package/dist/core/{model → model-with-id}/model-with-id.js +1 -10
- package/dist/core/value-object/index.d.ts +2 -0
- package/dist/core/value-object/index.js +18 -0
- package/dist/core/value-object/value-object.builder.d.ts +7 -0
- package/dist/core/value-object/value-object.builder.js +16 -0
- package/dist/core/{value-object.d.ts → value-object/value-object.d.ts} +2 -2
- package/dist/core/value-object/value-object.js +40 -0
- package/dist/decorators/aggregate-es/handle.js +1 -1
- package/dist/decorators/aggregate-es/when.js +1 -1
- package/dist/decorators/enum.d.ts +1 -1
- package/dist/decorators/enum.js +2 -2
- package/dist/decorators/index.d.ts +0 -2
- package/dist/decorators/index.js +0 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/meta/index.d.ts +0 -1
- package/dist/meta/index.js +0 -1
- package/dist/model/core/index.d.ts +2 -0
- package/dist/{core/model → model/core}/index.js +1 -1
- package/dist/model/core/model.builder.d.ts +11 -0
- package/dist/model/core/model.builder.js +18 -0
- package/dist/model/core/model.d.ts +41 -0
- package/dist/{core/model → model/core}/model.js +36 -57
- package/dist/{decorators/model → model/decorators}/index.d.ts +1 -1
- package/dist/{decorators/model → model/decorators}/index.js +1 -1
- package/dist/{decorators/model → model/decorators}/model.d.ts +2 -2
- package/dist/{decorators/model → model/decorators}/model.js +5 -5
- package/dist/model/decorators/mutable.d.ts +2 -0
- package/dist/model/decorators/mutable.js +10 -0
- package/dist/{decorators/model → model/decorators}/prop.d.ts +1 -1
- package/dist/{decorators/model → model/decorators}/prop.js +1 -1
- package/dist/model/decorators/static.d.ts +3 -0
- package/dist/{decorators/model → model/decorators}/static.js +1 -1
- package/dist/model/index.d.ts +5 -0
- package/dist/model/index.js +21 -0
- package/dist/{meta/model → model/meta}/index.d.ts +1 -0
- package/dist/{meta/model → model/meta}/index.js +1 -0
- package/dist/{meta/model → model/meta}/model-domain.d.ts +1 -1
- package/dist/{meta/model → model/meta}/model-id.d.ts +1 -1
- package/dist/model/meta/model-mutable.d.ts +2 -0
- package/dist/model/meta/model-mutable.js +14 -0
- package/dist/{meta/model → model/meta}/model-name.d.ts +1 -1
- package/dist/{meta/model → model/meta}/model-props-map.d.ts +4 -4
- package/dist/{meta/model → model/meta}/model-props-map.js +1 -1
- package/dist/{meta/model → model/meta}/model-props-validator.d.ts +1 -1
- package/dist/{meta/model → model/meta}/model-static-values.d.ts +1 -1
- package/dist/{meta/model → model/meta}/model-version.d.ts +1 -1
- package/dist/{core → model}/model-registry.d.ts +5 -5
- package/dist/{core → model}/model-registry.js +5 -5
- package/dist/package.json +1 -1
- package/package.json +2 -2
- package/dist/core/aggregate/base.d.ts +0 -12
- package/dist/core/entity.js +0 -20
- package/dist/core/enum.d.ts +0 -18
- package/dist/core/enum.js +0 -45
- package/dist/core/message/command.js +0 -25
- package/dist/core/message/event.js +0 -30
- package/dist/core/message/message.d.ts +0 -23
- package/dist/core/message/message.js +0 -33
- package/dist/core/model/index.d.ts +0 -2
- package/dist/core/model/model.d.ts +0 -45
- package/dist/core/value-object.js +0 -27
- package/dist/decorators/id.d.ts +0 -2
- package/dist/decorators/id.js +0 -10
- package/dist/decorators/model/static.d.ts +0 -3
- /package/dist/core/id/{common → services}/index.d.ts +0 -0
- /package/dist/core/id/{common → services}/index.js +0 -0
- /package/dist/core/id/{common → services}/snowflake.d.ts +0 -0
- /package/dist/core/id/{common → services}/snowflake.js +0 -0
- /package/dist/core/id/{common → services}/uuid4.d.ts +0 -0
- /package/dist/core/id/{common → services}/uuid4.js +0 -0
- /package/dist/{core/model → model/core}/errors.d.ts +0 -0
- /package/dist/{core/model → model/core}/errors.js +0 -0
- /package/dist/{core → model}/domain.d.ts +0 -0
- /package/dist/{core → model}/domain.js +0 -0
- /package/dist/{meta/model → model/meta}/model-domain.js +0 -0
- /package/dist/{meta/model → model/meta}/model-id.js +0 -0
- /package/dist/{meta/model → model/meta}/model-name.js +0 -0
- /package/dist/{meta/model → model/meta}/model-props-validator.js +0 -0
- /package/dist/{meta/model → model/meta}/model-static-values.js +0 -0
- /package/dist/{meta/model → model/meta}/model-version.js +0 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModelWithIdBuilder = void 0;
|
|
4
|
+
const model_1 = require("../../model");
|
|
5
|
+
const id_1 = require("../id");
|
|
6
|
+
class ModelWithIdBuilder extends model_1.ModelBuilder {
|
|
7
|
+
getIdService() {
|
|
8
|
+
return this._idService ?? new id_1.Uuid4Service();
|
|
9
|
+
}
|
|
10
|
+
getId() {
|
|
11
|
+
return this._id ?? new id_1.Id(this.getIdService().generateValue());
|
|
12
|
+
}
|
|
13
|
+
withId(id) {
|
|
14
|
+
this._id = id;
|
|
15
|
+
return this;
|
|
16
|
+
}
|
|
17
|
+
withIdService(idService) {
|
|
18
|
+
this._idService = idService;
|
|
19
|
+
return this;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.ModelWithIdBuilder = ModelWithIdBuilder;
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
+
import { ModelBase, Props } from "../../model";
|
|
1
2
|
import { Id } from "../id";
|
|
2
|
-
import { ModelBase, Props } from "./model";
|
|
3
3
|
export declare class ModelWithId<P extends Props> extends ModelBase<P> {
|
|
4
4
|
protected readonly _id: Id;
|
|
5
5
|
constructor(id: Id);
|
|
6
|
-
static idService(): import("../id").IIdService;
|
|
7
|
-
static id(id?: Id | string): Id;
|
|
8
6
|
id(): Id;
|
|
9
7
|
hasId(id: Id): boolean;
|
|
10
8
|
}
|
|
@@ -1,21 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ModelWithId = void 0;
|
|
4
|
-
const
|
|
5
|
-
const id_1 = require("../id");
|
|
6
|
-
const model_1 = require("./model");
|
|
4
|
+
const model_1 = require("../../model");
|
|
7
5
|
class ModelWithId extends model_1.ModelBase {
|
|
8
6
|
constructor(id) {
|
|
9
7
|
super();
|
|
10
8
|
this._id = id;
|
|
11
9
|
}
|
|
12
|
-
static idService() {
|
|
13
|
-
return (0, meta_1.getIdService)(this);
|
|
14
|
-
}
|
|
15
|
-
static id(id) {
|
|
16
|
-
const idService = this.idService();
|
|
17
|
-
return new id_1.Id(id ?? idService.generateValue());
|
|
18
|
-
}
|
|
19
10
|
id() {
|
|
20
11
|
return this._id;
|
|
21
12
|
}
|
|
@@ -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("./value-object"), exports);
|
|
18
|
+
__exportStar(require("./value-object.builder"), exports);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ModelBuilder } from "../../model";
|
|
2
|
+
import { AnyValueObject, ValueObjectClassWithTypedConstructor } from "./value-object";
|
|
3
|
+
export declare class ValueObjectBuilder<T extends AnyValueObject> extends ModelBuilder<T> {
|
|
4
|
+
private valueObjectClass;
|
|
5
|
+
constructor(valueObjectClass: ValueObjectClassWithTypedConstructor<T>);
|
|
6
|
+
build(): T;
|
|
7
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ValueObjectBuilder = void 0;
|
|
4
|
+
const model_1 = require("../../model");
|
|
5
|
+
class ValueObjectBuilder extends model_1.ModelBuilder {
|
|
6
|
+
constructor(valueObjectClass) {
|
|
7
|
+
super();
|
|
8
|
+
this.valueObjectClass = valueObjectClass;
|
|
9
|
+
}
|
|
10
|
+
build() {
|
|
11
|
+
if (!this._props)
|
|
12
|
+
throw new Error("The props must be set before build");
|
|
13
|
+
return new this.valueObjectClass(this._props);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.ValueObjectBuilder = ValueObjectBuilder;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Class } from "type-fest";
|
|
2
|
-
import { ModelBase, Props, PropsOf } from "
|
|
3
|
-
import { ClassStatic } from "
|
|
2
|
+
import { ModelBase, Props, PropsOf } from "../../model";
|
|
3
|
+
import { ClassStatic } from "../../types";
|
|
4
4
|
export declare class ValueObjectBase<P extends Props> extends ModelBase<P> {
|
|
5
5
|
constructor(props: P);
|
|
6
6
|
props(): P;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ValueObjectBase = void 0;
|
|
16
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
17
|
+
const model_1 = require("../../model");
|
|
18
|
+
let ValueObjectBase = class ValueObjectBase extends model_1.ModelBase {
|
|
19
|
+
constructor(props) {
|
|
20
|
+
super();
|
|
21
|
+
this.initializeProps(props);
|
|
22
|
+
}
|
|
23
|
+
props() {
|
|
24
|
+
return super.props();
|
|
25
|
+
}
|
|
26
|
+
equals(vo) {
|
|
27
|
+
const equalsType = vo instanceof this.constructor;
|
|
28
|
+
const equalsValue = JSON.stringify(vo.props()) === JSON.stringify(this.props());
|
|
29
|
+
return equalsType && equalsValue;
|
|
30
|
+
}
|
|
31
|
+
with(props) {
|
|
32
|
+
const newProps = lodash_1.default.merge(this.props(), props);
|
|
33
|
+
return new this.constructor(newProps);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
exports.ValueObjectBase = ValueObjectBase;
|
|
37
|
+
exports.ValueObjectBase = ValueObjectBase = __decorate([
|
|
38
|
+
(0, model_1.Mutable)(false),
|
|
39
|
+
__metadata("design:paramtypes", [Object])
|
|
40
|
+
], ValueObjectBase);
|
|
@@ -5,7 +5,7 @@ const meta_1 = require("../../meta");
|
|
|
5
5
|
const Handle = (commandClass) => {
|
|
6
6
|
return (target, propertyKey, descriptor) => {
|
|
7
7
|
if (typeof descriptor.value === "function") {
|
|
8
|
-
const commandType = commandClass.
|
|
8
|
+
const { commandType } = commandClass.commandModelMetadata();
|
|
9
9
|
(0, meta_1.defineCommandHandler)(target, commandType, descriptor.value);
|
|
10
10
|
}
|
|
11
11
|
};
|
|
@@ -5,7 +5,7 @@ const meta_1 = require("../../meta");
|
|
|
5
5
|
const When = (eventClass) => {
|
|
6
6
|
return (target, propertyKey, descriptor) => {
|
|
7
7
|
if (typeof descriptor.value === "function") {
|
|
8
|
-
const eventType = eventClass.
|
|
8
|
+
const { eventType } = eventClass.eventModelMetadata();
|
|
9
9
|
(0, meta_1.defineEventApplier)(target, eventType, descriptor.value);
|
|
10
10
|
}
|
|
11
11
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { EnumClass, EnumValue } from "../core";
|
|
2
|
-
export declare const Enum: (value: EnumValue) => <T extends EnumClass<import("../core").EnumBase>>(target: T, key: string) => void;
|
|
2
|
+
export declare const Enum: (value: EnumValue) => <T extends EnumClass<import("../core").EnumBase, any[]>>(target: T, key: string) => void;
|
package/dist/decorators/enum.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Enum = void 0;
|
|
4
|
-
const
|
|
4
|
+
const model_1 = require("../model");
|
|
5
5
|
const Enum = (value) => {
|
|
6
6
|
return (target, key) => {
|
|
7
|
-
(0,
|
|
7
|
+
(0, model_1.Static)(() => new target(value))(target, key);
|
|
8
8
|
};
|
|
9
9
|
};
|
|
10
10
|
exports.Enum = Enum;
|
package/dist/decorators/index.js
CHANGED
|
@@ -15,7 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./aggregate-es"), exports);
|
|
18
|
-
__exportStar(require("./id"), exports);
|
|
19
|
-
__exportStar(require("./model"), exports);
|
|
20
18
|
__exportStar(require("./message"), exports);
|
|
21
19
|
__exportStar(require("./enum"), exports);
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
16
16
|
};
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
__exportStar(require("./model"), exports);
|
|
18
19
|
__exportStar(require("./meta"), exports);
|
|
19
20
|
__exportStar(require("./types"), exports);
|
|
20
21
|
__exportStar(require("./utils"), exports);
|
package/dist/meta/index.d.ts
CHANGED
package/dist/meta/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("./model"), exports);
|
|
18
17
|
__exportStar(require("./aggregate-es"), exports);
|
|
19
18
|
__exportStar(require("./id.metadata"), exports);
|
|
20
19
|
__exportStar(require("./event.metadata"), exports);
|
|
@@ -15,4 +15,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./model"), exports);
|
|
18
|
-
__exportStar(require("./model
|
|
18
|
+
__exportStar(require("./model.builder"), exports);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AnyModel, PropsOf } from "./model";
|
|
2
|
+
export interface IModelBuilder<T extends AnyModel = AnyModel> {
|
|
3
|
+
buildSafe(): T | null;
|
|
4
|
+
build(): T;
|
|
5
|
+
}
|
|
6
|
+
export declare abstract class ModelBuilder<T extends AnyModel = AnyModel> implements IModelBuilder<T> {
|
|
7
|
+
protected _props?: PropsOf<T>;
|
|
8
|
+
withProps(props: PropsOf<T>): this;
|
|
9
|
+
abstract build(): T;
|
|
10
|
+
buildSafe(): T | null;
|
|
11
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModelBuilder = void 0;
|
|
4
|
+
class ModelBuilder {
|
|
5
|
+
withProps(props) {
|
|
6
|
+
this._props = props;
|
|
7
|
+
return this;
|
|
8
|
+
}
|
|
9
|
+
buildSafe() {
|
|
10
|
+
try {
|
|
11
|
+
return this.build();
|
|
12
|
+
}
|
|
13
|
+
catch (err) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.ModelBuilder = ModelBuilder;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Class } from "type-fest";
|
|
2
|
+
import { ModelId, ModelName, ModelVersion, PropsMap, PropsValidator, StaticValuesMap } from "../meta";
|
|
3
|
+
import { ClassStatic } from "../../types";
|
|
4
|
+
export interface Props {
|
|
5
|
+
[key: PropertyKey]: any;
|
|
6
|
+
}
|
|
7
|
+
export type EmptyProps = {
|
|
8
|
+
[key: PropertyKey]: never;
|
|
9
|
+
};
|
|
10
|
+
export declare class ModelMetadata<T extends AnyModel = AnyModel> {
|
|
11
|
+
private modelClass;
|
|
12
|
+
constructor(modelClass: ModelClass<T>);
|
|
13
|
+
get modelMutable(): boolean;
|
|
14
|
+
get modelName(): ModelName;
|
|
15
|
+
get modelVersion(): ModelVersion;
|
|
16
|
+
get modelId(): ModelId;
|
|
17
|
+
get ownPropsValidator(): PropsValidator<T> | undefined;
|
|
18
|
+
get propsValidators(): PropsValidator[];
|
|
19
|
+
get ownStaticValues(): StaticValuesMap<T>;
|
|
20
|
+
get ownPropsMap(): PropsMap<T>;
|
|
21
|
+
get propsMap(): PropsMap<T>;
|
|
22
|
+
}
|
|
23
|
+
export declare class ModelBase<P extends Props> {
|
|
24
|
+
static readonly EMPTY_PROPS: EmptyProps;
|
|
25
|
+
protected _props: P;
|
|
26
|
+
static isModel(model: any): model is AnyModel;
|
|
27
|
+
static modelMetadata<T extends AnyModel>(this: ModelClass<T>): ModelMetadata<T>;
|
|
28
|
+
constructor();
|
|
29
|
+
protected redefineModel(): void;
|
|
30
|
+
protected redefineProp(key: keyof this, propTargetKey: keyof P): void;
|
|
31
|
+
protected modelMetadata(): ModelMetadata<typeof this>;
|
|
32
|
+
validateProps(props: P): void;
|
|
33
|
+
validate(): void;
|
|
34
|
+
propsIsEmpty(): boolean;
|
|
35
|
+
props(): P | null;
|
|
36
|
+
protected initializeProps(props: P): void;
|
|
37
|
+
}
|
|
38
|
+
export type AnyModel = ModelBase<Props>;
|
|
39
|
+
export type PropsOf<T extends AnyModel> = T extends ModelBase<infer P extends Props> ? P : never;
|
|
40
|
+
export interface ModelClass<T extends AnyModel = AnyModel> extends Class<T>, ClassStatic<typeof ModelBase<PropsOf<T>>> {
|
|
41
|
+
}
|
|
@@ -3,50 +3,56 @@ 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.ModelBase = void 0;
|
|
6
|
+
exports.ModelBase = exports.ModelMetadata = void 0;
|
|
7
7
|
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
-
const meta_1 = require("
|
|
8
|
+
const meta_1 = require("../meta");
|
|
9
9
|
const errors_1 = require("./errors");
|
|
10
|
-
class
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
class ModelMetadata {
|
|
11
|
+
constructor(modelClass) {
|
|
12
|
+
this.modelClass = modelClass;
|
|
13
13
|
}
|
|
14
|
-
|
|
15
|
-
return false;
|
|
14
|
+
get modelMutable() {
|
|
15
|
+
return (0, meta_1.getModelMutable)(this.modelClass) ?? false;
|
|
16
16
|
}
|
|
17
|
-
|
|
18
|
-
return (0, meta_1.getModelName)(this);
|
|
17
|
+
get modelName() {
|
|
18
|
+
return (0, meta_1.getModelName)(this.modelClass);
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
return (0, meta_1.getModelVersion)(this);
|
|
20
|
+
get modelVersion() {
|
|
21
|
+
return (0, meta_1.getModelVersion)(this.modelClass);
|
|
22
22
|
}
|
|
23
|
-
|
|
24
|
-
return (0, meta_1.getModelId)(this);
|
|
23
|
+
get modelId() {
|
|
24
|
+
return (0, meta_1.getModelId)(this.modelClass);
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
return this.
|
|
26
|
+
get ownPropsValidator() {
|
|
27
|
+
return (0, meta_1.getOwnPropsValidator)(this.modelClass);
|
|
28
28
|
}
|
|
29
|
-
|
|
30
|
-
return (0, meta_1.
|
|
29
|
+
get propsValidators() {
|
|
30
|
+
return (0, meta_1.getPropsValidators)(this.modelClass);
|
|
31
31
|
}
|
|
32
|
-
|
|
33
|
-
return (0, meta_1.
|
|
32
|
+
get ownStaticValues() {
|
|
33
|
+
return (0, meta_1.getOwnStaticValues)(this.modelClass);
|
|
34
34
|
}
|
|
35
|
-
|
|
36
|
-
return (0, meta_1.
|
|
35
|
+
get ownPropsMap() {
|
|
36
|
+
return (0, meta_1.getOwnPropsMap)(this.modelClass.prototype);
|
|
37
37
|
}
|
|
38
|
-
|
|
39
|
-
return (0, meta_1.
|
|
38
|
+
get propsMap() {
|
|
39
|
+
return (0, meta_1.getPropsMap)(this.modelClass.prototype);
|
|
40
40
|
}
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
}
|
|
42
|
+
exports.ModelMetadata = ModelMetadata;
|
|
43
|
+
class ModelBase {
|
|
44
|
+
static isModel(model) {
|
|
45
|
+
return model instanceof ModelBase;
|
|
46
|
+
}
|
|
47
|
+
static modelMetadata() {
|
|
48
|
+
return new ModelMetadata(this);
|
|
43
49
|
}
|
|
44
50
|
constructor() {
|
|
45
51
|
this._props = ModelBase.EMPTY_PROPS;
|
|
46
52
|
this.redefineModel();
|
|
47
53
|
}
|
|
48
54
|
redefineModel() {
|
|
49
|
-
this.
|
|
55
|
+
this.modelMetadata().propsMap.forEach((propTargetKey, key) => {
|
|
50
56
|
this.redefineProp(key, propTargetKey);
|
|
51
57
|
});
|
|
52
58
|
}
|
|
@@ -60,38 +66,11 @@ class ModelBase {
|
|
|
60
66
|
},
|
|
61
67
|
});
|
|
62
68
|
}
|
|
63
|
-
|
|
64
|
-
return this.constructor;
|
|
65
|
-
}
|
|
66
|
-
isMutable() {
|
|
67
|
-
return this._modelClass.mutable();
|
|
68
|
-
}
|
|
69
|
-
modelName() {
|
|
70
|
-
return this._modelClass.modelName();
|
|
71
|
-
}
|
|
72
|
-
modelVersion() {
|
|
73
|
-
return this._modelClass.modelVersion();
|
|
74
|
-
}
|
|
75
|
-
modelId() {
|
|
76
|
-
return this._modelClass.modelId();
|
|
77
|
-
}
|
|
78
|
-
hasModelId(modelId) {
|
|
79
|
-
return this._modelClass.hasModelId(modelId);
|
|
80
|
-
}
|
|
81
|
-
ownPropsValidator() {
|
|
82
|
-
return this._modelClass.ownPropsValidator();
|
|
83
|
-
}
|
|
84
|
-
propsValidators() {
|
|
85
|
-
return this._modelClass.propsValidators();
|
|
86
|
-
}
|
|
87
|
-
ownPropsMap() {
|
|
88
|
-
return this._modelClass.ownPropsMap();
|
|
89
|
-
}
|
|
90
|
-
propsMap() {
|
|
91
|
-
return (0, meta_1.getPropsMap)(Reflect.getPrototypeOf(this));
|
|
69
|
+
modelMetadata() {
|
|
70
|
+
return this.constructor.modelMetadata();
|
|
92
71
|
}
|
|
93
72
|
validateProps(props) {
|
|
94
|
-
const propsValidators = this.
|
|
73
|
+
const propsValidators = this.modelMetadata().propsValidators;
|
|
95
74
|
propsValidators.forEach((propsValidator) => propsValidator(props));
|
|
96
75
|
}
|
|
97
76
|
validate() {
|
|
@@ -113,7 +92,7 @@ class ModelBase {
|
|
|
113
92
|
initializeProps(props) {
|
|
114
93
|
if (!this.propsIsEmpty())
|
|
115
94
|
throw new errors_1.PropsInitializedError();
|
|
116
|
-
if (!this.
|
|
95
|
+
if (!this.modelMetadata().modelMutable) {
|
|
117
96
|
this._props = props;
|
|
118
97
|
Object.freeze(this._props);
|
|
119
98
|
}
|
|
@@ -17,4 +17,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./prop"), exports);
|
|
18
18
|
__exportStar(require("./model"), exports);
|
|
19
19
|
__exportStar(require("./static"), exports);
|
|
20
|
-
__exportStar(require("
|
|
20
|
+
__exportStar(require("./mutable"), exports);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AnyModel, ModelClass } from "
|
|
2
|
-
import { PropsValidator } from "
|
|
1
|
+
import { AnyModel, ModelClass } from "../core";
|
|
2
|
+
import { PropsValidator } from "../meta";
|
|
3
3
|
export type ModelOptions<T extends AnyModel = AnyModel> = {
|
|
4
4
|
name?: string;
|
|
5
5
|
version?: number;
|
|
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.Model = void 0;
|
|
7
7
|
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
-
const
|
|
9
|
-
const meta_1 = require("
|
|
8
|
+
const domain_1 = require("../domain");
|
|
9
|
+
const meta_1 = require("../meta");
|
|
10
10
|
function Model(p1, p2, p3) {
|
|
11
11
|
const defaultModelOptions = {
|
|
12
12
|
autoRegisterModel: true,
|
|
@@ -41,10 +41,10 @@ function Model(p1, p2, p3) {
|
|
|
41
41
|
(0, meta_1.defineModelDomain)(target, modelOptions.domain);
|
|
42
42
|
if (modelOptions?.autoRegisterModel) {
|
|
43
43
|
const domainName = (0, meta_1.getModelDomain)(target);
|
|
44
|
-
if (!
|
|
45
|
-
|
|
44
|
+
if (!domain_1.domainManager.hasDomain(domainName)) {
|
|
45
|
+
domain_1.domainManager.addDomain(new domain_1.Domain(domainName));
|
|
46
46
|
}
|
|
47
|
-
const domain =
|
|
47
|
+
const domain = domain_1.domainManager.getDomain(domainName);
|
|
48
48
|
domain.modelRegistry.registerModel(target);
|
|
49
49
|
}
|
|
50
50
|
if (modelOptions?.propsValidator)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Mutable = void 0;
|
|
4
|
+
const meta_1 = require("../meta");
|
|
5
|
+
const Mutable = (mutable = true) => {
|
|
6
|
+
return (target) => {
|
|
7
|
+
(0, meta_1.defineModelMutable)(target, mutable);
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
exports.Mutable = Mutable;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { AnyModel, PropsOf } from "
|
|
1
|
+
import { AnyModel, PropsOf } from "../core";
|
|
2
2
|
export declare const Prop: <T extends AnyModel>(propTargetKey?: keyof PropsOf<T> | undefined) => (target: T, key: PropertyKey) => void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Prop = void 0;
|
|
4
|
-
const meta_1 = require("
|
|
4
|
+
const meta_1 = require("../meta");
|
|
5
5
|
const Prop = (propTargetKey) => {
|
|
6
6
|
return (target, key) => {
|
|
7
7
|
(0, meta_1.defineProp)(target, key, propTargetKey ?? key);
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { ModelClass } from "../core";
|
|
2
|
+
import { StaticValueBuilder } from "../meta";
|
|
3
|
+
export declare const Static: <T extends ModelClass<import("../core").AnyModel>, I extends InstanceType<T> = InstanceType<T>>(builder: StaticValueBuilder<I>) => (target: T, key: PropertyKey) => void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Static = void 0;
|
|
4
|
-
const meta_1 = require("
|
|
4
|
+
const meta_1 = require("../meta");
|
|
5
5
|
const Static = (builder) => {
|
|
6
6
|
return (target, key) => {
|
|
7
7
|
(0, meta_1.setStaticValue)(target, key, builder);
|
|
@@ -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("./meta"), exports);
|
|
18
|
+
__exportStar(require("./core"), exports);
|
|
19
|
+
__exportStar(require("./decorators"), exports);
|
|
20
|
+
__exportStar(require("./domain"), exports);
|
|
21
|
+
__exportStar(require("./model-registry"), exports);
|
|
@@ -21,3 +21,4 @@ __exportStar(require("./model-static-values"), exports);
|
|
|
21
21
|
__exportStar(require("./model-props-validator"), exports);
|
|
22
22
|
__exportStar(require("./model-version"), exports);
|
|
23
23
|
__exportStar(require("./model-domain"), exports);
|
|
24
|
+
__exportStar(require("./model-mutable"), exports);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AnyModel, ModelClass } from "
|
|
1
|
+
import { AnyModel, ModelClass } from "../core";
|
|
2
2
|
export declare const ModelDomainMetaKey: unique symbol;
|
|
3
3
|
export declare const DEFAULT_MODEL_DOMAIN = "default";
|
|
4
4
|
export declare const defineModelDomain: <T extends AnyModel>(target: ModelClass<T>, domainName: string) => void;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getModelMutable = exports.defineModelMutable = void 0;
|
|
4
|
+
const ModelMutableMetaKey = Symbol.for("MODEL_MUTABLE");
|
|
5
|
+
const defineModelMutable = (target, mutable) => {
|
|
6
|
+
if (Reflect.hasMetadata(ModelMutableMetaKey, target))
|
|
7
|
+
return;
|
|
8
|
+
Reflect.defineMetadata(ModelMutableMetaKey, mutable, target);
|
|
9
|
+
};
|
|
10
|
+
exports.defineModelMutable = defineModelMutable;
|
|
11
|
+
const getModelMutable = (target) => {
|
|
12
|
+
return Reflect.getMetadata(ModelMutableMetaKey, target);
|
|
13
|
+
};
|
|
14
|
+
exports.getModelMutable = getModelMutable;
|