ddd-node 21.0.1 → 21.0.3
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.d.ts +1 -0
- package/dist/core/aggregate/event-sourced-aggregate/event-sourced-aggregate.d.ts +4 -2
- package/dist/core/aggregate/event-sourced-aggregate/event-sourced-aggregate.js +2 -1
- package/dist/core/aggregate/state-aggregate/state-aggregate.d.ts +3 -1
- package/dist/core/aggregate/state-aggregate/state-aggregate.js +2 -1
- package/dist/model/domain.d.ts +4 -0
- package/dist/model/domain.js +10 -2
- package/dist/model/meta/model-domain.d.ts +0 -1
- package/dist/model/meta/model-domain.js +3 -3
- package/dist/package.json +1 -1
- package/package.json +1 -1
|
@@ -3,6 +3,7 @@ import { Props, PropsOf } from "../../../model";
|
|
|
3
3
|
import { AnyEvent, EventClassWithTypedConstructor, EventSource } from "../../message";
|
|
4
4
|
import { IEventDispatcher } from "../event-dispatcher.interface";
|
|
5
5
|
export interface AggregateMetadata extends EntityMetadata {
|
|
6
|
+
aggregateType: string;
|
|
6
7
|
version: number;
|
|
7
8
|
}
|
|
8
9
|
export declare abstract class AggregateBase<P extends Props> extends EntityBase<P> {
|
|
@@ -5,17 +5,19 @@ import { AnyCommand, AnyEvent, EventClassWithTypedConstructor } from "../../mess
|
|
|
5
5
|
import { AggregateBase, AggregateMetadata } from "../aggregate-base";
|
|
6
6
|
import { IEventDispatcher } from "../event-dispatcher.interface";
|
|
7
7
|
import { ESAModelMetadata } from "./event-sourced-aggregate.model-metadata";
|
|
8
|
-
export
|
|
8
|
+
export type EventSourceAggregateMetadata = Omit<AggregateMetadata, "aggregateType">;
|
|
9
|
+
export interface SnapshotMetadata extends EventSourceAggregateMetadata {
|
|
9
10
|
}
|
|
10
11
|
export interface Snapshot<T extends AnyEventSourcedAggregate> {
|
|
11
12
|
metadata: SnapshotMetadata;
|
|
12
13
|
props: PropsOf<T>;
|
|
13
14
|
}
|
|
14
15
|
export declare class EventSourcedAggregateBase<P extends Props> extends AggregateBase<P> {
|
|
16
|
+
static readonly AGGREGATE_TYPE = "event_sourced";
|
|
15
17
|
private _handledCommands;
|
|
16
18
|
private _pastEvents;
|
|
17
19
|
private _events;
|
|
18
|
-
constructor(metadata:
|
|
20
|
+
constructor(metadata: EventSourceAggregateMetadata, props?: P);
|
|
19
21
|
static esaModelMetadata<T extends AnyEventSourcedAggregate>(this: EventSourcedAggregateClass<T>): ESAModelMetadata<T>;
|
|
20
22
|
esaModelMetadata(): ESAModelMetadata<this>;
|
|
21
23
|
version(): number;
|
|
@@ -6,7 +6,7 @@ const aggregate_base_1 = require("../aggregate-base");
|
|
|
6
6
|
const event_sourced_aggregate_model_metadata_1 = require("./event-sourced-aggregate.model-metadata");
|
|
7
7
|
class EventSourcedAggregateBase extends aggregate_base_1.AggregateBase {
|
|
8
8
|
constructor(metadata, props) {
|
|
9
|
-
super(metadata, props);
|
|
9
|
+
super({ ...metadata, aggregateType: EventSourcedAggregateBase.AGGREGATE_TYPE }, props);
|
|
10
10
|
this._handledCommands = [];
|
|
11
11
|
this._events = [];
|
|
12
12
|
this._pastEvents = [];
|
|
@@ -125,3 +125,4 @@ class EventSourcedAggregateBase extends aggregate_base_1.AggregateBase {
|
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
127
|
exports.EventSourcedAggregateBase = EventSourcedAggregateBase;
|
|
128
|
+
EventSourcedAggregateBase.AGGREGATE_TYPE = "event_sourced";
|
|
@@ -4,9 +4,11 @@ import { ClassStatic } from "../../../types";
|
|
|
4
4
|
import { AnyEvent, EventClassWithTypedConstructor } from "../../message";
|
|
5
5
|
import { AggregateBase, AggregateMetadata } from "../aggregate-base";
|
|
6
6
|
import { IEventDispatcher } from "../event-dispatcher.interface";
|
|
7
|
+
export type StateAggregateMetadata = Omit<AggregateMetadata, "aggregateType">;
|
|
7
8
|
export declare class StateAggregateBase<P extends Props> extends AggregateBase<P> {
|
|
9
|
+
static readonly AGGREGATE_TYPE = "state";
|
|
8
10
|
private _events;
|
|
9
|
-
constructor(metadata:
|
|
11
|
+
constructor(metadata: StateAggregateMetadata, props: P);
|
|
10
12
|
props(): P;
|
|
11
13
|
version(): number;
|
|
12
14
|
events(): AnyEvent[];
|
|
@@ -4,7 +4,7 @@ exports.StateAggregateBase = void 0;
|
|
|
4
4
|
const aggregate_base_1 = require("../aggregate-base");
|
|
5
5
|
class StateAggregateBase extends aggregate_base_1.AggregateBase {
|
|
6
6
|
constructor(metadata, props) {
|
|
7
|
-
super(metadata, props);
|
|
7
|
+
super({ ...metadata, aggregateType: StateAggregateBase.AGGREGATE_TYPE }, props);
|
|
8
8
|
this._events = [];
|
|
9
9
|
}
|
|
10
10
|
props() {
|
|
@@ -37,3 +37,4 @@ class StateAggregateBase extends aggregate_base_1.AggregateBase {
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
exports.StateAggregateBase = StateAggregateBase;
|
|
40
|
+
StateAggregateBase.AGGREGATE_TYPE = "state";
|
package/dist/model/domain.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ModelRegistry } from "./model-registry";
|
|
2
2
|
export type DomainName = string;
|
|
3
|
+
export declare const DEFAULT_DOMAIN = "__default__";
|
|
3
4
|
export declare class Domain {
|
|
4
5
|
readonly name: DomainName;
|
|
5
6
|
readonly modelRegistry: ModelRegistry;
|
|
@@ -12,7 +13,10 @@ export declare class DomainManager {
|
|
|
12
13
|
static instance(): DomainManager;
|
|
13
14
|
private constructor();
|
|
14
15
|
private _domains;
|
|
16
|
+
isDefaultDomain(domain: Domain): boolean;
|
|
15
17
|
hasDomain(domainName: DomainName): boolean;
|
|
18
|
+
getDomain(): Domain;
|
|
19
|
+
getDomain(domainName: typeof DEFAULT_DOMAIN): Domain;
|
|
16
20
|
getDomain(domainName: DomainName): Domain | undefined;
|
|
17
21
|
addDomain(domain: Domain): void;
|
|
18
22
|
deleteDomain(domainName: DomainName): void;
|
package/dist/model/domain.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.domainManager = exports.DomainManager = exports.DomainMap = exports.Domain = void 0;
|
|
3
|
+
exports.domainManager = exports.DomainManager = exports.DomainMap = exports.Domain = exports.DEFAULT_DOMAIN = void 0;
|
|
4
4
|
const model_registry_1 = require("./model-registry");
|
|
5
|
+
exports.DEFAULT_DOMAIN = "__default__";
|
|
5
6
|
class Domain {
|
|
6
7
|
constructor(name) {
|
|
7
8
|
this.name = name;
|
|
@@ -16,16 +17,23 @@ class DomainManager {
|
|
|
16
17
|
static instance() {
|
|
17
18
|
if (!this._instance)
|
|
18
19
|
this._instance = new DomainManager();
|
|
20
|
+
this._instance.addDomain(new Domain(exports.DEFAULT_DOMAIN));
|
|
19
21
|
return this._instance;
|
|
20
22
|
}
|
|
21
23
|
constructor() {
|
|
22
24
|
this._domains = new DomainMap();
|
|
23
25
|
}
|
|
26
|
+
isDefaultDomain(domain) {
|
|
27
|
+
return domain.name === exports.DEFAULT_DOMAIN;
|
|
28
|
+
}
|
|
24
29
|
hasDomain(domainName) {
|
|
25
30
|
return this._domains.has(domainName);
|
|
26
31
|
}
|
|
27
32
|
getDomain(domainName) {
|
|
28
|
-
|
|
33
|
+
if (domainName)
|
|
34
|
+
return this._domains.get(domainName);
|
|
35
|
+
if (!domainName)
|
|
36
|
+
return this._domains.get(exports.DEFAULT_DOMAIN);
|
|
29
37
|
}
|
|
30
38
|
addDomain(domain) {
|
|
31
39
|
if (this.hasDomain(domain.name))
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { AnyModel, ModelClass } from "../core";
|
|
2
2
|
export declare const ModelDomainMetaKey: unique symbol;
|
|
3
|
-
export declare const DEFAULT_MODEL_DOMAIN = "default";
|
|
4
3
|
export declare const defineModelDomain: <T extends AnyModel>(target: ModelClass<T>, domainName: string) => void;
|
|
5
4
|
export declare const getModelDomain: <T extends AnyModel>(target: ModelClass<T>) => string;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getModelDomain = exports.defineModelDomain = exports.
|
|
3
|
+
exports.getModelDomain = exports.defineModelDomain = exports.ModelDomainMetaKey = void 0;
|
|
4
|
+
const domain_1 = require("../domain");
|
|
4
5
|
exports.ModelDomainMetaKey = Symbol.for("MODEL_DOMAIN");
|
|
5
|
-
exports.DEFAULT_MODEL_DOMAIN = "default";
|
|
6
6
|
const defineModelDomain = (target, domainName) => {
|
|
7
7
|
Reflect.defineMetadata(exports.ModelDomainMetaKey, domainName, target);
|
|
8
8
|
};
|
|
9
9
|
exports.defineModelDomain = defineModelDomain;
|
|
10
10
|
const getModelDomain = (target) => {
|
|
11
11
|
if (!Reflect.hasOwnMetadata(exports.ModelDomainMetaKey, target))
|
|
12
|
-
(0, exports.defineModelDomain)(target,
|
|
12
|
+
(0, exports.defineModelDomain)(target, domain_1.DEFAULT_DOMAIN);
|
|
13
13
|
return Reflect.getOwnMetadata(exports.ModelDomainMetaKey, target);
|
|
14
14
|
};
|
|
15
15
|
exports.getModelDomain = getModelDomain;
|
package/dist/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"ddd-node","version":"21.0.
|
|
1
|
+
{"name":"ddd-node","version":"21.0.3","description":"Domain Driven Design base for NodeJs","type":"commonjs","main":"index.js","types":"index.d.ts","files":["dist"],"repository":{"type":"git","url":"https://github.com/nqd881/ddd-node"},"keywords":["ddd","ddd-node","ddd-base","ddd-ts","ddd-js"],"author":"Quoc Dai","license":"ISC","devDependencies":{"@types/chai":"^4.3.16","@types/lodash":"^4.14.200","@types/mocha":"^10.0.6","@types/uuid":"^9.0.6","chai":"^5.1.1","chai-deep-match":"^1.2.1","ddd-node":"file:dist","mocha":"^10.4.0","ts-node":"^10.9.1","tsconfig-paths":"^4.2.0","typescript":"^5.2.2"},"dependencies":{"lodash":"^4.17.21","nodejs-snowflake":"^2.0.1","reflect-metadata":"^0.1.13","tsc-alias":"^1.8.8","type-fest":"^4.20.1","uuid":"^9.0.1"}}
|