@amqp-contract/worker-nestjs 0.13.0 → 0.14.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/dist/index.d.cts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { AmqpConnectionManagerOptions, ConnectionUrl } from "amqp-connection-manager";
2
2
  import { DynamicModule, ModuleMetadata, OnModuleDestroy, OnModuleInit, Type } from "@nestjs/common";
3
3
  import { WorkerInferSafeConsumerHandlers, WorkerInferSafeConsumerHandlers as WorkerInferSafeConsumerHandlers$1, defineHandler, defineHandlers } from "@amqp-contract/worker";
4
- import { ContractDefinition } from "@amqp-contract/contract";
4
+ import { ContractDefinitionInput } from "@amqp-contract/contract";
5
5
 
6
6
  //#region src/worker.service.d.ts
7
7
 
@@ -27,7 +27,7 @@ import { ContractDefinition } from "@amqp-contract/contract";
27
27
  * };
28
28
  * ```
29
29
  */
30
- type AmqpWorkerModuleOptions<TContract extends ContractDefinition> = {
30
+ type AmqpWorkerModuleOptions<TContract extends ContractDefinitionInput> = {
31
31
  /** The AMQP contract definition specifying consumers and their message schemas */
32
32
  contract: TContract;
33
33
  /** Message handlers for each consumer defined in the contract. Use defineHandlers to create type-safe handlers. */
@@ -71,7 +71,7 @@ type AmqpWorkerModuleOptions<TContract extends ContractDefinition> = {
71
71
  * // and stops gracefully when the application shuts down
72
72
  * ```
73
73
  */
74
- declare class AmqpWorkerService<TContract extends ContractDefinition> implements OnModuleInit, OnModuleDestroy {
74
+ declare class AmqpWorkerService<TContract extends ContractDefinitionInput> implements OnModuleInit, OnModuleDestroy {
75
75
  private readonly options;
76
76
  private worker;
77
77
  constructor(options: AmqpWorkerModuleOptions<TContract>);
@@ -100,11 +100,11 @@ declare class AmqpWorkerService<TContract extends ContractDefinition> implements
100
100
  /**
101
101
  * Factory function return type for async module configuration
102
102
  */
103
- type AmqpWorkerModuleOptionsFactory<TContract extends ContractDefinition> = AmqpWorkerModuleOptions<TContract> | Promise<AmqpWorkerModuleOptions<TContract>>;
103
+ type AmqpWorkerModuleOptionsFactory<TContract extends ContractDefinitionInput> = AmqpWorkerModuleOptions<TContract> | Promise<AmqpWorkerModuleOptions<TContract>>;
104
104
  /**
105
105
  * Options for async module configuration using factory pattern
106
106
  */
107
- type AmqpWorkerModuleAsyncOptions<TContract extends ContractDefinition> = {
107
+ type AmqpWorkerModuleAsyncOptions<TContract extends ContractDefinitionInput> = {
108
108
  /**
109
109
  * Factory function that returns the module options.
110
110
  * Can use injected dependencies to create configuration.
@@ -174,14 +174,14 @@ declare class AmqpWorkerModule {
174
174
  * @param options - The worker configuration options with contract and handlers
175
175
  * @returns A dynamic module for NestJS
176
176
  */
177
- static forRoot<TContract extends ContractDefinition>(options: AmqpWorkerModuleOptions<TContract>): DynamicModule;
177
+ static forRoot<TContract extends ContractDefinitionInput>(options: AmqpWorkerModuleOptions<TContract>): DynamicModule;
178
178
  /**
179
179
  * Register the AMQP worker module with asynchronous configuration
180
180
  *
181
181
  * @param options - Async configuration options with factory function
182
182
  * @returns A dynamic module for NestJS
183
183
  */
184
- static forRootAsync<TContract extends ContractDefinition>(options: AmqpWorkerModuleAsyncOptions<TContract>): DynamicModule;
184
+ static forRootAsync<TContract extends ContractDefinitionInput>(options: AmqpWorkerModuleAsyncOptions<TContract>): DynamicModule;
185
185
  }
186
186
  //#endregion
187
187
  //#region src/worker.module-definition.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/worker.service.ts","../src/worker.module.ts","../src/worker.module-definition.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AA4BA;;;;;;;;AA6CA;;;;;;;;;;;;AC3DK,KDcO,uBCdP,CAAA,kBDciD,kBCdnB,CAAA,GAAA;EAAmB;EAC1B,QAAA,EDehB,SCfgB;EAAxB;EACgC,QAAA,EDgBxB,iCChBwB,CDgBQ,SChBR,CAAA;EAAxB;EAAR,IAAA,EDkBI,aClBJ,EAAA;EAAO;EAKC,iBAAA,CAAA,EDeU,4BCfkB,GAAA,SAAA;CAAmB;;;;;;AAiE3D;;;;;;;;;;;;;AClFA;;;;;;;;;;;;;;;;cFsEa,oCAAoC,+BACpC,cAAc;;;uBAMG,wBAAwB;;;;;;;;;;;kBAa9B;;;;;;;;qBAWG;;;;;;;AA7E3B,KCdK,8BDc8B,CAAA,kBCdmB,kBDcnB,CAAA,GCb/B,uBDa+B,CCbP,SDaO,CAAA,GCZ/B,ODY+B,CCZvB,uBDYuB,CCZC,SDYD,CAAA,CAAA;;;;AAIvB,KCXA,4BDWA,CAAA,kBCX+C,kBDW/C,CAAA,GAAA;EAEJ;;;AAuCR;EACiD,UAAA,EAAA,CAAA,GAAA,IAAA,EAAA,GAAA,EAAA,EAAA,GC/Cf,8BD+Ce,CC/CgB,SD+ChB,CAAA;EAOK;;;;EANzC,MAAA,CAAA,EAAA,CAAA,MAAA,GAAA,MAAA,GC3CiB,ID2CjB,CAAA,OAAA,CAAA,CAAA,EAAA;EAAc;;;YCvCf;;AA5BsD;;;;;;;;AAalE;;;;;;;AAiEA;;;;;;;;;;;;;AClFA;;;;;;;;;;;;;;;;;;;cDmFa,gBAAA;;;;;;;mCAOsB,6BACtB,wBAAwB,aAChC;;;;;;;wCAoBmC,6BAC3B,6BAA6B,aACrC;;;;;;;;cClHQ"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/worker.service.ts","../src/worker.module.ts","../src/worker.module-definition.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AA4BA;;;;;;;;AA6CA;;;;;;;;;;;;AC3DK,KDcO,uBCdP,CAAA,kBDciD,uBCdnB,CAAA,GAAA;EAAmB;EAC1B,QAAA,EDehB,SCfgB;EAAxB;EACgC,QAAA,EDgBxB,iCChBwB,CDgBQ,SChBR,CAAA;EAAxB;EAAR,IAAA,EDkBI,aClBJ,EAAA;EAAO;EAKC,iBAAA,CAAA,EDeU,4BCfkB,GAAA,SAAA;CAAmB;;;;;;AAiE3D;;;;;;;;;;;;;AClFA;;;;;;;;;;;;;;;;cFsEa,oCAAoC,oCACpC,cAAc;;;uBAMG,wBAAwB;;;;;;;;;;;kBAa9B;;;;;;;;qBAWG;;;;;;;AA7E3B,KCdK,8BDc8B,CAAA,kBCdmB,uBDcnB,CAAA,GCb/B,uBDa+B,CCbP,SDaO,CAAA,GCZ/B,ODY+B,CCZvB,uBDYuB,CCZC,SDYD,CAAA,CAAA;;;;AAIvB,KCXA,4BDWA,CAAA,kBCX+C,uBDW/C,CAAA,GAAA;EAEJ;;;AAuCR;EACiD,UAAA,EAAA,CAAA,GAAA,IAAA,EAAA,GAAA,EAAA,EAAA,GC/Cf,8BD+Ce,CC/CgB,SD+ChB,CAAA;EAOK;;;;EANzC,MAAA,CAAA,EAAA,CAAA,MAAA,GAAA,MAAA,GC3CiB,ID2CjB,CAAA,OAAA,CAAA,CAAA,EAAA;EAAc;;;YCvCf;;AA5B2D;;;;;;;;AAavE;;;;;;;AAiEA;;;;;;;;;;;;;AClFA;;;;;;;;;;;;;;;;;;;cDmFa,gBAAA;;;;;;;mCAOsB,kCACtB,wBAAwB,aAChC;;;;;;;wCAoBmC,kCAC3B,6BAA6B,aACrC;;;;;;;;cClHQ"}
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { DynamicModule, ModuleMetadata, OnModuleDestroy, OnModuleInit, Type } from "@nestjs/common";
2
2
  import { WorkerInferSafeConsumerHandlers, WorkerInferSafeConsumerHandlers as WorkerInferSafeConsumerHandlers$1, defineHandler, defineHandlers } from "@amqp-contract/worker";
3
3
  import { AmqpConnectionManagerOptions, ConnectionUrl } from "amqp-connection-manager";
4
- import { ContractDefinition } from "@amqp-contract/contract";
4
+ import { ContractDefinitionInput } from "@amqp-contract/contract";
5
5
 
6
6
  //#region src/worker.service.d.ts
7
7
 
@@ -27,7 +27,7 @@ import { ContractDefinition } from "@amqp-contract/contract";
27
27
  * };
28
28
  * ```
29
29
  */
30
- type AmqpWorkerModuleOptions<TContract extends ContractDefinition> = {
30
+ type AmqpWorkerModuleOptions<TContract extends ContractDefinitionInput> = {
31
31
  /** The AMQP contract definition specifying consumers and their message schemas */
32
32
  contract: TContract;
33
33
  /** Message handlers for each consumer defined in the contract. Use defineHandlers to create type-safe handlers. */
@@ -71,7 +71,7 @@ type AmqpWorkerModuleOptions<TContract extends ContractDefinition> = {
71
71
  * // and stops gracefully when the application shuts down
72
72
  * ```
73
73
  */
74
- declare class AmqpWorkerService<TContract extends ContractDefinition> implements OnModuleInit, OnModuleDestroy {
74
+ declare class AmqpWorkerService<TContract extends ContractDefinitionInput> implements OnModuleInit, OnModuleDestroy {
75
75
  private readonly options;
76
76
  private worker;
77
77
  constructor(options: AmqpWorkerModuleOptions<TContract>);
@@ -100,11 +100,11 @@ declare class AmqpWorkerService<TContract extends ContractDefinition> implements
100
100
  /**
101
101
  * Factory function return type for async module configuration
102
102
  */
103
- type AmqpWorkerModuleOptionsFactory<TContract extends ContractDefinition> = AmqpWorkerModuleOptions<TContract> | Promise<AmqpWorkerModuleOptions<TContract>>;
103
+ type AmqpWorkerModuleOptionsFactory<TContract extends ContractDefinitionInput> = AmqpWorkerModuleOptions<TContract> | Promise<AmqpWorkerModuleOptions<TContract>>;
104
104
  /**
105
105
  * Options for async module configuration using factory pattern
106
106
  */
107
- type AmqpWorkerModuleAsyncOptions<TContract extends ContractDefinition> = {
107
+ type AmqpWorkerModuleAsyncOptions<TContract extends ContractDefinitionInput> = {
108
108
  /**
109
109
  * Factory function that returns the module options.
110
110
  * Can use injected dependencies to create configuration.
@@ -174,14 +174,14 @@ declare class AmqpWorkerModule {
174
174
  * @param options - The worker configuration options with contract and handlers
175
175
  * @returns A dynamic module for NestJS
176
176
  */
177
- static forRoot<TContract extends ContractDefinition>(options: AmqpWorkerModuleOptions<TContract>): DynamicModule;
177
+ static forRoot<TContract extends ContractDefinitionInput>(options: AmqpWorkerModuleOptions<TContract>): DynamicModule;
178
178
  /**
179
179
  * Register the AMQP worker module with asynchronous configuration
180
180
  *
181
181
  * @param options - Async configuration options with factory function
182
182
  * @returns A dynamic module for NestJS
183
183
  */
184
- static forRootAsync<TContract extends ContractDefinition>(options: AmqpWorkerModuleAsyncOptions<TContract>): DynamicModule;
184
+ static forRootAsync<TContract extends ContractDefinitionInput>(options: AmqpWorkerModuleAsyncOptions<TContract>): DynamicModule;
185
185
  }
186
186
  //#endregion
187
187
  //#region src/worker.module-definition.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/worker.service.ts","../src/worker.module.ts","../src/worker.module-definition.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AA4BA;;;;;;;;AA6CA;;;;;;;;;;;;AC3DK,KDcO,uBCdP,CAAA,kBDciD,kBCdnB,CAAA,GAAA;EAAmB;EAC1B,QAAA,EDehB,SCfgB;EAAxB;EACgC,QAAA,EDgBxB,iCChBwB,CDgBQ,SChBR,CAAA;EAAxB;EAAR,IAAA,EDkBI,aClBJ,EAAA;EAAO;EAKC,iBAAA,CAAA,EDeU,4BCfkB,GAAA,SAAA;CAAmB;;;;;;AAiE3D;;;;;;;;;;;;;AClFA;;;;;;;;;;;;;;;;cFsEa,oCAAoC,+BACpC,cAAc;;;uBAMG,wBAAwB;;;;;;;;;;;kBAa9B;;;;;;;;qBAWG;;;;;;;AA7E3B,KCdK,8BDc8B,CAAA,kBCdmB,kBDcnB,CAAA,GCb/B,uBDa+B,CCbP,SDaO,CAAA,GCZ/B,ODY+B,CCZvB,uBDYuB,CCZC,SDYD,CAAA,CAAA;;;;AAIvB,KCXA,4BDWA,CAAA,kBCX+C,kBDW/C,CAAA,GAAA;EAEJ;;;AAuCR;EACiD,UAAA,EAAA,CAAA,GAAA,IAAA,EAAA,GAAA,EAAA,EAAA,GC/Cf,8BD+Ce,CC/CgB,SD+ChB,CAAA;EAOK;;;;EANzC,MAAA,CAAA,EAAA,CAAA,MAAA,GAAA,MAAA,GC3CiB,ID2CjB,CAAA,OAAA,CAAA,CAAA,EAAA;EAAc;;;YCvCf;;AA5BsD;;;;;;;;AAalE;;;;;;;AAiEA;;;;;;;;;;;;;AClFA;;;;;;;;;;;;;;;;;;;cDmFa,gBAAA;;;;;;;mCAOsB,6BACtB,wBAAwB,aAChC;;;;;;;wCAoBmC,6BAC3B,6BAA6B,aACrC;;;;;;;;cClHQ"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/worker.service.ts","../src/worker.module.ts","../src/worker.module-definition.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AA4BA;;;;;;;;AA6CA;;;;;;;;;;;;AC3DK,KDcO,uBCdP,CAAA,kBDciD,uBCdnB,CAAA,GAAA;EAAmB;EAC1B,QAAA,EDehB,SCfgB;EAAxB;EACgC,QAAA,EDgBxB,iCChBwB,CDgBQ,SChBR,CAAA;EAAxB;EAAR,IAAA,EDkBI,aClBJ,EAAA;EAAO;EAKC,iBAAA,CAAA,EDeU,4BCfkB,GAAA,SAAA;CAAmB;;;;;;AAiE3D;;;;;;;;;;;;;AClFA;;;;;;;;;;;;;;;;cFsEa,oCAAoC,oCACpC,cAAc;;;uBAMG,wBAAwB;;;;;;;;;;;kBAa9B;;;;;;;;qBAWG;;;;;;;AA7E3B,KCdK,8BDc8B,CAAA,kBCdmB,uBDcnB,CAAA,GCb/B,uBDa+B,CCbP,SDaO,CAAA,GCZ/B,ODY+B,CCZvB,uBDYuB,CCZC,SDYD,CAAA,CAAA;;;;AAIvB,KCXA,4BDWA,CAAA,kBCX+C,uBDW/C,CAAA,GAAA;EAEJ;;;AAuCR;EACiD,UAAA,EAAA,CAAA,GAAA,IAAA,EAAA,GAAA,EAAA,EAAA,GC/Cf,8BD+Ce,CC/CgB,SD+ChB,CAAA;EAOK;;;;EANzC,MAAA,CAAA,EAAA,CAAA,MAAA,GAAA,MAAA,GC3CiB,ID2CjB,CAAA,OAAA,CAAA,CAAA,EAAA;EAAc;;;YCvCf;;AA5B2D;;;;;;;;AAavE;;;;;;;AAiEA;;;;;;;;;;;;;AClFA;;;;;;;;;;;;;;;;;;;cDmFa,gBAAA;;;;;;;mCAOsB,kCACtB,wBAAwB,aAChC;;;;;;;wCAoBmC,kCAC3B,6BAA6B,aACrC;;;;;;;;cClHQ"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["AmqpWorkerService","AmqpWorkerModule"],"sources":["../src/worker.module-definition.ts","../src/worker.service.ts","../src/worker.module.ts"],"sourcesContent":["/**\n * Injection token for AMQP worker module options\n * Used by NestJS DI system to inject configuration into AmqpWorkerService\n */\nexport const MODULE_OPTIONS_TOKEN = Symbol(\"AMQP_WORKER_MODULE_OPTIONS\");\n","import type { AmqpConnectionManagerOptions, ConnectionUrl } from \"amqp-connection-manager\";\nimport { Inject, Injectable, type OnModuleDestroy, type OnModuleInit } from \"@nestjs/common\";\nimport { TypedAmqpWorker, type WorkerInferSafeConsumerHandlers } from \"@amqp-contract/worker\";\nimport type { ContractDefinition } from \"@amqp-contract/contract\";\nimport { MODULE_OPTIONS_TOKEN } from \"./worker.module-definition.js\";\n\n/**\n * Configuration options for the AMQP worker NestJS module.\n *\n * @typeParam TContract - The contract definition type\n *\n * @example\n * ```typescript\n * import { defineHandlers, RetryableError } from '@amqp-contract/worker';\n * import { Future } from '@swan-io/boxed';\n *\n * const options: AmqpWorkerModuleOptions<typeof contract> = {\n * contract: myContract,\n * handlers: defineHandlers(myContract, {\n * processOrder: ({ payload }) =>\n * Future.fromPromise(processPayment(payload))\n * .mapOk(() => undefined)\n * .mapError((error) => new RetryableError('Payment failed', error))\n * }),\n * urls: ['amqp://localhost'],\n * };\n * ```\n */\nexport type AmqpWorkerModuleOptions<TContract extends ContractDefinition> = {\n /** The AMQP contract definition specifying consumers and their message schemas */\n contract: TContract;\n /** Message handlers for each consumer defined in the contract. Use defineHandlers to create type-safe handlers. */\n handlers: WorkerInferSafeConsumerHandlers<TContract>;\n /** AMQP broker URL(s). Multiple URLs provide failover support */\n urls: ConnectionUrl[];\n /** Optional connection configuration (heartbeat, reconnect settings, etc.) */\n connectionOptions?: AmqpConnectionManagerOptions | undefined;\n};\n\n/**\n * Type-safe AMQP worker service for NestJS applications.\n *\n * This service wraps {@link TypedAmqpWorker} and integrates it with the NestJS\n * lifecycle, automatically starting message consumption on module init and\n * cleaning up resources on module destroy.\n *\n * @typeParam TContract - The contract definition type\n *\n * @example\n * ```typescript\n * // In your module\n * import { AmqpWorkerModule } from '@amqp-contract/worker-nestjs';\n *\n * @Module({\n * imports: [\n * AmqpWorkerModule.forRoot({\n * contract: myContract,\n * handlers: {\n * processOrder: async (message) => {\n * console.log('Received order:', message.orderId);\n * // Process the order...\n * }\n * },\n * urls: ['amqp://localhost']\n * })\n * ]\n * })\n * export class AppModule {}\n *\n * // The worker automatically starts consuming messages when the module initializes\n * // and stops gracefully when the application shuts down\n * ```\n */\n@Injectable()\nexport class AmqpWorkerService<TContract extends ContractDefinition>\n implements OnModuleInit, OnModuleDestroy\n{\n private worker: TypedAmqpWorker<TContract> | null = null;\n\n constructor(\n @Inject(MODULE_OPTIONS_TOKEN)\n private readonly options: AmqpWorkerModuleOptions<TContract>,\n ) {}\n\n /**\n * Initialize the AMQP worker when the NestJS module starts.\n *\n * This lifecycle hook automatically creates and starts the worker,\n * beginning message consumption from all configured consumers.\n * The connection will be established in the background with\n * automatic reconnection handling.\n *\n * @throws Error if the worker fails to start\n */\n async onModuleInit(): Promise<void> {\n this.worker = await TypedAmqpWorker.create(this.options).resultToPromise();\n }\n\n /**\n * Close the AMQP worker when the NestJS module is destroyed.\n *\n * This lifecycle hook ensures proper cleanup of resources when the\n * NestJS application shuts down, gracefully stopping message consumption\n * and closing the connection.\n */\n async onModuleDestroy(): Promise<void> {\n if (this.worker) {\n await this.worker.close().resultToPromise();\n this.worker = null;\n }\n }\n}\n","import { type AmqpWorkerModuleOptions, AmqpWorkerService } from \"./worker.service.js\";\nimport {\n type DynamicModule,\n Module,\n type ModuleMetadata,\n type Provider,\n type Type,\n} from \"@nestjs/common\";\nimport type { ContractDefinition } from \"@amqp-contract/contract\";\nimport { MODULE_OPTIONS_TOKEN } from \"./worker.module-definition.js\";\n\n/**\n * Factory function return type for async module configuration\n */\ntype AmqpWorkerModuleOptionsFactory<TContract extends ContractDefinition> =\n | AmqpWorkerModuleOptions<TContract>\n | Promise<AmqpWorkerModuleOptions<TContract>>;\n\n/**\n * Options for async module configuration using factory pattern\n */\nexport type AmqpWorkerModuleAsyncOptions<TContract extends ContractDefinition> = {\n /**\n * Factory function that returns the module options.\n * Can use injected dependencies to create configuration.\n */\n // oxlint-disable-next-line no-explicit-any\n useFactory: (...args: any[]) => AmqpWorkerModuleOptionsFactory<TContract>;\n /**\n * Optional dependencies to inject into the factory function.\n * Can be a token (string/symbol) a class or a reference to a provider.\n */\n inject?: (string | symbol | Type<unknown>)[];\n /**\n * Optional list of imported modules that export providers needed by the factory\n */\n imports?: ModuleMetadata[\"imports\"];\n};\n\n/**\n * NestJS module for AMQP worker integration\n * This module provides type-safe AMQP worker functionality using @amqp-contract/worker\n * without relying on NestJS decorators (except for dependency injection)\n *\n * @typeParam TContract - The contract definition type for type-safe handlers\n *\n * @example\n * ```typescript\n * // Synchronous configuration\n * @Module({\n * imports: [\n * AmqpWorkerModule.forRoot({\n * contract: myContract,\n * handlers: {\n * processOrder: async (message) => {\n * // message is fully typed based on the contract\n * console.log('Order:', message.orderId);\n * }\n * },\n * urls: ['amqp://localhost']\n * })\n * ]\n * })\n * export class AppModule {}\n *\n * // Asynchronous configuration\n * @Module({\n * imports: [\n * AmqpWorkerModule.forRootAsync({\n * imports: [ConfigModule],\n * useFactory: (configService: ConfigService) => ({\n * contract: myContract,\n * handlers: {\n * processOrder: async (message) => {\n * console.log('Order:', message.orderId);\n * }\n * },\n * urls: configService.get('AMQP_URLS')\n * }),\n * inject: [ConfigService]\n * })\n * ]\n * })\n * export class AppModule {}\n * ```\n */\n@Module({})\nexport class AmqpWorkerModule {\n /**\n * Register the AMQP worker module with synchronous configuration\n *\n * @param options - The worker configuration options with contract and handlers\n * @returns A dynamic module for NestJS\n */\n static forRoot<TContract extends ContractDefinition>(\n options: AmqpWorkerModuleOptions<TContract>,\n ): DynamicModule {\n return {\n module: AmqpWorkerModule,\n providers: [\n {\n provide: MODULE_OPTIONS_TOKEN,\n useValue: options,\n },\n AmqpWorkerService,\n ],\n exports: [AmqpWorkerService],\n };\n }\n\n /**\n * Register the AMQP worker module with asynchronous configuration\n *\n * @param options - Async configuration options with factory function\n * @returns A dynamic module for NestJS\n */\n static forRootAsync<TContract extends ContractDefinition>(\n options: AmqpWorkerModuleAsyncOptions<TContract>,\n ): DynamicModule {\n const providers: Provider[] = [\n {\n provide: MODULE_OPTIONS_TOKEN,\n useFactory: options.useFactory,\n inject: options.inject ?? [],\n },\n AmqpWorkerService,\n ];\n\n return {\n module: AmqpWorkerModule,\n imports: options.imports ?? [],\n providers,\n exports: [AmqpWorkerService],\n };\n }\n}\n"],"mappings":";;;;;;;;AAIA,MAAa,uBAAuB,OAAO,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;ACsEjE,8BAAMA,oBAEb;CACE,AAAQ,SAA4C;CAEpD,YACE,AACiB,SACjB;EADiB;;;;;;;;;;;;CAanB,MAAM,eAA8B;AAClC,OAAK,SAAS,MAAM,gBAAgB,OAAO,KAAK,QAAQ,CAAC,iBAAiB;;;;;;;;;CAU5E,MAAM,kBAAiC;AACrC,MAAI,KAAK,QAAQ;AACf,SAAM,KAAK,OAAO,OAAO,CAAC,iBAAiB;AAC3C,QAAK,SAAS;;;;;CAnCnB,YAAY;oBAOR,OAAO,qBAAqB;;;;;;;ACO1B,iDAAMC,mBAAiB;;;;;;;CAO5B,OAAO,QACL,SACe;AACf,SAAO;GACL;GACA,WAAW,CACT;IACE,SAAS;IACT,UAAU;IACX,EACD,kBACD;GACD,SAAS,CAAC,kBAAkB;GAC7B;;;;;;;;CASH,OAAO,aACL,SACe;EACf,MAAM,YAAwB,CAC5B;GACE,SAAS;GACT,YAAY,QAAQ;GACpB,QAAQ,QAAQ,UAAU,EAAE;GAC7B,EACD,kBACD;AAED,SAAO;GACL;GACA,SAAS,QAAQ,WAAW,EAAE;GAC9B;GACA,SAAS,CAAC,kBAAkB;GAC7B;;;mDA/CJ,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"index.mjs","names":["AmqpWorkerService","AmqpWorkerModule"],"sources":["../src/worker.module-definition.ts","../src/worker.service.ts","../src/worker.module.ts"],"sourcesContent":["/**\n * Injection token for AMQP worker module options\n * Used by NestJS DI system to inject configuration into AmqpWorkerService\n */\nexport const MODULE_OPTIONS_TOKEN = Symbol(\"AMQP_WORKER_MODULE_OPTIONS\");\n","import type { AmqpConnectionManagerOptions, ConnectionUrl } from \"amqp-connection-manager\";\nimport { Inject, Injectable, type OnModuleDestroy, type OnModuleInit } from \"@nestjs/common\";\nimport { TypedAmqpWorker, type WorkerInferSafeConsumerHandlers } from \"@amqp-contract/worker\";\nimport type { ContractDefinitionInput } from \"@amqp-contract/contract\";\nimport { MODULE_OPTIONS_TOKEN } from \"./worker.module-definition.js\";\n\n/**\n * Configuration options for the AMQP worker NestJS module.\n *\n * @typeParam TContract - The contract definition type\n *\n * @example\n * ```typescript\n * import { defineHandlers, RetryableError } from '@amqp-contract/worker';\n * import { Future } from '@swan-io/boxed';\n *\n * const options: AmqpWorkerModuleOptions<typeof contract> = {\n * contract: myContract,\n * handlers: defineHandlers(myContract, {\n * processOrder: ({ payload }) =>\n * Future.fromPromise(processPayment(payload))\n * .mapOk(() => undefined)\n * .mapError((error) => new RetryableError('Payment failed', error))\n * }),\n * urls: ['amqp://localhost'],\n * };\n * ```\n */\nexport type AmqpWorkerModuleOptions<TContract extends ContractDefinitionInput> = {\n /** The AMQP contract definition specifying consumers and their message schemas */\n contract: TContract;\n /** Message handlers for each consumer defined in the contract. Use defineHandlers to create type-safe handlers. */\n handlers: WorkerInferSafeConsumerHandlers<TContract>;\n /** AMQP broker URL(s). Multiple URLs provide failover support */\n urls: ConnectionUrl[];\n /** Optional connection configuration (heartbeat, reconnect settings, etc.) */\n connectionOptions?: AmqpConnectionManagerOptions | undefined;\n};\n\n/**\n * Type-safe AMQP worker service for NestJS applications.\n *\n * This service wraps {@link TypedAmqpWorker} and integrates it with the NestJS\n * lifecycle, automatically starting message consumption on module init and\n * cleaning up resources on module destroy.\n *\n * @typeParam TContract - The contract definition type\n *\n * @example\n * ```typescript\n * // In your module\n * import { AmqpWorkerModule } from '@amqp-contract/worker-nestjs';\n *\n * @Module({\n * imports: [\n * AmqpWorkerModule.forRoot({\n * contract: myContract,\n * handlers: {\n * processOrder: async (message) => {\n * console.log('Received order:', message.orderId);\n * // Process the order...\n * }\n * },\n * urls: ['amqp://localhost']\n * })\n * ]\n * })\n * export class AppModule {}\n *\n * // The worker automatically starts consuming messages when the module initializes\n * // and stops gracefully when the application shuts down\n * ```\n */\n@Injectable()\nexport class AmqpWorkerService<TContract extends ContractDefinitionInput>\n implements OnModuleInit, OnModuleDestroy\n{\n private worker: TypedAmqpWorker<TContract> | null = null;\n\n constructor(\n @Inject(MODULE_OPTIONS_TOKEN)\n private readonly options: AmqpWorkerModuleOptions<TContract>,\n ) {}\n\n /**\n * Initialize the AMQP worker when the NestJS module starts.\n *\n * This lifecycle hook automatically creates and starts the worker,\n * beginning message consumption from all configured consumers.\n * The connection will be established in the background with\n * automatic reconnection handling.\n *\n * @throws Error if the worker fails to start\n */\n async onModuleInit(): Promise<void> {\n this.worker = await TypedAmqpWorker.create(this.options).resultToPromise();\n }\n\n /**\n * Close the AMQP worker when the NestJS module is destroyed.\n *\n * This lifecycle hook ensures proper cleanup of resources when the\n * NestJS application shuts down, gracefully stopping message consumption\n * and closing the connection.\n */\n async onModuleDestroy(): Promise<void> {\n if (this.worker) {\n await this.worker.close().resultToPromise();\n this.worker = null;\n }\n }\n}\n","import { type AmqpWorkerModuleOptions, AmqpWorkerService } from \"./worker.service.js\";\nimport {\n type DynamicModule,\n Module,\n type ModuleMetadata,\n type Provider,\n type Type,\n} from \"@nestjs/common\";\nimport type { ContractDefinitionInput } from \"@amqp-contract/contract\";\nimport { MODULE_OPTIONS_TOKEN } from \"./worker.module-definition.js\";\n\n/**\n * Factory function return type for async module configuration\n */\ntype AmqpWorkerModuleOptionsFactory<TContract extends ContractDefinitionInput> =\n | AmqpWorkerModuleOptions<TContract>\n | Promise<AmqpWorkerModuleOptions<TContract>>;\n\n/**\n * Options for async module configuration using factory pattern\n */\nexport type AmqpWorkerModuleAsyncOptions<TContract extends ContractDefinitionInput> = {\n /**\n * Factory function that returns the module options.\n * Can use injected dependencies to create configuration.\n */\n // oxlint-disable-next-line no-explicit-any\n useFactory: (...args: any[]) => AmqpWorkerModuleOptionsFactory<TContract>;\n /**\n * Optional dependencies to inject into the factory function.\n * Can be a token (string/symbol) a class or a reference to a provider.\n */\n inject?: (string | symbol | Type<unknown>)[];\n /**\n * Optional list of imported modules that export providers needed by the factory\n */\n imports?: ModuleMetadata[\"imports\"];\n};\n\n/**\n * NestJS module for AMQP worker integration\n * This module provides type-safe AMQP worker functionality using @amqp-contract/worker\n * without relying on NestJS decorators (except for dependency injection)\n *\n * @typeParam TContract - The contract definition type for type-safe handlers\n *\n * @example\n * ```typescript\n * // Synchronous configuration\n * @Module({\n * imports: [\n * AmqpWorkerModule.forRoot({\n * contract: myContract,\n * handlers: {\n * processOrder: async (message) => {\n * // message is fully typed based on the contract\n * console.log('Order:', message.orderId);\n * }\n * },\n * urls: ['amqp://localhost']\n * })\n * ]\n * })\n * export class AppModule {}\n *\n * // Asynchronous configuration\n * @Module({\n * imports: [\n * AmqpWorkerModule.forRootAsync({\n * imports: [ConfigModule],\n * useFactory: (configService: ConfigService) => ({\n * contract: myContract,\n * handlers: {\n * processOrder: async (message) => {\n * console.log('Order:', message.orderId);\n * }\n * },\n * urls: configService.get('AMQP_URLS')\n * }),\n * inject: [ConfigService]\n * })\n * ]\n * })\n * export class AppModule {}\n * ```\n */\n@Module({})\nexport class AmqpWorkerModule {\n /**\n * Register the AMQP worker module with synchronous configuration\n *\n * @param options - The worker configuration options with contract and handlers\n * @returns A dynamic module for NestJS\n */\n static forRoot<TContract extends ContractDefinitionInput>(\n options: AmqpWorkerModuleOptions<TContract>,\n ): DynamicModule {\n return {\n module: AmqpWorkerModule,\n providers: [\n {\n provide: MODULE_OPTIONS_TOKEN,\n useValue: options,\n },\n AmqpWorkerService,\n ],\n exports: [AmqpWorkerService],\n };\n }\n\n /**\n * Register the AMQP worker module with asynchronous configuration\n *\n * @param options - Async configuration options with factory function\n * @returns A dynamic module for NestJS\n */\n static forRootAsync<TContract extends ContractDefinitionInput>(\n options: AmqpWorkerModuleAsyncOptions<TContract>,\n ): DynamicModule {\n const providers: Provider[] = [\n {\n provide: MODULE_OPTIONS_TOKEN,\n useFactory: options.useFactory,\n inject: options.inject ?? [],\n },\n AmqpWorkerService,\n ];\n\n return {\n module: AmqpWorkerModule,\n imports: options.imports ?? [],\n providers,\n exports: [AmqpWorkerService],\n };\n }\n}\n"],"mappings":";;;;;;;;AAIA,MAAa,uBAAuB,OAAO,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;ACsEjE,8BAAMA,oBAEb;CACE,AAAQ,SAA4C;CAEpD,YACE,AACiB,SACjB;EADiB;;;;;;;;;;;;CAanB,MAAM,eAA8B;AAClC,OAAK,SAAS,MAAM,gBAAgB,OAAO,KAAK,QAAQ,CAAC,iBAAiB;;;;;;;;;CAU5E,MAAM,kBAAiC;AACrC,MAAI,KAAK,QAAQ;AACf,SAAM,KAAK,OAAO,OAAO,CAAC,iBAAiB;AAC3C,QAAK,SAAS;;;;;CAnCnB,YAAY;oBAOR,OAAO,qBAAqB;;;;;;;ACO1B,iDAAMC,mBAAiB;;;;;;;CAO5B,OAAO,QACL,SACe;AACf,SAAO;GACL;GACA,WAAW,CACT;IACE,SAAS;IACT,UAAU;IACX,EACD,kBACD;GACD,SAAS,CAAC,kBAAkB;GAC7B;;;;;;;;CASH,OAAO,aACL,SACe;EACf,MAAM,YAAwB,CAC5B;GACE,SAAS;GACT,YAAY,QAAQ;GACpB,QAAQ,QAAQ,UAAU,EAAE;GAC7B,EACD,kBACD;AAED,SAAO;GACL;GACA,SAAS,QAAQ,WAAW,EAAE;GAC9B;GACA,SAAS,CAAC,kBAAkB;GAC7B;;;mDA/CJ,OAAO,EAAE,CAAC"}
package/docs/index.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  ### AmqpWorkerModule
10
10
 
11
- Defined in: [worker-nestjs/src/worker.module.ts:88](https://github.com/btravers/amqp-contract/blob/69a6467d137997be809af2ea5c4332c378579b49/packages/worker-nestjs/src/worker.module.ts#L88)
11
+ Defined in: [worker-nestjs/src/worker.module.ts:88](https://github.com/btravers/amqp-contract/blob/d132d062ebeaa9cc84db5471805355a29e3a50dc/packages/worker-nestjs/src/worker.module.ts#L88)
12
12
 
13
13
  NestJS module for AMQP worker integration
14
14
  This module provides type-safe AMQP worker functionality using @amqp-contract/worker
@@ -79,7 +79,7 @@ new AmqpWorkerModule(): AmqpWorkerModule;
79
79
  static forRoot<TContract>(options): DynamicModule;
80
80
  ```
81
81
 
82
- Defined in: [worker-nestjs/src/worker.module.ts:95](https://github.com/btravers/amqp-contract/blob/69a6467d137997be809af2ea5c4332c378579b49/packages/worker-nestjs/src/worker.module.ts#L95)
82
+ Defined in: [worker-nestjs/src/worker.module.ts:95](https://github.com/btravers/amqp-contract/blob/d132d062ebeaa9cc84db5471805355a29e3a50dc/packages/worker-nestjs/src/worker.module.ts#L95)
83
83
 
84
84
  Register the AMQP worker module with synchronous configuration
85
85
 
@@ -87,7 +87,7 @@ Register the AMQP worker module with synchronous configuration
87
87
 
88
88
  | Type Parameter |
89
89
  | ------ |
90
- | `TContract` *extends* `ContractDefinition` |
90
+ | `TContract` *extends* `ContractDefinitionInput` |
91
91
 
92
92
  ###### Parameters
93
93
 
@@ -107,7 +107,7 @@ A dynamic module for NestJS
107
107
  static forRootAsync<TContract>(options): DynamicModule;
108
108
  ```
109
109
 
110
- Defined in: [worker-nestjs/src/worker.module.ts:117](https://github.com/btravers/amqp-contract/blob/69a6467d137997be809af2ea5c4332c378579b49/packages/worker-nestjs/src/worker.module.ts#L117)
110
+ Defined in: [worker-nestjs/src/worker.module.ts:117](https://github.com/btravers/amqp-contract/blob/d132d062ebeaa9cc84db5471805355a29e3a50dc/packages/worker-nestjs/src/worker.module.ts#L117)
111
111
 
112
112
  Register the AMQP worker module with asynchronous configuration
113
113
 
@@ -115,7 +115,7 @@ Register the AMQP worker module with asynchronous configuration
115
115
 
116
116
  | Type Parameter |
117
117
  | ------ |
118
- | `TContract` *extends* `ContractDefinition` |
118
+ | `TContract` *extends* `ContractDefinitionInput` |
119
119
 
120
120
  ###### Parameters
121
121
 
@@ -133,7 +133,7 @@ A dynamic module for NestJS
133
133
 
134
134
  ### AmqpWorkerService
135
135
 
136
- Defined in: [worker-nestjs/src/worker.service.ts:75](https://github.com/btravers/amqp-contract/blob/69a6467d137997be809af2ea5c4332c378579b49/packages/worker-nestjs/src/worker.service.ts#L75)
136
+ Defined in: [worker-nestjs/src/worker.service.ts:75](https://github.com/btravers/amqp-contract/blob/d132d062ebeaa9cc84db5471805355a29e3a50dc/packages/worker-nestjs/src/worker.service.ts#L75)
137
137
 
138
138
  Type-safe AMQP worker service for NestJS applications.
139
139
 
@@ -171,7 +171,7 @@ export class AppModule {}
171
171
 
172
172
  | Type Parameter | Description |
173
173
  | ------ | ------ |
174
- | `TContract` *extends* `ContractDefinition` | The contract definition type |
174
+ | `TContract` *extends* `ContractDefinitionInput` | The contract definition type |
175
175
 
176
176
  #### Implements
177
177
 
@@ -186,7 +186,7 @@ export class AppModule {}
186
186
  new AmqpWorkerService<TContract>(options): AmqpWorkerService<TContract>;
187
187
  ```
188
188
 
189
- Defined in: [worker-nestjs/src/worker.service.ts:80](https://github.com/btravers/amqp-contract/blob/69a6467d137997be809af2ea5c4332c378579b49/packages/worker-nestjs/src/worker.service.ts#L80)
189
+ Defined in: [worker-nestjs/src/worker.service.ts:80](https://github.com/btravers/amqp-contract/blob/d132d062ebeaa9cc84db5471805355a29e3a50dc/packages/worker-nestjs/src/worker.service.ts#L80)
190
190
 
191
191
  ###### Parameters
192
192
 
@@ -206,7 +206,7 @@ Defined in: [worker-nestjs/src/worker.service.ts:80](https://github.com/btravers
206
206
  onModuleDestroy(): Promise<void>;
207
207
  ```
208
208
 
209
- Defined in: [worker-nestjs/src/worker.service.ts:106](https://github.com/btravers/amqp-contract/blob/69a6467d137997be809af2ea5c4332c378579b49/packages/worker-nestjs/src/worker.service.ts#L106)
209
+ Defined in: [worker-nestjs/src/worker.service.ts:106](https://github.com/btravers/amqp-contract/blob/d132d062ebeaa9cc84db5471805355a29e3a50dc/packages/worker-nestjs/src/worker.service.ts#L106)
210
210
 
211
211
  Close the AMQP worker when the NestJS module is destroyed.
212
212
 
@@ -230,7 +230,7 @@ OnModuleDestroy.onModuleDestroy
230
230
  onModuleInit(): Promise<void>;
231
231
  ```
232
232
 
233
- Defined in: [worker-nestjs/src/worker.service.ts:95](https://github.com/btravers/amqp-contract/blob/69a6467d137997be809af2ea5c4332c378579b49/packages/worker-nestjs/src/worker.service.ts#L95)
233
+ Defined in: [worker-nestjs/src/worker.service.ts:95](https://github.com/btravers/amqp-contract/blob/d132d062ebeaa9cc84db5471805355a29e3a50dc/packages/worker-nestjs/src/worker.service.ts#L95)
234
234
 
235
235
  Initialize the AMQP worker when the NestJS module starts.
236
236
 
@@ -261,7 +261,7 @@ OnModuleInit.onModuleInit
261
261
  type AmqpWorkerModuleAsyncOptions<TContract> = object;
262
262
  ```
263
263
 
264
- Defined in: [worker-nestjs/src/worker.module.ts:22](https://github.com/btravers/amqp-contract/blob/69a6467d137997be809af2ea5c4332c378579b49/packages/worker-nestjs/src/worker.module.ts#L22)
264
+ Defined in: [worker-nestjs/src/worker.module.ts:22](https://github.com/btravers/amqp-contract/blob/d132d062ebeaa9cc84db5471805355a29e3a50dc/packages/worker-nestjs/src/worker.module.ts#L22)
265
265
 
266
266
  Options for async module configuration using factory pattern
267
267
 
@@ -269,15 +269,15 @@ Options for async module configuration using factory pattern
269
269
 
270
270
  | Type Parameter |
271
271
  | ------ |
272
- | `TContract` *extends* `ContractDefinition` |
272
+ | `TContract` *extends* `ContractDefinitionInput` |
273
273
 
274
274
  #### Properties
275
275
 
276
276
  | Property | Type | Description | Defined in |
277
277
  | ------ | ------ | ------ | ------ |
278
- | <a id="imports"></a> `imports?` | `ModuleMetadata`\[`"imports"`\] | Optional list of imported modules that export providers needed by the factory | [worker-nestjs/src/worker.module.ts:37](https://github.com/btravers/amqp-contract/blob/69a6467d137997be809af2ea5c4332c378579b49/packages/worker-nestjs/src/worker.module.ts#L37) |
279
- | <a id="inject"></a> `inject?` | (`string` \| `symbol` \| `Type`&lt;`unknown`&gt;)[] | Optional dependencies to inject into the factory function. Can be a token (string/symbol) a class or a reference to a provider. | [worker-nestjs/src/worker.module.ts:33](https://github.com/btravers/amqp-contract/blob/69a6467d137997be809af2ea5c4332c378579b49/packages/worker-nestjs/src/worker.module.ts#L33) |
280
- | <a id="usefactory"></a> `useFactory` | (...`args`) => `AmqpWorkerModuleOptionsFactory`&lt;`TContract`&gt; | Factory function that returns the module options. Can use injected dependencies to create configuration. | [worker-nestjs/src/worker.module.ts:28](https://github.com/btravers/amqp-contract/blob/69a6467d137997be809af2ea5c4332c378579b49/packages/worker-nestjs/src/worker.module.ts#L28) |
278
+ | <a id="imports"></a> `imports?` | `ModuleMetadata`\[`"imports"`\] | Optional list of imported modules that export providers needed by the factory | [worker-nestjs/src/worker.module.ts:37](https://github.com/btravers/amqp-contract/blob/d132d062ebeaa9cc84db5471805355a29e3a50dc/packages/worker-nestjs/src/worker.module.ts#L37) |
279
+ | <a id="inject"></a> `inject?` | (`string` \| `symbol` \| `Type`&lt;`unknown`&gt;)[] | Optional dependencies to inject into the factory function. Can be a token (string/symbol) a class or a reference to a provider. | [worker-nestjs/src/worker.module.ts:33](https://github.com/btravers/amqp-contract/blob/d132d062ebeaa9cc84db5471805355a29e3a50dc/packages/worker-nestjs/src/worker.module.ts#L33) |
280
+ | <a id="usefactory"></a> `useFactory` | (...`args`) => `AmqpWorkerModuleOptionsFactory`&lt;`TContract`&gt; | Factory function that returns the module options. Can use injected dependencies to create configuration. | [worker-nestjs/src/worker.module.ts:28](https://github.com/btravers/amqp-contract/blob/d132d062ebeaa9cc84db5471805355a29e3a50dc/packages/worker-nestjs/src/worker.module.ts#L28) |
281
281
 
282
282
  ***
283
283
 
@@ -287,7 +287,7 @@ Options for async module configuration using factory pattern
287
287
  type AmqpWorkerModuleOptions<TContract> = object;
288
288
  ```
289
289
 
290
- Defined in: [worker-nestjs/src/worker.service.ts:29](https://github.com/btravers/amqp-contract/blob/69a6467d137997be809af2ea5c4332c378579b49/packages/worker-nestjs/src/worker.service.ts#L29)
290
+ Defined in: [worker-nestjs/src/worker.service.ts:29](https://github.com/btravers/amqp-contract/blob/d132d062ebeaa9cc84db5471805355a29e3a50dc/packages/worker-nestjs/src/worker.service.ts#L29)
291
291
 
292
292
  Configuration options for the AMQP worker NestJS module.
293
293
 
@@ -313,16 +313,16 @@ const options: AmqpWorkerModuleOptions<typeof contract> = {
313
313
 
314
314
  | Type Parameter | Description |
315
315
  | ------ | ------ |
316
- | `TContract` *extends* `ContractDefinition` | The contract definition type |
316
+ | `TContract` *extends* `ContractDefinitionInput` | The contract definition type |
317
317
 
318
318
  #### Properties
319
319
 
320
320
  | Property | Type | Description | Defined in |
321
321
  | ------ | ------ | ------ | ------ |
322
- | <a id="connectionoptions"></a> `connectionOptions?` | `AmqpConnectionManagerOptions` | Optional connection configuration (heartbeat, reconnect settings, etc.) | [worker-nestjs/src/worker.service.ts:37](https://github.com/btravers/amqp-contract/blob/69a6467d137997be809af2ea5c4332c378579b49/packages/worker-nestjs/src/worker.service.ts#L37) |
323
- | <a id="contract"></a> `contract` | `TContract` | The AMQP contract definition specifying consumers and their message schemas | [worker-nestjs/src/worker.service.ts:31](https://github.com/btravers/amqp-contract/blob/69a6467d137997be809af2ea5c4332c378579b49/packages/worker-nestjs/src/worker.service.ts#L31) |
324
- | <a id="handlers"></a> `handlers` | [`WorkerInferSafeConsumerHandlers`](#workerinfersafeconsumerhandlers)&lt;`TContract`&gt; | Message handlers for each consumer defined in the contract. Use defineHandlers to create type-safe handlers. | [worker-nestjs/src/worker.service.ts:33](https://github.com/btravers/amqp-contract/blob/69a6467d137997be809af2ea5c4332c378579b49/packages/worker-nestjs/src/worker.service.ts#L33) |
325
- | <a id="urls"></a> `urls` | `ConnectionUrl`[] | AMQP broker URL(s). Multiple URLs provide failover support | [worker-nestjs/src/worker.service.ts:35](https://github.com/btravers/amqp-contract/blob/69a6467d137997be809af2ea5c4332c378579b49/packages/worker-nestjs/src/worker.service.ts#L35) |
322
+ | <a id="connectionoptions"></a> `connectionOptions?` | `AmqpConnectionManagerOptions` | Optional connection configuration (heartbeat, reconnect settings, etc.) | [worker-nestjs/src/worker.service.ts:37](https://github.com/btravers/amqp-contract/blob/d132d062ebeaa9cc84db5471805355a29e3a50dc/packages/worker-nestjs/src/worker.service.ts#L37) |
323
+ | <a id="contract"></a> `contract` | `TContract` | The AMQP contract definition specifying consumers and their message schemas | [worker-nestjs/src/worker.service.ts:31](https://github.com/btravers/amqp-contract/blob/d132d062ebeaa9cc84db5471805355a29e3a50dc/packages/worker-nestjs/src/worker.service.ts#L31) |
324
+ | <a id="handlers"></a> `handlers` | [`WorkerInferSafeConsumerHandlers`](#workerinfersafeconsumerhandlers)&lt;`TContract`&gt; | Message handlers for each consumer defined in the contract. Use defineHandlers to create type-safe handlers. | [worker-nestjs/src/worker.service.ts:33](https://github.com/btravers/amqp-contract/blob/d132d062ebeaa9cc84db5471805355a29e3a50dc/packages/worker-nestjs/src/worker.service.ts#L33) |
325
+ | <a id="urls"></a> `urls` | `ConnectionUrl`[] | AMQP broker URL(s). Multiple URLs provide failover support | [worker-nestjs/src/worker.service.ts:35](https://github.com/btravers/amqp-contract/blob/d132d062ebeaa9cc84db5471805355a29e3a50dc/packages/worker-nestjs/src/worker.service.ts#L35) |
326
326
 
327
327
  ***
328
328
 
@@ -332,13 +332,13 @@ const options: AmqpWorkerModuleOptions<typeof contract> = {
332
332
  type WorkerInferSafeConsumerHandlers<TContract> = WorkerInferConsumerHandlers<TContract>;
333
333
  ```
334
334
 
335
- Defined in: worker/dist/index.d.mts:288
335
+ Defined in: worker/dist/index.d.mts:296
336
336
 
337
337
  #### Type Parameters
338
338
 
339
339
  | Type Parameter |
340
340
  | ------ |
341
- | `TContract` *extends* `ContractDefinition` |
341
+ | `TContract` *extends* `ContractDefinitionInput` |
342
342
 
343
343
  #### Deprecated
344
344
 
@@ -352,7 +352,7 @@ Use `WorkerInferConsumerHandlers` instead. Will be removed in next major version
352
352
  const MODULE_OPTIONS_TOKEN: typeof MODULE_OPTIONS_TOKEN;
353
353
  ```
354
354
 
355
- Defined in: [worker-nestjs/src/worker.module-definition.ts:5](https://github.com/btravers/amqp-contract/blob/69a6467d137997be809af2ea5c4332c378579b49/packages/worker-nestjs/src/worker.module-definition.ts#L5)
355
+ Defined in: [worker-nestjs/src/worker.module-definition.ts:5](https://github.com/btravers/amqp-contract/blob/d132d062ebeaa9cc84db5471805355a29e3a50dc/packages/worker-nestjs/src/worker.module-definition.ts#L5)
356
356
 
357
357
  Injection token for AMQP worker module options
358
358
  Used by NestJS DI system to inject configuration into AmqpWorkerService
@@ -370,7 +370,7 @@ function defineHandler<TContract, TName>(
370
370
  handler): WorkerInferConsumerHandlerEntry<TContract, TName>;
371
371
  ```
372
372
 
373
- Defined in: worker/dist/index.d.mts:602
373
+ Defined in: worker/dist/index.d.mts:610
374
374
 
375
375
  Define a type-safe handler for a specific consumer in a contract.
376
376
 
@@ -385,7 +385,7 @@ Supports two patterns:
385
385
 
386
386
  | Type Parameter | Description |
387
387
  | ------ | ------ |
388
- | `TContract` *extends* `ContractDefinition` | The contract definition type |
388
+ | `TContract` *extends* `ContractDefinitionInput` | The contract definition type |
389
389
  | `TName` *extends* `string` \| `number` \| `symbol` | The consumer name from the contract |
390
390
 
391
391
  ##### Parameters
@@ -443,7 +443,7 @@ function defineHandler<TContract, TName>(
443
443
  options): WorkerInferConsumerHandlerEntry<TContract, TName>;
444
444
  ```
445
445
 
446
- Defined in: worker/dist/index.d.mts:603
446
+ Defined in: worker/dist/index.d.mts:611
447
447
 
448
448
  Define a type-safe handler for a specific consumer in a contract.
449
449
 
@@ -458,7 +458,7 @@ Supports two patterns:
458
458
 
459
459
  | Type Parameter | Description |
460
460
  | ------ | ------ |
461
- | `TContract` *extends* `ContractDefinition` | The contract definition type |
461
+ | `TContract` *extends* `ContractDefinitionInput` | The contract definition type |
462
462
  | `TName` *extends* `string` \| `number` \| `symbol` | The consumer name from the contract |
463
463
 
464
464
  ##### Parameters
@@ -516,7 +516,7 @@ const validateOrderHandler = defineHandler(
516
516
  function defineHandlers<TContract>(contract, handlers): WorkerInferConsumerHandlers<TContract>;
517
517
  ```
518
518
 
519
- Defined in: worker/dist/index.d.mts:635
519
+ Defined in: worker/dist/index.d.mts:643
520
520
 
521
521
  Define multiple type-safe handlers for consumers in a contract.
522
522
 
@@ -527,7 +527,7 @@ providing explicit error handling and better control over retry behavior.
527
527
 
528
528
  | Type Parameter | Description |
529
529
  | ------ | ------ |
530
- | `TContract` *extends* `ContractDefinition` | The contract definition type |
530
+ | `TContract` *extends* `ContractDefinitionInput` | The contract definition type |
531
531
 
532
532
  #### Parameters
533
533
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amqp-contract/worker-nestjs",
3
- "version": "0.13.0",
3
+ "version": "0.14.0",
4
4
  "description": "NestJS integration for @amqp-contract/worker",
5
5
  "keywords": [
6
6
  "amqp",
@@ -52,8 +52,8 @@
52
52
  "docs"
53
53
  ],
54
54
  "dependencies": {
55
- "@amqp-contract/contract": "0.13.0",
56
- "@amqp-contract/worker": "0.13.0"
55
+ "@amqp-contract/contract": "0.14.0",
56
+ "@amqp-contract/worker": "0.14.0"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@nestjs/common": "11.1.12",
@@ -72,7 +72,7 @@
72
72
  "typescript": "5.9.3",
73
73
  "vitest": "4.0.17",
74
74
  "zod": "4.3.5",
75
- "@amqp-contract/testing": "0.13.0",
75
+ "@amqp-contract/testing": "0.14.0",
76
76
  "@amqp-contract/tsconfig": "0.1.0",
77
77
  "@amqp-contract/typedoc": "0.1.0"
78
78
  },