@hestjs/cqrs 0.1.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.
Files changed (130) hide show
  1. package/README.md +234 -0
  2. package/dist/classes/command.d.ts +13 -0
  3. package/dist/classes/command.d.ts.map +1 -0
  4. package/dist/classes/command.js +11 -0
  5. package/dist/classes/command.js.map +1 -0
  6. package/dist/classes/event.d.ts +10 -0
  7. package/dist/classes/event.d.ts.map +1 -0
  8. package/dist/classes/event.js +14 -0
  9. package/dist/classes/event.js.map +1 -0
  10. package/dist/classes/index.d.ts +4 -0
  11. package/dist/classes/index.d.ts.map +1 -0
  12. package/dist/classes/index.js +20 -0
  13. package/dist/classes/index.js.map +1 -0
  14. package/dist/classes/query.d.ts +13 -0
  15. package/dist/classes/query.d.ts.map +1 -0
  16. package/dist/classes/query.js +11 -0
  17. package/dist/classes/query.js.map +1 -0
  18. package/dist/command-bus.d.ts +30 -0
  19. package/dist/command-bus.d.ts.map +1 -0
  20. package/dist/command-bus.js +88 -0
  21. package/dist/command-bus.js.map +1 -0
  22. package/dist/constants.d.ts +10 -0
  23. package/dist/constants.d.ts.map +1 -0
  24. package/dist/constants.js +16 -0
  25. package/dist/constants.js.map +1 -0
  26. package/dist/cqrs.module.d.ts +50 -0
  27. package/dist/cqrs.module.d.ts.map +1 -0
  28. package/dist/cqrs.module.js +149 -0
  29. package/dist/cqrs.module.js.map +1 -0
  30. package/dist/decorators/command-handler.decorator.d.ts +12 -0
  31. package/dist/decorators/command-handler.decorator.d.ts.map +1 -0
  32. package/dist/decorators/command-handler.decorator.js +27 -0
  33. package/dist/decorators/command-handler.decorator.js.map +1 -0
  34. package/dist/decorators/events-handler.decorator.d.ts +12 -0
  35. package/dist/decorators/events-handler.decorator.d.ts.map +1 -0
  36. package/dist/decorators/events-handler.decorator.js +23 -0
  37. package/dist/decorators/events-handler.decorator.js.map +1 -0
  38. package/dist/decorators/index.d.ts +5 -0
  39. package/dist/decorators/index.d.ts.map +1 -0
  40. package/dist/decorators/index.js +21 -0
  41. package/dist/decorators/index.js.map +1 -0
  42. package/dist/decorators/query-handler.decorator.d.ts +12 -0
  43. package/dist/decorators/query-handler.decorator.d.ts.map +1 -0
  44. package/dist/decorators/query-handler.decorator.js +27 -0
  45. package/dist/decorators/query-handler.decorator.js.map +1 -0
  46. package/dist/decorators/saga.decorator.d.ts +9 -0
  47. package/dist/decorators/saga.decorator.d.ts.map +1 -0
  48. package/dist/decorators/saga.decorator.js +21 -0
  49. package/dist/decorators/saga.decorator.js.map +1 -0
  50. package/dist/event-bus.d.ts +38 -0
  51. package/dist/event-bus.d.ts.map +1 -0
  52. package/dist/event-bus.js +135 -0
  53. package/dist/event-bus.js.map +1 -0
  54. package/dist/exceptions/command.exceptions.d.ts +7 -0
  55. package/dist/exceptions/command.exceptions.d.ts.map +1 -0
  56. package/dist/exceptions/command.exceptions.js +18 -0
  57. package/dist/exceptions/command.exceptions.js.map +1 -0
  58. package/dist/exceptions/event.exceptions.d.ts +7 -0
  59. package/dist/exceptions/event.exceptions.d.ts.map +1 -0
  60. package/dist/exceptions/event.exceptions.js +18 -0
  61. package/dist/exceptions/event.exceptions.js.map +1 -0
  62. package/dist/exceptions/index.d.ts +4 -0
  63. package/dist/exceptions/index.d.ts.map +1 -0
  64. package/dist/exceptions/index.js +20 -0
  65. package/dist/exceptions/index.js.map +1 -0
  66. package/dist/exceptions/query.exceptions.d.ts +7 -0
  67. package/dist/exceptions/query.exceptions.d.ts.map +1 -0
  68. package/dist/exceptions/query.exceptions.js +18 -0
  69. package/dist/exceptions/query.exceptions.js.map +1 -0
  70. package/dist/helpers/default-command-pubsub.d.ts +7 -0
  71. package/dist/helpers/default-command-pubsub.d.ts.map +1 -0
  72. package/dist/helpers/default-command-pubsub.js +21 -0
  73. package/dist/helpers/default-command-pubsub.js.map +1 -0
  74. package/dist/helpers/default-event-pubsub.d.ts +8 -0
  75. package/dist/helpers/default-event-pubsub.d.ts.map +1 -0
  76. package/dist/helpers/default-event-pubsub.js +24 -0
  77. package/dist/helpers/default-event-pubsub.js.map +1 -0
  78. package/dist/helpers/default-query-pubsub.d.ts +7 -0
  79. package/dist/helpers/default-query-pubsub.d.ts.map +1 -0
  80. package/dist/helpers/default-query-pubsub.js +21 -0
  81. package/dist/helpers/default-query-pubsub.js.map +1 -0
  82. package/dist/helpers/index.d.ts +4 -0
  83. package/dist/helpers/index.d.ts.map +1 -0
  84. package/dist/helpers/index.js +20 -0
  85. package/dist/helpers/index.js.map +1 -0
  86. package/dist/index.d.ts +14 -0
  87. package/dist/index.d.ts.map +1 -0
  88. package/dist/index.js +39 -0
  89. package/dist/index.js.map +1 -0
  90. package/dist/interfaces/command.interface.d.ts +14 -0
  91. package/dist/interfaces/command.interface.d.ts.map +1 -0
  92. package/dist/interfaces/command.interface.js +3 -0
  93. package/dist/interfaces/command.interface.js.map +1 -0
  94. package/dist/interfaces/cqrs-module-options.interface.d.ts +17 -0
  95. package/dist/interfaces/cqrs-module-options.interface.d.ts.map +1 -0
  96. package/dist/interfaces/cqrs-module-options.interface.js +3 -0
  97. package/dist/interfaces/cqrs-module-options.interface.js.map +1 -0
  98. package/dist/interfaces/event.interface.d.ts +23 -0
  99. package/dist/interfaces/event.interface.d.ts.map +1 -0
  100. package/dist/interfaces/event.interface.js +3 -0
  101. package/dist/interfaces/event.interface.js.map +1 -0
  102. package/dist/interfaces/index.d.ts +5 -0
  103. package/dist/interfaces/index.d.ts.map +1 -0
  104. package/dist/interfaces/index.js +21 -0
  105. package/dist/interfaces/index.js.map +1 -0
  106. package/dist/interfaces/query.interface.d.ts +16 -0
  107. package/dist/interfaces/query.interface.d.ts.map +1 -0
  108. package/dist/interfaces/query.interface.js +3 -0
  109. package/dist/interfaces/query.interface.js.map +1 -0
  110. package/dist/query-bus.d.ts +30 -0
  111. package/dist/query-bus.d.ts.map +1 -0
  112. package/dist/query-bus.js +88 -0
  113. package/dist/query-bus.js.map +1 -0
  114. package/dist/services/explorer.service.d.ts +25 -0
  115. package/dist/services/explorer.service.d.ts.map +1 -0
  116. package/dist/services/explorer.service.js +95 -0
  117. package/dist/services/explorer.service.js.map +1 -0
  118. package/dist/services/index.d.ts +2 -0
  119. package/dist/services/index.d.ts.map +1 -0
  120. package/dist/services/index.js +18 -0
  121. package/dist/services/index.js.map +1 -0
  122. package/dist/utils/index.d.ts +2 -0
  123. package/dist/utils/index.d.ts.map +1 -0
  124. package/dist/utils/index.js +18 -0
  125. package/dist/utils/index.js.map +1 -0
  126. package/dist/utils/observable-bus.d.ts +11 -0
  127. package/dist/utils/observable-bus.d.ts.map +1 -0
  128. package/dist/utils/observable-bus.js +26 -0
  129. package/dist/utils/observable-bus.js.map +1 -0
  130. package/package.json +51 -0
@@ -0,0 +1,4 @@
1
+ export * from "./command.exceptions";
2
+ export * from "./event.exceptions";
3
+ export * from "./query.exceptions";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exceptions/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./command.exceptions"), exports);
18
+ __exportStar(require("./event.exceptions"), exports);
19
+ __exportStar(require("./query.exceptions"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exceptions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,qDAAmC;AACnC,qDAAmC"}
@@ -0,0 +1,7 @@
1
+ export declare class QueryHandlerNotFoundException extends Error {
2
+ constructor(queryName: string);
3
+ }
4
+ export declare class InvalidQueryHandlerException extends Error {
5
+ constructor(message?: string);
6
+ }
7
+ //# sourceMappingURL=query.exceptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.exceptions.d.ts","sourceRoot":"","sources":["../../src/exceptions/query.exceptions.ts"],"names":[],"mappings":"AAAA,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,SAAS,EAAE,MAAM;CAI9B;AAED,qBAAa,4BAA6B,SAAQ,KAAK;gBACzC,OAAO,CAAC,EAAE,MAAM;CAI7B"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvalidQueryHandlerException = exports.QueryHandlerNotFoundException = void 0;
4
+ class QueryHandlerNotFoundException extends Error {
5
+ constructor(queryName) {
6
+ super(`Query handler for "${queryName}" not found.`);
7
+ this.name = "QueryHandlerNotFoundException";
8
+ }
9
+ }
10
+ exports.QueryHandlerNotFoundException = QueryHandlerNotFoundException;
11
+ class InvalidQueryHandlerException extends Error {
12
+ constructor(message) {
13
+ super(message || "Invalid query handler.");
14
+ this.name = "InvalidQueryHandlerException";
15
+ }
16
+ }
17
+ exports.InvalidQueryHandlerException = InvalidQueryHandlerException;
18
+ //# sourceMappingURL=query.exceptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.exceptions.js","sourceRoot":"","sources":["../../src/exceptions/query.exceptions.ts"],"names":[],"mappings":";;;AAAA,MAAa,6BAA8B,SAAQ,KAAK;IACtD,YAAY,SAAiB;QAC3B,KAAK,CAAC,sBAAsB,SAAS,cAAc,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAC9C,CAAC;CACF;AALD,sEAKC;AAED,MAAa,4BAA6B,SAAQ,KAAK;IACrD,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,IAAI,wBAAwB,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;IAC7C,CAAC;CACF;AALD,oEAKC"}
@@ -0,0 +1,7 @@
1
+ import { ICommand, ICommandPublisher } from "../interfaces";
2
+ export declare class DefaultCommandPubSub<CommandBase extends ICommand = ICommand> implements ICommandPublisher<CommandBase> {
3
+ private commandHandlers;
4
+ publish<T extends CommandBase>(command: T): Promise<any>;
5
+ setHandler(commandName: string, handler: (command: CommandBase) => Promise<any>): void;
6
+ }
7
+ //# sourceMappingURL=default-command-pubsub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-command-pubsub.d.ts","sourceRoot":"","sources":["../../src/helpers/default-command-pubsub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE5D,qBAAa,oBAAoB,CAAC,WAAW,SAAS,QAAQ,GAAG,QAAQ,CACvE,YAAW,iBAAiB,CAAC,WAAW,CAAC;IAEzC,OAAO,CAAC,eAAe,CAGnB;IAEE,OAAO,CAAC,CAAC,SAAS,WAAW,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAW9D,UAAU,CACR,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,CAAC,GAC9C,IAAI;CAGR"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefaultCommandPubSub = void 0;
4
+ class DefaultCommandPubSub {
5
+ constructor() {
6
+ this.commandHandlers = new Map();
7
+ }
8
+ async publish(command) {
9
+ const commandName = command.constructor.name;
10
+ const handler = this.commandHandlers.get(commandName);
11
+ if (!handler) {
12
+ throw new Error(`No handler registered for command "${commandName}"`);
13
+ }
14
+ return await handler(command);
15
+ }
16
+ setHandler(commandName, handler) {
17
+ this.commandHandlers.set(commandName, handler);
18
+ }
19
+ }
20
+ exports.DefaultCommandPubSub = DefaultCommandPubSub;
21
+ //# sourceMappingURL=default-command-pubsub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-command-pubsub.js","sourceRoot":"","sources":["../../src/helpers/default-command-pubsub.ts"],"names":[],"mappings":";;;AAEA,MAAa,oBAAoB;IAAjC;QAGU,oBAAe,GAAG,IAAI,GAAG,EAG9B,CAAC;IAmBN,CAAC;IAjBC,KAAK,CAAC,OAAO,CAAwB,OAAU;QAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAEtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,sCAAsC,WAAW,GAAG,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,UAAU,CACR,WAAmB,EACnB,OAA+C;QAE/C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;CACF;AAzBD,oDAyBC"}
@@ -0,0 +1,8 @@
1
+ import { IEvent, IEventPublisher } from "../interfaces";
2
+ export declare class DefaultEventPubSub<EventBase extends IEvent = IEvent> implements IEventPublisher<EventBase> {
3
+ private eventHandlers;
4
+ publish<T extends EventBase>(event: T): Promise<void>;
5
+ publishAll<T extends EventBase>(events: T[]): Promise<void>;
6
+ addHandler(eventName: string, handler: (event: EventBase) => Promise<void> | void): void;
7
+ }
8
+ //# sourceMappingURL=default-event-pubsub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-event-pubsub.d.ts","sourceRoot":"","sources":["../../src/helpers/default-event-pubsub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAExD,qBAAa,kBAAkB,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,CAC/D,YAAW,eAAe,CAAC,SAAS,CAAC;IAErC,OAAO,CAAC,aAAa,CAGjB;IAEE,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASrD,UAAU,CAAC,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjE,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAClD,IAAI;CAMR"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefaultEventPubSub = void 0;
4
+ class DefaultEventPubSub {
5
+ constructor() {
6
+ this.eventHandlers = new Map();
7
+ }
8
+ async publish(event) {
9
+ const eventName = event.constructor.name;
10
+ const handlers = this.eventHandlers.get(eventName) || [];
11
+ await Promise.all(handlers.map((handler) => Promise.resolve(handler(event))));
12
+ }
13
+ async publishAll(events) {
14
+ await Promise.all(events.map((event) => this.publish(event)));
15
+ }
16
+ addHandler(eventName, handler) {
17
+ if (!this.eventHandlers.has(eventName)) {
18
+ this.eventHandlers.set(eventName, []);
19
+ }
20
+ this.eventHandlers.get(eventName).push(handler);
21
+ }
22
+ }
23
+ exports.DefaultEventPubSub = DefaultEventPubSub;
24
+ //# sourceMappingURL=default-event-pubsub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-event-pubsub.js","sourceRoot":"","sources":["../../src/helpers/default-event-pubsub.ts"],"names":[],"mappings":";;;AAEA,MAAa,kBAAkB;IAA/B;QAGU,kBAAa,GAAG,IAAI,GAAG,EAG5B,CAAC;IAwBN,CAAC;IAtBC,KAAK,CAAC,OAAO,CAAsB,KAAQ;QACzC,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAEzD,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAC3D,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAsB,MAAW;QAC/C,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,UAAU,CACR,SAAiB,EACjB,OAAmD;QAEnD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;CACF;AA9BD,gDA8BC"}
@@ -0,0 +1,7 @@
1
+ import { IQuery, IQueryPublisher } from "../interfaces";
2
+ export declare class DefaultQueryPubSub<QueryBase extends IQuery = IQuery> implements IQueryPublisher<QueryBase> {
3
+ private queryHandlers;
4
+ publish<T extends QueryBase>(query: T): Promise<any>;
5
+ setHandler(queryName: string, handler: (query: QueryBase) => Promise<any>): void;
6
+ }
7
+ //# sourceMappingURL=default-query-pubsub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-query-pubsub.d.ts","sourceRoot":"","sources":["../../src/helpers/default-query-pubsub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAExD,qBAAa,kBAAkB,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,CAC/D,YAAW,eAAe,CAAC,SAAS,CAAC;IAErC,OAAO,CAAC,aAAa,CAAyD;IAExE,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAW1D,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,GAAG,CAAC,GAC1C,IAAI;CAGR"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefaultQueryPubSub = void 0;
4
+ class DefaultQueryPubSub {
5
+ constructor() {
6
+ this.queryHandlers = new Map();
7
+ }
8
+ async publish(query) {
9
+ const queryName = query.constructor.name;
10
+ const handler = this.queryHandlers.get(queryName);
11
+ if (!handler) {
12
+ throw new Error(`No handler registered for query "${queryName}"`);
13
+ }
14
+ return await handler(query);
15
+ }
16
+ setHandler(queryName, handler) {
17
+ this.queryHandlers.set(queryName, handler);
18
+ }
19
+ }
20
+ exports.DefaultQueryPubSub = DefaultQueryPubSub;
21
+ //# sourceMappingURL=default-query-pubsub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-query-pubsub.js","sourceRoot":"","sources":["../../src/helpers/default-query-pubsub.ts"],"names":[],"mappings":";;;AAEA,MAAa,kBAAkB;IAA/B;QAGU,kBAAa,GAAG,IAAI,GAAG,EAA8C,CAAC;IAmBhF,CAAC;IAjBC,KAAK,CAAC,OAAO,CAAsB,KAAQ;QACzC,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAElD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,SAAS,GAAG,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,UAAU,CACR,SAAiB,EACjB,OAA2C;QAE3C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;CACF;AAtBD,gDAsBC"}
@@ -0,0 +1,4 @@
1
+ export * from "./default-command-pubsub";
2
+ export * from "./default-event-pubsub";
3
+ export * from "./default-query-pubsub";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./default-command-pubsub"), exports);
18
+ __exportStar(require("./default-event-pubsub"), exports);
19
+ __exportStar(require("./default-query-pubsub"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,yDAAuC;AACvC,yDAAuC"}
@@ -0,0 +1,14 @@
1
+ import "reflect-metadata";
2
+ export * from "./classes";
3
+ export * from "./decorators";
4
+ export * from "./exceptions";
5
+ export * from "./helpers";
6
+ export * from "./interfaces";
7
+ export * from "./services";
8
+ export * from "./utils";
9
+ export { CommandBus } from "./command-bus";
10
+ export { EventBus } from "./event-bus";
11
+ export { QueryBus } from "./query-bus";
12
+ export { CqrsModule } from "./cqrs.module";
13
+ export * from "./constants";
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,cAAc,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.CqrsModule = exports.QueryBus = exports.EventBus = exports.CommandBus = void 0;
18
+ require("reflect-metadata");
19
+ // 导出所有公共 API
20
+ __exportStar(require("./classes"), exports);
21
+ __exportStar(require("./decorators"), exports);
22
+ __exportStar(require("./exceptions"), exports);
23
+ __exportStar(require("./helpers"), exports);
24
+ __exportStar(require("./interfaces"), exports);
25
+ __exportStar(require("./services"), exports);
26
+ __exportStar(require("./utils"), exports);
27
+ // 导出核心总线
28
+ var command_bus_1 = require("./command-bus");
29
+ Object.defineProperty(exports, "CommandBus", { enumerable: true, get: function () { return command_bus_1.CommandBus; } });
30
+ var event_bus_1 = require("./event-bus");
31
+ Object.defineProperty(exports, "EventBus", { enumerable: true, get: function () { return event_bus_1.EventBus; } });
32
+ var query_bus_1 = require("./query-bus");
33
+ Object.defineProperty(exports, "QueryBus", { enumerable: true, get: function () { return query_bus_1.QueryBus; } });
34
+ // 导出模块
35
+ var cqrs_module_1 = require("./cqrs.module");
36
+ Object.defineProperty(exports, "CqrsModule", { enumerable: true, get: function () { return cqrs_module_1.CqrsModule; } });
37
+ // 导出常量
38
+ __exportStar(require("./constants"), exports);
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4BAA0B;AAE1B,aAAa;AACb,4CAA0B;AAC1B,+CAA6B;AAC7B,+CAA6B;AAC7B,4CAA0B;AAC1B,+CAA6B;AAC7B,6CAA2B;AAC3B,0CAAwB;AAExB,SAAS;AACT,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AACjB,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AAEjB,OAAO;AACP,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAEnB,OAAO;AACP,8CAA4B"}
@@ -0,0 +1,14 @@
1
+ export interface ICommand {
2
+ }
3
+ export interface ICommandHandler<TCommand extends ICommand = any, TResult = any> {
4
+ execute(command: TCommand): Promise<TResult>;
5
+ }
6
+ export interface ICommandBus<CommandBase extends ICommand = ICommand> {
7
+ execute<T extends CommandBase, R = any>(command: T): Promise<R>;
8
+ register(handlers: CommandHandlerType<CommandBase>[]): void;
9
+ }
10
+ export interface ICommandPublisher<CommandBase extends ICommand = ICommand> {
11
+ publish<T extends CommandBase>(command: T): Promise<any>;
12
+ }
13
+ export type CommandHandlerType<CommandBase extends ICommand = ICommand> = new (...args: any[]) => ICommandHandler<CommandBase>;
14
+ //# sourceMappingURL=command.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/command.interface.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,QAAQ;CAAG;AAE5B,MAAM,WAAW,eAAe,CAC9B,QAAQ,SAAS,QAAQ,GAAG,GAAG,EAC/B,OAAO,GAAG,GAAG;IAEb,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,WAAW,CAAC,WAAW,SAAS,QAAQ,GAAG,QAAQ;IAClE,OAAO,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAChE,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC;CAC7D;AAED,MAAM,WAAW,iBAAiB,CAAC,WAAW,SAAS,QAAQ,GAAG,QAAQ;IACxE,OAAO,CAAC,CAAC,SAAS,WAAW,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CAC1D;AAED,MAAM,MAAM,kBAAkB,CAAC,WAAW,SAAS,QAAQ,GAAG,QAAQ,IAAI,KACxE,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,eAAe,CAAC,WAAW,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=command.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.interface.js","sourceRoot":"","sources":["../../src/interfaces/command.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ export interface CqrsModuleOptions {
2
+ commandPublisher?: any;
3
+ eventPublisher?: any;
4
+ queryPublisher?: any;
5
+ }
6
+ export interface CqrsModuleAsyncOptions {
7
+ useValue?: CqrsModuleOptions;
8
+ useFactory?: (...args: any[]) => Promise<CqrsModuleOptions> | CqrsModuleOptions;
9
+ useClass?: new (...args: any[]) => CqrsModuleOptionsFactory;
10
+ useExisting?: any;
11
+ inject?: any[];
12
+ imports?: any[];
13
+ }
14
+ export interface CqrsModuleOptionsFactory {
15
+ createCqrsOptions(): Promise<CqrsModuleOptions> | CqrsModuleOptions;
16
+ }
17
+ //# sourceMappingURL=cqrs-module-options.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cqrs-module-options.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/cqrs-module-options.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,cAAc,CAAC,EAAE,GAAG,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,UAAU,CAAC,EAAE,CACX,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,OAAO,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC;IACpD,QAAQ,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,wBAAwB,CAAC;IAC5D,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,iBAAiB,IAAI,OAAO,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC;CACrE"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=cqrs-module-options.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cqrs-module-options.interface.js","sourceRoot":"","sources":["../../src/interfaces/cqrs-module-options.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ export interface IEvent {
2
+ readonly aggregateId?: string;
3
+ readonly version?: number;
4
+ }
5
+ export interface IEventHandler<TEvent extends IEvent = any> {
6
+ handle(event: TEvent): Promise<void> | void;
7
+ }
8
+ export interface IEventBus<EventBase extends IEvent = IEvent> {
9
+ publish<T extends EventBase>(event: T): Promise<void>;
10
+ publishAll<T extends EventBase>(events: T[]): Promise<void>;
11
+ register(handlers: EventHandlerType<EventBase>[]): void;
12
+ registerSagas(sagas: SagaType<EventBase>[]): void;
13
+ }
14
+ export interface IEventPublisher<EventBase extends IEvent = IEvent> {
15
+ publish<T extends EventBase>(event: T): Promise<void>;
16
+ publishAll<T extends EventBase>(events: T[]): Promise<void>;
17
+ }
18
+ export type EventHandlerType<EventBase extends IEvent = IEvent> = new (...args: any[]) => IEventHandler<EventBase>;
19
+ export type SagaType<EventBase extends IEvent = IEvent> = new (...args: any[]) => ISaga<EventBase>;
20
+ export interface ISaga<EventBase extends IEvent = IEvent> {
21
+ [key: string]: (event: EventBase) => Promise<void> | void;
22
+ }
23
+ //# sourceMappingURL=event.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/event.interface.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa,CAAC,MAAM,SAAS,MAAM,GAAG,GAAG;IACxD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM;IAC1D,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,UAAU,CAAC,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;IACxD,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,eAAe,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM;IAChE,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,UAAU,CAAC,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAED,MAAM,MAAM,gBAAgB,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,IAAI,KAChE,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,aAAa,CAAC,SAAS,CAAC,CAAC;AAE9B,MAAM,MAAM,QAAQ,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,IAAI,KACxD,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,KAAK,CAAC,SAAS,CAAC,CAAC;AAEtB,MAAM,WAAW,KAAK,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM;IACtD,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC3D"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=event.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.interface.js","sourceRoot":"","sources":["../../src/interfaces/event.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export * from "./command.interface";
2
+ export * from "./cqrs-module-options.interface";
3
+ export * from "./event.interface";
4
+ export * from "./query.interface";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./command.interface"), exports);
18
+ __exportStar(require("./cqrs-module-options.interface"), exports);
19
+ __exportStar(require("./event.interface"), exports);
20
+ __exportStar(require("./query.interface"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,kEAAgD;AAChD,oDAAkC;AAClC,oDAAkC"}
@@ -0,0 +1,16 @@
1
+ export interface IQuery {
2
+ }
3
+ export interface IQueryResult {
4
+ }
5
+ export interface IQueryHandler<TQuery extends IQuery = any, TResult extends IQueryResult = any> {
6
+ execute(query: TQuery): Promise<TResult>;
7
+ }
8
+ export interface IQueryBus<QueryBase extends IQuery = IQuery> {
9
+ execute<T extends QueryBase, R extends IQueryResult = any>(query: T): Promise<R>;
10
+ register(handlers: QueryHandlerType<QueryBase>[]): void;
11
+ }
12
+ export interface IQueryPublisher<QueryBase extends IQuery = IQuery> {
13
+ publish<T extends QueryBase>(query: T): Promise<any>;
14
+ }
15
+ export type QueryHandlerType<QueryBase extends IQuery = IQuery, QueryResultBase extends IQueryResult = IQueryResult> = new (...args: any[]) => IQueryHandler<QueryBase, QueryResultBase>;
16
+ //# sourceMappingURL=query.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/query.interface.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,MAAM;CAAG;AAE1B,MAAM,WAAW,YAAY;CAAG;AAEhC,MAAM,WAAW,aAAa,CAC5B,MAAM,SAAS,MAAM,GAAG,GAAG,EAC3B,OAAO,SAAS,YAAY,GAAG,GAAG;IAElC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM;IAC1D,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,YAAY,GAAG,GAAG,EACvD,KAAK,EAAE,CAAC,GACP,OAAO,CAAC,CAAC,CAAC,CAAC;IACd,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;CACzD;AAED,MAAM,WAAW,eAAe,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM;IAChE,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CACtD;AAED,MAAM,MAAM,gBAAgB,CAC1B,SAAS,SAAS,MAAM,GAAG,MAAM,EACjC,eAAe,SAAS,YAAY,GAAG,YAAY,IACjD,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,aAAa,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=query.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.interface.js","sourceRoot":"","sources":["../../src/interfaces/query.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ import "reflect-metadata";
2
+ import { Query } from "./classes";
3
+ import { IQuery, IQueryBus, IQueryPublisher, IQueryResult, QueryHandlerType } from "./interfaces";
4
+ import { ObservableBus } from "./utils";
5
+ export declare class QueryBus<QueryBase extends IQuery = IQuery> extends ObservableBus<QueryBase> implements IQueryBus<QueryBase> {
6
+ private handlers;
7
+ private _publisher;
8
+ constructor();
9
+ /**
10
+ * Returns the publisher.
11
+ */
12
+ get publisher(): IQueryPublisher<QueryBase>;
13
+ /**
14
+ * Sets the publisher.
15
+ */
16
+ set publisher(_publisher: IQueryPublisher<QueryBase>);
17
+ /**
18
+ * Executes a query.
19
+ */
20
+ execute<R extends IQueryResult = any>(query: Query<R>): Promise<R>;
21
+ execute<T extends QueryBase, R extends IQueryResult = any>(query: T): Promise<R>;
22
+ /**
23
+ * Registers query handlers.
24
+ */
25
+ register(handlers: QueryHandlerType<QueryBase>[]): void;
26
+ private registerHandler;
27
+ private useDefaultPublisher;
28
+ private getQueryName;
29
+ }
30
+ //# sourceMappingURL=query-bus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-bus.d.ts","sourceRoot":"","sources":["../src/query-bus.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAOlC,OAAO,EACL,MAAM,EACN,SAAS,EAET,eAAe,EACf,YAAY,EACZ,gBAAgB,EACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,qBACa,QAAQ,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,CACrD,SAAQ,aAAa,CAAC,SAAS,CAC/B,YAAW,SAAS,CAAC,SAAS,CAAC;IAE/B,OAAO,CAAC,QAAQ,CAAyD;IACzE,OAAO,CAAC,UAAU,CAA8B;;IAOhD;;OAEG;IACH,IAAI,SAAS,IAAI,eAAe,CAAC,SAAS,CAAC,CAE1C;IAED;;OAEG;IACH,IAAI,SAAS,CAAC,UAAU,EAAE,eAAe,CAAC,SAAS,CAAC,EAEnD;IAED;;OAEG;IACG,OAAO,CAAC,CAAC,SAAS,YAAY,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,YAAY,GAAG,GAAG,EAC7D,KAAK,EAAE,CAAC,GACP,OAAO,CAAC,CAAC,CAAC;IAsBb;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI;IAIvD,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,YAAY;CAIrB"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.QueryBus = void 0;
13
+ const core_1 = require("@hestjs/core");
14
+ require("reflect-metadata");
15
+ const tsyringe_1 = require("tsyringe");
16
+ const constants_1 = require("./constants");
17
+ const exceptions_1 = require("./exceptions");
18
+ const helpers_1 = require("./helpers");
19
+ const utils_1 = require("./utils");
20
+ let QueryBus = class QueryBus extends utils_1.ObservableBus {
21
+ constructor() {
22
+ super();
23
+ this.handlers = new Map();
24
+ this.useDefaultPublisher();
25
+ }
26
+ /**
27
+ * Returns the publisher.
28
+ */
29
+ get publisher() {
30
+ return this._publisher;
31
+ }
32
+ /**
33
+ * Sets the publisher.
34
+ */
35
+ set publisher(_publisher) {
36
+ this._publisher = _publisher;
37
+ }
38
+ async execute(query) {
39
+ const queryName = this.getQueryName(query);
40
+ const handler = this.handlers.get(queryName);
41
+ if (!handler) {
42
+ core_1.logger.error(`Query handler for "${queryName}" not found`);
43
+ throw new exceptions_1.QueryHandlerNotFoundException(queryName);
44
+ }
45
+ this.publishToSubject(query);
46
+ try {
47
+ return await handler(query);
48
+ }
49
+ catch (error) {
50
+ core_1.logger.error(`Error executing query "${queryName}":`, String(error));
51
+ throw error;
52
+ }
53
+ }
54
+ /**
55
+ * Registers query handlers.
56
+ */
57
+ register(handlers) {
58
+ handlers.forEach((handler) => this.registerHandler(handler));
59
+ }
60
+ registerHandler(handler) {
61
+ const target = handler;
62
+ const queryType = Reflect.getMetadata(constants_1.QUERY_HANDLER_METADATA, target);
63
+ if (!queryType) {
64
+ throw new exceptions_1.InvalidQueryHandlerException(`Missing @QueryHandler decorator on ${target.name}`);
65
+ }
66
+ const queryName = this.getQueryName(queryType);
67
+ if (this.handlers.has(queryName)) {
68
+ core_1.logger.warn(`Query handler for "${queryName}" already registered. Overwriting.`);
69
+ }
70
+ // Get handler instance from container
71
+ const handlerInstance = tsyringe_1.container.resolve(target);
72
+ this.handlers.set(queryName, (query) => handlerInstance.execute(query));
73
+ core_1.logger.info(`Registered query handler for "${queryName}"`);
74
+ }
75
+ useDefaultPublisher() {
76
+ this._publisher = new helpers_1.DefaultQueryPubSub();
77
+ }
78
+ getQueryName(query) {
79
+ const { constructor } = Object.getPrototypeOf(query);
80
+ return constructor.name;
81
+ }
82
+ };
83
+ exports.QueryBus = QueryBus;
84
+ exports.QueryBus = QueryBus = __decorate([
85
+ (0, core_1.Injectable)(),
86
+ __metadata("design:paramtypes", [])
87
+ ], QueryBus);
88
+ //# sourceMappingURL=query-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-bus.js","sourceRoot":"","sources":["../src/query-bus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import "reflect-metadata";
2
+ import { CommandHandlerType, EventHandlerType, ICommand, IEvent, IQuery, QueryHandlerType, SagaType } from "../interfaces";
3
+ export interface ExplorerResult<EventBase extends IEvent = IEvent> {
4
+ commands: CommandHandlerType<ICommand>[];
5
+ queries: QueryHandlerType<IQuery>[];
6
+ events: EventHandlerType<EventBase>[];
7
+ sagas: SagaType<EventBase>[];
8
+ }
9
+ export declare class ExplorerService<EventBase extends IEvent = IEvent> {
10
+ private registeredHandlers;
11
+ /**
12
+ * Explores and discovers all CQRS handlers and sagas from the TSyringe container.
13
+ */
14
+ explore(): ExplorerResult<EventBase>;
15
+ /**
16
+ * Manually register a handler class for discovery.
17
+ * This is a workaround since TSyringe doesn't provide direct access to all registered classes.
18
+ */
19
+ registerHandler(handlerClass: Function): void;
20
+ /**
21
+ * Get all registered handlers categorized by type.
22
+ */
23
+ getRegisteredHandlers(): ExplorerResult<EventBase>;
24
+ }
25
+ //# sourceMappingURL=explorer.service.d.ts.map