@amqp-contract/worker-nestjs 0.3.1 → 0.3.3

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.cjs CHANGED
@@ -92,4 +92,16 @@ Object.defineProperty(exports, 'AmqpWorkerService', {
92
92
  return AmqpWorkerService;
93
93
  }
94
94
  });
95
- exports.MODULE_OPTIONS_TOKEN = MODULE_OPTIONS_TOKEN;
95
+ exports.MODULE_OPTIONS_TOKEN = MODULE_OPTIONS_TOKEN;
96
+ Object.defineProperty(exports, 'defineHandler', {
97
+ enumerable: true,
98
+ get: function () {
99
+ return _amqp_contract_worker.defineHandler;
100
+ }
101
+ });
102
+ Object.defineProperty(exports, 'defineHandlers', {
103
+ enumerable: true,
104
+ get: function () {
105
+ return _amqp_contract_worker.defineHandlers;
106
+ }
107
+ });
package/dist/index.d.cts CHANGED
@@ -2,7 +2,7 @@ import * as _nestjs_common0 from "@nestjs/common";
2
2
  import { OnModuleDestroy, OnModuleInit } from "@nestjs/common";
3
3
  import { ContractDefinition } from "@amqp-contract/contract";
4
4
  import { AmqpConnectionManagerOptions, ConnectionUrl } from "amqp-connection-manager";
5
- import { WorkerInferConsumerHandler, WorkerInferConsumerHandlers, WorkerInferConsumerHandlers as WorkerInferConsumerHandlers$1, WorkerInferConsumerInput } from "@amqp-contract/worker";
5
+ import { WorkerInferConsumerHandler, WorkerInferConsumerHandlers, WorkerInferConsumerHandlers as WorkerInferConsumerHandlers$1, WorkerInferConsumerInput, defineHandler, defineHandlers } from "@amqp-contract/worker";
6
6
 
7
7
  //#region src/worker.service.d.ts
8
8
 
@@ -111,5 +111,5 @@ declare const ConfigurableModuleClass: _nestjs_common0.ConfigurableModuleCls<Amq
111
111
  */
112
112
  declare class AmqpWorkerModule extends ConfigurableModuleClass {}
113
113
  //#endregion
114
- export { AmqpWorkerModule, type AmqpWorkerModuleOptions, AmqpWorkerService, MODULE_OPTIONS_TOKEN, type WorkerInferConsumerHandler, type WorkerInferConsumerHandlers, type WorkerInferConsumerInput };
114
+ export { AmqpWorkerModule, type AmqpWorkerModuleOptions, AmqpWorkerService, MODULE_OPTIONS_TOKEN, type WorkerInferConsumerHandler, type WorkerInferConsumerHandlers, type WorkerInferConsumerInput, defineHandler, defineHandlers };
115
115
  //# sourceMappingURL=index.d.cts.map
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as _nestjs_common0 from "@nestjs/common";
2
2
  import { OnModuleDestroy, OnModuleInit } from "@nestjs/common";
3
- import { WorkerInferConsumerHandler, WorkerInferConsumerHandlers, WorkerInferConsumerHandlers as WorkerInferConsumerHandlers$1, WorkerInferConsumerInput } from "@amqp-contract/worker";
3
+ import { WorkerInferConsumerHandler, WorkerInferConsumerHandlers, WorkerInferConsumerHandlers as WorkerInferConsumerHandlers$1, WorkerInferConsumerInput, defineHandler, defineHandlers } from "@amqp-contract/worker";
4
4
  import { ContractDefinition } from "@amqp-contract/contract";
5
5
  import { AmqpConnectionManagerOptions, ConnectionUrl } from "amqp-connection-manager";
6
6
 
@@ -111,5 +111,5 @@ declare const ConfigurableModuleClass: _nestjs_common0.ConfigurableModuleCls<Amq
111
111
  */
112
112
  declare class AmqpWorkerModule extends ConfigurableModuleClass {}
113
113
  //#endregion
114
- export { AmqpWorkerModule, type AmqpWorkerModuleOptions, AmqpWorkerService, MODULE_OPTIONS_TOKEN, type WorkerInferConsumerHandler, type WorkerInferConsumerHandlers, type WorkerInferConsumerInput };
114
+ export { AmqpWorkerModule, type AmqpWorkerModuleOptions, AmqpWorkerService, MODULE_OPTIONS_TOKEN, type WorkerInferConsumerHandler, type WorkerInferConsumerHandlers, type WorkerInferConsumerInput, defineHandler, defineHandlers };
115
115
  //# sourceMappingURL=index.d.mts.map
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { ConfigurableModuleBuilder, Inject, Injectable, Module } from "@nestjs/common";
2
- import { TypedAmqpWorker } from "@amqp-contract/worker";
2
+ import { TypedAmqpWorker, defineHandler, defineHandlers } from "@amqp-contract/worker";
3
3
 
4
4
  //#region src/worker.module-definition.ts
5
5
  /**
@@ -80,5 +80,5 @@ AmqpWorkerModule = __decorate([Module({
80
80
  })], AmqpWorkerModule);
81
81
 
82
82
  //#endregion
83
- export { AmqpWorkerModule, AmqpWorkerService, MODULE_OPTIONS_TOKEN };
83
+ export { AmqpWorkerModule, AmqpWorkerService, MODULE_OPTIONS_TOKEN, defineHandler, defineHandlers };
84
84
  //# sourceMappingURL=index.mjs.map
package/docs/index.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  ### AmqpWorkerModule
10
10
 
11
- Defined in: [packages/worker-nestjs/src/worker.module.ts:14](https://github.com/btravers/amqp-contract/blob/9351cdf40185977e98479881b5fc5e55897fdf7b/packages/worker-nestjs/src/worker.module.ts#L14)
11
+ Defined in: [packages/worker-nestjs/src/worker.module.ts:14](https://github.com/btravers/amqp-contract/blob/fb7fe976925e332da34b847357ebcbeefd37355d/packages/worker-nestjs/src/worker.module.ts#L14)
12
12
 
13
13
  NestJS module for AMQP worker integration
14
14
  This module provides type-safe AMQP worker functionality using @amqp-contract/worker
@@ -55,7 +55,7 @@ ConfigurableModuleClass.constructor
55
55
 
56
56
  ### AmqpWorkerService
57
57
 
58
- Defined in: [packages/worker-nestjs/src/worker.service.ts:74](https://github.com/btravers/amqp-contract/blob/9351cdf40185977e98479881b5fc5e55897fdf7b/packages/worker-nestjs/src/worker.service.ts#L74)
58
+ Defined in: [packages/worker-nestjs/src/worker.service.ts:74](https://github.com/btravers/amqp-contract/blob/fb7fe976925e332da34b847357ebcbeefd37355d/packages/worker-nestjs/src/worker.service.ts#L74)
59
59
 
60
60
  Type-safe AMQP worker service for NestJS applications.
61
61
 
@@ -108,7 +108,7 @@ export class AppModule {}
108
108
  new AmqpWorkerService<TContract>(options): AmqpWorkerService<TContract>;
109
109
  ```
110
110
 
111
- Defined in: [packages/worker-nestjs/src/worker.service.ts:79](https://github.com/btravers/amqp-contract/blob/9351cdf40185977e98479881b5fc5e55897fdf7b/packages/worker-nestjs/src/worker.service.ts#L79)
111
+ Defined in: [packages/worker-nestjs/src/worker.service.ts:79](https://github.com/btravers/amqp-contract/blob/fb7fe976925e332da34b847357ebcbeefd37355d/packages/worker-nestjs/src/worker.service.ts#L79)
112
112
 
113
113
  ###### Parameters
114
114
 
@@ -128,7 +128,7 @@ Defined in: [packages/worker-nestjs/src/worker.service.ts:79](https://github.com
128
128
  onModuleDestroy(): Promise<void>;
129
129
  ```
130
130
 
131
- Defined in: [packages/worker-nestjs/src/worker.service.ts:105](https://github.com/btravers/amqp-contract/blob/9351cdf40185977e98479881b5fc5e55897fdf7b/packages/worker-nestjs/src/worker.service.ts#L105)
131
+ Defined in: [packages/worker-nestjs/src/worker.service.ts:105](https://github.com/btravers/amqp-contract/blob/fb7fe976925e332da34b847357ebcbeefd37355d/packages/worker-nestjs/src/worker.service.ts#L105)
132
132
 
133
133
  Close the AMQP worker when the NestJS module is destroyed.
134
134
 
@@ -152,7 +152,7 @@ OnModuleDestroy.onModuleDestroy
152
152
  onModuleInit(): Promise<void>;
153
153
  ```
154
154
 
155
- Defined in: [packages/worker-nestjs/src/worker.service.ts:94](https://github.com/btravers/amqp-contract/blob/9351cdf40185977e98479881b5fc5e55897fdf7b/packages/worker-nestjs/src/worker.service.ts#L94)
155
+ Defined in: [packages/worker-nestjs/src/worker.service.ts:94](https://github.com/btravers/amqp-contract/blob/fb7fe976925e332da34b847357ebcbeefd37355d/packages/worker-nestjs/src/worker.service.ts#L94)
156
156
 
157
157
  Initialize the AMQP worker when the NestJS module starts.
158
158
 
@@ -179,7 +179,7 @@ OnModuleInit.onModuleInit
179
179
 
180
180
  ### AmqpWorkerModuleOptions
181
181
 
182
- Defined in: [packages/worker-nestjs/src/worker.service.ts:28](https://github.com/btravers/amqp-contract/blob/9351cdf40185977e98479881b5fc5e55897fdf7b/packages/worker-nestjs/src/worker.service.ts#L28)
182
+ Defined in: [packages/worker-nestjs/src/worker.service.ts:28](https://github.com/btravers/amqp-contract/blob/fb7fe976925e332da34b847357ebcbeefd37355d/packages/worker-nestjs/src/worker.service.ts#L28)
183
183
 
184
184
  Configuration options for the AMQP worker NestJS module.
185
185
 
@@ -210,10 +210,10 @@ const options: AmqpWorkerModuleOptions<typeof contract> = {
210
210
 
211
211
  | Property | Type | Description | Defined in |
212
212
  | ------ | ------ | ------ | ------ |
213
- | <a id="connectionoptions"></a> `connectionOptions?` | `AmqpConnectionManagerOptions` | Optional connection configuration (heartbeat, reconnect settings, etc.) | [packages/worker-nestjs/src/worker.service.ts:36](https://github.com/btravers/amqp-contract/blob/9351cdf40185977e98479881b5fc5e55897fdf7b/packages/worker-nestjs/src/worker.service.ts#L36) |
214
- | <a id="contract"></a> `contract` | `TContract` | The AMQP contract definition specifying consumers and their message schemas | [packages/worker-nestjs/src/worker.service.ts:30](https://github.com/btravers/amqp-contract/blob/9351cdf40185977e98479881b5fc5e55897fdf7b/packages/worker-nestjs/src/worker.service.ts#L30) |
215
- | <a id="handlers"></a> `handlers` | [`WorkerInferConsumerHandlers`](#workerinferconsumerhandlers)\<`TContract`\> | Message handlers for each consumer defined in the contract | [packages/worker-nestjs/src/worker.service.ts:32](https://github.com/btravers/amqp-contract/blob/9351cdf40185977e98479881b5fc5e55897fdf7b/packages/worker-nestjs/src/worker.service.ts#L32) |
216
- | <a id="urls"></a> `urls` | `ConnectionUrl`[] | AMQP broker URL(s). Multiple URLs provide failover support | [packages/worker-nestjs/src/worker.service.ts:34](https://github.com/btravers/amqp-contract/blob/9351cdf40185977e98479881b5fc5e55897fdf7b/packages/worker-nestjs/src/worker.service.ts#L34) |
213
+ | <a id="connectionoptions"></a> `connectionOptions?` | `AmqpConnectionManagerOptions` | Optional connection configuration (heartbeat, reconnect settings, etc.) | [packages/worker-nestjs/src/worker.service.ts:36](https://github.com/btravers/amqp-contract/blob/fb7fe976925e332da34b847357ebcbeefd37355d/packages/worker-nestjs/src/worker.service.ts#L36) |
214
+ | <a id="contract"></a> `contract` | `TContract` | The AMQP contract definition specifying consumers and their message schemas | [packages/worker-nestjs/src/worker.service.ts:30](https://github.com/btravers/amqp-contract/blob/fb7fe976925e332da34b847357ebcbeefd37355d/packages/worker-nestjs/src/worker.service.ts#L30) |
215
+ | <a id="handlers"></a> `handlers` | [`WorkerInferConsumerHandlers`](#workerinferconsumerhandlers)\<`TContract`\> | Message handlers for each consumer defined in the contract | [packages/worker-nestjs/src/worker.service.ts:32](https://github.com/btravers/amqp-contract/blob/fb7fe976925e332da34b847357ebcbeefd37355d/packages/worker-nestjs/src/worker.service.ts#L32) |
216
+ | <a id="urls"></a> `urls` | `ConnectionUrl`[] | AMQP broker URL(s). Multiple URLs provide failover support | [packages/worker-nestjs/src/worker.service.ts:34](https://github.com/btravers/amqp-contract/blob/fb7fe976925e332da34b847357ebcbeefd37355d/packages/worker-nestjs/src/worker.service.ts#L34) |
217
217
 
218
218
  ## Type Aliases
219
219
 
@@ -223,7 +223,7 @@ const options: AmqpWorkerModuleOptions<typeof contract> = {
223
223
  type WorkerInferConsumerHandler<TContract, TName> = (message) => Promise<void>;
224
224
  ```
225
225
 
226
- Defined in: packages/worker/dist/index.d.mts:54
226
+ Defined in: packages/worker/dist/index.d.mts:55
227
227
 
228
228
  Infer consumer handler type for a specific consumer
229
229
 
@@ -252,7 +252,7 @@ Infer consumer handler type for a specific consumer
252
252
  type WorkerInferConsumerHandlers<TContract> = { [K in InferConsumerNames<TContract>]: WorkerInferConsumerHandler<TContract, K> };
253
253
  ```
254
254
 
255
- Defined in: packages/worker/dist/index.d.mts:58
255
+ Defined in: packages/worker/dist/index.d.mts:59
256
256
 
257
257
  Infer all consumer handlers for a contract
258
258
 
@@ -270,7 +270,7 @@ Infer all consumer handlers for a contract
270
270
  type WorkerInferConsumerInput<TContract, TName> = ConsumerInferInput<InferConsumer<TContract, TName>>;
271
271
  ```
272
272
 
273
- Defined in: packages/worker/dist/index.d.mts:50
273
+ Defined in: packages/worker/dist/index.d.mts:51
274
274
 
275
275
  Worker perspective types - for consuming messages
276
276
 
@@ -289,4 +289,178 @@ Worker perspective types - for consuming messages
289
289
  MODULE_OPTIONS_TOKEN: string | symbol;
290
290
  ```
291
291
 
292
- Defined in: [packages/worker-nestjs/src/worker.module-definition.ts:9](https://github.com/btravers/amqp-contract/blob/9351cdf40185977e98479881b5fc5e55897fdf7b/packages/worker-nestjs/src/worker.module-definition.ts#L9)
292
+ Defined in: [packages/worker-nestjs/src/worker.module-definition.ts:9](https://github.com/btravers/amqp-contract/blob/fb7fe976925e332da34b847357ebcbeefd37355d/packages/worker-nestjs/src/worker.module-definition.ts#L9)
293
+
294
+ ## Functions
295
+
296
+ ### defineHandler()
297
+
298
+ ```ts
299
+ function defineHandler<TContract, TName>(
300
+ contract,
301
+ consumerName,
302
+ handler): WorkerInferConsumerHandler<TContract, TName>;
303
+ ```
304
+
305
+ Defined in: packages/worker/dist/index.d.mts:273
306
+
307
+ Define a type-safe handler for a specific consumer in a contract.
308
+
309
+ This utility allows you to define handlers outside of the worker creation,
310
+ providing better code organization and reusability.
311
+
312
+ #### Type Parameters
313
+
314
+ | Type Parameter | Description |
315
+ | ------ | ------ |
316
+ | `TContract` *extends* `ContractDefinition` | The contract definition type |
317
+ | `TName` *extends* `string` \| `number` \| `symbol` | The consumer name from the contract |
318
+
319
+ #### Parameters
320
+
321
+ | Parameter | Type | Description |
322
+ | ------ | ------ | ------ |
323
+ | `contract` | `TContract` | The contract definition containing the consumer |
324
+ | `consumerName` | `TName` | The name of the consumer from the contract |
325
+ | `handler` | [`WorkerInferConsumerHandler`](#workerinferconsumerhandler)\<`TContract`, `TName`\> | The async handler function that processes messages |
326
+
327
+ #### Returns
328
+
329
+ [`WorkerInferConsumerHandler`](#workerinferconsumerhandler)\<`TContract`, `TName`\>
330
+
331
+ A type-safe handler that can be used with TypedAmqpWorker
332
+
333
+ #### Examples
334
+
335
+ ```typescript
336
+ import { defineHandler } from '@amqp-contract/worker';
337
+ import { orderContract } from './contract';
338
+
339
+ // Define handler outside of worker creation
340
+ const processOrderHandler = defineHandler(
341
+ orderContract,
342
+ 'processOrder',
343
+ async (message) => {
344
+ // message is fully typed based on the contract
345
+ console.log('Processing order:', message.orderId);
346
+ await processPayment(message);
347
+ }
348
+ );
349
+
350
+ // Use the handler in worker
351
+ const worker = await TypedAmqpWorker.create({
352
+ contract: orderContract,
353
+ handlers: {
354
+ processOrder: processOrderHandler,
355
+ },
356
+ connection: 'amqp://localhost',
357
+ });
358
+ ```
359
+
360
+ ```typescript
361
+ // Define multiple handlers
362
+ const processOrderHandler = defineHandler(
363
+ orderContract,
364
+ 'processOrder',
365
+ async (message) => {
366
+ await processOrder(message);
367
+ }
368
+ );
369
+
370
+ const notifyOrderHandler = defineHandler(
371
+ orderContract,
372
+ 'notifyOrder',
373
+ async (message) => {
374
+ await sendNotification(message);
375
+ }
376
+ );
377
+
378
+ // Compose handlers
379
+ const worker = await TypedAmqpWorker.create({
380
+ contract: orderContract,
381
+ handlers: {
382
+ processOrder: processOrderHandler,
383
+ notifyOrder: notifyOrderHandler,
384
+ },
385
+ connection: 'amqp://localhost',
386
+ });
387
+ ```
388
+
389
+ ***
390
+
391
+ ### defineHandlers()
392
+
393
+ ```ts
394
+ function defineHandlers<TContract>(contract, handlers): WorkerInferConsumerHandlers<TContract>;
395
+ ```
396
+
397
+ Defined in: packages/worker/dist/index.d.mts:330
398
+
399
+ Define multiple type-safe handlers for consumers in a contract.
400
+
401
+ This utility allows you to define all handlers at once outside of the worker creation,
402
+ ensuring type safety and providing better code organization.
403
+
404
+ #### Type Parameters
405
+
406
+ | Type Parameter | Description |
407
+ | ------ | ------ |
408
+ | `TContract` *extends* `ContractDefinition` | The contract definition type |
409
+
410
+ #### Parameters
411
+
412
+ | Parameter | Type | Description |
413
+ | ------ | ------ | ------ |
414
+ | `contract` | `TContract` | The contract definition containing the consumers |
415
+ | `handlers` | [`WorkerInferConsumerHandlers`](#workerinferconsumerhandlers)\<`TContract`\> | An object with async handler functions for each consumer |
416
+
417
+ #### Returns
418
+
419
+ [`WorkerInferConsumerHandlers`](#workerinferconsumerhandlers)\<`TContract`\>
420
+
421
+ A type-safe handlers object that can be used with TypedAmqpWorker
422
+
423
+ #### Examples
424
+
425
+ ```typescript
426
+ import { defineHandlers } from '@amqp-contract/worker';
427
+ import { orderContract } from './contract';
428
+
429
+ // Define all handlers at once
430
+ const handlers = defineHandlers(orderContract, {
431
+ processOrder: async (message) => {
432
+ // message is fully typed based on the contract
433
+ console.log('Processing order:', message.orderId);
434
+ await processPayment(message);
435
+ },
436
+ notifyOrder: async (message) => {
437
+ await sendNotification(message);
438
+ },
439
+ shipOrder: async (message) => {
440
+ await prepareShipment(message);
441
+ },
442
+ });
443
+
444
+ // Use the handlers in worker
445
+ const worker = await TypedAmqpWorker.create({
446
+ contract: orderContract,
447
+ handlers,
448
+ connection: 'amqp://localhost',
449
+ });
450
+ ```
451
+
452
+ ```typescript
453
+ // Separate handler definitions for better organization
454
+ async function handleProcessOrder(message: WorkerInferConsumerInput<typeof orderContract, 'processOrder'>) {
455
+ await processOrder(message);
456
+ }
457
+
458
+ async function handleNotifyOrder(message: WorkerInferConsumerInput<typeof orderContract, 'notifyOrder'>) {
459
+ await sendNotification(message);
460
+ }
461
+
462
+ const handlers = defineHandlers(orderContract, {
463
+ processOrder: handleProcessOrder,
464
+ notifyOrder: handleNotifyOrder,
465
+ });
466
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amqp-contract/worker-nestjs",
3
- "version": "0.3.1",
3
+ "version": "0.3.3",
4
4
  "description": "NestJS integration for @amqp-contract/worker",
5
5
  "keywords": [
6
6
  "amqp",
@@ -43,8 +43,8 @@
43
43
  "docs"
44
44
  ],
45
45
  "dependencies": {
46
- "@amqp-contract/contract": "0.3.1",
47
- "@amqp-contract/worker": "0.3.1"
46
+ "@amqp-contract/contract": "0.3.3",
47
+ "@amqp-contract/worker": "0.3.3"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@nestjs/common": "11.1.10",