@nestjslatam/ddd-lib 1.0.42 → 1.0.44
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/README.md +20 -3
- package/ddd-aggregate-root.d.ts +3 -3
- package/ddd-aggregate-root.js +13 -10
- package/ddd-aggregate-root.js.map +1 -1
- package/ddd-commands/impl/command-types.d.ts +3 -0
- package/ddd-commands/impl/command-types.js +3 -0
- package/ddd-commands/impl/command-types.js.map +1 -0
- package/ddd-commands/impl/command.base.js.map +1 -1
- package/ddd-commands/impl/default-command-publisher.d.ts +3 -3
- package/ddd-commands/impl/default-command-publisher.js +3 -3
- package/ddd-commands/impl/default-command-publisher.js.map +1 -1
- package/ddd-commands/impl/domain-command-bus.d.ts +7 -10
- package/ddd-commands/impl/domain-command-bus.js +13 -23
- package/ddd-commands/impl/domain-command-bus.js.map +1 -1
- package/ddd-commands/impl/index.d.ts +2 -0
- package/ddd-commands/impl/index.js +2 -0
- package/ddd-commands/impl/index.js.map +1 -1
- package/ddd-commands/interfaces/command-bus.interface.d.ts +2 -2
- package/ddd-commands/interfaces/command-metadata.interface.d.ts +1 -1
- package/ddd-commands/interfaces/command-publisher.interface.d.ts +2 -2
- package/ddd-core/broken-rules/broken-rule-collection.js +1 -1
- package/ddd-core/broken-rules/broken-rule-collection.js.map +1 -1
- package/ddd-core/broken-rules/broken-rule.js.map +1 -1
- package/ddd-core/impl/index.d.ts +1 -0
- package/ddd-core/impl/index.js +1 -0
- package/ddd-core/impl/index.js.map +1 -1
- package/ddd-core/impl/observable-bus.js.map +1 -1
- package/ddd-core/impl/tracking-props.js.map +1 -1
- package/{ddd.options.d.ts → ddd-core/interfaces/ddd.options.d.ts} +1 -1
- package/ddd-core/interfaces/ddd.options.js.map +1 -0
- package/ddd-core/interfaces/index.d.ts +1 -0
- package/ddd-core/interfaces/index.js +1 -0
- package/ddd-core/interfaces/index.js.map +1 -1
- package/ddd-decorators/command-handler.decorator.js.map +1 -1
- package/ddd-decorators/constants.js.map +1 -1
- package/ddd-decorators/events-handler.decorator.js.map +1 -1
- package/ddd-decorators/index.d.ts +2 -0
- package/ddd-decorators/index.js +2 -0
- package/ddd-decorators/index.js.map +1 -1
- package/ddd-decorators/reflect-command.helper.d.ts +6 -0
- package/ddd-decorators/reflect-command.helper.js +25 -0
- package/ddd-decorators/reflect-command.helper.js.map +1 -0
- package/ddd-decorators/reflect-event.helper.d.ts +7 -0
- package/ddd-decorators/reflect-event.helper.js +18 -0
- package/ddd-decorators/reflect-event.helper.js.map +1 -0
- package/ddd-decorators/saga.decorator.js.map +1 -1
- package/ddd-entity.d.ts +13 -14
- package/ddd-entity.js +22 -28
- package/ddd-entity.js.map +1 -1
- package/ddd-events/impl/default-event-publisher.d.ts +9 -0
- package/ddd-events/impl/{default-pubsub.helper.js → default-event-publisher.js} +4 -4
- package/ddd-events/impl/default-event-publisher.js.map +1 -0
- package/ddd-events/impl/domain-event-bus.d.ts +4 -5
- package/ddd-events/impl/domain-event-bus.js +16 -17
- package/ddd-events/impl/domain-event-bus.js.map +1 -1
- package/ddd-events/impl/domain-event-collection.js.map +1 -1
- package/ddd-events/impl/domain-event-types.d.ts +3 -0
- package/ddd-events/impl/domain-event-types.js +3 -0
- package/ddd-events/impl/domain-event-types.js.map +1 -0
- package/ddd-events/impl/domain-event.js +3 -2
- package/ddd-events/impl/domain-event.js.map +1 -1
- package/ddd-events/impl/index.d.ts +1 -2
- package/ddd-events/impl/index.js +1 -2
- package/ddd-events/impl/index.js.map +1 -1
- package/ddd-exceptions/constants.d.ts +2 -0
- package/ddd-exceptions/constants.js +3 -1
- package/ddd-exceptions/constants.js.map +1 -1
- package/ddd-exceptions/impl/arguments-exception.d.ts +10 -0
- package/ddd-exceptions/impl/arguments-exception.js +27 -0
- package/ddd-exceptions/impl/arguments-exception.js.map +1 -0
- package/ddd-exceptions/{broken-rules.exeption.d.ts → impl/broken-rules.exeption.d.ts} +1 -1
- package/ddd-exceptions/{broken-rules.exeption.js → impl/broken-rules.exeption.js} +2 -2
- package/ddd-exceptions/impl/broken-rules.exeption.js.map +1 -0
- package/ddd-exceptions/impl/command-exception.d.ts +7 -0
- package/ddd-exceptions/impl/command-exception.js +20 -0
- package/ddd-exceptions/impl/command-exception.js.map +1 -0
- package/ddd-exceptions/impl/common.exception.d.ts +14 -0
- package/ddd-exceptions/impl/common.exception.js +29 -0
- package/ddd-exceptions/impl/common.exception.js.map +1 -0
- package/ddd-exceptions/impl/domain-bus.exception.d.ts +7 -0
- package/ddd-exceptions/impl/domain-bus.exception.js +20 -0
- package/ddd-exceptions/impl/domain-bus.exception.js.map +1 -0
- package/ddd-exceptions/impl/domain-publisher.exception.d.ts +9 -0
- package/ddd-exceptions/impl/domain-publisher.exception.js +13 -0
- package/ddd-exceptions/impl/domain-publisher.exception.js.map +1 -0
- package/ddd-exceptions/{unhandled-exeption-bus.d.ts → impl/domain-unhandled-bus.exeption.d.ts} +5 -5
- package/ddd-exceptions/{unhandled-exeption-bus.js → impl/domain-unhandled-bus.exeption.js} +9 -9
- package/ddd-exceptions/impl/domain-unhandled-bus.exeption.js.map +1 -0
- package/ddd-exceptions/impl/index.d.ts +8 -0
- package/ddd-exceptions/impl/index.js +25 -0
- package/ddd-exceptions/impl/index.js.map +1 -0
- package/ddd-exceptions/impl/sagas.exception.d.ts +4 -0
- package/ddd-exceptions/impl/sagas.exception.js +13 -0
- package/ddd-exceptions/impl/sagas.exception.js.map +1 -0
- package/ddd-exceptions/index.d.ts +1 -5
- package/ddd-exceptions/index.js +1 -5
- package/ddd-exceptions/index.js.map +1 -1
- package/ddd-exceptions/interfaces/exception.base.js.map +1 -0
- package/ddd-exceptions/interfaces/index.d.ts +1 -0
- package/ddd-exceptions/interfaces/index.js +1 -0
- package/ddd-exceptions/interfaces/index.js.map +1 -1
- package/ddd-helpers/datetime.helper.d.ts +1 -0
- package/ddd-helpers/datetime.helper.js +3 -0
- package/ddd-helpers/datetime.helper.js.map +1 -1
- package/ddd-helpers/domain-object.helper.d.ts +2 -1
- package/ddd-helpers/domain-object.helper.js +7 -3
- package/ddd-helpers/domain-object.helper.js.map +1 -1
- package/ddd-validators/impl/domain-abstract.validator.js.map +1 -1
- package/ddd-validators/impl/domain-entity.validator.js.map +1 -1
- package/ddd-validators/impl/domain-value-object.validator.js.map +1 -1
- package/ddd-valueobject.d.ts +4 -4
- package/ddd-valueobject.js +6 -6
- package/ddd-valueobject.js.map +1 -1
- package/ddd-valueobjects/domain-audit.valueobject.d.ts +7 -6
- package/ddd-valueobjects/domain-audit.valueobject.js +19 -14
- package/ddd-valueobjects/domain-audit.valueobject.js.map +1 -1
- package/ddd-valueobjects/domain-date.valueobject.js.map +1 -1
- package/ddd-valueobjects/domain-enum-base.valueobject.js.map +1 -1
- package/ddd-valueobjects/domain-number-base.valueobject.js.map +1 -1
- package/ddd-valueobjects/domain-string-base.valueobject.js.map +1 -1
- package/ddd-valueobjects/domain-uid-string.valueobject.d.ts +3 -0
- package/ddd-valueobjects/domain-uid-string.valueobject.js +11 -1
- package/ddd-valueobjects/domain-uid-string.valueobject.js.map +1 -1
- package/ddd.module.js +2 -2
- package/ddd.module.js.map +1 -1
- package/ddd.service.d.ts +1 -1
- package/ddd.service.js.map +1 -1
- package/package.json +1 -1
- package/tsconfig.lib.tsbuildinfo +1 -1
- package/ddd-events/impl/default-get-event-id.helper.d.ts +0 -4
- package/ddd-events/impl/default-get-event-id.helper.js +0 -14
- package/ddd-events/impl/default-get-event-id.helper.js.map +0 -1
- package/ddd-events/impl/default-pubsub.helper.d.ts +0 -9
- package/ddd-events/impl/default-pubsub.helper.js.map +0 -1
- package/ddd-exceptions/broken-rules.exeption.js.map +0 -1
- package/ddd-exceptions/default-unhandled-exception-pubsub.helper.d.ts +0 -9
- package/ddd-exceptions/default-unhandled-exception-pubsub.helper.js +0 -13
- package/ddd-exceptions/default-unhandled-exception-pubsub.helper.js.map +0 -1
- package/ddd-exceptions/exception.base.js.map +0 -1
- package/ddd-exceptions/exceptions.d.ts +0 -35
- package/ddd-exceptions/exceptions.js +0 -78
- package/ddd-exceptions/exceptions.js.map +0 -1
- package/ddd-exceptions/unhandled-exeption-bus.js.map +0 -1
- package/ddd.options.js.map +0 -1
- /package/{ddd.options.js → ddd-core/interfaces/ddd.options.js} +0 -0
- /package/ddd-exceptions/{exception.base.d.ts → interfaces/exception.base.d.ts} +0 -0
- /package/ddd-exceptions/{exception.base.js → interfaces/exception.base.js} +0 -0
package/README.md
CHANGED
|
@@ -1,8 +1,25 @@
|
|
|
1
1
|
# Ddd Library
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Welcome to DDD Library for NESTJS, an innovative open-source library crafted to seamlessly integrate Domain-Driven Design (DDD) principles into your NESTJS applications. This powerful library is meticulously developed with a focus on TypeScript, leveraging the robust capabilities of NESTJS and ensuring seamless compatibility with Node.js.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Domain-Driven Design has proven to be a game-changer in building scalable and maintainable applications by placing the domain at the heart of the software design process. With [Library Name], we aim to simplify the application of DDD concepts within the NESTJS framework, empowering developers to create well-architected, domain-centric solutions.
|
|
6
|
+
|
|
7
|
+
## DISCLAIMER: This library is not ready to be used in production environments
|
|
8
|
+
|
|
9
|
+
# Key Features:
|
|
10
|
+
|
|
11
|
+
- NESTJS Integration: DDD Library for NESTJS is designed from the ground up to seamlessly integrate with NESTJS, a leading framework for building efficient and scalable server-side applications with TypeScript.
|
|
12
|
+
- TypeScript Support: Take advantage of the static typing and modern features of TypeScript, enhancing the development experience and catching errors early in the development process.
|
|
13
|
+
- Node.js Compatibility: DDD Library for NESTJS is built to support Node.js, allowing you to harness the full power of JavaScript on the server side.
|
|
14
|
+
- Domain-Driven Design Principles: Embrace the core principles of DDD effortlessly. DDD Library for NESTJS provides abstractions and utilities that align with DDD concepts, allowing you to model your domain in a clear and expressive manner.
|
|
15
|
+
- Modularity and Extensibility: Enjoy a modular and extensible architecture that adapts to the complexity of your application. DDD Library for NESTJS empowers you to build scalable systems by encapsulating domain logic in a modular fashion.
|
|
16
|
+
- Community-Driven: As an open-source project, DDD Library for NESTJS thrives on community collaboration. Contribute, share your insights, and join the growing community of developers dedicated to enhancing DDD practices within NESTJS.
|
|
17
|
+
|
|
18
|
+
# Getting Started:
|
|
19
|
+
|
|
20
|
+
To start incorporating DDD principles into your NESTJS projects, DDD Library for NESTJS offers comprehensive documentation, examples, and tutorials to guide you through the implementation process. Whether you are a seasoned developer or new to DDD, our library provides the tools you need to create robust, maintainable, and scalable applications.
|
|
21
|
+
|
|
22
|
+
Explore the potential of DDD Library for NESTJS today and elevate your NESTJS projects to new heights by seamlessly integrating Domain-Driven Design into your development workflow. Together, let's build software that truly reflects the intricacies of your business domain.
|
|
6
23
|
|
|
7
24
|
### Install
|
|
8
25
|
|
|
@@ -10,4 +27,4 @@ A simple DDD NESTJS Library
|
|
|
10
27
|
|
|
11
28
|
### Use library
|
|
12
29
|
|
|
13
|
-
|
|
30
|
+
This source code include a defaultr sample where we can see in detail how use this library.
|
package/ddd-aggregate-root.d.ts
CHANGED
|
@@ -5,10 +5,10 @@ export declare abstract class DomainAggregateRoot<TProps, TDomainEventBase exten
|
|
|
5
5
|
publish<T extends TDomainEventBase = TDomainEventBase>(domainEvent: T): void;
|
|
6
6
|
publishAll<T extends TDomainEventBase = TDomainEventBase>(domainEvents: T[]): void;
|
|
7
7
|
commit(): void;
|
|
8
|
-
uncommit(): void;
|
|
9
|
-
getDomainEvents(): TDomainEventBase[];
|
|
10
|
-
existsDomainEvent(domainEvent: TDomainEventBase): boolean;
|
|
11
8
|
clearDomainEvents(): void;
|
|
12
9
|
addDomainEvent(domainEvent: TDomainEventBase): void;
|
|
13
10
|
removeDomainEvent(domainEvent: TDomainEventBase): void;
|
|
11
|
+
existsDomainEvent(domainEvent: TDomainEventBase): boolean;
|
|
12
|
+
get DomainEvents(): TDomainEventBase[];
|
|
13
|
+
uncommit(): void;
|
|
14
14
|
}
|
package/ddd-aggregate-root.js
CHANGED
|
@@ -13,30 +13,33 @@ class DomainAggregateRoot extends ddd_entity_1.DomainEntity {
|
|
|
13
13
|
this.publishAll(this._domainEvents);
|
|
14
14
|
this.clearDomainEvents();
|
|
15
15
|
}
|
|
16
|
-
uncommit() {
|
|
17
|
-
this._domainEvents.length = 0;
|
|
18
|
-
}
|
|
19
|
-
getDomainEvents() {
|
|
20
|
-
return this._domainEvents;
|
|
21
|
-
}
|
|
22
|
-
existsDomainEvent(domainEvent) {
|
|
23
|
-
return this._domainEvents.includes(domainEvent);
|
|
24
|
-
}
|
|
25
16
|
clearDomainEvents() {
|
|
26
17
|
this._domainEvents = [];
|
|
27
18
|
}
|
|
28
19
|
addDomainEvent(domainEvent) {
|
|
29
|
-
if (!this.
|
|
20
|
+
if (!this.existsDomainEvent(domainEvent)) {
|
|
30
21
|
this._domainEvents = [];
|
|
31
22
|
}
|
|
32
23
|
this._domainEvents.push(domainEvent);
|
|
33
24
|
}
|
|
34
25
|
removeDomainEvent(domainEvent) {
|
|
26
|
+
if (!this.existsDomainEvent(domainEvent)) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
35
29
|
const index = this._domainEvents.indexOf(domainEvent);
|
|
36
30
|
if (index > -1) {
|
|
37
31
|
this._domainEvents.splice(index, 1);
|
|
38
32
|
}
|
|
39
33
|
}
|
|
34
|
+
existsDomainEvent(domainEvent) {
|
|
35
|
+
return this._domainEvents.includes(domainEvent);
|
|
36
|
+
}
|
|
37
|
+
get DomainEvents() {
|
|
38
|
+
return this._domainEvents;
|
|
39
|
+
}
|
|
40
|
+
uncommit() {
|
|
41
|
+
this._domainEvents.length = 0;
|
|
42
|
+
}
|
|
40
43
|
}
|
|
41
44
|
exports.DomainAggregateRoot = DomainAggregateRoot;
|
|
42
45
|
//# sourceMappingURL=ddd-aggregate-root.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ddd-aggregate-root.js","sourceRoot":"","sources":["../../../libs/ddd/src/ddd-aggregate-root.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ddd-aggregate-root.js","sourceRoot":"","sources":["../../../libs/ddd/src/ddd-aggregate-root.ts"],"names":[],"mappings":";;;AACA,6CAA4C;AAW5C,MAAsB,mBAGpB,SAAQ,yBAAoB;IAH9B;;QAIY,kBAAa,GAAuB,EAAE,CAAC;IA0FnD,CAAC;IAlFC,OAAO,CAAgD,WAAc,IAAG,CAAC;IAQzE,UAAU,CACR,YAAiB,IAChB,CAAC;IAKJ,MAAM;QACJ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAKD,iBAAiB;QACf,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;IAC1B,CAAC;IAOD,cAAc,CAAC,WAA6B;QAC1C,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAOD,iBAAiB,CAAC,WAA6B;QAC7C,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEtD,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAQD,iBAAiB,CAAC,WAA6B;QAC7C,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAOD,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAKD,QAAQ;QACN,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,CAAC;CACF;AA9FD,kDA8FC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-types.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-commands/impl/command-types.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.base.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-commands/impl/command.base.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"command.base.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-commands/impl/command.base.ts"],"names":[],"mappings":";;;AAGA,+BAAoC;AAapC,MAAa,WAAW;IAStB,YAAY,KAAkC;QAC5C,IAAI,CAAC,GAAG,GAAG,IAAA,SAAM,GAAE,CAAC;QAEpB,IAAI,CAAC,QAAQ,GAAG;YACd,EAAE,EAAE,IAAI,CAAC,GAAG;YACZ,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU;SACxC,CAAC;IACJ,CAAC;CACF;AAjBD,kCAiBC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Subject } from 'rxjs';
|
|
2
2
|
import { IDomainCommand, IDomainCommandPublisher } from '../interfaces';
|
|
3
|
-
export declare class
|
|
3
|
+
export declare class DefaultCommandPublisher<TDomainCommandBase extends IDomainCommand> implements IDomainCommandPublisher<TDomainCommandBase> {
|
|
4
4
|
private subject$;
|
|
5
|
-
constructor(subject$: Subject<
|
|
6
|
-
publish<T extends
|
|
5
|
+
constructor(subject$: Subject<TDomainCommandBase>);
|
|
6
|
+
publish<T extends TDomainCommandBase>(domainCommand: T): void;
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
class
|
|
3
|
+
exports.DefaultCommandPublisher = void 0;
|
|
4
|
+
class DefaultCommandPublisher {
|
|
5
5
|
constructor(subject$) {
|
|
6
6
|
this.subject$ = subject$;
|
|
7
7
|
}
|
|
@@ -9,5 +9,5 @@ class DefaultCommandPubSubHelper {
|
|
|
9
9
|
this.subject$.next(domainCommand);
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
-
exports.
|
|
12
|
+
exports.DefaultCommandPublisher = DefaultCommandPublisher;
|
|
13
13
|
//# sourceMappingURL=default-command-publisher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-command-publisher.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-commands/impl/default-command-publisher.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"default-command-publisher.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-commands/impl/default-command-publisher.ts"],"names":[],"mappings":";;;AAUA,MAAa,uBAAuB;IAQlC,YAAoB,QAAqC;QAArC,aAAQ,GAAR,QAAQ,CAA6B;IAAG,CAAC;IAQ7D,OAAO,CAA+B,aAAgB;QACpD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC;CACF;AAnBD,0DAmBC"}
|
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
|
-
import { Type } from '@nestjs/common';
|
|
3
2
|
import { ModuleRef } from '@nestjs/core';
|
|
4
3
|
import { IDomainCommand, IDomainCommandBus, IDomainCommandHandler, IDomainCommandPublisher } from '../interfaces';
|
|
5
4
|
import { ObservableBus } from '../../ddd-core';
|
|
6
|
-
|
|
7
|
-
export declare class DomainCommandBus<
|
|
5
|
+
import { CommandHandlerType } from './command-types';
|
|
6
|
+
export declare class DomainCommandBus<TDomainCommandBase extends IDomainCommand = IDomainCommand> extends ObservableBus<TDomainCommandBase> implements IDomainCommandBus<TDomainCommandBase> {
|
|
8
7
|
private readonly moduleRef;
|
|
9
|
-
private
|
|
8
|
+
private _handlers;
|
|
10
9
|
private _publisher;
|
|
11
10
|
constructor(moduleRef: ModuleRef);
|
|
12
|
-
get publisher(): IDomainCommandPublisher<
|
|
13
|
-
set publisher(
|
|
14
|
-
execute<T extends
|
|
15
|
-
bind<T extends
|
|
11
|
+
get publisher(): IDomainCommandPublisher<TDomainCommandBase>;
|
|
12
|
+
set publisher(publisher: IDomainCommandPublisher<TDomainCommandBase>);
|
|
13
|
+
execute<T extends TDomainCommandBase, R = any>(command: T): Promise<R>;
|
|
14
|
+
bind<T extends TDomainCommandBase>(handler: IDomainCommandHandler<T>, id: string): void;
|
|
16
15
|
register(handlers?: CommandHandlerType[]): void;
|
|
17
16
|
protected registerHandler(handler: CommandHandlerType): void;
|
|
18
|
-
private getCommandId;
|
|
19
|
-
private reflectCommandId;
|
|
20
17
|
private useDefaultPublisher;
|
|
21
18
|
}
|
|
@@ -15,32 +15,35 @@ const common_1 = require("@nestjs/common");
|
|
|
15
15
|
const core_1 = require("@nestjs/core");
|
|
16
16
|
const ddd_core_1 = require("../../ddd-core");
|
|
17
17
|
const ddd_exceptions_1 = require("../../ddd-exceptions");
|
|
18
|
-
const ddd_decorators_1 = require("../../ddd-decorators");
|
|
19
18
|
const default_command_publisher_1 = require("./default-command-publisher");
|
|
19
|
+
const ddd_decorators_1 = require("../../ddd-decorators");
|
|
20
20
|
let DomainCommandBus = class DomainCommandBus extends ddd_core_1.ObservableBus {
|
|
21
21
|
constructor(moduleRef) {
|
|
22
22
|
super();
|
|
23
23
|
this.moduleRef = moduleRef;
|
|
24
|
-
this.
|
|
24
|
+
this._handlers = new Map();
|
|
25
25
|
this.useDefaultPublisher();
|
|
26
26
|
}
|
|
27
27
|
get publisher() {
|
|
28
28
|
return this._publisher;
|
|
29
29
|
}
|
|
30
|
-
set publisher(
|
|
31
|
-
this._publisher =
|
|
30
|
+
set publisher(publisher) {
|
|
31
|
+
this._publisher = publisher;
|
|
32
32
|
}
|
|
33
33
|
execute(command) {
|
|
34
|
-
const commandId =
|
|
35
|
-
const handler = this.
|
|
34
|
+
const commandId = ddd_decorators_1.ReflectCommandHelper.getCommandId(command);
|
|
35
|
+
const handler = this._handlers.get(commandId);
|
|
36
36
|
if (!handler) {
|
|
37
|
-
throw new ddd_exceptions_1.DomainCommandHandlerNotFoundException(commandId);
|
|
37
|
+
throw new ddd_exceptions_1.DomainCommandHandlerNotFoundException(`Command Id: ${commandId}, does not have a command handler assigned`);
|
|
38
38
|
}
|
|
39
39
|
this._publisher.publish(command);
|
|
40
40
|
return handler.execute(command);
|
|
41
41
|
}
|
|
42
42
|
bind(handler, id) {
|
|
43
|
-
this.
|
|
43
|
+
if (this._handlers.has(id)) {
|
|
44
|
+
throw new ddd_exceptions_1.DomainInvalidCommandHandlerException(`Command Id: ${id}, already has a command handler assigned`);
|
|
45
|
+
}
|
|
46
|
+
this._handlers.set(id, handler);
|
|
44
47
|
}
|
|
45
48
|
register(handlers = []) {
|
|
46
49
|
handlers.forEach((handler) => this.registerHandler(handler));
|
|
@@ -50,27 +53,14 @@ let DomainCommandBus = class DomainCommandBus extends ddd_core_1.ObservableBus {
|
|
|
50
53
|
if (!instance) {
|
|
51
54
|
return;
|
|
52
55
|
}
|
|
53
|
-
const target =
|
|
56
|
+
const target = ddd_decorators_1.ReflectCommandHelper.reflectCommandId(handler);
|
|
54
57
|
if (!target) {
|
|
55
58
|
throw new ddd_exceptions_1.DomainInvalidCommandHandlerException("CommandHandler doesn't have a Command associated");
|
|
56
59
|
}
|
|
57
60
|
this.bind(instance, target);
|
|
58
61
|
}
|
|
59
|
-
getCommandId(command) {
|
|
60
|
-
const { constructor: commandType } = Object.getPrototypeOf(command);
|
|
61
|
-
const commandMetadata = Reflect.getMetadata(ddd_decorators_1.DOMAIN_COMMAND_METADATA, commandType);
|
|
62
|
-
if (!commandMetadata) {
|
|
63
|
-
throw new ddd_exceptions_1.DomainCommandHandlerNotFoundException(commandType.name);
|
|
64
|
-
}
|
|
65
|
-
return commandMetadata.id;
|
|
66
|
-
}
|
|
67
|
-
reflectCommandId(handler) {
|
|
68
|
-
const command = Reflect.getMetadata(ddd_decorators_1.DOMAIN_COMMAND_HANDLER_METADATA, handler);
|
|
69
|
-
const commandMetadata = Reflect.getMetadata(ddd_decorators_1.DOMAIN_COMMAND_METADATA, command);
|
|
70
|
-
return commandMetadata.id;
|
|
71
|
-
}
|
|
72
62
|
useDefaultPublisher() {
|
|
73
|
-
this._publisher = new default_command_publisher_1.
|
|
63
|
+
this._publisher = new default_command_publisher_1.DefaultCommandPublisher(this.subject$);
|
|
74
64
|
}
|
|
75
65
|
};
|
|
76
66
|
exports.DomainCommandBus = DomainCommandBus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-command-bus.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-commands/impl/domain-command-bus.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4BAA0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"domain-command-bus.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-commands/impl/domain-command-bus.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4BAA0B;AAC1B,2CAA4C;AAC5C,uCAAyC;AAQzC,6CAA+C;AAC/C,yDAG8B;AAE9B,2EAAsE;AACtE,yDAA4D;AAUrD,IAAM,gBAAgB,GAAtB,MAAM,gBAGX,SAAQ,wBAAiC;IAqBzC,YAA6B,SAAoB;QAC/C,KAAK,EAAE,CAAC;QADmB,cAAS,GAAT,SAAS,CAAW;QAfzC,cAAS,GAAG,IAAI,GAAG,EAGxB,CAAC;QAeF,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAKD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAKD,IAAI,SAAS,CAAC,SAAsD;QAClE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IASD,OAAO,CAAwC,OAAU;QACvD,MAAM,SAAS,GAAG,qCAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAE7D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE9C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,sDAAqC,CAC7C,eAAe,SAAS,4CAA4C,CACrE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEjC,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IASD,IAAI,CACF,OAAiC,EACjC,EAAU;QAEV,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,qDAAoC,CAC5C,eAAe,EAAE,0CAA0C,CAC5D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IAOD,QAAQ,CAAC,WAAiC,EAAE;QAC1C,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;IAQS,eAAe,CAAC,OAA2B;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAEhE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,qCAAoB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE9D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,qDAAoC,CAC5C,kDAAkD,CACnD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,QAAqD,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC;IAKO,mBAAmB;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,mDAAuB,CAC3C,IAAI,CAAC,QAAQ,CACd,CAAC;IACJ,CAAC;CACF,CAAA;AAhIY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;qCAyB6B,gBAAS;GAxBtC,gBAAgB,CAgI5B"}
|
|
@@ -17,4 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./command.base"), exports);
|
|
18
18
|
__exportStar(require("./domain-command-bus"), exports);
|
|
19
19
|
__exportStar(require("./default-command-publisher"), exports);
|
|
20
|
+
__exportStar(require("../../ddd-decorators/reflect-command.helper"), exports);
|
|
21
|
+
__exportStar(require("./command-types"), exports);
|
|
20
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-commands/impl/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,uDAAqC;AACrC,8DAA4C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-commands/impl/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,uDAAqC;AACrC,8DAA4C;AAC5C,8EAA4D;AAC5D,kDAAgC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { IDomainCommand } from './command.interface';
|
|
2
|
-
export interface IDomainCommandBus<
|
|
3
|
-
execute<T extends
|
|
2
|
+
export interface IDomainCommandBus<TDomainCommandBase extends IDomainCommand = IDomainCommand> {
|
|
3
|
+
execute<T extends TDomainCommandBase, TResult = any>(domainCommand: T): Promise<TResult>;
|
|
4
4
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { IDomainCommand } from './command.interface';
|
|
2
|
-
export interface IDomainCommandPublisher<
|
|
3
|
-
publish<T extends
|
|
2
|
+
export interface IDomainCommandPublisher<TDomainCommandBase extends IDomainCommand = IDomainCommand> {
|
|
3
|
+
publish<T extends TDomainCommandBase = TDomainCommandBase>(command: T): void;
|
|
4
4
|
}
|
|
@@ -19,7 +19,7 @@ class BrokenRuleCollection {
|
|
|
19
19
|
}
|
|
20
20
|
remove(brokenRule) {
|
|
21
21
|
if (!this._brokenRules.includes(brokenRule))
|
|
22
|
-
throw new Error('This broken rule does not
|
|
22
|
+
throw new Error('This broken rule does not exist');
|
|
23
23
|
const index = this._brokenRules.indexOf(brokenRule);
|
|
24
24
|
this._brokenRules.splice(index, 1);
|
|
25
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broken-rule-collection.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-core/broken-rules/broken-rule-collection.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"broken-rule-collection.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-core/broken-rules/broken-rule-collection.ts"],"names":[],"mappings":";;;AAIA,MAAa,oBAAoB;IAO/B,YAAY,WAA+B;QANnC,iBAAY,GAAsB,EAAE,CAAC;QAO3C,IAAI,WAAW;YAAE,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IACnD,CAAC;IAKM,KAAK;QACV,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;IACzB,CAAC;IAQM,GAAG,CAAC,UAAsB;QAC/B,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS;YACjD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAE5C,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAErD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAOM,MAAM,CAAC,UAAsB;QAClC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAErD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC;IAMM,QAAQ;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAMM,QAAQ;QACb,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAMM,cAAc;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IACtC,CAAC;IAOM,KAAK,CAAC,oBAA0C;QACrD,IAAI,oBAAoB,KAAK,IAAI,IAAI,oBAAoB,KAAK,SAAS;YACrE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAEtD,MAAM,KAAK,GAAG,oBAAoB,CAAC,QAAQ,EAAE,CAAC;QAE9C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAOM,MAAM,CAAC,MAA6B;QACzC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAE1D,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC;CACF;AAvGD,oDAuGC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broken-rule.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-core/broken-rules/broken-rule.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"broken-rule.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-core/broken-rules/broken-rule.ts"],"names":[],"mappings":";;;AAGA,MAAa,UAAU;IAMrB,YACS,IAAqB,EACrB,WAAmB;QADnB,SAAI,GAAJ,IAAI,CAAiB;QACrB,gBAAW,GAAX,WAAW,CAAQ;QAE1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF;AAbD,gCAaC"}
|
package/ddd-core/impl/index.d.ts
CHANGED
package/ddd-core/impl/index.js
CHANGED
|
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./observable-bus"), exports);
|
|
18
18
|
__exportStar(require("./of-type"), exports);
|
|
19
19
|
__exportStar(require("./tracking-props"), exports);
|
|
20
|
+
__exportStar(require("./types"), exports);
|
|
20
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-core/impl/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,4CAA0B;AAC1B,mDAAiC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-core/impl/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,4CAA0B;AAC1B,mDAAiC;AACjC,0CAAwB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observable-bus.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-core/impl/observable-bus.ts"],"names":[],"mappings":";;;AAAA,+BAA2C;
|
|
1
|
+
{"version":3,"file":"observable-bus.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-core/impl/observable-bus.ts"],"names":[],"mappings":";;;AAAA,+BAA2C;AAK3C,MAAa,aAAiB,SAAQ,iBAAa;IAGjD;QACE,KAAK,EAAE,CAAC;QAHA,cAAS,GAAG,IAAI,cAAO,EAAK,CAAC;QAIrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;IAC/B,CAAC;IAKD,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF;AAdD,sCAcC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracking-props.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-core/impl/tracking-props.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"tracking-props.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-core/impl/tracking-props.ts"],"names":[],"mappings":";;;AAKA,MAAa,aAAa;IAoBxB,MAAM,CAAC,MAAM;QACX,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,IAAI;YACX,SAAS,EAAE,KAAK;SACjB,CAAC;IACJ,CAAC;IAMD,MAAM,CAAC,QAAQ;QACb,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,KAAK;SACjB,CAAC;IACJ,CAAC;IAMD,MAAM,CAAC,UAAU;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;CACF;AAnDD,sCAmDC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Type } from '@nestjs/common';
|
|
2
|
-
import { IDomainCommandHandler, IDomainEventHandler } from '
|
|
2
|
+
import { IDomainCommandHandler, IDomainEventHandler } from '../..';
|
|
3
3
|
export interface IDddOptions {
|
|
4
4
|
domainEvents?: Type<IDomainEventHandler>[];
|
|
5
5
|
domainCommands?: Type<IDomainCommandHandler>[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ddd.options.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-core/interfaces/ddd.options.ts"],"names":[],"mappings":""}
|
|
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./tracking.interface"), exports);
|
|
18
18
|
__exportStar(require("./message-source.interface"), exports);
|
|
19
19
|
__exportStar(require("./saga.interface"), exports);
|
|
20
|
+
__exportStar(require("./ddd.options"), exports);
|
|
20
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-core/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,6DAA2C;AAC3C,mDAAiC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/ddd/src/ddd-core/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,6DAA2C;AAC3C,mDAAiC;AACjC,gDAA8B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-handler.decorator.js","sourceRoot":"","sources":["../../../../libs/ddd/src/ddd-decorators/command-handler.decorator.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAC1B,+BAA0B;AAE1B,2CAGqB;
|
|
1
|
+
{"version":3,"file":"command-handler.decorator.js","sourceRoot":"","sources":["../../../../libs/ddd/src/ddd-decorators/command-handler.decorator.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAC1B,+BAA0B;AAE1B,2CAGqB;AAad,MAAM,oBAAoB,GAAG,CAClC,OAAkE,EAClD,EAAE;IAClB,OAAO,CAAC,MAAc,EAAE,EAAE;QACxB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,mCAAuB,EAAE,OAAO,CAAC,EAAE,CAAC;YAC9D,OAAO,CAAC,cAAc,CAAC,mCAAuB,EAAE,EAAE,EAAE,EAAE,IAAA,SAAE,GAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,CAAC,cAAc,CAAC,2CAA+B,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,oBAAoB,wBAS/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../libs/ddd/src/ddd-decorators/constants.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../libs/ddd/src/ddd-decorators/constants.ts"],"names":[],"mappings":";;;AAGa,QAAA,qBAAqB,GAAG,kBAAkB,CAAC;AAK3C,QAAA,oBAAoB,GAAG,iBAAiB,CAAC;AAKzC,QAAA,8BAA8B,GAAG,0BAA0B,CAAC;AAK5D,QAAA,+BAA+B,GAAG,2BAA2B,CAAC;AAK9D,QAAA,uBAAuB,GAAG,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-handler.decorator.js","sourceRoot":"","sources":["../../../../libs/ddd/src/ddd-decorators/events-handler.decorator.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAC1B,+BAA0B;AAE1B,2CAGqB;
|
|
1
|
+
{"version":3,"file":"events-handler.decorator.js","sourceRoot":"","sources":["../../../../libs/ddd/src/ddd-decorators/events-handler.decorator.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAC1B,+BAA0B;AAE1B,2CAGqB;AAad,MAAM,kBAAkB,GAAG,CAChC,GAAG,MAAiE,EACpD,EAAE;IAClB,OAAO,CAAC,MAAc,EAAE,EAAE;QACxB,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,iCAAqB,EAAE,KAAK,CAAC,EAAE,CAAC;gBAC1D,OAAO,CAAC,cAAc,CAAC,iCAAqB,EAAE,EAAE,EAAE,EAAE,IAAA,SAAE,GAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YACrE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,cAAc,CAAC,0CAA8B,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,kBAAkB,sBAY7B"}
|
package/ddd-decorators/index.js
CHANGED
|
@@ -18,4 +18,6 @@ __exportStar(require("./command-handler.decorator"), exports);
|
|
|
18
18
|
__exportStar(require("./events-handler.decorator"), exports);
|
|
19
19
|
__exportStar(require("./constants"), exports);
|
|
20
20
|
__exportStar(require("./saga.decorator"), exports);
|
|
21
|
+
__exportStar(require("./reflect-command.helper"), exports);
|
|
22
|
+
__exportStar(require("./reflect-event.helper"), exports);
|
|
21
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/ddd/src/ddd-decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,6DAA2C;AAC3C,8CAA4B;AAC5B,mDAAiC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/ddd/src/ddd-decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,6DAA2C;AAC3C,8CAA4B;AAC5B,mDAAiC;AACjC,2DAAyC;AACzC,yDAAuC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { IDomainCommand } from '../ddd-commands/interfaces';
|
|
2
|
+
import { CommandHandlerType } from '../ddd-commands';
|
|
3
|
+
export declare class ReflectCommandHelper {
|
|
4
|
+
static getCommandId(command: IDomainCommand): string;
|
|
5
|
+
static reflectCommandId(handler: CommandHandlerType): string | undefined;
|
|
6
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReflectCommandHelper = void 0;
|
|
4
|
+
const _1 = require(".");
|
|
5
|
+
const ddd_exceptions_1 = require("../ddd-exceptions");
|
|
6
|
+
class ReflectCommandHelper {
|
|
7
|
+
static getCommandId(command) {
|
|
8
|
+
const { constructor: commandType } = Object.getPrototypeOf(command).constructor;
|
|
9
|
+
const commandMetadata = Reflect.getMetadata(_1.DOMAIN_COMMAND_METADATA, commandType);
|
|
10
|
+
if (!commandMetadata) {
|
|
11
|
+
throw new ddd_exceptions_1.DomainCommandHandlerNotFoundException(commandType.name);
|
|
12
|
+
}
|
|
13
|
+
return commandMetadata.id;
|
|
14
|
+
}
|
|
15
|
+
static reflectCommandId(handler) {
|
|
16
|
+
const command = Reflect.getMetadata(_1.DOMAIN_COMMAND_HANDLER_METADATA, handler);
|
|
17
|
+
if (!command) {
|
|
18
|
+
throw new ddd_exceptions_1.DomainCommandHandlerNotFoundException(handler.name);
|
|
19
|
+
}
|
|
20
|
+
const commandMetadata = Reflect.getMetadata(_1.DOMAIN_COMMAND_METADATA, command);
|
|
21
|
+
return commandMetadata.id;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.ReflectCommandHelper = ReflectCommandHelper;
|
|
25
|
+
//# sourceMappingURL=reflect-command.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reflect-command.helper.js","sourceRoot":"","sources":["../../../../libs/ddd/src/ddd-decorators/reflect-command.helper.ts"],"names":[],"mappings":";;;AACA,wBAA6E;AAC7E,sDAA0E;AAU1E,MAAa,oBAAoB;IAQ/B,MAAM,CAAC,YAAY,CAAC,OAAuB;QACzC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAChC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC;QAE7C,MAAM,eAAe,GAA2B,OAAO,CAAC,WAAW,CACjE,0BAAuB,EACvB,WAAW,CACc,CAAC;QAE5B,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,sDAAqC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,eAAe,CAAC,EAAE,CAAC;IAC5B,CAAC;IASD,MAAM,CAAC,gBAAgB,CAAC,OAA2B;QACjD,MAAM,OAAO,GAAyB,OAAO,CAAC,WAAW,CACvD,kCAA+B,EAC/B,OAAO,CACgB,CAAC;QAE1B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,sDAAqC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,eAAe,GAA2B,OAAO,CAAC,WAAW,CACjE,0BAAuB,EACvB,OAAO,CACkB,CAAC;QAE5B,OAAO,eAAe,CAAC,EAAE,CAAC;IAC5B,CAAC;CACF;AAhDD,oDAgDC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Type } from '@nestjs/common';
|
|
2
|
+
import { DomainEventHandlerType, IDomainEvent } from '../ddd-events';
|
|
3
|
+
export declare class ReflectEventHelper {
|
|
4
|
+
static getDomainEventId: <TDomainEventBase extends IDomainEvent = IDomainEvent>(event: TDomainEventBase) => string;
|
|
5
|
+
static getReflectDomainEventId: <TDomainEventBase extends Type<IDomainEvent> = Type<IDomainEvent>>(event: TDomainEventBase) => string;
|
|
6
|
+
static reflectEvents(handler: DomainEventHandlerType<IDomainEvent>): FunctionConstructor[];
|
|
7
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReflectEventHelper = void 0;
|
|
4
|
+
const constants_1 = require("./constants");
|
|
5
|
+
class ReflectEventHelper {
|
|
6
|
+
static reflectEvents(handler) {
|
|
7
|
+
return Reflect.getMetadata(constants_1.DOMAIN_EVENTS_HANDLER_METADATA, handler);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.ReflectEventHelper = ReflectEventHelper;
|
|
11
|
+
ReflectEventHelper.getDomainEventId = (event) => {
|
|
12
|
+
const { constructor } = Object.getPrototypeOf(event);
|
|
13
|
+
return Reflect.getMetadata(constants_1.DOMAIN_EVENT_METADATA, constructor)?.id ?? null;
|
|
14
|
+
};
|
|
15
|
+
ReflectEventHelper.getReflectDomainEventId = (event) => {
|
|
16
|
+
return Reflect.getMetadata(constants_1.DOMAIN_EVENT_METADATA, event).id;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=reflect-event.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reflect-event.helper.js","sourceRoot":"","sources":["../../../../libs/ddd/src/ddd-decorators/reflect-event.helper.ts"],"names":[],"mappings":";;;AAEA,2CAGqB;AAErB,MAAa,kBAAkB;IAkB7B,MAAM,CAAC,aAAa,CAClB,OAA6C;QAE7C,OAAO,OAAO,CAAC,WAAW,CAAC,0CAA8B,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;;AAtBH,gDAuBC;AAtBQ,mCAAgB,GAAG,CAGxB,KAAuB,EACf,EAAE;IACV,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACrD,OAAO,OAAO,CAAC,WAAW,CAAC,iCAAqB,EAAE,WAAW,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC;AAC7E,CAAC,CAAC;AAEK,0CAAuB,GAAG,CAG/B,KAAuB,EACf,EAAE;IACV,OAAO,OAAO,CAAC,WAAW,CAAC,iCAAqB,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;AAC9D,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saga.decorator.js","sourceRoot":"","sources":["../../../../libs/ddd/src/ddd-decorators/saga.decorator.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAC1B,2CAAmD;
|
|
1
|
+
{"version":3,"file":"saga.decorator.js","sourceRoot":"","sources":["../../../../libs/ddd/src/ddd-decorators/saga.decorator.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAC1B,2CAAmD;AAO5C,MAAM,IAAI,GAAG,GAAsB,EAAE;IAC1C,OAAO,CAAC,MAAc,EAAE,WAA4B,EAAE,EAAE;QACtD,MAAM,UAAU,GACd,OAAO,CAAC,WAAW,CAAC,gCAAoB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACtE,OAAO,CAAC,cAAc,CACpB,gCAAoB,EACpB,CAAC,GAAG,UAAU,EAAE,WAAW,CAAC,EAC5B,MAAM,CAAC,WAAW,CACnB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAVW,QAAA,IAAI,QAUf"}
|
package/ddd-entity.d.ts
CHANGED
|
@@ -2,35 +2,34 @@ import { BrokenRule, BrokenRuleCollection, ITrackingProps, TrackingProps } from
|
|
|
2
2
|
import { DomainIdAsString } from './ddd-valueobjects';
|
|
3
3
|
import { AbstractDomainValueObject } from './ddd-valueobject';
|
|
4
4
|
export interface IDomainEntityProps<T> {
|
|
5
|
-
id:
|
|
5
|
+
id: DomainIdAsString;
|
|
6
6
|
props: T;
|
|
7
7
|
trackingProps: TrackingProps;
|
|
8
8
|
}
|
|
9
|
-
export type DomainEntityId = DomainIdAsString;
|
|
10
9
|
export declare abstract class DomainEntity<TProps> {
|
|
11
10
|
private _id;
|
|
12
11
|
private _trackingProps;
|
|
13
12
|
private _brokenRules;
|
|
14
|
-
protected readonly
|
|
13
|
+
protected readonly _props: TProps;
|
|
15
14
|
protected abstract businessRules(props: TProps): void;
|
|
16
15
|
constructor({ id, props, trackingProps }: IDomainEntityProps<TProps>);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
equals(object?: DomainEntity<TProps>): boolean;
|
|
16
|
+
private getInternalProps;
|
|
17
|
+
get propsCopy(): TProps & ITrackingProps;
|
|
18
|
+
get props(): TProps & ITrackingProps;
|
|
19
|
+
set id(id: DomainIdAsString);
|
|
20
|
+
get id(): string;
|
|
21
|
+
set trackingProps(trackingProps: ITrackingProps);
|
|
22
|
+
get trackingProps(): ITrackingProps;
|
|
23
|
+
get IsValid(): boolean;
|
|
24
|
+
get BrokenRules(): BrokenRuleCollection;
|
|
25
|
+
protected equals(object?: DomainEntity<TProps>): boolean;
|
|
27
26
|
toObject(): unknown;
|
|
28
27
|
markAsNew(): void;
|
|
29
28
|
markAsDirty(): void;
|
|
30
29
|
markAsDeleted(): void;
|
|
31
30
|
addBrokenRule(brokenRule: BrokenRule): void;
|
|
32
31
|
removeBrokenRule(brokenRule: BrokenRule): void;
|
|
33
|
-
validate(): void;
|
|
32
|
+
protected validate(): void;
|
|
34
33
|
removeChild<TParent extends DomainEntity<any>, TChild extends AbstractDomainValueObject<any> | DomainEntity<any>>(parent: TParent, child: TChild, childs: Array<TChild>): Array<TChild>;
|
|
35
34
|
addChild<TParent extends DomainEntity<any>, TChild extends AbstractDomainValueObject<any> | DomainEntity<any>>(parent: TParent, child: TChild, childs: Array<TChild>): Array<TChild>;
|
|
36
35
|
}
|