@hg-ts/cqrs 0.8.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cqrs.module 3.js +95 -0
- package/dist/cqrs.module.d 3.ts +12 -0
- package/dist/cqrs.module.d.ts 3.map +1 -0
- package/dist/cqrs.module.js 3.map +1 -0
- package/dist/index 3.js +6 -0
- package/dist/index.d 3.ts +6 -0
- package/dist/index.d.ts 3.map +1 -0
- package/dist/index.js 3.map +1 -0
- package/dist/types 3.js +2 -0
- package/dist/types.d 3.ts +7 -0
- package/dist/types.d.ts 3.map +1 -0
- package/dist/types.js 3.map +1 -0
- package/package.json +7 -7
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { WillNeverHappenedException } from '@hg-ts/exception';
|
|
3
|
+
import { Global, Inject, Module, } from '@nestjs/common';
|
|
4
|
+
import { DiscoveryModule, DiscoveryService, } from '@nestjs/core';
|
|
5
|
+
import assert from 'node:assert/strict';
|
|
6
|
+
import { BaseCommand, BaseCommandHandler, BaseQuery, BaseQueryHandler, } from './abstracts/index.js';
|
|
7
|
+
import { COMMAND_HANDLER_METADATA, QUERY_HANDLER_METADATA, } from './decorators/index.js';
|
|
8
|
+
import { CommandExecutor, QueryExecutor, } from './executors/index.js';
|
|
9
|
+
let CqrsModule = class CqrsModule {
|
|
10
|
+
discoveryService;
|
|
11
|
+
commandExecutor;
|
|
12
|
+
queryExecutor;
|
|
13
|
+
async onModuleInit() {
|
|
14
|
+
const providers = this.discoveryService.getProviders()
|
|
15
|
+
.filter(wrapper => wrapper.instance)
|
|
16
|
+
.map(wrapper => wrapper.instance);
|
|
17
|
+
providers.forEach(provider => {
|
|
18
|
+
const handlerCtor = Object.getPrototypeOf(provider).constructor;
|
|
19
|
+
const isCommandHandler = this.isCommandHandler(provider);
|
|
20
|
+
const isQueryHandler = this.isQueryHandler(provider);
|
|
21
|
+
const commandMetadata = this.getCommandMetadata(handlerCtor);
|
|
22
|
+
const queryMetadata = this.getQueryMetadata(handlerCtor);
|
|
23
|
+
if (isCommandHandler && commandMetadata) {
|
|
24
|
+
this.commandExecutor['addHandler'](commandMetadata, provider);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (isCommandHandler) {
|
|
28
|
+
throw new WillNeverHappenedException('Command handler instance provided without CommandHandler decorator');
|
|
29
|
+
}
|
|
30
|
+
if (commandMetadata) {
|
|
31
|
+
throw new WillNeverHappenedException('CommandHandler decorate class that does not extended BaseCommandHandler');
|
|
32
|
+
}
|
|
33
|
+
if (isQueryHandler && queryMetadata) {
|
|
34
|
+
this.queryExecutor['addHandler'](queryMetadata, provider);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (isQueryHandler) {
|
|
38
|
+
throw new WillNeverHappenedException('Query handler instance provided without QueryHandler decorator');
|
|
39
|
+
}
|
|
40
|
+
if (queryMetadata) {
|
|
41
|
+
throw new WillNeverHappenedException('QueryHandler decorate class that does not extended BaseQueryHandler');
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
getCommandMetadata(handlerCtor) {
|
|
46
|
+
const metadata = Reflect.getMetadata(COMMAND_HANDLER_METADATA, handlerCtor);
|
|
47
|
+
if (!metadata) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
assert.ok(metadata.prototype instanceof BaseCommand);
|
|
51
|
+
return metadata;
|
|
52
|
+
}
|
|
53
|
+
getQueryMetadata(handlerCtor) {
|
|
54
|
+
const metadata = Reflect.getMetadata(QUERY_HANDLER_METADATA, handlerCtor);
|
|
55
|
+
if (!metadata) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
assert.ok(metadata.prototype instanceof BaseQuery);
|
|
59
|
+
return metadata;
|
|
60
|
+
}
|
|
61
|
+
isCommandHandler(provider) {
|
|
62
|
+
return provider instanceof BaseCommandHandler;
|
|
63
|
+
}
|
|
64
|
+
isQueryHandler(provider) {
|
|
65
|
+
return provider instanceof BaseQueryHandler;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
__decorate([
|
|
69
|
+
Inject(),
|
|
70
|
+
__metadata("design:type", DiscoveryService)
|
|
71
|
+
], CqrsModule.prototype, "discoveryService", void 0);
|
|
72
|
+
__decorate([
|
|
73
|
+
Inject(),
|
|
74
|
+
__metadata("design:type", CommandExecutor)
|
|
75
|
+
], CqrsModule.prototype, "commandExecutor", void 0);
|
|
76
|
+
__decorate([
|
|
77
|
+
Inject(),
|
|
78
|
+
__metadata("design:type", QueryExecutor)
|
|
79
|
+
], CqrsModule.prototype, "queryExecutor", void 0);
|
|
80
|
+
CqrsModule = __decorate([
|
|
81
|
+
Global(),
|
|
82
|
+
Module({
|
|
83
|
+
imports: [DiscoveryModule],
|
|
84
|
+
providers: [
|
|
85
|
+
CommandExecutor,
|
|
86
|
+
QueryExecutor,
|
|
87
|
+
],
|
|
88
|
+
exports: [
|
|
89
|
+
CommandExecutor,
|
|
90
|
+
QueryExecutor,
|
|
91
|
+
],
|
|
92
|
+
})
|
|
93
|
+
], CqrsModule);
|
|
94
|
+
export { CqrsModule };
|
|
95
|
+
//# sourceMappingURL=cqrs.module.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { OnModuleInit } from '@nestjs/common';
|
|
2
|
+
export declare class CqrsModule implements OnModuleInit {
|
|
3
|
+
private readonly discoveryService;
|
|
4
|
+
private readonly commandExecutor;
|
|
5
|
+
private readonly queryExecutor;
|
|
6
|
+
onModuleInit(): Promise<void>;
|
|
7
|
+
private getCommandMetadata;
|
|
8
|
+
private getQueryMetadata;
|
|
9
|
+
private isCommandHandler;
|
|
10
|
+
private isQueryHandler;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=cqrs.module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cqrs.module.d.ts","sourceRoot":"","sources":["../src/cqrs.module.ts"],"names":[],"mappings":"AAEA,OAAO,EAIN,YAAY,EACZ,MAAM,gBAAgB,CAAC;AAuBxB,qBAYa,UAAW,YAAW,YAAY;IAE9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IAGpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAGlD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAEjC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA8C1C,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,cAAc;CAGtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cqrs.module.js","sourceRoot":"","sources":["../src/cqrs.module.ts"],"names":[],"mappings":"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"}
|
package/dist/index 3.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { BaseQuery, BaseQueryHandler, BaseCommand, BaseCommandHandler, } from './abstracts/index.js';
|
|
2
|
+
export * from './exceptions/index.js';
|
|
3
|
+
export * from './executors/index.js';
|
|
4
|
+
export { CommandHandler, QueryHandler } from './decorators/index.js';
|
|
5
|
+
export { CqrsModule } from './cqrs.module.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { BaseQuery, BaseQueryHandler, BaseCommand, BaseCommandHandler, } from './abstracts/index.js';
|
|
2
|
+
export * from './exceptions/index.js';
|
|
3
|
+
export * from './executors/index.js';
|
|
4
|
+
export { CommandHandler, QueryHandler } from './decorators/index.js';
|
|
5
|
+
export { CqrsModule } from './cqrs.module.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,kBAAkB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,kBAAkB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/types 3.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BaseCommand, BaseCommandHandler, BaseQuery, BaseQueryHandler } from './abstracts/index.js';
|
|
2
|
+
export type CommandResult<Command extends BaseCommand<any>> = Command extends BaseCommand<infer Result> ? Result : never;
|
|
3
|
+
export type QueryResult<Command extends BaseQuery<any>> = Command extends BaseQuery<infer Result> ? Result : never;
|
|
4
|
+
export type BaseCommandOrQuery = BaseQuery<any> | BaseCommand<any>;
|
|
5
|
+
export type CommonHandler<CommandOrQuery extends BaseCommandOrQuery> = CommandOrQuery extends BaseQuery<any> ? BaseQueryHandler<CommandOrQuery> : CommandOrQuery extends BaseCommand<any> ? BaseCommandHandler<CommandOrQuery> : never;
|
|
6
|
+
export type CommonResult<CommandOrQuery extends BaseCommandOrQuery> = CommandOrQuery extends BaseQuery<any> ? QueryResult<CommandOrQuery> : CommandOrQuery extends BaseCommand<any> ? CommandResult<CommandOrQuery> : never;
|
|
7
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,WAAW,CAAC,GAAG,CAAC,IAAI,OAAO,SAAS,WAAW,CAAC,MAAM,MAAM,CAAC,GACpG,MAAM,GACN,KAAK,CAAC;AACT,MAAM,MAAM,WAAW,CAAC,OAAO,SAAS,SAAS,CAAC,GAAG,CAAC,IAAI,OAAO,SAAS,SAAS,CAAC,MAAM,MAAM,CAAC,GAC9F,MAAM,GACN,KAAK,CAAC;AAET,MAAM,MAAM,kBAAkB,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;AAEnE,MAAM,MAAM,aAAa,CAAC,cAAc,SAAS,kBAAkB,IAClE,cAAc,SAAS,SAAS,CAAC,GAAG,CAAC,GAClC,gBAAgB,CAAC,cAAc,CAAC,GAChC,cAAc,SAAS,WAAW,CAAC,GAAG,CAAC,GACtC,kBAAkB,CAAC,cAAc,CAAC,GAClC,KAAK,CAAC;AAEX,MAAM,MAAM,YAAY,CAAC,cAAc,SAAS,kBAAkB,IACjE,cAAc,SAAS,SAAS,CAAC,GAAG,CAAC,GAClC,WAAW,CAAC,cAAc,CAAC,GAC3B,cAAc,SAAS,WAAW,CAAC,GAAG,CAAC,GACtC,aAAa,CAAC,cAAc,CAAC,GAC7B,KAAK,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hg-ts/cqrs",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
"test:dev": "vitest watch"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"@hg-ts-config/typescript": "0.8.
|
|
22
|
-
"@hg-ts/exception": "0.8.
|
|
23
|
-
"@hg-ts/linter": "0.8.
|
|
24
|
-
"@hg-ts/tests": "0.8.
|
|
25
|
-
"@hg-ts/types": "0.8.
|
|
21
|
+
"@hg-ts-config/typescript": "0.8.1",
|
|
22
|
+
"@hg-ts/exception": "0.8.1",
|
|
23
|
+
"@hg-ts/linter": "0.8.1",
|
|
24
|
+
"@hg-ts/tests": "0.8.1",
|
|
25
|
+
"@hg-ts/types": "0.8.1",
|
|
26
26
|
"@nestjs/common": "11.1.0",
|
|
27
27
|
"@nestjs/core": "11.1.0",
|
|
28
28
|
"@nestjs/testing": "11.1.0",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"vitest": "4.0.14"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
|
-
"@hg-ts/exception": "0.8.
|
|
41
|
+
"@hg-ts/exception": "0.8.1",
|
|
42
42
|
"@nestjs/common": "*",
|
|
43
43
|
"@nestjs/core": "*",
|
|
44
44
|
"reflect-metadata": "*",
|