@rolandsall24/nest-mediator 0.4.3 → 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.
Files changed (66) hide show
  1. package/README.md +492 -2
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +4 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/behaviors/exception-handling.behavior.d.ts +46 -0
  7. package/dist/lib/behaviors/exception-handling.behavior.d.ts.map +1 -0
  8. package/dist/lib/behaviors/exception-handling.behavior.js +76 -0
  9. package/dist/lib/behaviors/exception-handling.behavior.js.map +1 -0
  10. package/dist/lib/behaviors/index.d.ts +5 -0
  11. package/dist/lib/behaviors/index.d.ts.map +1 -0
  12. package/dist/lib/behaviors/index.js +21 -0
  13. package/dist/lib/behaviors/index.js.map +1 -0
  14. package/dist/lib/behaviors/logging.behavior.d.ts +26 -0
  15. package/dist/lib/behaviors/logging.behavior.d.ts.map +1 -0
  16. package/dist/lib/behaviors/logging.behavior.js +64 -0
  17. package/dist/lib/behaviors/logging.behavior.js.map +1 -0
  18. package/dist/lib/behaviors/performance.behavior.d.ts +41 -0
  19. package/dist/lib/behaviors/performance.behavior.d.ts.map +1 -0
  20. package/dist/lib/behaviors/performance.behavior.js +71 -0
  21. package/dist/lib/behaviors/performance.behavior.js.map +1 -0
  22. package/dist/lib/behaviors/validation.behavior.d.ts +69 -0
  23. package/dist/lib/behaviors/validation.behavior.d.ts.map +1 -0
  24. package/dist/lib/behaviors/validation.behavior.js +137 -0
  25. package/dist/lib/behaviors/validation.behavior.js.map +1 -0
  26. package/dist/lib/decorators/index.d.ts +2 -0
  27. package/dist/lib/decorators/index.d.ts.map +1 -1
  28. package/dist/lib/decorators/index.js +2 -0
  29. package/dist/lib/decorators/index.js.map +1 -1
  30. package/dist/lib/decorators/pipeline-behavior.decorator.d.ts +51 -0
  31. package/dist/lib/decorators/pipeline-behavior.decorator.d.ts.map +1 -0
  32. package/dist/lib/decorators/pipeline-behavior.decorator.js +68 -0
  33. package/dist/lib/decorators/pipeline-behavior.decorator.js.map +1 -0
  34. package/dist/lib/decorators/skip-behavior.decorator.d.ts +52 -0
  35. package/dist/lib/decorators/skip-behavior.decorator.d.ts.map +1 -0
  36. package/dist/lib/decorators/skip-behavior.decorator.js +61 -0
  37. package/dist/lib/decorators/skip-behavior.decorator.js.map +1 -0
  38. package/dist/lib/exceptions/handler-not-found.exception.d.ts +20 -0
  39. package/dist/lib/exceptions/handler-not-found.exception.d.ts.map +1 -0
  40. package/dist/lib/exceptions/handler-not-found.exception.js +33 -0
  41. package/dist/lib/exceptions/handler-not-found.exception.js.map +1 -0
  42. package/dist/lib/exceptions/index.d.ts +3 -0
  43. package/dist/lib/exceptions/index.d.ts.map +1 -0
  44. package/dist/lib/exceptions/index.js +19 -0
  45. package/dist/lib/exceptions/index.js.map +1 -0
  46. package/dist/lib/exceptions/validation.exception.d.ts +62 -0
  47. package/dist/lib/exceptions/validation.exception.d.ts.map +1 -0
  48. package/dist/lib/exceptions/validation.exception.js +66 -0
  49. package/dist/lib/exceptions/validation.exception.js.map +1 -0
  50. package/dist/lib/interfaces/index.d.ts +1 -0
  51. package/dist/lib/interfaces/index.d.ts.map +1 -1
  52. package/dist/lib/interfaces/index.js +1 -0
  53. package/dist/lib/interfaces/index.js.map +1 -1
  54. package/dist/lib/interfaces/pipeline-behavior.interface.d.ts +60 -0
  55. package/dist/lib/interfaces/pipeline-behavior.interface.d.ts.map +1 -0
  56. package/dist/lib/interfaces/pipeline-behavior.interface.js +3 -0
  57. package/dist/lib/interfaces/pipeline-behavior.interface.js.map +1 -0
  58. package/dist/lib/nest-mediator.module.d.ts +74 -3
  59. package/dist/lib/nest-mediator.module.d.ts.map +1 -1
  60. package/dist/lib/nest-mediator.module.js +66 -6
  61. package/dist/lib/nest-mediator.module.js.map +1 -1
  62. package/dist/lib/services/mediator.bus.d.ts +54 -4
  63. package/dist/lib/services/mediator.bus.d.ts.map +1 -1
  64. package/dist/lib/services/mediator.bus.js +104 -9
  65. package/dist/lib/services/mediator.bus.js.map +1 -1
  66. package/package.json +6 -2
@@ -10,11 +10,16 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  };
11
11
  var NestMediatorModule_1;
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.NestMediatorModule = void 0;
13
+ exports.NestMediatorModule = exports.NEST_MEDIATOR_OPTIONS = void 0;
14
14
  const common_1 = require("@nestjs/common");
15
15
  const core_1 = require("@nestjs/core");
16
16
  const index_js_1 = require("./services/index.js");
17
17
  const index_js_2 = require("./decorators/index.js");
18
+ const index_js_3 = require("./behaviors/index.js");
19
+ /**
20
+ * Token for module options injection
21
+ */
22
+ exports.NEST_MEDIATOR_OPTIONS = 'NEST_MEDIATOR_OPTIONS';
18
23
  let NestMediatorModule = NestMediatorModule_1 = class NestMediatorModule {
19
24
  constructor(mediatorBus, reflector, discoveryService) {
20
25
  this.mediatorBus = mediatorBus;
@@ -33,31 +38,86 @@ let NestMediatorModule = NestMediatorModule_1 = class NestMediatorModule {
33
38
  continue;
34
39
  }
35
40
  const handlerType = wrapper.metatype;
41
+ // Register command handlers
36
42
  const commandMetadata = this.reflector.get(index_js_2.COMMAND_HANDLER_METADATA, handlerType);
37
43
  if (commandMetadata) {
38
44
  console.log(`[NestMediator] Registering command handler: ${handlerType.name} for command: ${commandMetadata.name}`);
39
45
  this.mediatorBus.registerCommandHandler(commandMetadata, handlerType);
40
46
  }
47
+ // Register query handlers
41
48
  const queryMetadata = this.reflector.get(index_js_2.QUERY_HANDLER_METADATA, handlerType);
42
49
  if (queryMetadata) {
43
50
  console.log(`[NestMediator] Registering query handler: ${handlerType.name} for query: ${queryMetadata.name}`);
44
51
  this.mediatorBus.registerQueryHandler(queryMetadata, handlerType);
45
52
  }
53
+ // Register pipeline behaviors
54
+ const behaviorMetadata = this.reflector.get(index_js_2.PIPELINE_BEHAVIOR_METADATA, handlerType);
55
+ if (behaviorMetadata) {
56
+ console.log(`[NestMediator] Registering pipeline behavior: ${handlerType.name} (priority: ${behaviorMetadata.priority ?? 0}, scope: ${behaviorMetadata.scope ?? 'all'})`);
57
+ this.mediatorBus.registerPipelineBehavior(handlerType, behaviorMetadata);
58
+ }
46
59
  }
47
60
  }
48
61
  /**
49
- * Register the NestMediator module
50
- * Handlers are automatically discovered from the application's providers
62
+ * Register the NestMediator module with default settings.
63
+ * Handlers and behaviors are automatically discovered from the application's providers.
51
64
  * @returns Dynamic module
52
65
  */
53
66
  static forRoot() {
67
+ return this.forRootAsync({});
68
+ }
69
+ /**
70
+ * Register the NestMediator module with custom configuration.
71
+ *
72
+ * @param options - Configuration options
73
+ * @returns Dynamic module
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * // Enable built-in behaviors
78
+ * NestMediatorModule.forRootAsync({
79
+ * enableLogging: true,
80
+ * enableValidation: true,
81
+ * enableExceptionHandling: true,
82
+ * enablePerformanceTracking: true,
83
+ * performanceThresholdMs: 1000,
84
+ * })
85
+ *
86
+ * // With custom behaviors
87
+ * NestMediatorModule.forRootAsync({
88
+ * behaviors: [MyCustomBehavior],
89
+ * })
90
+ * ```
91
+ */
92
+ static forRootAsync(options = {}) {
93
+ const builtInProviders = [];
94
+ // Add built-in behaviors based on options
95
+ if (options.enableExceptionHandling) {
96
+ builtInProviders.push(index_js_3.ExceptionHandlingBehavior);
97
+ }
98
+ if (options.enableLogging) {
99
+ builtInProviders.push(index_js_3.LoggingBehavior);
100
+ }
101
+ if (options.enablePerformanceTracking) {
102
+ builtInProviders.push(index_js_3.PerformanceBehavior);
103
+ }
104
+ if (options.enableValidation) {
105
+ builtInProviders.push(index_js_3.ValidationBehavior);
106
+ }
107
+ // Add custom behaviors
108
+ const customBehaviors = options.behaviors ?? [];
54
109
  return {
55
110
  module: NestMediatorModule_1,
56
- imports: [
57
- core_1.DiscoveryModule,
58
- ],
111
+ imports: [core_1.DiscoveryModule],
59
112
  providers: [
60
113
  index_js_1.MediatorBus,
114
+ core_1.Reflector,
115
+ ...builtInProviders,
116
+ ...customBehaviors,
117
+ {
118
+ provide: exports.NEST_MEDIATOR_OPTIONS,
119
+ useValue: options,
120
+ },
61
121
  ],
62
122
  exports: [index_js_1.MediatorBus],
63
123
  global: true,
@@ -1 +1 @@
1
- {"version":3,"file":"nest-mediator.module.js","sourceRoot":"","sources":["../../src/lib/nest-mediator.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAA2E;AAC3E,uCAA4E;AAC5E,kDAAkD;AAClD,oDAAyF;AAKlF,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAC7B,YACqB,WAAwB,EACxB,SAAoB,EACpB,gBAAkC;QAFlC,gBAAW,GAAX,WAAW,CAAa;QACxB,cAAS,GAAT,SAAS,CAAW;QACpB,qBAAgB,GAAhB,gBAAgB,CAAkB;IACpD,CAAC;IAEJ,YAAY;QACV,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;QAEvD,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC3C,SAAS;YACX,CAAC;YAED,MAAM,UAAU,GAAG,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC;YAC1D,MAAM,aAAa,GAAG,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC;YAE7E,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,SAAS;YACX,CAAC;YAED,MAAM,WAAW,GAAG,OAAO,CAAC,QAAgB,CAAC;YAE7C,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CACxC,mCAAwB,EACxB,WAAW,CACZ,CAAC;YAEF,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CACP,+CAA+C,WAAW,CAAC,IAAI,iBAAiB,eAAe,CAAC,IAAI,EAAE,CACzG,CAAC;gBACF,IAAI,CAAC,WAAW,CAAC,sBAAsB,CACnC,eAAe,EACf,WAAyC,CAC5C,CAAC;YACJ,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CACtC,iCAAsB,EACtB,WAAW,CACZ,CAAC;YAEF,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CACP,6CAA6C,WAAW,CAAC,IAAI,eAAe,aAAa,CAAC,IAAI,EAAE,CACnG,CAAC;gBACF,IAAI,CAAC,WAAW,CAAC,oBAAoB,CACjC,aAAa,EACb,WAA4C,CAC/C,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,MAAM,EAAE,oBAAkB;YAC1B,OAAO,EAAE;gBACP,sBAAe;aAChB;YACD,SAAS,EAAE;gBACT,sBAAW;aACZ;YACD,OAAO,EAAE,CAAC,sBAAW,CAAC;YACtB,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;CACF,CAAA;AA1EY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,eAAM,EAAC,EAAE,CAAC;qCAGyB,sBAAW;QACb,gBAAS;QACF,uBAAgB;GAJ5C,kBAAkB,CA0E9B"}
1
+ {"version":3,"file":"nest-mediator.module.js","sourceRoot":"","sources":["../../src/lib/nest-mediator.module.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,38 @@
1
1
  import { Type } from '@nestjs/common';
2
- import { ModuleRef } from '@nestjs/core';
2
+ import { ModuleRef, Reflector } from '@nestjs/core';
3
3
  import { ICommand, ICommandHandler, IQuery, IQueryHandler } from '../interfaces/index.js';
4
+ import { IPipelineBehavior, PipelineBehaviorOptions } from '../interfaces/pipeline-behavior.interface.js';
5
+ /**
6
+ * Central mediator bus for dispatching commands and queries.
7
+ * Supports pipeline behaviors for cross-cutting concerns.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * // In a controller
12
+ * @Controller('users')
13
+ * export class UserController {
14
+ * constructor(private readonly mediator: MediatorBus) {}
15
+ *
16
+ * @Post()
17
+ * async create(@Body() dto: CreateUserDto) {
18
+ * await this.mediator.send(new CreateUserCommand(dto));
19
+ * }
20
+ *
21
+ * @Get(':id')
22
+ * async findOne(@Param('id') id: string) {
23
+ * return this.mediator.query(new GetUserQuery(id));
24
+ * }
25
+ * }
26
+ * ```
27
+ */
4
28
  export declare class MediatorBus {
5
29
  private readonly moduleRef;
30
+ private readonly reflector;
31
+ private readonly logger;
6
32
  private commandHandlers;
7
33
  private queryHandlers;
8
- constructor(moduleRef: ModuleRef);
34
+ private pipelineBehaviors;
35
+ constructor(moduleRef: ModuleRef, reflector: Reflector);
9
36
  /**
10
37
  * Register a command handler
11
38
  * @param command - The command class
@@ -19,16 +46,39 @@ export declare class MediatorBus {
19
46
  */
20
47
  registerQueryHandler(query: Type<IQuery>, handler: Type<IQueryHandler<any, any>>): void;
21
48
  /**
22
- * Send a command to its handler
49
+ * Register a pipeline behavior
50
+ * @param behaviorType - The behavior class
51
+ * @param options - Behavior options (priority, scope)
52
+ */
53
+ registerPipelineBehavior(behaviorType: Type<IPipelineBehavior<any, any>>, options: PipelineBehaviorOptions): void;
54
+ /**
55
+ * Send a command to its handler through the pipeline
23
56
  * @param command - The command instance
24
57
  * @returns Promise<void>
25
58
  */
26
59
  send<TCommand extends ICommand>(command: TCommand): Promise<void>;
27
60
  /**
28
- * Execute a query through its handler
61
+ * Execute a query through its handler and the pipeline
29
62
  * @param query - The query instance
30
63
  * @returns Promise with the result
31
64
  */
32
65
  query<TQuery extends IQuery, TResult = any>(query: TQuery): Promise<TResult>;
66
+ /**
67
+ * Build a pipeline of behaviors around the handler
68
+ * Uses reduceRight to create a chain where the first behavior wraps all others
69
+ */
70
+ private buildPipeline;
71
+ /**
72
+ * Get registered command handler names (for debugging)
73
+ */
74
+ getRegisteredCommands(): string[];
75
+ /**
76
+ * Get registered query handler names (for debugging)
77
+ */
78
+ getRegisteredQueries(): string[];
79
+ /**
80
+ * Get registered behavior names (for debugging)
81
+ */
82
+ getRegisteredBehaviors(): string[];
33
83
  }
34
84
  //# sourceMappingURL=mediator.bus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mediator.bus.d.ts","sourceRoot":"","sources":["../../../src/lib/services/mediator.bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE1F,qBACa,WAAW;IAIV,OAAO,CAAC,QAAQ,CAAC,SAAS;IAHtC,OAAO,CAAC,eAAe,CAAiD;IACxE,OAAO,CAAC,aAAa,CAAoD;gBAE5C,SAAS,EAAE,SAAS;IAEjD;;;;OAIG;IACH,sBAAsB,CACpB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,EACvB,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAClC,IAAI;IAQP;;;;OAIG;IACH,oBAAoB,CAClB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EACnB,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GACrC,IAAI;IAQP;;;;OAIG;IACG,IAAI,CAAC,QAAQ,SAAS,QAAQ,EAClC,OAAO,EAAE,QAAQ,GAChB,OAAO,CAAC,IAAI,CAAC;IAkBhB;;;;OAIG;IACG,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,OAAO,GAAG,GAAG,EAC9C,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC;CAiBpB"}
1
+ {"version":3,"file":"mediator.bus.d.ts","sourceRoot":"","sources":["../../../src/lib/services/mediator.bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EACL,QAAQ,EACR,eAAe,EACf,MAAM,EACN,aAAa,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,8CAA8C,CAAC;AAYtD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBACa,WAAW;IAQpB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAR5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IAEpD,OAAO,CAAC,eAAe,CAAiD;IACxE,OAAO,CAAC,aAAa,CAAoD;IACzE,OAAO,CAAC,iBAAiB,CAA4B;gBAGlC,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS;IAGvC;;;;OAIG;IACH,sBAAsB,CACpB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,EACvB,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAClC,IAAI;IAUP;;;;OAIG;IACH,oBAAoB,CAClB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EACnB,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GACrC,IAAI;IAQP;;;;OAIG;IACH,wBAAwB,CACtB,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAC/C,OAAO,EAAE,uBAAuB,GAC/B,IAAI;IAaP;;;;OAIG;IACG,IAAI,CAAC,QAAQ,SAAS,QAAQ,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBvE;;;;OAIG;IACG,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,OAAO,GAAG,GAAG,EAC9C,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC;IAqBnB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAiDrB;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAIjC;;OAEG;IACH,oBAAoB,IAAI,MAAM,EAAE;IAIhC;;OAEG;IACH,sBAAsB,IAAI,MAAM,EAAE;CAGnC"}
@@ -12,11 +12,39 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.MediatorBus = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
14
  const core_1 = require("@nestjs/core");
15
+ const handler_not_found_exception_js_1 = require("../exceptions/handler-not-found.exception.js");
16
+ const skip_behavior_decorator_js_1 = require("../decorators/skip-behavior.decorator.js");
17
+ /**
18
+ * Central mediator bus for dispatching commands and queries.
19
+ * Supports pipeline behaviors for cross-cutting concerns.
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * // In a controller
24
+ * @Controller('users')
25
+ * export class UserController {
26
+ * constructor(private readonly mediator: MediatorBus) {}
27
+ *
28
+ * @Post()
29
+ * async create(@Body() dto: CreateUserDto) {
30
+ * await this.mediator.send(new CreateUserCommand(dto));
31
+ * }
32
+ *
33
+ * @Get(':id')
34
+ * async findOne(@Param('id') id: string) {
35
+ * return this.mediator.query(new GetUserQuery(id));
36
+ * }
37
+ * }
38
+ * ```
39
+ */
15
40
  let MediatorBus = class MediatorBus {
16
- constructor(moduleRef) {
41
+ constructor(moduleRef, reflector) {
17
42
  this.moduleRef = moduleRef;
43
+ this.reflector = reflector;
44
+ this.logger = new common_1.Logger('MediatorBus');
18
45
  this.commandHandlers = new Map();
19
46
  this.queryHandlers = new Map();
47
+ this.pipelineBehaviors = [];
20
48
  }
21
49
  /**
22
50
  * Register a command handler
@@ -43,7 +71,18 @@ let MediatorBus = class MediatorBus {
43
71
  this.queryHandlers.set(queryName, handler);
44
72
  }
45
73
  /**
46
- * Send a command to its handler
74
+ * Register a pipeline behavior
75
+ * @param behaviorType - The behavior class
76
+ * @param options - Behavior options (priority, scope)
77
+ */
78
+ registerPipelineBehavior(behaviorType, options) {
79
+ this.pipelineBehaviors.push({ type: behaviorType, options });
80
+ // Keep behaviors sorted by priority (lower first)
81
+ this.pipelineBehaviors.sort((a, b) => (a.options.priority ?? 0) - (b.options.priority ?? 0));
82
+ this.logger.log(`Registered pipeline behavior: ${behaviorType.name} (priority: ${options.priority ?? 0}, scope: ${options.scope ?? 'all'})`);
83
+ }
84
+ /**
85
+ * Send a command to its handler through the pipeline
47
86
  * @param command - The command instance
48
87
  * @returns Promise<void>
49
88
  */
@@ -51,13 +90,17 @@ let MediatorBus = class MediatorBus {
51
90
  const commandName = command.constructor.name;
52
91
  const handlerType = this.commandHandlers.get(commandName);
53
92
  if (!handlerType) {
54
- throw new Error(`No handler registered for command: ${commandName}. Did you forget to add @CommandHandler decorator?`);
93
+ throw new handler_not_found_exception_js_1.HandlerNotFoundException(commandName, 'command');
55
94
  }
56
- const handler = this.moduleRef.get(handlerType, { strict: false });
57
- await handler.execute(command);
95
+ const handler = this.moduleRef.get(handlerType, {
96
+ strict: false,
97
+ });
98
+ // Build and execute pipeline
99
+ const pipeline = this.buildPipeline(command, 'command', () => handler.execute(command));
100
+ await pipeline();
58
101
  }
59
102
  /**
60
- * Execute a query through its handler
103
+ * Execute a query through its handler and the pipeline
61
104
  * @param query - The query instance
62
105
  * @returns Promise with the result
63
106
  */
@@ -65,15 +108,67 @@ let MediatorBus = class MediatorBus {
65
108
  const queryName = query.constructor.name;
66
109
  const handlerType = this.queryHandlers.get(queryName);
67
110
  if (!handlerType) {
68
- throw new Error(`No handler registered for query: ${queryName}. Did you forget to add @QueryHandler decorator?`);
111
+ throw new handler_not_found_exception_js_1.HandlerNotFoundException(queryName, 'query');
69
112
  }
70
113
  const handler = this.moduleRef.get(handlerType, { strict: false });
71
- return handler.execute(query);
114
+ // Build and execute pipeline
115
+ const pipeline = this.buildPipeline(query, 'query', () => handler.execute(query));
116
+ return pipeline();
117
+ }
118
+ /**
119
+ * Build a pipeline of behaviors around the handler
120
+ * Uses reduceRight to create a chain where the first behavior wraps all others
121
+ */
122
+ buildPipeline(request, scope, handler) {
123
+ // Get behaviors to skip from request metadata
124
+ const requestClass = request.constructor;
125
+ const behaviorsToSkip = this.reflector.get(skip_behavior_decorator_js_1.SKIP_BEHAVIORS_METADATA, requestClass) ?? [];
126
+ // Filter behaviors by scope and skip list
127
+ const applicableBehaviors = this.pipelineBehaviors.filter((b) => {
128
+ // Check scope
129
+ const behaviorScope = b.options.scope ?? 'all';
130
+ const scopeMatches = behaviorScope === 'all' || behaviorScope === scope;
131
+ // Check if this behavior should be skipped
132
+ const shouldSkip = behaviorsToSkip.some((skipType) => skipType === b.type);
133
+ return scopeMatches && !shouldSkip;
134
+ });
135
+ // If no behaviors, just return the handler
136
+ if (applicableBehaviors.length === 0) {
137
+ return handler;
138
+ }
139
+ // Build the pipeline from right to left (innermost to outermost)
140
+ // The last behavior in the array wraps the handler directly
141
+ // The first behavior in the array is the outermost wrapper
142
+ return applicableBehaviors.reduceRight((next, registeredBehavior) => {
143
+ return async () => {
144
+ const behavior = this.moduleRef.get(registeredBehavior.type, { strict: false });
145
+ return behavior.handle(request, next);
146
+ };
147
+ }, handler);
148
+ }
149
+ /**
150
+ * Get registered command handler names (for debugging)
151
+ */
152
+ getRegisteredCommands() {
153
+ return Array.from(this.commandHandlers.keys());
154
+ }
155
+ /**
156
+ * Get registered query handler names (for debugging)
157
+ */
158
+ getRegisteredQueries() {
159
+ return Array.from(this.queryHandlers.keys());
160
+ }
161
+ /**
162
+ * Get registered behavior names (for debugging)
163
+ */
164
+ getRegisteredBehaviors() {
165
+ return this.pipelineBehaviors.map((b) => b.type.name);
72
166
  }
73
167
  };
74
168
  exports.MediatorBus = MediatorBus;
75
169
  exports.MediatorBus = MediatorBus = __decorate([
76
170
  (0, common_1.Injectable)(),
77
- __metadata("design:paramtypes", [core_1.ModuleRef])
171
+ __metadata("design:paramtypes", [core_1.ModuleRef,
172
+ core_1.Reflector])
78
173
  ], MediatorBus);
79
174
  //# sourceMappingURL=mediator.bus.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mediator.bus.js","sourceRoot":"","sources":["../../../src/lib/services/mediator.bus.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAkD;AAClD,uCAAyC;AAIlC,IAAM,WAAW,GAAjB,MAAM,WAAW;IAItB,YAA6B,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;QAHzC,oBAAe,GAAG,IAAI,GAAG,EAAsC,CAAC;QAChE,kBAAa,GAAG,IAAI,GAAG,EAAyC,CAAC;IAErB,CAAC;IAErD;;;;OAIG;IACH,sBAAsB,CACpB,OAAuB,EACvB,OAAmC;QAEnC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;QACjC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,uBAAuB,WAAW,wBAAwB,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACH,oBAAoB,CAClB,KAAmB,EACnB,OAAsC;QAEtC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;QAC7B,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,qBAAqB,SAAS,wBAAwB,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,CACR,OAAiB;QAEjB,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAE1D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,sCAAsC,WAAW,oDAAoD,CACtG,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAChC,WAAW,EACX,EAAE,MAAM,EAAE,KAAK,EAAE,CAClB,CAAC;QAEF,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CACT,KAAa;QAEb,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEtD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,oCAAoC,SAAS,kDAAkD,CAChG,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAChC,WAAW,EACX,EAAE,MAAM,EAAE,KAAK,EAAE,CAClB,CAAC;QAEF,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF,CAAA;AAvFY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;qCAK6B,gBAAS;GAJtC,WAAW,CAuFvB"}
1
+ {"version":3,"file":"mediator.bus.js","sourceRoot":"","sources":["../../../src/lib/services/mediator.bus.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rolandsall24/nest-mediator",
3
- "version": "0.4.3",
3
+ "version": "0.5.0",
4
4
  "description": "A lightweight CQRS (Command Query Responsibility Segregation) mediator pattern implementation for NestJS applications",
5
5
  "author": "Roland Salloum",
6
6
  "license": "MIT",
@@ -12,7 +12,11 @@
12
12
  "query",
13
13
  "handler",
14
14
  "pattern",
15
- "typescript"
15
+ "typescript",
16
+ "pipeline",
17
+ "behaviors",
18
+ "validation",
19
+ "middleware"
16
20
  ],
17
21
  "main": "./dist/index.js",
18
22
  "module": "./dist/index.js",