@cqrs-ddd/core 0.4.1 → 0.5.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/README.md +3 -3
- package/dist/application/base.command.d.ts +3 -0
- package/dist/application/base.command.d.ts.map +1 -1
- package/dist/application/base.command.js +5 -0
- package/dist/application/base.command.js.map +1 -1
- package/dist/application/base.query.d.ts +3 -0
- package/dist/application/base.query.d.ts.map +1 -1
- package/dist/application/base.query.js +5 -0
- package/dist/application/base.query.js.map +1 -1
- package/dist/application/command-base.handler.d.ts +6 -10
- package/dist/application/command-base.handler.d.ts.map +1 -1
- package/dist/application/command-base.handler.js +6 -10
- package/dist/application/command-base.handler.js.map +1 -1
- package/dist/application/ports/command-repository.port.d.ts +1 -4
- package/dist/application/ports/command-repository.port.d.ts.map +1 -1
- package/dist/application/ports/query-repository.port.d.ts +0 -1
- package/dist/application/ports/query-repository.port.d.ts.map +1 -1
- package/dist/domain/events/domain.event.d.ts +3 -0
- package/dist/domain/events/domain.event.d.ts.map +1 -1
- package/dist/domain/events/domain.event.js +5 -0
- package/dist/domain/events/domain.event.js.map +1 -1
- package/dist/domain/models/aggregate-root.d.ts +3 -3
- package/dist/domain/models/aggregate-root.d.ts.map +1 -1
- package/dist/domain/models/aggregate-root.js +3 -3
- package/dist/domain/models/aggregate-root.js.map +1 -1
- package/dist/domain/request-kind.d.ts +7 -0
- package/dist/domain/request-kind.d.ts.map +1 -0
- package/dist/domain/request-kind.js +8 -0
- package/dist/domain/request-kind.js.map +1 -0
- package/dist/persistence/cache/cache-logger.d.ts +2 -2
- package/dist/persistence/cache/memory.cache.d.ts +0 -1
- package/dist/persistence/cache/memory.cache.d.ts.map +1 -1
- package/dist/persistence/cache/memory.cache.js +0 -1
- package/dist/persistence/cache/memory.cache.js.map +1 -1
- package/dist/persistence/command-repository.abstract.d.ts +2 -3
- package/dist/persistence/command-repository.abstract.d.ts.map +1 -1
- package/dist/persistence/command-repository.abstract.js +2 -3
- package/dist/persistence/command-repository.abstract.js.map +1 -1
- package/dist/persistence/decorators/acknowledge-persisted.decorator.d.ts +0 -2
- package/dist/persistence/decorators/acknowledge-persisted.decorator.d.ts.map +1 -1
- package/dist/persistence/decorators/acknowledge-persisted.decorator.js +0 -2
- package/dist/persistence/decorators/acknowledge-persisted.decorator.js.map +1 -1
- package/dist/persistence/decorators/map-persistence-errors.decorator.d.ts +0 -1
- package/dist/persistence/decorators/map-persistence-errors.decorator.d.ts.map +1 -1
- package/dist/persistence/decorators/map-persistence-errors.decorator.js +0 -1
- package/dist/persistence/decorators/map-persistence-errors.decorator.js.map +1 -1
- package/dist/persistence/query-repository.abstract.d.ts +4 -6
- package/dist/persistence/query-repository.abstract.d.ts.map +1 -1
- package/dist/persistence/query-repository.abstract.js +4 -6
- package/dist/persistence/query-repository.abstract.js.map +1 -1
- package/package.json +9 -9
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ versioned mutations, detached domain events, a command handler that publishes th
|
|
|
8
8
|
events, repository contracts, persistence lifecycle decorators, a revision-fenced
|
|
9
9
|
repository cache, tenant-scoped cache keys and HTTP status mapping for its errors.
|
|
10
10
|
|
|
11
|
-
**Documentation:** [guide](https://aristoteliss.github.io/
|
|
11
|
+
**Documentation:** [guide](https://aristoteliss.github.io/ddd-cqrs/packages/core/) · [API reference](https://aristoteliss.github.io/ddd-cqrs/api/cqrs-ddd/core/) · [all packages](https://aristoteliss.github.io/ddd-cqrs/)
|
|
12
12
|
|
|
13
13
|
## Installation
|
|
14
14
|
|
|
@@ -22,10 +22,10 @@ Requires Node.js 22.12 or later. It installs `@cqrs-ddd/uuidv7` and
|
|
|
22
22
|
`@cqrs-ddd/safe-stringify`, which have no dependencies. To persist with MikroORM, add
|
|
23
23
|
`@cqrs-ddd/mikro-orm` and `@mikro-orm/core` 7.
|
|
24
24
|
|
|
25
|
-
Published as an ES module; a CommonJS application loads it with `require()`.
|
|
25
|
+
Published as an ES module; a CommonJS application loads it with `require()`.
|
|
26
26
|
|
|
27
27
|
## License
|
|
28
28
|
|
|
29
29
|
Dual-licensed under **AGPL-3.0-or-later** or a **Commercial License**. See
|
|
30
|
-
[`LICENSE`](https://github.com/aristoteliss/
|
|
30
|
+
[`LICENSE`](https://github.com/aristoteliss/ddd-cqrs/blob/master/LICENSE) and [`COMMERCIAL_LICENSE.txt`](https://github.com/aristoteliss/ddd-cqrs/blob/master/COMMERCIAL_LICENSE.txt)
|
|
31
31
|
at the repository root.
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { REQUEST_KIND } from '../domain/request-kind.js';
|
|
1
2
|
/**
|
|
2
3
|
* Base class for application CQRS commands.
|
|
3
4
|
*
|
|
@@ -8,6 +9,8 @@
|
|
|
8
9
|
export declare abstract class BaseCommand<TSessionPrincipal = any> {
|
|
9
10
|
readonly sessionPrincipal?: TSessionPrincipal;
|
|
10
11
|
readonly sessionUser?: TSessionPrincipal;
|
|
12
|
+
/** The kind a pipeline reads from this request: `'command'`. */
|
|
13
|
+
get [REQUEST_KIND](): 'command';
|
|
11
14
|
constructor(sessionPrincipal?: TSessionPrincipal);
|
|
12
15
|
/**
|
|
13
16
|
* Serializes enumerable command payload fields to a plain object.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.command.d.ts","sourceRoot":"","sources":["../../application/base.command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.command.d.ts","sourceRoot":"","sources":["../../application/base.command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;;;;;GAMG;AAEH,8BAAsB,WAAW,CAAC,iBAAiB,GAAG,GAAG;IACvD,SAAwB,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IAC7D,SAAwB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAExD,gEAAgE;IAChE,IAAI,CAAC,YAAY,CAAC,IAAI,SAAS,CAE9B;IAED,YAAY,gBAAgB,CAAC,EAAE,iBAAiB,EAK/C;IAED;;;;;;;;OAQG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEhC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAI5D;CACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/* Copyright (C) 2026-present Aristotelis — see repository license. */
|
|
2
|
+
import { REQUEST_KIND } from '../domain/request-kind.js';
|
|
2
3
|
import { definedFields, defineHidden } from './request-fields.helper.js';
|
|
3
4
|
/**
|
|
4
5
|
* Base class for application CQRS commands.
|
|
@@ -9,6 +10,10 @@ import { definedFields, defineHidden } from './request-fields.helper.js';
|
|
|
9
10
|
*/
|
|
10
11
|
// biome-ignore lint/suspicious/noExplicitAny: generic session principal default
|
|
11
12
|
export class BaseCommand {
|
|
13
|
+
/** The kind a pipeline reads from this request: `'command'`. */
|
|
14
|
+
get [REQUEST_KIND]() {
|
|
15
|
+
return 'command';
|
|
16
|
+
}
|
|
12
17
|
constructor(sessionPrincipal) {
|
|
13
18
|
if (sessionPrincipal !== undefined) {
|
|
14
19
|
defineHidden(this, 'sessionPrincipal', sessionPrincipal);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.command.js","sourceRoot":"","sources":["../../application/base.command.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAEzE;;;;;;GAMG;AACH,gFAAgF;AAChF,MAAM,OAAgB,WAAW;IAI/B,YAAY,gBAAoC;QAC9C,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,YAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;YACzD,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM;QACJ,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,CAAC,eAAkC;QAChD,OAAO,eAAe,CAAC,MAAM,CAC3B,CAAC,KAAK,EAAE,EAAE,CAAE,IAAgC,CAAC,KAAK,CAAC,KAAK,SAAS,CAClE,CAAC;IACJ,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"base.command.js","sourceRoot":"","sources":["../../application/base.command.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAEzE;;;;;;GAMG;AACH,gFAAgF;AAChF,MAAM,OAAgB,WAAW;IAI/B,gEAAgE;IAChE,IAAI,CAAC,YAAY,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,YAAY,gBAAoC;QAC9C,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,YAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;YACzD,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM;QACJ,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,CAAC,eAAkC;QAChD,OAAO,eAAe,CAAC,MAAM,CAC3B,CAAC,KAAK,EAAE,EAAE,CAAE,IAAgC,CAAC,KAAK,CAAC,KAAK,SAAS,CAClE,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { REQUEST_KIND } from '../domain/request-kind.js';
|
|
1
2
|
import type { IQueryOptions } from './query.options.js';
|
|
2
3
|
/**
|
|
3
4
|
* Base class for application CQRS queries.
|
|
@@ -28,6 +29,8 @@ export declare abstract class BaseQuery<TSessionPrincipal = unknown> implements
|
|
|
28
29
|
readonly refresh?: boolean;
|
|
29
30
|
readonly sessionPrincipal?: TSessionPrincipal;
|
|
30
31
|
readonly sessionUser?: TSessionPrincipal;
|
|
32
|
+
/** The kind a pipeline reads from this request: `'query'`. */
|
|
33
|
+
get [REQUEST_KIND](): 'query';
|
|
31
34
|
constructor(options?: Partial<IQueryOptions>, sessionPrincipal?: TSessionPrincipal);
|
|
32
35
|
/**
|
|
33
36
|
* Serializes enumerable query payload fields to a plain object.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.query.d.ts","sourceRoot":"","sources":["../../application/base.query.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,8BAAsB,SAAS,CAAC,iBAAiB,GAAG,OAAO,CACzD,YAAW,aAAa;IAExB,SAAwB,OAAO,CAAC,EAAE,OAAO,CAAC;IAC1C,SAAwB,OAAO,CAAC,EAAE,OAAO,CAAC;IAC1C,SAAwB,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IAC7D,SAAwB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAExD,YACE,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,EAChC,gBAAgB,CAAC,EAAE,iBAAiB,EAQrC;IAED;;;;;;;OAOG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEhC;CACF"}
|
|
1
|
+
{"version":3,"file":"base.query.d.ts","sourceRoot":"","sources":["../../application/base.query.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,8BAAsB,SAAS,CAAC,iBAAiB,GAAG,OAAO,CACzD,YAAW,aAAa;IAExB,SAAwB,OAAO,CAAC,EAAE,OAAO,CAAC;IAC1C,SAAwB,OAAO,CAAC,EAAE,OAAO,CAAC;IAC1C,SAAwB,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IAC7D,SAAwB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAExD,8DAA8D;IAC9D,IAAI,CAAC,YAAY,CAAC,IAAI,OAAO,CAE5B;IAED,YACE,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,EAChC,gBAAgB,CAAC,EAAE,iBAAiB,EAQrC;IAED;;;;;;;OAOG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEhC;CACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/* Copyright (C) 2026-present Aristotelis — see repository license. */
|
|
2
|
+
import { REQUEST_KIND } from '../domain/request-kind.js';
|
|
2
3
|
import { definedFields, defineHidden } from './request-fields.helper.js';
|
|
3
4
|
/**
|
|
4
5
|
* Base class for application CQRS queries.
|
|
@@ -25,6 +26,10 @@ import { definedFields, defineHidden } from './request-fields.helper.js';
|
|
|
25
26
|
* ```
|
|
26
27
|
*/
|
|
27
28
|
export class BaseQuery {
|
|
29
|
+
/** The kind a pipeline reads from this request: `'query'`. */
|
|
30
|
+
get [REQUEST_KIND]() {
|
|
31
|
+
return 'query';
|
|
32
|
+
}
|
|
28
33
|
constructor(options, sessionPrincipal) {
|
|
29
34
|
defineHidden(this, 'hydrate', options?.hydrate ?? false);
|
|
30
35
|
defineHidden(this, 'refresh', options?.refresh ?? false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.query.js","sourceRoot":"","sources":["../../application/base.query.ts"],"names":[],"mappings":"AAAA,sEAAsE;
|
|
1
|
+
{"version":3,"file":"base.query.js","sourceRoot":"","sources":["../../application/base.query.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAgB,SAAS;IAQ7B,8DAA8D;IAC9D,IAAI,CAAC,YAAY,CAAC;QAChB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YACE,OAAgC,EAChC,gBAAoC;QAEpC,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC;QACzD,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC;QACzD,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,YAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;YACzD,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,MAAM;QACJ,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -17,9 +17,9 @@ export type AggregateBearingResult = IAggregateRoot | {
|
|
|
17
17
|
* uncommitted domain events are published through the {@link IDomainEventPublisher},
|
|
18
18
|
* with the aggregate as the dispatcher context, and cleared after publication.
|
|
19
19
|
*
|
|
20
|
-
* It is framework-neutral. With
|
|
21
|
-
* `@CommandHandler` and pass
|
|
22
|
-
* {@link IDomainEventPublisher};
|
|
20
|
+
* It is framework-neutral. With `@cqrs-ddd/cqrs`, decorate the subclass with
|
|
21
|
+
* `@CommandHandler` and pass `cqrs.eventBus`, which satisfies
|
|
22
|
+
* {@link IDomainEventPublisher}; the command bus calls {@link execute}.
|
|
23
23
|
*
|
|
24
24
|
* @typeParam TCommand - The concrete command type this handler processes.
|
|
25
25
|
* @typeParam TResult - The handler's return type (e.g. aggregate entity or result carrying aggregate).
|
|
@@ -29,7 +29,6 @@ export type AggregateBearingResult = IAggregateRoot | {
|
|
|
29
29
|
* @CommandHandler(CreateUserCommand)
|
|
30
30
|
* export class CreateUserHandler extends CommandBaseHandler<CreateUserCommand, User> {
|
|
31
31
|
* constructor(
|
|
32
|
-
* @Inject(COMMAND_REPOSITORY.createUser)
|
|
33
32
|
* private readonly commandRepository: ICommandRepository<User, UserSnapshot>,
|
|
34
33
|
* protected readonly eventBus: EventBus,
|
|
35
34
|
* ) {
|
|
@@ -49,7 +48,6 @@ export type AggregateBearingResult = IAggregateRoot | {
|
|
|
49
48
|
* @CommandHandler(CreateAuthCommand)
|
|
50
49
|
* export class CreateAuthHandler extends CommandBaseHandler<CreateAuthCommand, CreateAuthResult> {
|
|
51
50
|
* constructor(
|
|
52
|
-
* @Inject(COMMAND_REPOSITORY.createAuth)
|
|
53
51
|
* private readonly commandRepository: ICommandRepository<Auth, null>,
|
|
54
52
|
* protected readonly eventBus: EventBus,
|
|
55
53
|
* ) {
|
|
@@ -75,7 +73,7 @@ export declare abstract class CommandBaseHandler<TCommand = unknown, TResult ext
|
|
|
75
73
|
* Constructs the handler with the publisher of domain events.
|
|
76
74
|
*
|
|
77
75
|
* @param eventBus - The publisher used to dispatch domain events, such as the
|
|
78
|
-
*
|
|
76
|
+
* `EventBus` of `@cqrs-ddd/cqrs`.
|
|
79
77
|
*/
|
|
80
78
|
protected constructor(eventBus: IDomainEventPublisher);
|
|
81
79
|
/**
|
|
@@ -90,13 +88,11 @@ export declare abstract class CommandBaseHandler<TCommand = unknown, TResult ext
|
|
|
90
88
|
*/
|
|
91
89
|
abstract handle(command: TCommand): Promise<TResult>;
|
|
92
90
|
/**
|
|
93
|
-
* Handler entry point, invoked by the command bus
|
|
94
|
-
* `CommandBus`).
|
|
91
|
+
* Handler entry point, invoked by the command bus.
|
|
95
92
|
*
|
|
96
93
|
* Delegates to {@link handle} and automatically publishes any uncommitted domain
|
|
97
94
|
* events if the result is an aggregate root (or an object containing one as
|
|
98
|
-
* `aggregate`). The publisher receives the aggregate as its dispatcher context
|
|
99
|
-
* as NestJS's `EventPublisher` passes it on `commit()`.
|
|
95
|
+
* `aggregate`). The publisher receives the aggregate as its dispatcher context.
|
|
100
96
|
*
|
|
101
97
|
* The events are handed to the publisher and cleared from the aggregate, then
|
|
102
98
|
* `execute()` awaits what `publishAll()` returned: an asynchronous publisher
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-base.handler.d.ts","sourceRoot":"","sources":["../../application/command-base.handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAC;AAEvF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAEpF;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAC9B,cAAc,GACd;IAAE,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;CAAE,CAAC;AAY3C
|
|
1
|
+
{"version":3,"file":"command-base.handler.d.ts","sourceRoot":"","sources":["../../application/command-base.handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAC;AAEvF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAEpF;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAC9B,cAAc,GACd;IAAE,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;CAAE,CAAC;AAY3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,8BAAsB,kBAAkB,CACtC,QAAQ,GAAG,OAAO,EAClB,OAAO,SAAS,sBAAsB,GAAG,sBAAsB;IAQzC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB;IANxE;;;;;OAKG;IACH,SAAS,aAAgC,QAAQ,EAAE,qBAAqB,EAAI;IAE5E;;;;;;;;;OASG;IACH,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAErD;;;;;;;;;;;;;;;;;;;OAmBG;IACG,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAsBjD;CACF"}
|
|
@@ -17,9 +17,9 @@ function isAggregate(obj) {
|
|
|
17
17
|
* uncommitted domain events are published through the {@link IDomainEventPublisher},
|
|
18
18
|
* with the aggregate as the dispatcher context, and cleared after publication.
|
|
19
19
|
*
|
|
20
|
-
* It is framework-neutral. With
|
|
21
|
-
* `@CommandHandler` and pass
|
|
22
|
-
* {@link IDomainEventPublisher};
|
|
20
|
+
* It is framework-neutral. With `@cqrs-ddd/cqrs`, decorate the subclass with
|
|
21
|
+
* `@CommandHandler` and pass `cqrs.eventBus`, which satisfies
|
|
22
|
+
* {@link IDomainEventPublisher}; the command bus calls {@link execute}.
|
|
23
23
|
*
|
|
24
24
|
* @typeParam TCommand - The concrete command type this handler processes.
|
|
25
25
|
* @typeParam TResult - The handler's return type (e.g. aggregate entity or result carrying aggregate).
|
|
@@ -29,7 +29,6 @@ function isAggregate(obj) {
|
|
|
29
29
|
* @CommandHandler(CreateUserCommand)
|
|
30
30
|
* export class CreateUserHandler extends CommandBaseHandler<CreateUserCommand, User> {
|
|
31
31
|
* constructor(
|
|
32
|
-
* @Inject(COMMAND_REPOSITORY.createUser)
|
|
33
32
|
* private readonly commandRepository: ICommandRepository<User, UserSnapshot>,
|
|
34
33
|
* protected readonly eventBus: EventBus,
|
|
35
34
|
* ) {
|
|
@@ -49,7 +48,6 @@ function isAggregate(obj) {
|
|
|
49
48
|
* @CommandHandler(CreateAuthCommand)
|
|
50
49
|
* export class CreateAuthHandler extends CommandBaseHandler<CreateAuthCommand, CreateAuthResult> {
|
|
51
50
|
* constructor(
|
|
52
|
-
* @Inject(COMMAND_REPOSITORY.createAuth)
|
|
53
51
|
* private readonly commandRepository: ICommandRepository<Auth, null>,
|
|
54
52
|
* protected readonly eventBus: EventBus,
|
|
55
53
|
* ) {
|
|
@@ -75,19 +73,17 @@ export class CommandBaseHandler {
|
|
|
75
73
|
* Constructs the handler with the publisher of domain events.
|
|
76
74
|
*
|
|
77
75
|
* @param eventBus - The publisher used to dispatch domain events, such as the
|
|
78
|
-
*
|
|
76
|
+
* `EventBus` of `@cqrs-ddd/cqrs`.
|
|
79
77
|
*/
|
|
80
78
|
constructor(eventBus) {
|
|
81
79
|
this.eventBus = eventBus;
|
|
82
80
|
}
|
|
83
81
|
/**
|
|
84
|
-
* Handler entry point, invoked by the command bus
|
|
85
|
-
* `CommandBus`).
|
|
82
|
+
* Handler entry point, invoked by the command bus.
|
|
86
83
|
*
|
|
87
84
|
* Delegates to {@link handle} and automatically publishes any uncommitted domain
|
|
88
85
|
* events if the result is an aggregate root (or an object containing one as
|
|
89
|
-
* `aggregate`). The publisher receives the aggregate as its dispatcher context
|
|
90
|
-
* as NestJS's `EventPublisher` passes it on `commit()`.
|
|
86
|
+
* `aggregate`). The publisher receives the aggregate as its dispatcher context.
|
|
91
87
|
*
|
|
92
88
|
* The events are handed to the publisher and cleared from the aggregate, then
|
|
93
89
|
* `execute()` awaits what `publishAll()` returned: an asynchronous publisher
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-base.handler.js","sourceRoot":"","sources":["../../application/command-base.handler.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAGtE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAWnE,SAAS,WAAW,CAAC,GAAY;IAC/B,OAAO,CACL,GAAG,YAAY,aAAa;QAC5B,CAAC,OAAO,GAAG,KAAK,QAAQ;YACtB,GAAG,KAAK,IAAI;YACZ,OAAQ,GAAsB,CAAC,oBAAoB,KAAK,UAAU;YAClE,OAAQ,GAAsB,CAAC,QAAQ,KAAK,UAAU,CAAC,CAC1D,CAAC;AACJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"command-base.handler.js","sourceRoot":"","sources":["../../application/command-base.handler.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAGtE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAWnE,SAAS,WAAW,CAAC,GAAY;IAC/B,OAAO,CACL,GAAG,YAAY,aAAa;QAC5B,CAAC,OAAO,GAAG,KAAK,QAAQ;YACtB,GAAG,KAAK,IAAI;YACZ,OAAQ,GAAsB,CAAC,oBAAoB,KAAK,UAAU;YAClE,OAAQ,GAAsB,CAAC,QAAQ,KAAK,UAAU,CAAC,CAC1D,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,MAAM,OAAgB,kBAAkB;IAUG,QAAQ;IANjD;;;;;OAKG;IACH,YAAyC,QAA+B;wBAA/B,QAAQ;IAA0B,CAAC;IAc5E;;;;;;;;;;;;;;;;;;;OAmBG;IACH,KAAK,CAAC,OAAO,CAAC,OAAiB;QAC7B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEjD,MAAM,SAAS,GAAG,WAAW,CAAC,aAAa,CAAC;YAC1C,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,aAAa;gBACX,OAAO,aAAa,KAAK,QAAQ;gBACjC,WAAW,IAAI,aAAa;gBAC5B,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC;gBACtC,CAAC,CAAC,aAAa,CAAC,SAAS;gBACzB,CAAC,CAAC,SAAS,CAAC;QAEhB,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,oBAAoB,EAAE,CAAC,CAAC;YACrD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC9D,SAAS,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM,SAAS,CAAC;YAClB,CAAC;QACH,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -8,10 +8,7 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
10
10
|
* ```ts
|
|
11
|
-
* constructor(
|
|
12
|
-
* @Inject(COMMAND_REPOSITORY.createUser)
|
|
13
|
-
* private readonly users: ICommandRepository<User, UserSnapshot>,
|
|
14
|
-
* ) {}
|
|
11
|
+
* constructor(private readonly users: ICommandRepository<User, UserSnapshot>) {}
|
|
15
12
|
*
|
|
16
13
|
* await this.users.save(user);
|
|
17
14
|
* ```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-repository.port.d.ts","sourceRoot":"","sources":["../../../application/ports/command-repository.port.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"command-repository.port.d.ts","sourceRoot":"","sources":["../../../application/ports/command-repository.port.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,kBAAkB,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IACtE;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;CAChD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-repository.port.d.ts","sourceRoot":"","sources":["../../../application/ports/query-repository.port.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD
|
|
1
|
+
{"version":3,"file":"query-repository.port.d.ts","sourceRoot":"","sources":["../../../application/ports/query-repository.port.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,gBAAgB,CAAC,MAAM,GAAG,aAAa,EAAE,OAAO,GAAG,OAAO;IACzE,sCAAsC;IACtC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACvC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { REQUEST_KIND } from '../request-kind.js';
|
|
1
2
|
import type { IEvent } from './event.interface.js';
|
|
2
3
|
/**
|
|
3
4
|
* Base class for all domain events.
|
|
@@ -8,6 +9,8 @@ import type { IEvent } from './event.interface.js';
|
|
|
8
9
|
*/
|
|
9
10
|
export declare abstract class DomainEvent implements IEvent {
|
|
10
11
|
readonly id: string;
|
|
12
|
+
/** The kind a pipeline reads from this request: `'event'`. */
|
|
13
|
+
get [REQUEST_KIND](): 'event';
|
|
11
14
|
protected constructor(id?: string);
|
|
12
15
|
}
|
|
13
16
|
//# sourceMappingURL=domain.event.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain.event.d.ts","sourceRoot":"","sources":["../../../domain/events/domain.event.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;;;;;GAMG;AACH,8BAAsB,WAAY,YAAW,MAAM;IACjD,SAAgB,EAAE,EAAE,MAAM,CAAC;IAE3B,SAAS,aAAa,EAAE,CAAC,EAAE,MAAM,EAEhC;CACF"}
|
|
1
|
+
{"version":3,"file":"domain.event.d.ts","sourceRoot":"","sources":["../../../domain/events/domain.event.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;;;;;GAMG;AACH,8BAAsB,WAAY,YAAW,MAAM;IACjD,SAAgB,EAAE,EAAE,MAAM,CAAC;IAE3B,8DAA8D;IAC9D,IAAI,CAAC,YAAY,CAAC,IAAI,OAAO,CAE5B;IAED,SAAS,aAAa,EAAE,CAAC,EAAE,MAAM,EAEhC;CACF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/* Copyright (C) 2026-present Aristotelis — see repository license. */
|
|
2
2
|
import { uuidv7 } from '@cqrs-ddd/uuidv7';
|
|
3
|
+
import { REQUEST_KIND } from '../request-kind.js';
|
|
3
4
|
/**
|
|
4
5
|
* Base class for all domain events.
|
|
5
6
|
*
|
|
@@ -9,6 +10,10 @@ import { uuidv7 } from '@cqrs-ddd/uuidv7';
|
|
|
9
10
|
*/
|
|
10
11
|
export class DomainEvent {
|
|
11
12
|
id;
|
|
13
|
+
/** The kind a pipeline reads from this request: `'event'`. */
|
|
14
|
+
get [REQUEST_KIND]() {
|
|
15
|
+
return 'event';
|
|
16
|
+
}
|
|
12
17
|
constructor(id) {
|
|
13
18
|
this.id = id ?? uuidv7();
|
|
14
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain.event.js","sourceRoot":"","sources":["../../../domain/events/domain.event.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"domain.event.js","sourceRoot":"","sources":["../../../domain/events/domain.event.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD;;;;;;GAMG;AACH,MAAM,OAAgB,WAAW;IACf,EAAE,CAAS;IAE3B,8DAA8D;IAC9D,IAAI,CAAC,YAAY,CAAC;QAChB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YAAsB,EAAW;QAC/B,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,MAAM,EAAE,CAAC;IAC3B,CAAC;CACF"}
|
|
@@ -27,8 +27,7 @@ export declare abstract class AggregateRoot<EventBase extends IEvent = IEvent> i
|
|
|
27
27
|
get autoCommit(): boolean;
|
|
28
28
|
/**
|
|
29
29
|
* Called by apply() for each event while autoCommit is enabled; a no-op that
|
|
30
|
-
* returns `undefined` unless overridden or connected to a publisher
|
|
31
|
-
* example NestJS's `EventPublisher.mergeObjectContext`).
|
|
30
|
+
* returns `undefined` unless overridden or connected to a publisher.
|
|
32
31
|
*
|
|
33
32
|
* @param _event - The event to publish.
|
|
34
33
|
* @param _dispatcherContext - Passed through to the publisher, such as `{ transaction }`.
|
|
@@ -57,7 +56,8 @@ export declare abstract class AggregateRoot<EventBase extends IEvent = IEvent> i
|
|
|
57
56
|
*
|
|
58
57
|
* @example
|
|
59
58
|
* ```ts
|
|
60
|
-
* const order =
|
|
59
|
+
* const order = Order.place(id);
|
|
60
|
+
* order.publishAll = (events) => eventBus.publishAll(events);
|
|
61
61
|
* await order.commit({ transaction });
|
|
62
62
|
* ```
|
|
63
63
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate-root.d.ts","sourceRoot":"","sources":["../../../domain/models/aggregate-root.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACtD,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACf,MAAM,2CAA2C,CAAC;AAEnD,QAAA,MAAM,eAAe,eAA4B,CAAC;AAClD,QAAA,MAAM,sBAAsB,eAAmC,CAAC;AAEhE;;;;;;;;;;;GAWG;AACH,8BAAsB,aAAa,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,CACnE,YAAW,cAAc,CAAC,SAAS,CAAC;IAEpC,OAAO,CAAC,CAAC,sBAAsB,CAAC,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAmB;IAErD;;OAEG;IACH,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,EAE5B;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,OAAO,CAExB;IAED
|
|
1
|
+
{"version":3,"file":"aggregate-root.d.ts","sourceRoot":"","sources":["../../../domain/models/aggregate-root.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACtD,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACf,MAAM,2CAA2C,CAAC;AAEnD,QAAA,MAAM,eAAe,eAA4B,CAAC;AAClD,QAAA,MAAM,sBAAsB,eAAmC,CAAC;AAEhE;;;;;;;;;;;GAWG;AACH,8BAAsB,aAAa,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,CACnE,YAAW,cAAc,CAAC,SAAS,CAAC;IAEpC,OAAO,CAAC,CAAC,sBAAsB,CAAC,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAmB;IAErD;;OAEG;IACH,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,EAE5B;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,OAAO,CAExB;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EACrC,MAAM,EAAE,CAAC,EACT,kBAAkB,CAAC,EAAE,OAAO,GAC3B,OAAO,CAET;IAED;;;;;;;OAOG;IACH,UAAU,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EACxC,OAAO,EAAE,CAAC,EAAE,EACZ,kBAAkB,CAAC,EAAE,OAAO,GAC3B,OAAO,CAET;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,iBAAiB,CAAC,EAAE,OAAO,GAAG,OAAO,CAO3C;IAED;;OAEG;IACH,QAAQ,IAAI,IAAI,CAEf;IAED;;OAEG;IACH,oBAAoB,IAAI,SAAS,EAAE,CAElC;IAED;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAI1C;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EACnC,KAAK,EAAE,CAAC,EACR,sBAAsB,GAAE,OAAO,GAAG,iBAAsB,GACvD,IAAI,CAyBN;IAED;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EACvD,KAAK,EAAE,CAAC,GACP,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,CAMlC;IAED;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAG7C;CACF"}
|
|
@@ -33,8 +33,7 @@ export class AggregateRoot {
|
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
35
|
* Called by apply() for each event while autoCommit is enabled; a no-op that
|
|
36
|
-
* returns `undefined` unless overridden or connected to a publisher
|
|
37
|
-
* example NestJS's `EventPublisher.mergeObjectContext`).
|
|
36
|
+
* returns `undefined` unless overridden or connected to a publisher.
|
|
38
37
|
*
|
|
39
38
|
* @param _event - The event to publish.
|
|
40
39
|
* @param _dispatcherContext - Passed through to the publisher, such as `{ transaction }`.
|
|
@@ -67,7 +66,8 @@ export class AggregateRoot {
|
|
|
67
66
|
*
|
|
68
67
|
* @example
|
|
69
68
|
* ```ts
|
|
70
|
-
* const order =
|
|
69
|
+
* const order = Order.place(id);
|
|
70
|
+
* order.publishAll = (events) => eventBus.publishAll(events);
|
|
71
71
|
* await order.commit({ transaction });
|
|
72
72
|
* ```
|
|
73
73
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate-root.js","sourceRoot":"","sources":["../../../domain/models/aggregate-root.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAClD,MAAM,sBAAsB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAEhE;;;;;;;;;;;GAWG;AACH,MAAM,OAAgB,aAAa;IAGzB,CAAC,sBAAsB,CAAC,GAAG,KAAK,CAAC;IACxB,CAAC,eAAe,CAAC,GAAgB,EAAE,CAAC;IAErD;;OAEG;IACH,IAAI,UAAU,CAAC,KAAc;QAC3B,IAAI,CAAC,sBAAsB,CAAC,GAAG,KAAK,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACtC,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"aggregate-root.js","sourceRoot":"","sources":["../../../domain/models/aggregate-root.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brand by which a request tells a pipeline what it is: `@cqrs-ddd/pipeline` reads it, so a
|
|
3
|
+
* handler wrapped there needs no `kind` option and takes the operation name from the request
|
|
4
|
+
* class. `Symbol.for` shares the key, so neither package depends on the other.
|
|
5
|
+
*/
|
|
6
|
+
export declare const REQUEST_KIND: unique symbol;
|
|
7
|
+
//# sourceMappingURL=request-kind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-kind.d.ts","sourceRoot":"","sources":["../../domain/request-kind.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,YAAY,eAAuC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/* Copyright (C) 2026-present Aristotelis — see repository license. */
|
|
2
|
+
/**
|
|
3
|
+
* Brand by which a request tells a pipeline what it is: `@cqrs-ddd/pipeline` reads it, so a
|
|
4
|
+
* handler wrapped there needs no `kind` option and takes the operation name from the request
|
|
5
|
+
* class. `Symbol.for` shares the key, so neither package depends on the other.
|
|
6
|
+
*/
|
|
7
|
+
export const REQUEST_KIND = Symbol.for('@cqrs-ddd/request-kind');
|
|
8
|
+
//# sourceMappingURL=request-kind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-kind.js","sourceRoot":"","sources":["../../domain/request-kind.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* a failed cache write or a miswired repository.
|
|
4
4
|
*
|
|
5
5
|
* Pass one through the `logger` option to route these warnings into an
|
|
6
|
-
* application's logging. `console` and a
|
|
6
|
+
* application's logging. `console` and a pino logger both fit. Without it,
|
|
7
7
|
* warnings go to `console.warn` with a `[CacheDecorator]`-style prefix. A logger
|
|
8
8
|
* that throws never changes a repository result.
|
|
9
9
|
*
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* ```ts
|
|
12
12
|
* @Cache<User, UserSnapshot>({
|
|
13
13
|
* setKey: (user) => cacheKey(User.aggregateName, { id: user.id }),
|
|
14
|
-
* logger:
|
|
14
|
+
* logger: console,
|
|
15
15
|
* })
|
|
16
16
|
* ```
|
|
17
17
|
*/
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { CacheFillOptions, CacheSetOptions, CacheStateEntry, IVersionedCache } from '../../application/ports/cache.port.js';
|
|
2
|
-
export declare const CACHE_TOKEN: unique symbol;
|
|
3
2
|
export type MemoryCacheSetOptions = CacheSetOptions;
|
|
4
3
|
/**
|
|
5
4
|
* Upper bound on retained keys, including revision-only entries.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.cache.d.ts","sourceRoot":"","sources":["../../../persistence/cache/memory.cache.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EAChB,MAAM,uCAAuC,CAAC;AAE/C,
|
|
1
|
+
{"version":3,"file":"memory.cache.d.ts","sourceRoot":"","sources":["../../../persistence/cache/memory.cache.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EAChB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAS,CAAC;AA6B1C;;;;;;;;;;GAUG;AACH,qBAAa,WAAW,CAAC,CAAC,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,WAAW,OAAiB;IAErC,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,YAAY,OAAO,CAAC,EAAE;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,EAGA;IAED,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,OAAO,CAAC,KAAK;IAmBb;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAkBxD;IAED;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAY7C;IAED;;;OAGG;IACG,OAAO,CACX,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,OAAO,CAAC,CAYlB;IAED;;;OAGG;IACG,GAAG,CACP,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAWf;IAED,OAAO,CAAC,KAAK;IAoBb;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAQ7C;IAED;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvC;IAED;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3B;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.cache.js","sourceRoot":"","sources":["../../../persistence/cache/memory.cache.ts"],"names":[],"mappings":"AAAA,sEAAsE;
|
|
1
|
+
{"version":3,"file":"memory.cache.js","sourceRoot":"","sources":["../../../persistence/cache/memory.cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,11 +12,10 @@ import { ICommandRepository } from '../application/ports/command-repository.port
|
|
|
12
12
|
*
|
|
13
13
|
* @example Creating a command repository with the Cache decorator
|
|
14
14
|
* ```typescript
|
|
15
|
-
* @Injectable()
|
|
16
15
|
* export class CreateUserCommandRepository extends CommandRepository<User, UserSnapshot> {
|
|
17
16
|
* constructor(
|
|
18
|
-
*
|
|
19
|
-
*
|
|
17
|
+
* protected readonly cache: ICache<UserSnapshot>,
|
|
18
|
+
* private readonly store: MikroOrmStore,
|
|
20
19
|
* ) {
|
|
21
20
|
* super(cache);
|
|
22
21
|
* }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-repository.abstract.d.ts","sourceRoot":"","sources":["../../persistence/command-repository.abstract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAErF
|
|
1
|
+
{"version":3,"file":"command-repository.abstract.d.ts","sourceRoot":"","sources":["../../persistence/command-repository.abstract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAErF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,8BAAsB,iBAAiB,CACrC,OAAO,GAAG,OAAO,EACjB,OAAO,GAAG,OAAO,GAAG,IAAI,EACxB,MAAM,GAAG,OAAO,CAChB,YAAW,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;IAEnC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;IAApD,YAA+B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAI;IAExD,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;CACzD"}
|
|
@@ -11,11 +11,10 @@
|
|
|
11
11
|
*
|
|
12
12
|
* @example Creating a command repository with the Cache decorator
|
|
13
13
|
* ```typescript
|
|
14
|
-
* @Injectable()
|
|
15
14
|
* export class CreateUserCommandRepository extends CommandRepository<User, UserSnapshot> {
|
|
16
15
|
* constructor(
|
|
17
|
-
*
|
|
18
|
-
*
|
|
16
|
+
* protected readonly cache: ICache<UserSnapshot>,
|
|
17
|
+
* private readonly store: MikroOrmStore,
|
|
19
18
|
* ) {
|
|
20
19
|
* super(cache);
|
|
21
20
|
* }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-repository.abstract.js","sourceRoot":"","sources":["../../persistence/command-repository.abstract.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAKtE
|
|
1
|
+
{"version":3,"file":"command-repository.abstract.js","sourceRoot":"","sources":["../../persistence/command-repository.abstract.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAKtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,OAAgB,iBAAiB;IAMN,KAAK;IAApC,YAA+B,KAAqB;qBAArB,KAAK;IAAmB,CAAC;CAGzD"}
|
|
@@ -41,7 +41,6 @@ export interface PersistedAggregate {
|
|
|
41
41
|
*
|
|
42
42
|
* @example Usage in an update command repository
|
|
43
43
|
* ```typescript
|
|
44
|
-
* @Injectable()
|
|
45
44
|
* export class UpdateRoleCommandRepository extends CommandRepository<Role, RoleSnapshot> {
|
|
46
45
|
* @Cache<Role, RoleSnapshot>((role) => `roles:${role.id}`)
|
|
47
46
|
* @AcknowledgePersisted<[Role]>({ entity: ([role]) => role })
|
|
@@ -59,7 +58,6 @@ export interface PersistedAggregate {
|
|
|
59
58
|
*
|
|
60
59
|
* @example Usage in a create command repository
|
|
61
60
|
* ```typescript
|
|
62
|
-
* @Injectable()
|
|
63
61
|
* export class CreateRoleCommandRepository extends CommandRepository<Role, RoleSnapshot> {
|
|
64
62
|
* @Cache<Role, RoleSnapshot>((role) => `roles:${role.id}`)
|
|
65
63
|
* @AcknowledgePersisted<[Role]>({ entity: ([role]) => role })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acknowledge-persisted.decorator.d.ts","sourceRoot":"","sources":["../../../persistence/decorators/acknowledge-persisted.decorator.ts"],"names":[],"mappings":"AACA;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9C;AAED
|
|
1
|
+
{"version":3,"file":"acknowledge-persisted.decorator.d.ts","sourceRoot":"","sources":["../../../persistence/decorators/acknowledge-persisted.decorator.ts"],"names":[],"mappings":"AACA;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,SAAS,OAAO,EAAE,EAAE,OAAO,EAAE;IACrE,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,kBAAkB,CAAC;CAC7C,IACS,OAAO,WACJ,MAAM,QACT,MAAM,GAAG,MAAM,cACT,uBAAuB,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,KACxE,IAAI,CAYR"}
|
|
@@ -27,7 +27,6 @@
|
|
|
27
27
|
*
|
|
28
28
|
* @example Usage in an update command repository
|
|
29
29
|
* ```typescript
|
|
30
|
-
* @Injectable()
|
|
31
30
|
* export class UpdateRoleCommandRepository extends CommandRepository<Role, RoleSnapshot> {
|
|
32
31
|
* @Cache<Role, RoleSnapshot>((role) => `roles:${role.id}`)
|
|
33
32
|
* @AcknowledgePersisted<[Role]>({ entity: ([role]) => role })
|
|
@@ -45,7 +44,6 @@
|
|
|
45
44
|
*
|
|
46
45
|
* @example Usage in a create command repository
|
|
47
46
|
* ```typescript
|
|
48
|
-
* @Injectable()
|
|
49
47
|
* export class CreateRoleCommandRepository extends CommandRepository<Role, RoleSnapshot> {
|
|
50
48
|
* @Cache<Role, RoleSnapshot>((role) => `roles:${role.id}`)
|
|
51
49
|
* @AcknowledgePersisted<[Role]>({ entity: ([role]) => role })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acknowledge-persisted.decorator.js","sourceRoot":"","sources":["../../../persistence/decorators/acknowledge-persisted.decorator.ts"],"names":[],"mappings":"AAgBA
|
|
1
|
+
{"version":3,"file":"acknowledge-persisted.decorator.js","sourceRoot":"","sources":["../../../persistence/decorators/acknowledge-persisted.decorator.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,MAAM,UAAU,oBAAoB,CAA0B,OAE7D;IACC,OAAO,CACL,OAAe,EACf,IAAqB,EACrB,UAAyE,EACnE,EAAE;QACR,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;QAClC,IAAI,OAAO,QAAQ,KAAK,UAAU;YAChC,MAAM,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;QAClE,UAAU,CAAC,KAAK,GAAG,KAAK,WAAW,GAAG,IAAW;YAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC/B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChD,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -42,7 +42,6 @@ export type UniqueErrors<TEntity, TConstraint extends string = never> = {
|
|
|
42
42
|
*
|
|
43
43
|
* @example Mapping unique constraints in a create repository
|
|
44
44
|
* ```typescript
|
|
45
|
-
* @Injectable()
|
|
46
45
|
* export class CreateUserCommandRepository extends CommandRepository<User, UserSnapshot> {
|
|
47
46
|
* @Cache<User, UserSnapshot>((u) => `users:${u.id}`, null, (u) => [`users:email:${u.email}`])
|
|
48
47
|
* @AcknowledgePersisted<[User]>({ entity: ([user]) => user })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-persistence-errors.decorator.d.ts","sourceRoot":"","sources":["../../../persistence/decorators/map-persistence-errors.decorator.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,2BAA2B,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,MAAM,YAAY,CAAC,OAAO,EAAE,WAAW,SAAS,MAAM,GAAG,KAAK,IAAI;IACtE,QAAQ,EAAE,CAAC,IAAI,OAAO,CAAC,MAAM,OAAO,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAC7D,MAAM,EAAE,OAAO,KACZ,KAAK;CACX,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"map-persistence-errors.decorator.d.ts","sourceRoot":"","sources":["../../../persistence/decorators/map-persistence-errors.decorator.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,2BAA2B,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,MAAM,YAAY,CAAC,OAAO,EAAE,WAAW,SAAS,MAAM,GAAG,KAAK,IAAI;IACtE,QAAQ,EAAE,CAAC,IAAI,OAAO,CAAC,MAAM,OAAO,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAC7D,MAAM,EAAE,OAAO,KACZ,KAAK;CACX,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,SAAS,OAAO,EAAE,EACvB,OAAO,EACP,WAAW,SAAS,MAAM,GAAG,KAAK,EAClC,KAAK,GAAG,OAAO,EACf,OAAO,EAAE;IACT,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC;IACjC,MAAM,CAAC,EAAE,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;CACvE,IACS,OAAO,WACJ,MAAM,QACT,MAAM,GAAG,MAAM,cACT,uBAAuB,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,KACxE,IAAI,CA+BR"}
|
|
@@ -34,7 +34,6 @@ import { persistenceDialect, } from '../persistence-dialect.js';
|
|
|
34
34
|
*
|
|
35
35
|
* @example Mapping unique constraints in a create repository
|
|
36
36
|
* ```typescript
|
|
37
|
-
* @Injectable()
|
|
38
37
|
* export class CreateUserCommandRepository extends CommandRepository<User, UserSnapshot> {
|
|
39
38
|
* @Cache<User, UserSnapshot>((u) => `users:${u.id}`, null, (u) => [`users:email:${u.email}`])
|
|
40
39
|
* @AcknowledgePersisted<[User]>({ entity: ([user]) => user })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-persistence-errors.decorator.js","sourceRoot":"","sources":["../../../persistence/decorators/map-persistence-errors.decorator.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAEL,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAcnC
|
|
1
|
+
{"version":3,"file":"map-persistence-errors.decorator.js","sourceRoot":"","sources":["../../../persistence/decorators/map-persistence-errors.decorator.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAEL,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAcnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,MAAM,UAAU,oBAAoB,CAKlC,OAyBD;IACC,OAAO,CACL,OAAe,EACf,IAAqB,EACrB,UAAyE,EACnE,EAAE;QACR,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;QAClC,IAAI,OAAO,QAAQ,KAAK,UAAU;YAChC,MAAM,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACjD,UAAU,CAAC,KAAK,GAAG,KAAK,WAAW,GAAG,IAAW;YAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,kBAAkB,EAAE,CAAC;YACxD,IAAI,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC1B,MAAM,IAAI,SAAS,CACjB,0GAA0G,CAC3G,CAAC;YACJ,CAAC;YACD,IAAI,CAAC;gBACH,OAAO,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM,GAAG,GAAG,SAAS;oBACnB,CAAC,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,EAAE,MAAgB,CAAC;oBACnD,CAAC,CAAC,SAAS,CAAC;gBACd,MAAM,OAAO,GACX,GAAG,KAAK,SAAS;oBACf,CAAC,CAAC,SAAS;oBACX,CAAC,CAAE,MAAqD,CAAC,GAAG,CAAC,CAAC;gBAClE,IAAI,OAAO;oBAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;gBACnC,IAAI,OAAO,CAAC,SAAS;oBACnB,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAa,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC7D,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -26,11 +26,10 @@ export interface QueryRepositoryHydration<TResult> {
|
|
|
26
26
|
*
|
|
27
27
|
* @example Creating a query repository with the FromCache decorator
|
|
28
28
|
* ```typescript
|
|
29
|
-
* @Injectable()
|
|
30
29
|
* export class GetUserQueryRepository extends QueryRepository<GetUserQuery, User | null> {
|
|
31
30
|
* constructor(
|
|
32
|
-
*
|
|
33
|
-
*
|
|
31
|
+
* protected readonly cache: ICache<UserSnapshot>,
|
|
32
|
+
* private readonly store: MikroOrmStore,
|
|
34
33
|
* ) {
|
|
35
34
|
* super(cache);
|
|
36
35
|
* }
|
|
@@ -48,11 +47,10 @@ export interface QueryRepositoryHydration<TResult> {
|
|
|
48
47
|
*
|
|
49
48
|
* @example Declaring rehydration once for the whole repository
|
|
50
49
|
* ```typescript
|
|
51
|
-
* @Injectable()
|
|
52
50
|
* export class GetRoleQueryRepository extends QueryRepository<GetRoleQuery, Role | null> {
|
|
53
51
|
* constructor(
|
|
54
|
-
*
|
|
55
|
-
*
|
|
52
|
+
* cache: ICache<RoleSnapshot>,
|
|
53
|
+
* private readonly store: MikroOrmStore,
|
|
56
54
|
* ) {
|
|
57
55
|
* super(cache, { hydrateFn: (cached) => Role.fromJSON(cached as RoleSnapshot) });
|
|
58
56
|
* }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-repository.abstract.d.ts","sourceRoot":"","sources":["../../persistence/query-repository.abstract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE;;;GAGG;AACH,MAAM,WAAW,wBAAwB,CAAC,OAAO;IAC/C;;;OAGG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAExC,4DAA4D;IAC5D,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;CAC5C;AAED
|
|
1
|
+
{"version":3,"file":"query-repository.abstract.d.ts","sourceRoot":"","sources":["../../persistence/query-repository.abstract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE;;;GAGG;AACH,MAAM,WAAW,wBAAwB,CAAC,OAAO;IAC/C;;;OAGG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAExC,4DAA4D;IAC5D,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;CAC5C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,8BAAsB,eAAe,CAAC,MAAM,GAAG,aAAa,EAAE,OAAO,GAAG,OAAO,CAC7E,YAAW,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC;IAG1C,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,wBAAwB,CAAC,OAAO,CAAC;IAFlE,YACqB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,EACtB,SAAS,CAAC,EAAE,wBAAwB,CAAC,OAAO,CAAC,YAAA,EAC9D;IAEJ,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAChD"}
|
|
@@ -11,11 +11,10 @@
|
|
|
11
11
|
*
|
|
12
12
|
* @example Creating a query repository with the FromCache decorator
|
|
13
13
|
* ```typescript
|
|
14
|
-
* @Injectable()
|
|
15
14
|
* export class GetUserQueryRepository extends QueryRepository<GetUserQuery, User | null> {
|
|
16
15
|
* constructor(
|
|
17
|
-
*
|
|
18
|
-
*
|
|
16
|
+
* protected readonly cache: ICache<UserSnapshot>,
|
|
17
|
+
* private readonly store: MikroOrmStore,
|
|
19
18
|
* ) {
|
|
20
19
|
* super(cache);
|
|
21
20
|
* }
|
|
@@ -33,11 +32,10 @@
|
|
|
33
32
|
*
|
|
34
33
|
* @example Declaring rehydration once for the whole repository
|
|
35
34
|
* ```typescript
|
|
36
|
-
* @Injectable()
|
|
37
35
|
* export class GetRoleQueryRepository extends QueryRepository<GetRoleQuery, Role | null> {
|
|
38
36
|
* constructor(
|
|
39
|
-
*
|
|
40
|
-
*
|
|
37
|
+
* cache: ICache<RoleSnapshot>,
|
|
38
|
+
* private readonly store: MikroOrmStore,
|
|
41
39
|
* ) {
|
|
42
40
|
* super(cache, { hydrateFn: (cached) => Role.fromJSON(cached as RoleSnapshot) });
|
|
43
41
|
* }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-repository.abstract.js","sourceRoot":"","sources":["../../persistence/query-repository.abstract.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAqBtE
|
|
1
|
+
{"version":3,"file":"query-repository.abstract.js","sourceRoot":"","sources":["../../persistence/query-repository.abstract.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAqBtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,MAAM,OAAgB,eAAe;IAId,KAAK;IACL,SAAS;IAF9B,YACqB,KAAsB,EACtB,SAA6C;qBAD7C,KAAK;yBACL,SAAS;IAC3B,CAAC;CAGL"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cqrs-ddd/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Framework- and ORM-neutral DDD building blocks for TypeScript: aggregates and domain events, CQRS base classes and repository ports, and a revision-fenced repository cache, as separate entry points.",
|
|
5
5
|
"author": "Aristotelis",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -10,12 +10,12 @@
|
|
|
10
10
|
},
|
|
11
11
|
"repository": {
|
|
12
12
|
"type": "git",
|
|
13
|
-
"url": "git+https://github.com/aristoteliss/
|
|
14
|
-
"directory": "packages/
|
|
13
|
+
"url": "git+https://github.com/aristoteliss/ddd-cqrs.git",
|
|
14
|
+
"directory": "packages/core"
|
|
15
15
|
},
|
|
16
|
-
"homepage": "https://github.
|
|
16
|
+
"homepage": "https://aristoteliss.github.io/ddd-cqrs/packages/core/",
|
|
17
17
|
"bugs": {
|
|
18
|
-
"url": "https://github.com/aristoteliss/
|
|
18
|
+
"url": "https://github.com/aristoteliss/ddd-cqrs/issues"
|
|
19
19
|
},
|
|
20
20
|
"keywords": [
|
|
21
21
|
"ddd",
|
|
@@ -61,13 +61,13 @@
|
|
|
61
61
|
"access": "public"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@cqrs-ddd/
|
|
65
|
-
"@cqrs-ddd/
|
|
64
|
+
"@cqrs-ddd/safe-stringify": "^0.5.0",
|
|
65
|
+
"@cqrs-ddd/uuidv7": "^0.5.0"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@vitest/coverage-v8": "^5.0.
|
|
68
|
+
"@vitest/coverage-v8": "^5.0.3",
|
|
69
69
|
"typescript": "^7.0.2",
|
|
70
|
-
"vitest": "^5.0.
|
|
70
|
+
"vitest": "^5.0.3"
|
|
71
71
|
},
|
|
72
72
|
"scripts": {
|
|
73
73
|
"build": "tsc -p tsconfig.build.json",
|