@amqp-contract/client-nestjs 0.6.0 → 0.8.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/README.md +6 -8
- package/dist/index.cjs +18 -14
- package/dist/index.d.cts +14 -13
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +14 -13
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +18 -14
- package/dist/index.mjs.map +1 -1
- package/docs/index.md +28 -27
- package/package.json +22 -14
package/README.md
CHANGED
|
@@ -19,15 +19,15 @@ pnpm add @amqp-contract/client-nestjs @amqp-contract/client @amqp-contract/contr
|
|
|
19
19
|
## Usage
|
|
20
20
|
|
|
21
21
|
```typescript
|
|
22
|
-
import { Injectable, Module } from
|
|
23
|
-
import { AmqpClientModule, AmqpClientService } from
|
|
24
|
-
import { contract } from
|
|
22
|
+
import { Injectable, Module } from "@nestjs/common";
|
|
23
|
+
import { AmqpClientModule, AmqpClientService } from "@amqp-contract/client-nestjs";
|
|
24
|
+
import { contract } from "./contract";
|
|
25
25
|
|
|
26
26
|
@Module({
|
|
27
27
|
imports: [
|
|
28
28
|
AmqpClientModule.forRoot({
|
|
29
29
|
contract,
|
|
30
|
-
|
|
30
|
+
urls: ["amqp://localhost"],
|
|
31
31
|
}),
|
|
32
32
|
],
|
|
33
33
|
})
|
|
@@ -35,12 +35,10 @@ export class AppModule {}
|
|
|
35
35
|
|
|
36
36
|
@Injectable()
|
|
37
37
|
export class OrderService {
|
|
38
|
-
constructor(
|
|
39
|
-
private readonly client: AmqpClientService<typeof contract>,
|
|
40
|
-
) {}
|
|
38
|
+
constructor(private readonly client: AmqpClientService<typeof contract>) {}
|
|
41
39
|
|
|
42
40
|
async createOrder(orderId: string, amount: number) {
|
|
43
|
-
await this.client.publish(
|
|
41
|
+
await this.client.publish("orderCreated", { orderId, amount }).resultToPromise();
|
|
44
42
|
}
|
|
45
43
|
}
|
|
46
44
|
```
|
package/dist/index.cjs
CHANGED
|
@@ -755,13 +755,13 @@ var import_Boxed = require_Boxed();
|
|
|
755
755
|
const MODULE_OPTIONS_TOKEN = Symbol("AMQP_CLIENT_MODULE_OPTIONS");
|
|
756
756
|
|
|
757
757
|
//#endregion
|
|
758
|
-
//#region \0@oxc-project+runtime@0.
|
|
758
|
+
//#region \0@oxc-project+runtime@0.107.0/helpers/decorateMetadata.js
|
|
759
759
|
function __decorateMetadata(k, v) {
|
|
760
760
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
761
761
|
}
|
|
762
762
|
|
|
763
763
|
//#endregion
|
|
764
|
-
//#region \0@oxc-project+runtime@0.
|
|
764
|
+
//#region \0@oxc-project+runtime@0.107.0/helpers/decorateParam.js
|
|
765
765
|
function __decorateParam(paramIndex, decorator) {
|
|
766
766
|
return function(target, key) {
|
|
767
767
|
decorator(target, key, paramIndex);
|
|
@@ -769,7 +769,7 @@ function __decorateParam(paramIndex, decorator) {
|
|
|
769
769
|
}
|
|
770
770
|
|
|
771
771
|
//#endregion
|
|
772
|
-
//#region \0@oxc-project+runtime@0.
|
|
772
|
+
//#region \0@oxc-project+runtime@0.107.0/helpers/decorate.js
|
|
773
773
|
function __decorate(decorators, target, key, desc) {
|
|
774
774
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
775
775
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -792,9 +792,7 @@ let AmqpClientService = class AmqpClientService$1 {
|
|
|
792
792
|
* in the background with automatic reconnection handling.
|
|
793
793
|
*/
|
|
794
794
|
async onModuleInit() {
|
|
795
|
-
|
|
796
|
-
if (clientResult.isError()) throw new Error(`Failed to create AMQP client: ${clientResult.error.message}`);
|
|
797
|
-
this.client = clientResult.get();
|
|
795
|
+
this.client = await _amqp_contract_client.TypedAmqpClient.create(this.options).resultToPromise();
|
|
798
796
|
}
|
|
799
797
|
/**
|
|
800
798
|
* Close the AMQP client when the NestJS module is destroyed.
|
|
@@ -817,19 +815,25 @@ let AmqpClientService = class AmqpClientService$1 {
|
|
|
817
815
|
*
|
|
818
816
|
* @param publisherName - The name of the publisher from the contract
|
|
819
817
|
* @param message - The message payload (type-checked against the contract)
|
|
820
|
-
* @param options - Optional AMQP publish options
|
|
818
|
+
* @param options - Optional AMQP publish options including compression support
|
|
821
819
|
* @returns A Future that resolves to a Result indicating success or failure
|
|
822
820
|
*
|
|
823
|
-
* @example
|
|
821
|
+
* @example Basic publishing
|
|
824
822
|
* ```typescript
|
|
825
|
-
*
|
|
823
|
+
* await this.amqpClient.publish('orderCreated', {
|
|
826
824
|
* orderId: '123',
|
|
827
825
|
* amount: 99.99
|
|
828
826
|
* }).resultToPromise();
|
|
827
|
+
* ```
|
|
829
828
|
*
|
|
830
|
-
*
|
|
831
|
-
*
|
|
832
|
-
*
|
|
829
|
+
* @example Publishing with compression
|
|
830
|
+
* ```typescript
|
|
831
|
+
* await this.amqpClient.publish('orderCreated', {
|
|
832
|
+
* orderId: '123',
|
|
833
|
+
* amount: 99.99
|
|
834
|
+
* }, {
|
|
835
|
+
* compression: 'gzip'
|
|
836
|
+
* }).resultToPromise();
|
|
833
837
|
* ```
|
|
834
838
|
*/
|
|
835
839
|
publish(publisherName, message, options) {
|
|
@@ -873,11 +877,11 @@ let AmqpClientModule = _AmqpClientModule = class AmqpClientModule$1 {
|
|
|
873
877
|
const providers = [{
|
|
874
878
|
provide: MODULE_OPTIONS_TOKEN,
|
|
875
879
|
useFactory: options.useFactory,
|
|
876
|
-
inject: options.inject
|
|
880
|
+
inject: options.inject ?? []
|
|
877
881
|
}, AmqpClientService];
|
|
878
882
|
return {
|
|
879
883
|
module: _AmqpClientModule,
|
|
880
|
-
imports: options.imports
|
|
884
|
+
imports: options.imports ?? [],
|
|
881
885
|
providers,
|
|
882
886
|
exports: [AmqpClientService]
|
|
883
887
|
};
|
package/dist/index.d.cts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { AmqpConnectionManagerOptions, ConnectionUrl } from "amqp-connection-manager";
|
|
2
|
-
import { ClientInferPublisherInput, ClientInferPublisherInput as ClientInferPublisherInput$1, MessageValidationError, MessageValidationError as MessageValidationError$1, TechnicalError, TechnicalError as TechnicalError$1 } from "@amqp-contract/client";
|
|
2
|
+
import { ClientInferPublisherInput, ClientInferPublisherInput as ClientInferPublisherInput$1, MessageValidationError, MessageValidationError as MessageValidationError$1, PublishOptions, TechnicalError, TechnicalError as TechnicalError$1 } from "@amqp-contract/client";
|
|
3
3
|
import { ContractDefinition, InferPublisherNames } from "@amqp-contract/contract";
|
|
4
4
|
import { Future, Result } from "@swan-io/boxed";
|
|
5
5
|
import { DynamicModule, ModuleMetadata, OnModuleDestroy, OnModuleInit, Type } from "@nestjs/common";
|
|
6
|
-
import { Options } from "amqplib";
|
|
7
6
|
|
|
8
7
|
//#region src/client.service.d.ts
|
|
9
8
|
|
|
@@ -69,10 +68,6 @@ type AmqpClientModuleOptions<TContract extends ContractDefinition> = {
|
|
|
69
68
|
* orderId: order.id,
|
|
70
69
|
* amount: order.total
|
|
71
70
|
* }).resultToPromise();
|
|
72
|
-
*
|
|
73
|
-
* if (result.isError()) {
|
|
74
|
-
* throw new Error('Failed to publish order event');
|
|
75
|
-
* }
|
|
76
71
|
* }
|
|
77
72
|
* }
|
|
78
73
|
* ```
|
|
@@ -105,22 +100,28 @@ declare class AmqpClientService<TContract extends ContractDefinition> implements
|
|
|
105
100
|
*
|
|
106
101
|
* @param publisherName - The name of the publisher from the contract
|
|
107
102
|
* @param message - The message payload (type-checked against the contract)
|
|
108
|
-
* @param options - Optional AMQP publish options
|
|
103
|
+
* @param options - Optional AMQP publish options including compression support
|
|
109
104
|
* @returns A Future that resolves to a Result indicating success or failure
|
|
110
105
|
*
|
|
111
|
-
* @example
|
|
106
|
+
* @example Basic publishing
|
|
112
107
|
* ```typescript
|
|
113
|
-
*
|
|
108
|
+
* await this.amqpClient.publish('orderCreated', {
|
|
114
109
|
* orderId: '123',
|
|
115
110
|
* amount: 99.99
|
|
116
111
|
* }).resultToPromise();
|
|
112
|
+
* ```
|
|
117
113
|
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
114
|
+
* @example Publishing with compression
|
|
115
|
+
* ```typescript
|
|
116
|
+
* await this.amqpClient.publish('orderCreated', {
|
|
117
|
+
* orderId: '123',
|
|
118
|
+
* amount: 99.99
|
|
119
|
+
* }, {
|
|
120
|
+
* compression: 'gzip'
|
|
121
|
+
* }).resultToPromise();
|
|
121
122
|
* ```
|
|
122
123
|
*/
|
|
123
|
-
publish<TName extends InferPublisherNames<TContract>>(publisherName: TName, message: ClientInferPublisherInput$1<TContract, TName>, options?:
|
|
124
|
+
publish<TName extends InferPublisherNames<TContract>>(publisherName: TName, message: ClientInferPublisherInput$1<TContract, TName>, options?: PublishOptions): Future<Result<void, TechnicalError$1 | MessageValidationError$1>>;
|
|
124
125
|
}
|
|
125
126
|
//#endregion
|
|
126
127
|
//#region src/client.module.d.ts
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/client.service.ts","../src/client.module.ts","../src/client.module-definition.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/client.service.ts","../src/client.module.ts","../src/client.module-definition.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;AA6BA;;;;;;AAmDA;;;;;;;;AAkEmB,KArHP,uBAqHO,CAAA,kBArHmC,kBAqHnC,CAAA,GAAA;EACoB;EAAW,QAAA,EApHtC,SAoHsC;EAArC;EACC,IAAA,EAnHN,aAmHM,EAAA;EACW;EAAiB,iBAAA,CAAA,EAlHpB,4BAkHoB,GAAA,SAAA;CAA9B;;;;;;;;AC7IsD;;;;;;;;AAalE;;;;;;;AAsEA;;;;;;;;;;;;;ACvFA;;;;;;;cF6Ea,oCAAoC,+BACpC,cAAc;;;uBAMG,wBAAwB;;;;;;;;kBAU9B;;;;;;;;qBAWG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAoCH,oBAAoB,2BACzB,gBACN,4BAA0B,WAAW,kBACpC,iBACT,OAAO,aAAa,mBAAiB;;;;;;;KCvIrC,iDAAiD,sBAClD,wBAAwB,aACxB,QAAQ,wBAAwB;ADapC;;;AAIQ,KCZI,4BDYJ,CAAA,kBCZmD,kBDYnD,CAAA,GAAA;EAEc;;AA6CtB;;EAQsD,UAAA,EAAA,CAAA,GAAA,IAAA,EAAA,GAAA,EAAA,EAAA,GC7DpB,8BD6DoB,CC7DW,SD6DX,CAAA;EAAxB;;;;EAyDN,MAAA,CAAA,EAAA,CAAA,MAAA,GAAA,MAAA,GCjHM,IDiHN,CAAA,OAAA,CAAA,CAAA,EAAA;EACL;;;EACN,OAAA,CAAA,EC/GD,cD+GC,CAAA,SAAA,CAAA;CACC;;;;;;;;;;;AC5IoD;;;;;;;;AAalE;;;;;;;AAsEA;;;;;;;;;;;;;ACvFA;;;;;;;;;;;;;;cDwFa,gBAAA;;;;;;;mCAOsB,6BACtB,wBAAwB,aAChC;;;;;;;wCAoBmC,6BAC3B,6BAA6B,aACrC;;;;;;;;cCvHQ"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { ClientInferPublisherInput, ClientInferPublisherInput as ClientInferPublisherInput$1, MessageValidationError, MessageValidationError as MessageValidationError$1, TechnicalError, TechnicalError as TechnicalError$1 } from "@amqp-contract/client";
|
|
1
|
+
import { ClientInferPublisherInput, ClientInferPublisherInput as ClientInferPublisherInput$1, MessageValidationError, MessageValidationError as MessageValidationError$1, PublishOptions, TechnicalError, TechnicalError as TechnicalError$1 } from "@amqp-contract/client";
|
|
2
2
|
import { DynamicModule, ModuleMetadata, OnModuleDestroy, OnModuleInit, Type } from "@nestjs/common";
|
|
3
3
|
import { AmqpConnectionManagerOptions, ConnectionUrl } from "amqp-connection-manager";
|
|
4
4
|
import { ContractDefinition, InferPublisherNames } from "@amqp-contract/contract";
|
|
5
5
|
import { Future, Result } from "@swan-io/boxed";
|
|
6
|
-
import { Options } from "amqplib";
|
|
7
6
|
|
|
8
7
|
//#region src/client.service.d.ts
|
|
9
8
|
|
|
@@ -69,10 +68,6 @@ type AmqpClientModuleOptions<TContract extends ContractDefinition> = {
|
|
|
69
68
|
* orderId: order.id,
|
|
70
69
|
* amount: order.total
|
|
71
70
|
* }).resultToPromise();
|
|
72
|
-
*
|
|
73
|
-
* if (result.isError()) {
|
|
74
|
-
* throw new Error('Failed to publish order event');
|
|
75
|
-
* }
|
|
76
71
|
* }
|
|
77
72
|
* }
|
|
78
73
|
* ```
|
|
@@ -105,22 +100,28 @@ declare class AmqpClientService<TContract extends ContractDefinition> implements
|
|
|
105
100
|
*
|
|
106
101
|
* @param publisherName - The name of the publisher from the contract
|
|
107
102
|
* @param message - The message payload (type-checked against the contract)
|
|
108
|
-
* @param options - Optional AMQP publish options
|
|
103
|
+
* @param options - Optional AMQP publish options including compression support
|
|
109
104
|
* @returns A Future that resolves to a Result indicating success or failure
|
|
110
105
|
*
|
|
111
|
-
* @example
|
|
106
|
+
* @example Basic publishing
|
|
112
107
|
* ```typescript
|
|
113
|
-
*
|
|
108
|
+
* await this.amqpClient.publish('orderCreated', {
|
|
114
109
|
* orderId: '123',
|
|
115
110
|
* amount: 99.99
|
|
116
111
|
* }).resultToPromise();
|
|
112
|
+
* ```
|
|
117
113
|
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
114
|
+
* @example Publishing with compression
|
|
115
|
+
* ```typescript
|
|
116
|
+
* await this.amqpClient.publish('orderCreated', {
|
|
117
|
+
* orderId: '123',
|
|
118
|
+
* amount: 99.99
|
|
119
|
+
* }, {
|
|
120
|
+
* compression: 'gzip'
|
|
121
|
+
* }).resultToPromise();
|
|
121
122
|
* ```
|
|
122
123
|
*/
|
|
123
|
-
publish<TName extends InferPublisherNames<TContract>>(publisherName: TName, message: ClientInferPublisherInput$1<TContract, TName>, options?:
|
|
124
|
+
publish<TName extends InferPublisherNames<TContract>>(publisherName: TName, message: ClientInferPublisherInput$1<TContract, TName>, options?: PublishOptions): Future<Result<void, TechnicalError$1 | MessageValidationError$1>>;
|
|
124
125
|
}
|
|
125
126
|
//#endregion
|
|
126
127
|
//#region src/client.module.d.ts
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/client.service.ts","../src/client.module.ts","../src/client.module-definition.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/client.service.ts","../src/client.module.ts","../src/client.module-definition.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;AA6BA;;;;;;AAmDA;;;;;;;;AAkEmB,KArHP,uBAqHO,CAAA,kBArHmC,kBAqHnC,CAAA,GAAA;EACoB;EAAW,QAAA,EApHtC,SAoHsC;EAArC;EACC,IAAA,EAnHN,aAmHM,EAAA;EACW;EAAiB,iBAAA,CAAA,EAlHpB,4BAkHoB,GAAA,SAAA;CAA9B;;;;;;;;AC7IsD;;;;;;;;AAalE;;;;;;;AAsEA;;;;;;;;;;;;;ACvFA;;;;;;;cF6Ea,oCAAoC,+BACpC,cAAc;;;uBAMG,wBAAwB;;;;;;;;kBAU9B;;;;;;;;qBAWG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAoCH,oBAAoB,2BACzB,gBACN,4BAA0B,WAAW,kBACpC,iBACT,OAAO,aAAa,mBAAiB;;;;;;;KCvIrC,iDAAiD,sBAClD,wBAAwB,aACxB,QAAQ,wBAAwB;ADapC;;;AAIQ,KCZI,4BDYJ,CAAA,kBCZmD,kBDYnD,CAAA,GAAA;EAEc;;AA6CtB;;EAQsD,UAAA,EAAA,CAAA,GAAA,IAAA,EAAA,GAAA,EAAA,EAAA,GC7DpB,8BD6DoB,CC7DW,SD6DX,CAAA;EAAxB;;;;EAyDN,MAAA,CAAA,EAAA,CAAA,MAAA,GAAA,MAAA,GCjHM,IDiHN,CAAA,OAAA,CAAA,CAAA,EAAA;EACL;;;EACN,OAAA,CAAA,EC/GD,cD+GC,CAAA,SAAA,CAAA;CACC;;;;;;;;;;;AC5IoD;;;;;;;;AAalE;;;;;;;AAsEA;;;;;;;;;;;;;ACvFA;;;;;;;;;;;;;;cDwFa,gBAAA;;;;;;;mCAOsB,6BACtB,wBAAwB,aAChC;;;;;;;wCAoBmC,6BAC3B,6BAA6B,aACrC;;;;;;;;cCvHQ"}
|
package/dist/index.mjs
CHANGED
|
@@ -755,13 +755,13 @@ var import_Boxed = require_Boxed();
|
|
|
755
755
|
const MODULE_OPTIONS_TOKEN = Symbol("AMQP_CLIENT_MODULE_OPTIONS");
|
|
756
756
|
|
|
757
757
|
//#endregion
|
|
758
|
-
//#region \0@oxc-project+runtime@0.
|
|
758
|
+
//#region \0@oxc-project+runtime@0.107.0/helpers/decorateMetadata.js
|
|
759
759
|
function __decorateMetadata(k, v) {
|
|
760
760
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
761
761
|
}
|
|
762
762
|
|
|
763
763
|
//#endregion
|
|
764
|
-
//#region \0@oxc-project+runtime@0.
|
|
764
|
+
//#region \0@oxc-project+runtime@0.107.0/helpers/decorateParam.js
|
|
765
765
|
function __decorateParam(paramIndex, decorator) {
|
|
766
766
|
return function(target, key) {
|
|
767
767
|
decorator(target, key, paramIndex);
|
|
@@ -769,7 +769,7 @@ function __decorateParam(paramIndex, decorator) {
|
|
|
769
769
|
}
|
|
770
770
|
|
|
771
771
|
//#endregion
|
|
772
|
-
//#region \0@oxc-project+runtime@0.
|
|
772
|
+
//#region \0@oxc-project+runtime@0.107.0/helpers/decorate.js
|
|
773
773
|
function __decorate(decorators, target, key, desc) {
|
|
774
774
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
775
775
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -792,9 +792,7 @@ let AmqpClientService = class AmqpClientService$1 {
|
|
|
792
792
|
* in the background with automatic reconnection handling.
|
|
793
793
|
*/
|
|
794
794
|
async onModuleInit() {
|
|
795
|
-
|
|
796
|
-
if (clientResult.isError()) throw new Error(`Failed to create AMQP client: ${clientResult.error.message}`);
|
|
797
|
-
this.client = clientResult.get();
|
|
795
|
+
this.client = await TypedAmqpClient.create(this.options).resultToPromise();
|
|
798
796
|
}
|
|
799
797
|
/**
|
|
800
798
|
* Close the AMQP client when the NestJS module is destroyed.
|
|
@@ -817,19 +815,25 @@ let AmqpClientService = class AmqpClientService$1 {
|
|
|
817
815
|
*
|
|
818
816
|
* @param publisherName - The name of the publisher from the contract
|
|
819
817
|
* @param message - The message payload (type-checked against the contract)
|
|
820
|
-
* @param options - Optional AMQP publish options
|
|
818
|
+
* @param options - Optional AMQP publish options including compression support
|
|
821
819
|
* @returns A Future that resolves to a Result indicating success or failure
|
|
822
820
|
*
|
|
823
|
-
* @example
|
|
821
|
+
* @example Basic publishing
|
|
824
822
|
* ```typescript
|
|
825
|
-
*
|
|
823
|
+
* await this.amqpClient.publish('orderCreated', {
|
|
826
824
|
* orderId: '123',
|
|
827
825
|
* amount: 99.99
|
|
828
826
|
* }).resultToPromise();
|
|
827
|
+
* ```
|
|
829
828
|
*
|
|
830
|
-
*
|
|
831
|
-
*
|
|
832
|
-
*
|
|
829
|
+
* @example Publishing with compression
|
|
830
|
+
* ```typescript
|
|
831
|
+
* await this.amqpClient.publish('orderCreated', {
|
|
832
|
+
* orderId: '123',
|
|
833
|
+
* amount: 99.99
|
|
834
|
+
* }, {
|
|
835
|
+
* compression: 'gzip'
|
|
836
|
+
* }).resultToPromise();
|
|
833
837
|
* ```
|
|
834
838
|
*/
|
|
835
839
|
publish(publisherName, message, options) {
|
|
@@ -873,11 +877,11 @@ let AmqpClientModule = _AmqpClientModule = class AmqpClientModule$1 {
|
|
|
873
877
|
const providers = [{
|
|
874
878
|
provide: MODULE_OPTIONS_TOKEN,
|
|
875
879
|
useFactory: options.useFactory,
|
|
876
|
-
inject: options.inject
|
|
880
|
+
inject: options.inject ?? []
|
|
877
881
|
}, AmqpClientService];
|
|
878
882
|
return {
|
|
879
883
|
module: _AmqpClientModule,
|
|
880
|
-
imports: options.imports
|
|
884
|
+
imports: options.imports ?? [],
|
|
881
885
|
providers,
|
|
882
886
|
exports: [AmqpClientService]
|
|
883
887
|
};
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["t","n","r","i","AmqpClientService","options: AmqpClientModuleOptions<TContract>","Future","Result","AmqpClientModule","providers: Provider[]"],"sources":["../../../node_modules/.pnpm/@swan-io+boxed@3.2.1_typescript@5.9.3/node_modules/@swan-io/boxed/dist/Boxed.js","../src/client.module-definition.ts","../src/client.service.ts","../src/client.module.ts"],"sourcesContent":["var t=function(t){return Object.keys(t)},n=function(t){return Object.values(t)},r=Object.prototype.hasOwnProperty,e={__proto__:null,fromEntries:Object.fromEntries,entries:function(t){return Object.entries(t)},keys:t,values:n,fromOptional:function(t){var n={};for(var e in t)if(r.call(t,e)){var u=t[e];if(void 0===u)continue;u.isSome()&&(n[e]=u.get())}return n}},u=new WeakMap,o=\"function\"==typeof WeakRef?WeakRef:/*#__PURE__*/function(){function t(t){u.set(this,t)}return t.prototype.deref=function(){return u.get(this)},t}(),i=function(){var t=new Map,n=\"function\"==typeof FinalizationRegistry?new FinalizationRegistry(function(n){t.delete(n)}):void 0;return{set:function(r,e){t.set(r,new o(e)),void 0!==n&&n.register(e,r)},get:function(n){var r=t.get(n);if(void 0!==r)return r.deref()}}},a=Symbol.for(\"__boxed_type__\"),c=function(t,n){for(var r=Math.min(t.length,n.length),e=Array(r),u=-1;++u<r;)e[u]=[t[u],n[u]];return e},f=i(),s=/*#__PURE__*/function(){function t(){}t.fromPredicate=function(t,n){return n(t)?p.Some(t):v};var n=t.prototype;return n.map=function(t){return this===v?this:p.Some(t(this.value))},n.flatMap=function(t){return this===v?this:t(this.value)},n.filter=function(t){return this===v||t(this.value)?this:v},n.get=function(){return this.value},n.getWithDefault=function(t){return this===v?t:this.value},n.getOr=function(t){return this===v?t:this.value},n.orElse=function(t){return this===v?t:this},n.mapOr=function(t,n){return this===v?t:n(this.value)},n.match=function(t){return this===v?t.None():t.Some(this.value)},n.tap=function(t){return t(this),this},n.tapSome=function(t){return this===v||t(this.value),this},n.toUndefined=function(){if(this!==v)return this.value},n.toNull=function(){return this===v?null:this.value},n.toResult=function(t){return this.match({Some:function(t){return k.Ok(t)},None:function(){return k.Error(t)}})},n.isSome=function(){return this!==v},n.isNone=function(){return this===v},n.toJSON=function(){return this.match({None:function(){var t;return(t={})[a]=\"Option\",t.tag=\"None\",t},Some:function(t){var n;return(n={})[a]=\"Option\",n.tag=\"Some\",n.value=t,n}})},t}();s.P={Some:function(t){return{tag:\"Some\",value:t}},None:{tag:\"None\"}},s.Some=function(t){var n=f.get(t);if(null==n){var r=Object.create(h);return r.tag=\"Some\",r.value=t,Object.freeze(r),f.set(t,r),r}return n},s.None=function(){return v},s.isOption=function(t){return null!=t&&\"Option\"===t.__boxed_type__},s.fromNullable=function(t){return null==t?v:p.Some(t)},s.fromNull=function(t){return null===t?v:p.Some(t)},s.fromUndefined=function(t){return void 0===t?v:p.Some(t)},s.all=function(t){for(var n,r=t.length,e=p.Some([]),u=0,o=function(){if(u>=r)return{v:e};var n=t[u];null!=n&&(e=e.flatMap(function(t){return n.map(function(n){return t.push(n),t})})),u++};;)if(n=o())return n.v},s.allFromDict=function(r){var e=t(r);return p.all(n(r)).map(function(t){return Object.fromEntries(c(e,t))})},s.equals=function(t,n,r){return t.isSome()&&n.isSome()?r(t.get(),n.get()):t.tag===n.tag},s.fromJSON=function(t){return\"None\"===t.tag?p.None():p.Some(t.value)},s.prototype.__boxed_type__=\"Option\";var l,h=s.prototype,v=((l=Object.create(h)).tag=\"None\",Object.freeze(l),l),p=s,m=i(),g=i(),O=/*#__PURE__*/function(){function t(){}var n=t.prototype;return n.map=function(t){return\"Ok\"===this.tag?k.Ok(t(this.value)):this},n.mapError=function(t){return\"Ok\"===this.tag?this:k.Error(t(this.error))},n.flatMap=function(t){return\"Ok\"===this.tag?t(this.value):this},n.flatMapError=function(t){return\"Ok\"===this.tag?this:t(this.error)},n.get=function(){return this.value},n.getError=function(){return this.error},n.getWithDefault=function(t){return\"Ok\"===this.tag?this.value:t},n.getOr=function(t){return\"Ok\"===this.tag?this.value:t},n.mapOr=function(t,n){return\"Error\"===this.tag?t:n(this.value)},n.match=function(t){return\"Ok\"===this.tag?t.Ok(this.value):t.Error(this.error)},n.tap=function(t){return t(this),this},n.tapOk=function(t){return\"Ok\"===this.tag&&t(this.value),this},n.tapError=function(t){return\"Error\"===this.tag&&t(this.error),this},n.toOption=function(){return\"Ok\"===this.tag?p.Some(this.value):v},n.isOk=function(){return\"Ok\"===this.tag},n.isError=function(){return\"Error\"===this.tag},n.toJSON=function(){return this.match({Ok:function(t){var n;return(n={})[a]=\"Result\",n.tag=\"Ok\",n.value=t,n},Error:function(t){var n;return(n={})[a]=\"Result\",n.tag=\"Error\",n.error=t,n}})},t}();O.P={Ok:function(t){return{tag:\"Ok\",value:t}},Error:function(t){return{tag:\"Error\",error:t}}},O.Ok=function(t){var n=m.get(t);if(null==n){var r=Object.create(_);return r.tag=\"Ok\",r.value=t,Object.freeze(r),m.set(t,r),r}return n},O.Error=function(t){var n=g.get(t);if(null==n){var r=Object.create(_);return r.tag=\"Error\",r.error=t,Object.freeze(r),g.set(t,r),r}return n},O.isResult=function(t){return null!=t&&\"Result\"===t.__boxed_type__},O.fromExecution=function(t){try{return k.Ok(t())}catch(t){return k.Error(t)}},O.fromPromise=function(t){try{return Promise.resolve(function(n,r){try{var e=Promise.resolve(t).then(function(t){return k.Ok(t)})}catch(t){return r(t)}return e&&e.then?e.then(void 0,r):e}(0,function(t){return k.Error(t)}))}catch(t){return Promise.reject(t)}},O.fromOption=function(t,n){return t.toResult(n)},O.all=function(t){for(var n,r=t.length,e=k.Ok([]),u=0,o=function(){if(u>=r)return{v:e};var n=t[u];null!=n&&(e=e.flatMap(function(t){return n.map(function(n){return t.push(n),t})})),u++};;)if(n=o())return n.v},O.allFromDict=function(r){var e=t(r);return k.all(n(r)).map(function(t){return Object.fromEntries(c(e,t))})},O.equals=function(t,n,r){return t.tag===n.tag&&(!(!t.isError()||!n.isError())||!(!t.isOk()||!n.isOk())&&r(t.get(),n.get()))},O.fromJSON=function(t){return\"Ok\"===t.tag?k.Ok(t.value):k.Error(t.error)},O.prototype.__boxed_type__=\"Result\";var _=O.prototype,k=O,d=function(t,n){return t===n?0:t>n?1:-1},y={__proto__:null,from:Array.from,of:Array.of,isArray:Array.isArray,findMap:function(t,n){for(var r=-1;++r<t.length;){var e=n(t[r]);if(e.isSome())return e}return p.None()},filterMap:function(t,n){var r=[];return t.forEach(function(t){var e=n(t);e.isSome()&&r.push(e.get())}),r},find:function(t,n){for(var r=-1;++r<t.length;){var e=t[r];if(n(e))return p.Some(e)}return p.None()},findIndex:function(t,n){for(var r=-1;++r<t.length;)if(n(t[r]))return p.Some(r);return p.None()},binarySearchBy:function(t,n,r){if(void 0===r&&(r=d),0===t.length)return-1;for(var e=0,u=t.length-1;;){var o=e+(u-e)/2|0;if(o===e||o===u)return u;var i=r(n,t[o]);if(0===i)return o;i>0?e=o:i<0&&(u=o)}},unzip:function(t){for(var n=t.length,r=Array(n),e=Array(n),u=-1;++u<n;){var o=t[u];void 0!==o&&(r[u]=o[0],e[u]=o[1])}return[r,e]},zip:c},E=i(),b=/*#__PURE__*/function(){function t(){}var n=t.prototype;return n.map=function(t){return this===j||this===D?this:R.Done(t(this.value))},n.flatMap=function(t){return this===j||this===D?this:t(this.value)},n.mapOkToResult=function(t){return this.map(function(n){return n.match({Ok:function(n){return t(n)},Error:function(){return n}})})},n.mapErrorToResult=function(t){return this.map(function(n){return n.match({Error:function(n){return t(n)},Ok:function(){return n}})})},n.mapOk=function(t){return this.map(function(n){return n.match({Ok:function(n){return k.Ok(t(n))},Error:function(){return n}})})},n.mapError=function(t){return this.map(function(n){return n.match({Ok:function(){return n},Error:function(n){return k.Error(t(n))}})})},n.flatMapOk=function(t){return this.flatMap(function(n){return n.match({Ok:function(n){return t(n)},Error:function(){return R.Done(n)}})})},n.flatMapError=function(t){return this.flatMap(function(n){return n.match({Ok:function(){return R.Done(n)},Error:function(n){return t(n)}})})},n.get=function(){return this.value},n.getWithDefault=function(t){return this===j||this===D?t:this.value},n.getOr=function(t){return this===j||this===D?t:this.value},n.mapOr=function(t,n){return this===j||this===D?t:n(this.value)},n.match=function(t){return this===j?t.NotAsked():this===D?t.Loading():t.Done(this.value)},n.tap=function(t){return t(this),this},n.toOption=function(){return this===j||this===D?p.None():p.Some(this.value)},n.isDone=function(){return this!==j&&this!==D},n.isLoading=function(){return this===D},n.isNotAsked=function(){return this===j},n.toJSON=function(){return this.match({NotAsked:function(){var t;return(t={})[a]=\"AsyncData\",t.tag=\"NotAsked\",t},Loading:function(){var t;return(t={})[a]=\"AsyncData\",t.tag=\"Loading\",t},Done:function(t){var n;return(n={})[a]=\"AsyncData\",n.tag=\"Done\",n.value=t,n}})},t}();b.P={Done:function(t){return{tag:\"Done\",value:t}},NotAsked:{tag:\"NotAsked\"},Loading:{tag:\"Loading\"}},b.Done=function(t){var n=E.get(t);if(null==n){var r=Object.create(N);return r.tag=\"Done\",r.value=t,Object.freeze(r),E.set(t,r),r}return n},b.Loading=function(){return D},b.NotAsked=function(){return j},b.all=function(t){for(var n,r=t.length,e=R.Done([]),u=0,o=function(){if(u>=r)return{v:e};var n=t[u];null!=n&&(e=e.flatMap(function(t){return n.map(function(n){return t.push(n),t})})),u++};;)if(n=o())return n.v},b.allFromDict=function(r){var e=t(r);return R.all(n(r)).map(function(t){return Object.fromEntries(c(e,t))})},b.equals=function(t,n,r){return\"Done\"===t.tag&&\"Done\"===n.tag?r(t.value,n.value):t.tag===n.tag},b.isAsyncData=function(t){return null!=t&&\"AsyncData\"===t.__boxed_type__},b.fromJSON=function(t){return\"NotAsked\"===t.tag?R.NotAsked():\"Loading\"===t.tag?R.Loading():R.Done(t.value)},b.prototype.__boxed_type__=\"AsyncData\";var S,N=b.prototype,D=((S=Object.create(N)).tag=\"Loading\",Object.freeze(S),S),j=function(){var t=Object.create(N);return t.tag=\"NotAsked\",Object.freeze(t),t}(),R=b,A=/*#__PURE__*/function(){function t(){this._state=void 0,this._state={tag:\"Pending\"}}t.fromPromise=function(t){return P.make(function(n){t.then(function(t){return n(k.Ok(t))},function(t){return n(k.Error(t))})})};var n=t.prototype;return n.onResolve=function(t){var n;\"Pending\"===this._state.tag?(this._state.resolveCallbacks=null!=(n=this._state.resolveCallbacks)?n:[],this._state.resolveCallbacks.push(t)):\"Resolved\"===this._state.tag&&t(this._state.value)},n.onCancel=function(t){var n;\"Pending\"===this._state.tag?(this._state.cancelCallbacks=null!=(n=this._state.cancelCallbacks)?n:[],this._state.cancelCallbacks.push(t)):\"Cancelled\"===this._state.tag&&t()},n.cancel=function(){if(\"Pending\"===this._state.tag){var t=this._state,n=t.cancel,r=t.cancelCallbacks;this._state={tag:\"Cancelled\"},null!=n&&n(),null==r||r.forEach(function(t){return t()})}},n.map=function(t,n){var r=this;void 0===n&&(n=!1);var e=P.make(function(e){if(r.onResolve(function(n){e(t(n))}),n)return function(){r.cancel()}});return this.onCancel(function(){e.cancel()}),e},n.then=function(t){return this.onResolve(t),this},n.flatMap=function(t,n){var r=this;void 0===n&&(n=!1);var e=P.make(function(u){if(r.onResolve(function(n){var r=t(n);r.onResolve(u),r.onCancel(function(){return e.cancel()})}),n)return function(){r.cancel()}});return this.onCancel(function(){e.cancel()}),e},n.tap=function(t){return this.onResolve(t),this},n.tapOk=function(t){return this.onResolve(function(n){n.match({Ok:function(n){return t(n)},Error:function(){}})}),this},n.tapError=function(t){return this.onResolve(function(n){n.match({Ok:function(){},Error:function(n){return t(n)}})}),this},n.mapOkToResult=function(t,n){return void 0===n&&(n=!1),this.map(function(n){return n.match({Ok:function(n){return t(n)},Error:function(){return n}})},n)},n.mapErrorToResult=function(t,n){return void 0===n&&(n=!1),this.map(function(n){return n.match({Error:function(n){return t(n)},Ok:function(){return n}})},n)},n.mapOk=function(t,n){return void 0===n&&(n=!1),this.map(function(n){return n.match({Ok:function(n){return k.Ok(t(n))},Error:function(){return n}})},n)},n.mapError=function(t,n){return void 0===n&&(n=!1),this.map(function(n){return n.match({Ok:function(){return n},Error:function(n){return k.Error(t(n))}})},n)},n.flatMapOk=function(t,n){return void 0===n&&(n=!1),this.flatMap(function(n){return n.match({Ok:function(n){return t(n)},Error:function(){return P.value(n)}})},n)},n.flatMapError=function(t,n){return void 0===n&&(n=!1),this.flatMap(function(n){return n.match({Ok:function(){return P.value(n)},Error:function(n){return t(n)}})},n)},n.toPromise=function(){var t=this;return new Promise(function(n){t.onResolve(n)})},n.resultToPromise=function(){var t=this;return new Promise(function(n,r){t.onResolve(function(t){t.match({Ok:n,Error:r})})})},t}();A.make=function(t){var n=Object.create(M);return n._state={tag:\"Pending\"},n._state.cancel=t(function(t){if(\"Pending\"===n._state.tag){var r=n._state.resolveCallbacks;n._state={tag:\"Resolved\",value:t},null==r||r.forEach(function(n){return n(t)})}}),n},A.isFuture=function(t){return null!=t&&Object.prototype.isPrototypeOf.call(M,t)},A.value=function(t){var n=Object.create(M);return n._state={tag:\"Resolved\",value:t},n},A.all=function(t,n){void 0===n&&(n=!1);for(var r,e=t.length,u=P.value([]),o=0,i=function(){if(o>=e)return{v:u};var r=t[o];null!=r&&(u=u.flatMap(function(t){return r.map(function(n){return t.push(n),t},n)},n)),o++};;)if(r=i())return r.v},A.allFromDict=function(r){var e=t(r);return P.all(n(r)).map(function(t){return Object.fromEntries(c(e,t))})},A.wait=function(t){return P.make(function(n){var r=setTimeout(function(){return n()},t);return function(){return clearTimeout(r)}})},A.retry=function(t,n){var r=n.max;return function n(e){return t(e).flatMapError(function(t){return e+1<r?n(e+1):P.value(k.Error(t))})}(0)},A.concurrent=function(t,n){var r=n.concurrency;return P.make(function(n){var e=Array(t.length),u=r-1,o=0;0!==t.length?t.slice(0,r).forEach(function r(i,a){return i().tap(function(i){if(e[a]=i,++o<t.length){var c=t[++u];null!=c&&r(c,u)}else n(e)})}):n([])})};var M=Object.create(null,Object.getOwnPropertyDescriptors(A.prototype)),P=A,x={make:function(){var t;return[P.make(function(n){t=n}),t]}},C=Symbol(\"NOT_COMPUTED\");function z(){return z=Object.assign?Object.assign.bind():function(t){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var e in r)Object.prototype.hasOwnProperty.call(r,e)&&(t[e]=r[e])}return t},z.apply(this,arguments)}var J={__proto__:null,encode:function(t,n){return JSON.stringify(t,function(t,n){return null==n?n:\"string\"==typeof n[a]?z({},n,{__boxed_type__:n[a]}):n},n)},decode:function(t){return JSON.parse(t,function(t,n){return null==n?n:\"Option\"===n.__boxed_type__?p.fromJSON(n):\"Result\"===n.__boxed_type__?k.fromJSON(n):\"AsyncData\"===n.__boxed_type__?R.fromJSON(n):n})}};exports.Array=y,exports.AsyncData=R,exports.Deferred=x,exports.Dict=e,exports.Future=P,exports.Lazy=function(t){var n={contents:C};return{get:function(){return n.contents===C&&(n.contents=t()),n.contents}}},exports.Option=p,exports.Result=k,exports.Serializer=J;\n//# sourceMappingURL=Boxed.js.map\n","/**\n * Injection token for AMQP client module options\n * Used by NestJS DI system to inject configuration into AmqpClientService\n */\nexport const MODULE_OPTIONS_TOKEN = Symbol(\"AMQP_CLIENT_MODULE_OPTIONS\");\n","import type { AmqpConnectionManagerOptions, ConnectionUrl } from \"amqp-connection-manager\";\nimport {\n type ClientInferPublisherInput,\n MessageValidationError,\n TechnicalError,\n TypedAmqpClient,\n} from \"@amqp-contract/client\";\nimport type { ContractDefinition, InferPublisherNames } from \"@amqp-contract/contract\";\nimport { Future, Result } from \"@swan-io/boxed\";\nimport { Inject, Injectable, type OnModuleDestroy, type OnModuleInit } from \"@nestjs/common\";\nimport { MODULE_OPTIONS_TOKEN } from \"./client.module-definition.js\";\nimport type { Options } from \"amqplib\";\n\n/**\n * Configuration options for the AMQP client NestJS module.\n *\n * @typeParam TContract - The contract definition type\n *\n * @example\n * ```typescript\n * const options: AmqpClientModuleOptions<typeof contract> = {\n * contract: myContract,\n * urls: ['amqp://localhost'],\n * connectionOptions: {\n * heartbeatIntervalInSeconds: 30\n * }\n * };\n * ```\n */\nexport type AmqpClientModuleOptions<TContract extends ContractDefinition> = {\n /** The AMQP contract definition specifying publishers and their message schemas */\n contract: 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 client service for NestJS applications.\n *\n * This service wraps {@link TypedAmqpClient} and integrates it with the NestJS\n * lifecycle, automatically initializing the connection 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 { AmqpClientModule } from '@amqp-contract/client-nestjs';\n *\n * @Module({\n * imports: [\n * AmqpClientModule.forRoot({\n * contract: myContract,\n * urls: ['amqp://localhost']\n * })\n * ]\n * })\n * export class AppModule {}\n *\n * // In your service\n * import { AmqpClientService } from '@amqp-contract/client-nestjs';\n *\n * @Injectable()\n * export class OrderService {\n * constructor(\n * private readonly amqpClient: AmqpClientService<typeof myContract>\n * ) {}\n *\n * async createOrder(order: Order) {\n * const result = await this.amqpClient.publish('orderCreated', {\n * orderId: order.id,\n * amount: order.total\n * }).resultToPromise();\n *\n * if (result.isError()) {\n * throw new Error('Failed to publish order event');\n * }\n * }\n * }\n * ```\n */\n@Injectable()\nexport class AmqpClientService<TContract extends ContractDefinition>\n implements OnModuleInit, OnModuleDestroy\n{\n private client: TypedAmqpClient<TContract> | null = null;\n\n constructor(\n @Inject(MODULE_OPTIONS_TOKEN)\n private readonly options: AmqpClientModuleOptions<TContract>,\n ) {}\n\n /**\n * Initialize the AMQP client when the NestJS module starts.\n *\n * This lifecycle hook automatically creates and initializes the client\n * when the NestJS application starts up. The connection will be established\n * in the background with automatic reconnection handling.\n */\n async onModuleInit(): Promise<void> {\n const clientResult = await TypedAmqpClient.create(this.options);\n if (clientResult.isError()) {\n throw new Error(`Failed to create AMQP client: ${clientResult.error.message}`);\n }\n this.client = clientResult.get();\n }\n\n /**\n * Close the AMQP client when the NestJS module is destroyed.\n *\n * This lifecycle hook ensures proper cleanup of resources when the\n * NestJS application shuts down, gracefully closing the connection\n * and cleaning up all consumers.\n */\n async onModuleDestroy(): Promise<void> {\n if (this.client) {\n await this.client.close().resultToPromise();\n this.client = null;\n }\n }\n\n /**\n * Publish a message using a contract-defined publisher.\n *\n * This method provides type-safe message publishing with automatic validation\n * and explicit error handling through the Result type.\n *\n * @param publisherName - The name of the publisher from the contract\n * @param message - The message payload (type-checked against the contract)\n * @param options - Optional AMQP publish options (e.g., persistence, headers)\n * @returns A Future that resolves to a Result indicating success or failure\n *\n * @example\n * ```typescript\n * const result = await this.amqpClient.publish('orderCreated', {\n * orderId: '123',\n * amount: 99.99\n * }).resultToPromise();\n *\n * if (result.isError()) {\n * console.error('Publish failed:', result.error);\n * }\n * ```\n */\n publish<TName extends InferPublisherNames<TContract>>(\n publisherName: TName,\n message: ClientInferPublisherInput<TContract, TName>,\n options?: Options.Publish,\n ): Future<Result<void, TechnicalError | MessageValidationError>> {\n if (!this.client) {\n return Future.value(\n Result.Error(\n new TechnicalError(\n \"Client not initialized. Ensure the module has been initialized before publishing.\",\n ),\n ),\n );\n }\n\n return this.client.publish(publisherName, message, options);\n }\n}\n","import { type AmqpClientModuleOptions, AmqpClientService } from \"./client.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 \"./client.module-definition.js\";\n\n/**\n * Factory function return type for async module configuration\n */\ntype AmqpClientModuleOptionsFactory<TContract extends ContractDefinition> =\n | AmqpClientModuleOptions<TContract>\n | Promise<AmqpClientModuleOptions<TContract>>;\n\n/**\n * Options for async module configuration using factory pattern\n */\nexport type AmqpClientModuleAsyncOptions<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[]) => AmqpClientModuleOptionsFactory<TContract>;\n /**\n * Optional dependencies to inject into the factory function.\n * Can be a token (string/symbol) or a class 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 client integration\n * This module provides type-safe AMQP client functionality using @amqp-contract/client\n * without relying on NestJS decorators (except for dependency injection)\n *\n * @typeParam TContract - The contract definition type for type-safe publishing\n *\n * @example\n * ```typescript\n * // Synchronous configuration\n * @Module({\n * imports: [\n * AmqpClientModule.forRoot({\n * contract: myContract,\n * urls: ['amqp://localhost']\n * })\n * ]\n * })\n * export class AppModule {}\n *\n * // Asynchronous configuration\n * @Module({\n * imports: [\n * AmqpClientModule.forRootAsync({\n * imports: [ConfigModule],\n * useFactory: (configService: ConfigService) => ({\n * contract: myContract,\n * urls: configService.get('AMQP_URLS')\n * }),\n * inject: [ConfigService]\n * })\n * ]\n * })\n * export class AppModule {}\n *\n * // Using the client in a service\n * @Injectable()\n * export class OrderService {\n * constructor(\n * private readonly amqpClient: AmqpClientService<typeof myContract>\n * ) {}\n *\n * async createOrder(order: Order) {\n * // publish is fully typed based on the contract\n * await this.amqpClient.publish('orderCreated', {\n * orderId: order.id,\n * amount: order.total\n * }).resultToPromise();\n * }\n * }\n * ```\n */\n@Module({})\nexport class AmqpClientModule {\n /**\n * Register the AMQP client module with synchronous configuration\n *\n * @param options - The client configuration options with contract\n * @returns A dynamic module for NestJS\n */\n static forRoot<TContract extends ContractDefinition>(\n options: AmqpClientModuleOptions<TContract>,\n ): DynamicModule {\n return {\n module: AmqpClientModule,\n providers: [\n {\n provide: MODULE_OPTIONS_TOKEN,\n useValue: options,\n },\n AmqpClientService,\n ],\n exports: [AmqpClientService],\n };\n }\n\n /**\n * Register the AMQP client 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: AmqpClientModuleAsyncOptions<TContract>,\n ): DynamicModule {\n const providers: Provider[] = [\n {\n provide: MODULE_OPTIONS_TOKEN,\n useFactory: options.useFactory,\n inject: options.inject || [],\n },\n AmqpClientService,\n ];\n\n return {\n module: AmqpClientModule,\n imports: options.imports || [],\n providers,\n exports: [AmqpClientService],\n };\n }\n}\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;CAAA,IAAI,IAAE,SAAS,GAAE;AAAC,SAAO,OAAO,KAAK,EAAE;IAAE,IAAE,SAAS,GAAE;AAAC,SAAO,OAAO,OAAO,EAAE;IAAE,IAAE,OAAO,UAAU,gBAAe,IAAE;EAAC,WAAU;EAAK,aAAY,OAAO;EAAY,SAAQ,SAAS,GAAE;AAAC,UAAO,OAAO,QAAQ,EAAE;;EAAE,MAAK;EAAE,QAAO;EAAE,cAAa,SAAS,GAAE;GAAC,IAAI,IAAE,EAAE;AAAC,QAAI,IAAI,KAAK,EAAE,KAAG,EAAE,KAAK,GAAE,EAAE,EAAC;IAAC,IAAI,IAAE,EAAE;AAAG,QAAG,KAAK,MAAI,EAAE;AAAS,MAAE,QAAQ,KAAG,EAAE,KAAG,EAAE,KAAK;;AAAE,UAAO;;EAAG,EAAC,oBAAE,IAAI,SAAO,EAAC,IAAE,cAAY,OAAO,UAAQ,UAAqB,2BAAU;EAAC,SAAS,EAAE,KAAE;AAAC,KAAE,IAAI,MAAKA,IAAE;;AAAC,SAAO,EAAE,UAAU,QAAM,WAAU;AAAC,UAAO,EAAE,IAAI,KAAK;KAAE;IAAI,EAAC,IAAE,WAAU;EAAC,IAAI,oBAAE,IAAI,KAAG,EAAC,IAAE,cAAY,OAAO,uBAAqB,IAAI,qBAAqB,SAAS,KAAE;AAAC,KAAE,OAAOC,IAAE;IAAE,GAAC,KAAK;AAAE,SAAM;GAAC,KAAI,SAAS,GAAE,GAAE;AAAC,MAAE,IAAI,GAAE,IAAI,EAAE,EAAE,CAAC,EAAC,KAAK,MAAI,KAAG,EAAE,SAAS,GAAE,EAAE;;GAAE,KAAI,SAAS,KAAE;IAAC,IAAI,IAAE,EAAE,IAAIA,IAAE;AAAC,QAAG,KAAK,MAAI,EAAE,QAAO,EAAE,OAAO;;GAAE;IAAE,IAAE,OAAO,IAAI,iBAAiB,EAAC,IAAE,SAAS,GAAE,GAAE;AAAC,OAAI,IAAI,IAAE,KAAK,IAAI,EAAE,QAAO,EAAE,OAAO,EAAC,IAAE,MAAM,EAAE,EAAC,IAAE,IAAG,EAAE,IAAE,GAAG,GAAE,KAAG,CAAC,EAAE,IAAG,EAAE,GAAG;AAAC,SAAO;IAAG,IAAE,GAAG,EAAC,IAAe,2BAAU;EAAC,SAAS,IAAG;AAAE,IAAE,gBAAc,SAAS,KAAE,KAAE;AAAC,UAAOA,IAAED,IAAE,GAAC,EAAE,KAAKA,IAAE,GAAC;;EAAG,IAAI,IAAE,EAAE;AAAU,SAAO,EAAE,MAAI,SAAS,KAAE;AAAC,UAAO,SAAO,IAAE,OAAK,EAAE,KAAKA,IAAE,KAAK,MAAM,CAAC;KAAE,EAAE,UAAQ,SAAS,KAAE;AAAC,UAAO,SAAO,IAAE,OAAKA,IAAE,KAAK,MAAM;KAAE,EAAE,SAAO,SAAS,KAAE;AAAC,UAAO,SAAO,KAAGA,IAAE,KAAK,MAAM,GAAC,OAAK;KAAG,EAAE,MAAI,WAAU;AAAC,UAAO,KAAK;KAAO,EAAE,iBAAe,SAAS,KAAE;AAAC,UAAO,SAAO,IAAEA,MAAE,KAAK;KAAO,EAAE,QAAM,SAAS,KAAE;AAAC,UAAO,SAAO,IAAEA,MAAE,KAAK;KAAO,EAAE,SAAO,SAAS,KAAE;AAAC,UAAO,SAAO,IAAEA,MAAE;KAAM,EAAE,QAAM,SAAS,KAAE,KAAE;AAAC,UAAO,SAAO,IAAEA,MAAEC,IAAE,KAAK,MAAM;KAAE,EAAE,QAAM,SAAS,KAAE;AAAC,UAAO,SAAO,IAAED,IAAE,MAAM,GAACA,IAAE,KAAK,KAAK,MAAM;KAAE,EAAE,MAAI,SAAS,KAAE;AAAC,UAAOA,IAAE,KAAK,EAAC;KAAM,EAAE,UAAQ,SAAS,KAAE;AAAC,UAAO,SAAO,KAAGA,IAAE,KAAK,MAAM,EAAC;KAAM,EAAE,cAAY,WAAU;AAAC,OAAG,SAAO,EAAE,QAAO,KAAK;KAAO,EAAE,SAAO,WAAU;AAAC,UAAO,SAAO,IAAE,OAAK,KAAK;KAAO,EAAE,WAAS,SAAS,KAAE;AAAC,UAAO,KAAK,MAAM;IAAC,MAAK,SAAS,KAAE;AAAC,YAAO,EAAE,GAAGA,IAAE;;IAAE,MAAK,WAAU;AAAC,YAAO,EAAE,MAAMA,IAAE;;IAAE,CAAC;KAAE,EAAE,SAAO,WAAU;AAAC,UAAO,SAAO;KAAG,EAAE,SAAO,WAAU;AAAC,UAAO,SAAO;KAAG,EAAE,SAAO,WAAU;AAAC,UAAO,KAAK,MAAM;IAAC,MAAK,WAAU;KAAC,IAAIA;AAAE,YAAM,CAAC,MAAE,EAAE,EAAE,KAAG,UAAS,IAAE,MAAI,QAAOA;;IAAG,MAAK,SAAS,KAAE;KAAC,IAAIC;AAAE,YAAM,CAAC,MAAE,EAAE,EAAE,KAAG,UAAS,IAAE,MAAI,QAAO,IAAE,QAAMD,KAAEC;;IAAG,CAAC;KAAE;IAAI;AAAC,GAAE,IAAE;EAAC,MAAK,SAAS,GAAE;AAAC,UAAM;IAAC,KAAI;IAAO,OAAM;IAAE;;EAAE,MAAK,EAAC,KAAI,QAAO;EAAC,EAAC,EAAE,OAAK,SAAS,GAAE;EAAC,IAAI,IAAE,EAAE,IAAI,EAAE;AAAC,MAAG,QAAM,GAAE;GAAC,IAAI,IAAE,OAAO,OAAO,EAAE;AAAC,UAAO,EAAE,MAAI,QAAO,EAAE,QAAM,GAAE,OAAO,OAAO,EAAE,EAAC,EAAE,IAAI,GAAE,EAAE,EAAC;;AAAE,SAAO;IAAG,EAAE,OAAK,WAAU;AAAC,SAAO;IAAG,EAAE,WAAS,SAAS,GAAE;AAAC,SAAO,QAAM,KAAG,aAAW,EAAE;IAAgB,EAAE,eAAa,SAAS,GAAE;AAAC,SAAO,QAAM,IAAE,IAAE,EAAE,KAAK,EAAE;IAAE,EAAE,WAAS,SAAS,GAAE;AAAC,SAAO,SAAO,IAAE,IAAE,EAAE,KAAK,EAAE;IAAE,EAAE,gBAAc,SAAS,GAAE;AAAC,SAAO,KAAK,MAAI,IAAE,IAAE,EAAE,KAAK,EAAE;IAAE,EAAE,MAAI,SAAS,GAAE;AAAC,OAAI,IAAI,GAAE,IAAE,EAAE,QAAO,IAAE,EAAE,KAAK,EAAE,CAAC,EAAC,IAAE,GAAE,IAAE,WAAU;AAAC,OAAG,KAAG,EAAE,QAAM,EAAC,GAAE,GAAE;GAAC,IAAIA,MAAE,EAAE;AAAG,WAAMA,QAAI,IAAE,EAAE,QAAQ,SAAS,KAAE;AAAC,WAAOA,IAAE,IAAI,SAAS,KAAE;AAAC,YAAOD,IAAE,KAAKC,IAAE,EAACD;MAAG;KAAE,GAAE;MAAO,KAAG,IAAE,GAAG,CAAC,QAAO,EAAE;IAAG,EAAE,cAAY,SAAS,GAAE;EAAC,IAAI,IAAE,EAAE,EAAE;AAAC,SAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,SAAS,GAAE;AAAC,UAAO,OAAO,YAAY,EAAE,GAAE,EAAE,CAAC;IAAE;IAAE,EAAE,SAAO,SAAS,GAAE,GAAE,GAAE;AAAC,SAAO,EAAE,QAAQ,IAAE,EAAE,QAAQ,GAAC,EAAE,EAAE,KAAK,EAAC,EAAE,KAAK,CAAC,GAAC,EAAE,QAAM,EAAE;IAAK,EAAE,WAAS,SAAS,GAAE;AAAC,SAAM,WAAS,EAAE,MAAI,EAAE,MAAM,GAAC,EAAE,KAAK,EAAE,MAAM;IAAE,EAAE,UAAU,iBAAe;CAAS,IAAI,GAAE,IAAE,EAAE,WAAU,KAAG,CAAC,IAAE,OAAO,OAAO,EAAE,EAAE,MAAI,QAAO,OAAO,OAAO,EAAE,EAAC,IAAG,IAAE,GAAE,IAAE,GAAG,EAAC,IAAE,GAAG,EAAC,IAAe,2BAAU;EAAC,SAAS,IAAG;EAAE,IAAI,IAAE,EAAE;AAAU,SAAO,EAAE,MAAI,SAAS,KAAE;AAAC,UAAM,SAAO,KAAK,MAAI,EAAE,GAAGA,IAAE,KAAK,MAAM,CAAC,GAAC;KAAM,EAAE,WAAS,SAAS,KAAE;AAAC,UAAM,SAAO,KAAK,MAAI,OAAK,EAAE,MAAMA,IAAE,KAAK,MAAM,CAAC;KAAE,EAAE,UAAQ,SAAS,KAAE;AAAC,UAAM,SAAO,KAAK,MAAIA,IAAE,KAAK,MAAM,GAAC;KAAM,EAAE,eAAa,SAAS,KAAE;AAAC,UAAM,SAAO,KAAK,MAAI,OAAKA,IAAE,KAAK,MAAM;KAAE,EAAE,MAAI,WAAU;AAAC,UAAO,KAAK;KAAO,EAAE,WAAS,WAAU;AAAC,UAAO,KAAK;KAAO,EAAE,iBAAe,SAAS,KAAE;AAAC,UAAM,SAAO,KAAK,MAAI,KAAK,QAAMA;KAAG,EAAE,QAAM,SAAS,KAAE;AAAC,UAAM,SAAO,KAAK,MAAI,KAAK,QAAMA;KAAG,EAAE,QAAM,SAAS,KAAE,KAAE;AAAC,UAAM,YAAU,KAAK,MAAIA,MAAEC,IAAE,KAAK,MAAM;KAAE,EAAE,QAAM,SAAS,KAAE;AAAC,UAAM,SAAO,KAAK,MAAID,IAAE,GAAG,KAAK,MAAM,GAACA,IAAE,MAAM,KAAK,MAAM;KAAE,EAAE,MAAI,SAAS,KAAE;AAAC,UAAOA,IAAE,KAAK,EAAC;KAAM,EAAE,QAAM,SAAS,KAAE;AAAC,UAAM,SAAO,KAAK,OAAKA,IAAE,KAAK,MAAM,EAAC;KAAM,EAAE,WAAS,SAAS,KAAE;AAAC,UAAM,YAAU,KAAK,OAAKA,IAAE,KAAK,MAAM,EAAC;KAAM,EAAE,WAAS,WAAU;AAAC,UAAM,SAAO,KAAK,MAAI,EAAE,KAAK,KAAK,MAAM,GAAC;KAAG,EAAE,OAAK,WAAU;AAAC,UAAM,SAAO,KAAK;KAAK,EAAE,UAAQ,WAAU;AAAC,UAAM,YAAU,KAAK;KAAK,EAAE,SAAO,WAAU;AAAC,UAAO,KAAK,MAAM;IAAC,IAAG,SAAS,KAAE;KAAC,IAAIC;AAAE,YAAM,CAAC,MAAE,EAAE,EAAE,KAAG,UAAS,IAAE,MAAI,MAAK,IAAE,QAAMD,KAAEC;;IAAG,OAAM,SAAS,KAAE;KAAC,IAAIA;AAAE,YAAM,CAAC,MAAE,EAAE,EAAE,KAAG,UAAS,IAAE,MAAI,SAAQ,IAAE,QAAMD,KAAEC;;IAAG,CAAC;KAAE;IAAI;AAAC,GAAE,IAAE;EAAC,IAAG,SAAS,GAAE;AAAC,UAAM;IAAC,KAAI;IAAK,OAAM;IAAE;;EAAE,OAAM,SAAS,GAAE;AAAC,UAAM;IAAC,KAAI;IAAQ,OAAM;IAAE;;EAAE,EAAC,EAAE,KAAG,SAAS,GAAE;EAAC,IAAI,IAAE,EAAE,IAAI,EAAE;AAAC,MAAG,QAAM,GAAE;GAAC,IAAI,IAAE,OAAO,OAAO,EAAE;AAAC,UAAO,EAAE,MAAI,MAAK,EAAE,QAAM,GAAE,OAAO,OAAO,EAAE,EAAC,EAAE,IAAI,GAAE,EAAE,EAAC;;AAAE,SAAO;IAAG,EAAE,QAAM,SAAS,GAAE;EAAC,IAAI,IAAE,EAAE,IAAI,EAAE;AAAC,MAAG,QAAM,GAAE;GAAC,IAAI,IAAE,OAAO,OAAO,EAAE;AAAC,UAAO,EAAE,MAAI,SAAQ,EAAE,QAAM,GAAE,OAAO,OAAO,EAAE,EAAC,EAAE,IAAI,GAAE,EAAE,EAAC;;AAAE,SAAO;IAAG,EAAE,WAAS,SAAS,GAAE;AAAC,SAAO,QAAM,KAAG,aAAW,EAAE;IAAgB,EAAE,gBAAc,SAAS,GAAE;AAAC,MAAG;AAAC,UAAO,EAAE,GAAG,GAAG,CAAC;WAAOD,KAAE;AAAC,UAAO,EAAE,MAAMA,IAAE;;IAAG,EAAE,cAAY,SAAS,GAAE;AAAC,MAAG;AAAC,UAAO,QAAQ,QAAQ,SAAS,GAAE,GAAE;AAAC,QAAG;KAAC,IAAI,IAAE,QAAQ,QAAQ,EAAE,CAAC,KAAK,SAAS,KAAE;AAAC,aAAO,EAAE,GAAGA,IAAE;OAAE;aAAOA,KAAE;AAAC,YAAO,EAAEA,IAAE;;AAAC,WAAO,KAAG,EAAE,OAAK,EAAE,KAAK,KAAK,GAAE,EAAE,GAAC;KAAG,GAAE,SAAS,KAAE;AAAC,WAAO,EAAE,MAAMA,IAAE;KAAE,CAAC;WAAOA,KAAE;AAAC,UAAO,QAAQ,OAAOA,IAAE;;IAAG,EAAE,aAAW,SAAS,GAAE,GAAE;AAAC,SAAO,EAAE,SAAS,EAAE;IAAE,EAAE,MAAI,SAAS,GAAE;AAAC,OAAI,IAAI,GAAE,IAAE,EAAE,QAAO,IAAE,EAAE,GAAG,EAAE,CAAC,EAAC,IAAE,GAAE,IAAE,WAAU;AAAC,OAAG,KAAG,EAAE,QAAM,EAAC,GAAE,GAAE;GAAC,IAAIC,MAAE,EAAE;AAAG,WAAMA,QAAI,IAAE,EAAE,QAAQ,SAAS,KAAE;AAAC,WAAOA,IAAE,IAAI,SAAS,KAAE;AAAC,YAAOD,IAAE,KAAKC,IAAE,EAACD;MAAG;KAAE,GAAE;MAAO,KAAG,IAAE,GAAG,CAAC,QAAO,EAAE;IAAG,EAAE,cAAY,SAAS,GAAE;EAAC,IAAI,IAAE,EAAE,EAAE;AAAC,SAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,SAAS,GAAE;AAAC,UAAO,OAAO,YAAY,EAAE,GAAE,EAAE,CAAC;IAAE;IAAE,EAAE,SAAO,SAAS,GAAE,GAAE,GAAE;AAAC,SAAO,EAAE,QAAM,EAAE,QAAM,EAAE,CAAC,EAAE,SAAS,IAAE,CAAC,EAAE,SAAS,KAAG,EAAE,CAAC,EAAE,MAAM,IAAE,CAAC,EAAE,MAAM,KAAG,EAAE,EAAE,KAAK,EAAC,EAAE,KAAK,CAAC;IAAG,EAAE,WAAS,SAAS,GAAE;AAAC,SAAM,SAAO,EAAE,MAAI,EAAE,GAAG,EAAE,MAAM,GAAC,EAAE,MAAM,EAAE,MAAM;IAAE,EAAE,UAAU,iBAAe;CAAS,IAAI,IAAE,EAAE,WAAU,IAAE,GAAE,IAAE,SAAS,GAAE,GAAE;AAAC,SAAO,MAAI,IAAE,IAAE,IAAE,IAAE,IAAE;IAAI,IAAE;EAAC,WAAU;EAAK,MAAK,MAAM;EAAK,IAAG,MAAM;EAAG,SAAQ,MAAM;EAAQ,SAAQ,SAAS,GAAE,GAAE;AAAC,QAAI,IAAI,IAAE,IAAG,EAAE,IAAE,EAAE,SAAQ;IAAC,IAAI,IAAE,EAAE,EAAE,GAAG;AAAC,QAAG,EAAE,QAAQ,CAAC,QAAO;;AAAE,UAAO,EAAE,MAAM;;EAAE,WAAU,SAAS,GAAE,GAAE;GAAC,IAAI,IAAE,EAAE;AAAC,UAAO,EAAE,QAAQ,SAAS,KAAE;IAAC,IAAI,IAAE,EAAEA,IAAE;AAAC,MAAE,QAAQ,IAAE,EAAE,KAAK,EAAE,KAAK,CAAC;KAAE,EAAC;;EAAG,MAAK,SAAS,GAAE,GAAE;AAAC,QAAI,IAAI,IAAE,IAAG,EAAE,IAAE,EAAE,SAAQ;IAAC,IAAI,IAAE,EAAE;AAAG,QAAG,EAAE,EAAE,CAAC,QAAO,EAAE,KAAK,EAAE;;AAAC,UAAO,EAAE,MAAM;;EAAE,WAAU,SAAS,GAAE,GAAE;AAAC,QAAI,IAAI,IAAE,IAAG,EAAE,IAAE,EAAE,QAAQ,KAAG,EAAE,EAAE,GAAG,CAAC,QAAO,EAAE,KAAK,EAAE;AAAC,UAAO,EAAE,MAAM;;EAAE,gBAAe,SAAS,GAAE,GAAE,GAAE;AAAC,OAAG,KAAK,MAAI,MAAI,IAAE,IAAG,MAAI,EAAE,OAAO,QAAM;AAAG,QAAI,IAAI,IAAE,GAAE,IAAE,EAAE,SAAO,KAAI;IAAC,IAAI,IAAE,KAAG,IAAE,KAAG,IAAE;AAAE,QAAG,MAAI,KAAG,MAAI,EAAE,QAAO;IAAE,IAAI,IAAE,EAAE,GAAE,EAAE,GAAG;AAAC,QAAG,MAAI,EAAE,QAAO;AAAE,QAAE,IAAE,IAAE,IAAE,IAAE,MAAI,IAAE;;;EAAK,OAAM,SAAS,GAAE;AAAC,QAAI,IAAI,IAAE,EAAE,QAAO,IAAE,MAAM,EAAE,EAAC,IAAE,MAAM,EAAE,EAAC,IAAE,IAAG,EAAE,IAAE,IAAG;IAAC,IAAI,IAAE,EAAE;AAAG,SAAK,MAAI,MAAI,EAAE,KAAG,EAAE,IAAG,EAAE,KAAG,EAAE;;AAAI,UAAM,CAAC,GAAE,EAAE;;EAAE,KAAI;EAAE,EAAC,IAAE,GAAG,EAAC,IAAe,2BAAU;EAAC,SAAS,IAAG;EAAE,IAAI,IAAE,EAAE;AAAU,SAAO,EAAE,MAAI,SAAS,KAAE;AAAC,UAAO,SAAO,KAAG,SAAO,IAAE,OAAK,EAAE,KAAKA,IAAE,KAAK,MAAM,CAAC;KAAE,EAAE,UAAQ,SAAS,KAAE;AAAC,UAAO,SAAO,KAAG,SAAO,IAAE,OAAKA,IAAE,KAAK,MAAM;KAAE,EAAE,gBAAc,SAAS,KAAE;AAAC,UAAO,KAAK,IAAI,SAAS,KAAE;AAAC,WAAOC,IAAE,MAAM;KAAC,IAAG,SAAS,KAAE;AAAC,aAAOD,IAAEC,IAAE;;KAAE,OAAM,WAAU;AAAC,aAAOA;;KAAG,CAAC;KAAE;KAAE,EAAE,mBAAiB,SAAS,KAAE;AAAC,UAAO,KAAK,IAAI,SAAS,KAAE;AAAC,WAAOA,IAAE,MAAM;KAAC,OAAM,SAAS,KAAE;AAAC,aAAOD,IAAEC,IAAE;;KAAE,IAAG,WAAU;AAAC,aAAOA;;KAAG,CAAC;KAAE;KAAE,EAAE,QAAM,SAAS,KAAE;AAAC,UAAO,KAAK,IAAI,SAAS,KAAE;AAAC,WAAOA,IAAE,MAAM;KAAC,IAAG,SAAS,KAAE;AAAC,aAAO,EAAE,GAAGD,IAAEC,IAAE,CAAC;;KAAE,OAAM,WAAU;AAAC,aAAOA;;KAAG,CAAC;KAAE;KAAE,EAAE,WAAS,SAAS,KAAE;AAAC,UAAO,KAAK,IAAI,SAAS,KAAE;AAAC,WAAOA,IAAE,MAAM;KAAC,IAAG,WAAU;AAAC,aAAOA;;KAAG,OAAM,SAAS,KAAE;AAAC,aAAO,EAAE,MAAMD,IAAEC,IAAE,CAAC;;KAAE,CAAC;KAAE;KAAE,EAAE,YAAU,SAAS,KAAE;AAAC,UAAO,KAAK,QAAQ,SAAS,KAAE;AAAC,WAAOA,IAAE,MAAM;KAAC,IAAG,SAAS,KAAE;AAAC,aAAOD,IAAEC,IAAE;;KAAE,OAAM,WAAU;AAAC,aAAO,EAAE,KAAKA,IAAE;;KAAE,CAAC;KAAE;KAAE,EAAE,eAAa,SAAS,KAAE;AAAC,UAAO,KAAK,QAAQ,SAAS,KAAE;AAAC,WAAOA,IAAE,MAAM;KAAC,IAAG,WAAU;AAAC,aAAO,EAAE,KAAKA,IAAE;;KAAE,OAAM,SAAS,KAAE;AAAC,aAAOD,IAAEC,IAAE;;KAAE,CAAC;KAAE;KAAE,EAAE,MAAI,WAAU;AAAC,UAAO,KAAK;KAAO,EAAE,iBAAe,SAAS,KAAE;AAAC,UAAO,SAAO,KAAG,SAAO,IAAED,MAAE,KAAK;KAAO,EAAE,QAAM,SAAS,KAAE;AAAC,UAAO,SAAO,KAAG,SAAO,IAAEA,MAAE,KAAK;KAAO,EAAE,QAAM,SAAS,KAAE,KAAE;AAAC,UAAO,SAAO,KAAG,SAAO,IAAEA,MAAEC,IAAE,KAAK,MAAM;KAAE,EAAE,QAAM,SAAS,KAAE;AAAC,UAAO,SAAO,IAAED,IAAE,UAAU,GAAC,SAAO,IAAEA,IAAE,SAAS,GAACA,IAAE,KAAK,KAAK,MAAM;KAAE,EAAE,MAAI,SAAS,KAAE;AAAC,UAAOA,IAAE,KAAK,EAAC;KAAM,EAAE,WAAS,WAAU;AAAC,UAAO,SAAO,KAAG,SAAO,IAAE,EAAE,MAAM,GAAC,EAAE,KAAK,KAAK,MAAM;KAAE,EAAE,SAAO,WAAU;AAAC,UAAO,SAAO,KAAG,SAAO;KAAG,EAAE,YAAU,WAAU;AAAC,UAAO,SAAO;KAAG,EAAE,aAAW,WAAU;AAAC,UAAO,SAAO;KAAG,EAAE,SAAO,WAAU;AAAC,UAAO,KAAK,MAAM;IAAC,UAAS,WAAU;KAAC,IAAIA;AAAE,YAAM,CAAC,MAAE,EAAE,EAAE,KAAG,aAAY,IAAE,MAAI,YAAWA;;IAAG,SAAQ,WAAU;KAAC,IAAIA;AAAE,YAAM,CAAC,MAAE,EAAE,EAAE,KAAG,aAAY,IAAE,MAAI,WAAUA;;IAAG,MAAK,SAAS,KAAE;KAAC,IAAIC;AAAE,YAAM,CAAC,MAAE,EAAE,EAAE,KAAG,aAAY,IAAE,MAAI,QAAO,IAAE,QAAMD,KAAEC;;IAAG,CAAC;KAAE;IAAI;AAAC,GAAE,IAAE;EAAC,MAAK,SAAS,GAAE;AAAC,UAAM;IAAC,KAAI;IAAO,OAAM;IAAE;;EAAE,UAAS,EAAC,KAAI,YAAW;EAAC,SAAQ,EAAC,KAAI,WAAU;EAAC,EAAC,EAAE,OAAK,SAAS,GAAE;EAAC,IAAI,IAAE,EAAE,IAAI,EAAE;AAAC,MAAG,QAAM,GAAE;GAAC,IAAI,IAAE,OAAO,OAAO,EAAE;AAAC,UAAO,EAAE,MAAI,QAAO,EAAE,QAAM,GAAE,OAAO,OAAO,EAAE,EAAC,EAAE,IAAI,GAAE,EAAE,EAAC;;AAAE,SAAO;IAAG,EAAE,UAAQ,WAAU;AAAC,SAAO;IAAG,EAAE,WAAS,WAAU;AAAC,SAAO;IAAG,EAAE,MAAI,SAAS,GAAE;AAAC,OAAI,IAAI,GAAE,IAAE,EAAE,QAAO,IAAE,EAAE,KAAK,EAAE,CAAC,EAAC,IAAE,GAAE,IAAE,WAAU;AAAC,OAAG,KAAG,EAAE,QAAM,EAAC,GAAE,GAAE;GAAC,IAAIA,MAAE,EAAE;AAAG,WAAMA,QAAI,IAAE,EAAE,QAAQ,SAAS,KAAE;AAAC,WAAOA,IAAE,IAAI,SAAS,KAAE;AAAC,YAAOD,IAAE,KAAKC,IAAE,EAACD;MAAG;KAAE,GAAE;MAAO,KAAG,IAAE,GAAG,CAAC,QAAO,EAAE;IAAG,EAAE,cAAY,SAAS,GAAE;EAAC,IAAI,IAAE,EAAE,EAAE;AAAC,SAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,SAAS,GAAE;AAAC,UAAO,OAAO,YAAY,EAAE,GAAE,EAAE,CAAC;IAAE;IAAE,EAAE,SAAO,SAAS,GAAE,GAAE,GAAE;AAAC,SAAM,WAAS,EAAE,OAAK,WAAS,EAAE,MAAI,EAAE,EAAE,OAAM,EAAE,MAAM,GAAC,EAAE,QAAM,EAAE;IAAK,EAAE,cAAY,SAAS,GAAE;AAAC,SAAO,QAAM,KAAG,gBAAc,EAAE;IAAgB,EAAE,WAAS,SAAS,GAAE;AAAC,SAAM,eAAa,EAAE,MAAI,EAAE,UAAU,GAAC,cAAY,EAAE,MAAI,EAAE,SAAS,GAAC,EAAE,KAAK,EAAE,MAAM;IAAE,EAAE,UAAU,iBAAe;CAAY,IAAI,GAAE,IAAE,EAAE,WAAU,KAAG,CAAC,IAAE,OAAO,OAAO,EAAE,EAAE,MAAI,WAAU,OAAO,OAAO,EAAE,EAAC,IAAG,IAAE,WAAU;EAAC,IAAI,IAAE,OAAO,OAAO,EAAE;AAAC,SAAO,EAAE,MAAI,YAAW,OAAO,OAAO,EAAE,EAAC;IAAI,EAAC,IAAE,GAAE,IAAe,2BAAU;EAAC,SAAS,IAAG;AAAC,QAAK,SAAO,KAAK,GAAE,KAAK,SAAO,EAAC,KAAI,WAAU;;AAAC,IAAE,cAAY,SAAS,KAAE;AAAC,UAAO,EAAE,KAAK,SAAS,KAAE;AAAC,QAAE,KAAK,SAAS,KAAE;AAAC,YAAOC,IAAE,EAAE,GAAGD,IAAE,CAAC;OAAE,SAAS,KAAE;AAAC,YAAOC,IAAE,EAAE,MAAMD,IAAE,CAAC;MAAE;KAAE;;EAAE,IAAI,IAAE,EAAE;AAAU,SAAO,EAAE,YAAU,SAAS,KAAE;GAAC,IAAIC;AAAE,iBAAY,KAAK,OAAO,OAAK,KAAK,OAAO,mBAAiB,SAAO,MAAE,KAAK,OAAO,oBAAkBA,MAAE,EAAE,EAAC,KAAK,OAAO,iBAAiB,KAAKD,IAAE,IAAE,eAAa,KAAK,OAAO,OAAKA,IAAE,KAAK,OAAO,MAAM;KAAE,EAAE,WAAS,SAAS,KAAE;GAAC,IAAIC;AAAE,iBAAY,KAAK,OAAO,OAAK,KAAK,OAAO,kBAAgB,SAAO,MAAE,KAAK,OAAO,mBAAiBA,MAAE,EAAE,EAAC,KAAK,OAAO,gBAAgB,KAAKD,IAAE,IAAE,gBAAc,KAAK,OAAO,OAAKA,KAAG;KAAE,EAAE,SAAO,WAAU;AAAC,OAAG,cAAY,KAAK,OAAO,KAAI;IAAC,IAAIA,MAAE,KAAK,QAAOC,MAAED,IAAE,QAAO,IAAEA,IAAE;AAAgB,SAAK,SAAO,EAAC,KAAI,aAAY,EAAOC,OAAM,EAAO,GAAK,QAAQ,SAAS,KAAE;AAAC,YAAOD,KAAG;MAAE;;KAAG,EAAE,MAAI,SAAS,KAAE,KAAE;GAAC,IAAI,IAAE;AAAK,QAAK,MAAIC,QAAI,MAAE,CAAC;GAAG,IAAI,IAAE,EAAE,KAAK,SAAS,KAAE;AAAC,QAAG,EAAE,UAAU,SAAS,KAAE;AAAC,SAAED,IAAEC,IAAE,CAAC;MAAE,EAACA,IAAE,QAAO,WAAU;AAAC,OAAE,QAAQ;;KAAG;AAAC,UAAO,KAAK,SAAS,WAAU;AAAC,MAAE,QAAQ;KAAE,EAAC;KAAG,EAAE,OAAK,SAAS,KAAE;AAAC,UAAO,KAAK,UAAUD,IAAE,EAAC;KAAM,EAAE,UAAQ,SAAS,KAAE,KAAE;GAAC,IAAI,IAAE;AAAK,QAAK,MAAIC,QAAI,MAAE,CAAC;GAAG,IAAI,IAAE,EAAE,KAAK,SAAS,GAAE;AAAC,QAAG,EAAE,UAAU,SAAS,KAAE;KAAC,IAAIC,MAAEF,IAAEC,IAAE;AAAC,SAAE,UAAU,EAAE,EAACC,IAAE,SAAS,WAAU;AAAC,aAAO,EAAE,QAAQ;OAAE;MAAE,EAACD,IAAE,QAAO,WAAU;AAAC,OAAE,QAAQ;;KAAG;AAAC,UAAO,KAAK,SAAS,WAAU;AAAC,MAAE,QAAQ;KAAE,EAAC;KAAG,EAAE,MAAI,SAAS,KAAE;AAAC,UAAO,KAAK,UAAUD,IAAE,EAAC;KAAM,EAAE,QAAM,SAAS,KAAE;AAAC,UAAO,KAAK,UAAU,SAAS,KAAE;AAAC,QAAE,MAAM;KAAC,IAAG,SAAS,KAAE;AAAC,aAAOA,IAAEC,IAAE;;KAAE,OAAM,WAAU;KAAG,CAAC;KAAE,EAAC;KAAM,EAAE,WAAS,SAAS,KAAE;AAAC,UAAO,KAAK,UAAU,SAAS,KAAE;AAAC,QAAE,MAAM;KAAC,IAAG,WAAU;KAAG,OAAM,SAAS,KAAE;AAAC,aAAOD,IAAEC,IAAE;;KAAE,CAAC;KAAE,EAAC;KAAM,EAAE,gBAAc,SAAS,KAAE,KAAE;AAAC,UAAO,KAAK,MAAIA,QAAI,MAAE,CAAC,IAAG,KAAK,IAAI,SAAS,KAAE;AAAC,WAAOA,IAAE,MAAM;KAAC,IAAG,SAAS,KAAE;AAAC,aAAOD,IAAEC,IAAE;;KAAE,OAAM,WAAU;AAAC,aAAOA;;KAAG,CAAC;MAAEA,IAAE;KAAE,EAAE,mBAAiB,SAAS,KAAE,KAAE;AAAC,UAAO,KAAK,MAAIA,QAAI,MAAE,CAAC,IAAG,KAAK,IAAI,SAAS,KAAE;AAAC,WAAOA,IAAE,MAAM;KAAC,OAAM,SAAS,KAAE;AAAC,aAAOD,IAAEC,IAAE;;KAAE,IAAG,WAAU;AAAC,aAAOA;;KAAG,CAAC;MAAEA,IAAE;KAAE,EAAE,QAAM,SAAS,KAAE,KAAE;AAAC,UAAO,KAAK,MAAIA,QAAI,MAAE,CAAC,IAAG,KAAK,IAAI,SAAS,KAAE;AAAC,WAAOA,IAAE,MAAM;KAAC,IAAG,SAAS,KAAE;AAAC,aAAO,EAAE,GAAGD,IAAEC,IAAE,CAAC;;KAAE,OAAM,WAAU;AAAC,aAAOA;;KAAG,CAAC;MAAEA,IAAE;KAAE,EAAE,WAAS,SAAS,KAAE,KAAE;AAAC,UAAO,KAAK,MAAIA,QAAI,MAAE,CAAC,IAAG,KAAK,IAAI,SAAS,KAAE;AAAC,WAAOA,IAAE,MAAM;KAAC,IAAG,WAAU;AAAC,aAAOA;;KAAG,OAAM,SAAS,KAAE;AAAC,aAAO,EAAE,MAAMD,IAAEC,IAAE,CAAC;;KAAE,CAAC;MAAEA,IAAE;KAAE,EAAE,YAAU,SAAS,KAAE,KAAE;AAAC,UAAO,KAAK,MAAIA,QAAI,MAAE,CAAC,IAAG,KAAK,QAAQ,SAAS,KAAE;AAAC,WAAOA,IAAE,MAAM;KAAC,IAAG,SAAS,KAAE;AAAC,aAAOD,IAAEC,IAAE;;KAAE,OAAM,WAAU;AAAC,aAAO,EAAE,MAAMA,IAAE;;KAAE,CAAC;MAAEA,IAAE;KAAE,EAAE,eAAa,SAAS,KAAE,KAAE;AAAC,UAAO,KAAK,MAAIA,QAAI,MAAE,CAAC,IAAG,KAAK,QAAQ,SAAS,KAAE;AAAC,WAAOA,IAAE,MAAM;KAAC,IAAG,WAAU;AAAC,aAAO,EAAE,MAAMA,IAAE;;KAAE,OAAM,SAAS,KAAE;AAAC,aAAOD,IAAEC,IAAE;;KAAE,CAAC;MAAEA,IAAE;KAAE,EAAE,YAAU,WAAU;GAAC,IAAID,MAAE;AAAK,UAAO,IAAI,QAAQ,SAAS,KAAE;AAAC,QAAE,UAAUC,IAAE;KAAE;KAAE,EAAE,kBAAgB,WAAU;GAAC,IAAID,MAAE;AAAK,UAAO,IAAI,QAAQ,SAAS,KAAE,GAAE;AAAC,QAAE,UAAU,SAAS,KAAE;AAAC,SAAE,MAAM;MAAC,IAAGC;MAAE,OAAM;MAAE,CAAC;MAAE;KAAE;KAAE;IAAI;AAAC,GAAE,OAAK,SAAS,GAAE;EAAC,IAAI,IAAE,OAAO,OAAO,EAAE;AAAC,SAAO,EAAE,SAAO,EAAC,KAAI,WAAU,EAAC,EAAE,OAAO,SAAO,EAAE,SAAS,KAAE;AAAC,OAAG,cAAY,EAAE,OAAO,KAAI;IAAC,IAAI,IAAE,EAAE,OAAO;AAAiB,MAAE,SAAO;KAAC,KAAI;KAAW,OAAMD;KAAE,EAAO,GAAK,QAAQ,SAAS,KAAE;AAAC,YAAOC,IAAED,IAAE;MAAE;;IAAG,EAAC;IAAG,EAAE,WAAS,SAAS,GAAE;AAAC,SAAO,QAAM,KAAG,OAAO,UAAU,cAAc,KAAK,GAAE,EAAE;IAAE,EAAE,QAAM,SAAS,GAAE;EAAC,IAAI,IAAE,OAAO,OAAO,EAAE;AAAC,SAAO,EAAE,SAAO;GAAC,KAAI;GAAW,OAAM;GAAE,EAAC;IAAG,EAAE,MAAI,SAAS,GAAE,GAAE;AAAC,OAAK,MAAI,MAAI,IAAE,CAAC;AAAG,OAAI,IAAI,GAAE,IAAE,EAAE,QAAO,IAAE,EAAE,MAAM,EAAE,CAAC,EAAC,IAAE,GAAE,IAAE,WAAU;AAAC,OAAG,KAAG,EAAE,QAAM,EAAC,GAAE,GAAE;GAAC,IAAIE,MAAE,EAAE;AAAG,WAAMA,QAAI,IAAE,EAAE,QAAQ,SAAS,KAAE;AAAC,WAAOA,IAAE,IAAI,SAAS,KAAE;AAAC,YAAOF,IAAE,KAAKC,IAAE,EAACD;OAAG,EAAE;MAAE,EAAE,GAAE;MAAO,KAAG,IAAE,GAAG,CAAC,QAAO,EAAE;IAAG,EAAE,cAAY,SAAS,GAAE;EAAC,IAAI,IAAE,EAAE,EAAE;AAAC,SAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,SAAS,GAAE;AAAC,UAAO,OAAO,YAAY,EAAE,GAAE,EAAE,CAAC;IAAE;IAAE,EAAE,OAAK,SAAS,GAAE;AAAC,SAAO,EAAE,KAAK,SAAS,GAAE;GAAC,IAAI,IAAE,WAAW,WAAU;AAAC,WAAO,GAAG;MAAE,EAAE;AAAC,UAAO,WAAU;AAAC,WAAO,aAAa,EAAE;;IAAG;IAAE,EAAE,QAAM,SAAS,GAAE,GAAE;EAAC,IAAI,IAAE,EAAE;AAAI,SAAO,SAASC,IAAE,GAAE;AAAC,UAAO,EAAE,EAAE,CAAC,aAAa,SAAS,KAAE;AAAC,WAAO,IAAE,IAAE,IAAEA,IAAE,IAAE,EAAE,GAAC,EAAE,MAAM,EAAE,MAAMD,IAAE,CAAC;KAAE;IAAE,EAAE;IAAE,EAAE,aAAW,SAAS,GAAE,GAAE;EAAC,IAAI,IAAE,EAAE;AAAY,SAAO,EAAE,KAAK,SAAS,KAAE;GAAC,IAAI,IAAE,MAAM,EAAE,OAAO,EAAC,IAAE,IAAE,GAAE,IAAE;AAAE,SAAI,EAAE,SAAO,EAAE,MAAM,GAAE,EAAE,CAAC,QAAQ,SAASE,IAAE,GAAE,GAAE;AAAC,WAAO,GAAG,CAAC,IAAI,SAAS,KAAE;AAAC,SAAG,EAAE,KAAGC,KAAE,EAAE,IAAE,EAAE,QAAO;MAAC,IAAI,IAAE,EAAE,EAAE;AAAG,cAAM,KAAGD,IAAE,GAAE,EAAE;WAAM,KAAE,EAAE;MAAE;KAAE,GAACD,IAAE,EAAE,CAAC;IAAE;;CAAE,IAAI,IAAE,OAAO,OAAO,MAAK,OAAO,0BAA0B,EAAE,UAAU,CAAC,EAAC,IAAE,GAAE,IAAE,EAAC,MAAK,WAAU;EAAC,IAAI;AAAE,SAAM,CAAC,EAAE,KAAK,SAAS,GAAE;AAAC,OAAE;IAAG,EAAC,EAAE;IAAE,EAAC,IAAE,OAAO,eAAe;CAAC,SAAS,IAAG;AAAC,SAAO,IAAE,OAAO,SAAO,OAAO,OAAO,MAAM,GAAC,SAAS,GAAE;AAAC,QAAI,IAAI,IAAE,GAAE,IAAE,UAAU,QAAO,KAAI;IAAC,IAAI,IAAE,UAAU;AAAG,SAAI,IAAI,KAAK,EAAE,QAAO,UAAU,eAAe,KAAK,GAAE,EAAE,KAAG,EAAE,KAAG,EAAE;;AAAI,UAAO;KAAG,EAAE,MAAM,MAAK,UAAU;;CAAC,IAAI,IAAE;EAAC,WAAU;EAAK,QAAO,SAAS,GAAE,GAAE;AAAC,UAAO,KAAK,UAAU,GAAE,SAAS,KAAE,KAAE;AAAC,WAAO,QAAMA,MAAEA,MAAE,YAAU,OAAOA,IAAE,KAAG,EAAE,EAAE,EAACA,KAAE,EAAC,gBAAeA,IAAE,IAAG,CAAC,GAACA;MAAG,EAAE;;EAAE,QAAO,SAAS,GAAE;AAAC,UAAO,KAAK,MAAM,GAAE,SAAS,KAAE,GAAE;AAAC,WAAO,QAAM,IAAE,IAAE,aAAW,EAAE,iBAAe,EAAE,SAAS,EAAE,GAAC,aAAW,EAAE,iBAAe,EAAE,SAAS,EAAE,GAAC,gBAAc,EAAE,iBAAe,EAAE,SAAS,EAAE,GAAC;KAAG;;EAAE;AAAC,SAAQ,QAAM,GAAE,QAAQ,YAAU,GAAE,QAAQ,WAAS,GAAE,QAAQ,OAAK,GAAE,QAAQ,SAAO,GAAE,QAAQ,OAAK,SAAS,GAAE;EAAC,IAAI,IAAE,EAAC,UAAS,GAAE;AAAC,SAAM,EAAC,KAAI,WAAU;AAAC,UAAO,EAAE,aAAW,MAAI,EAAE,WAAS,GAAG,GAAE,EAAE;KAAU;IAAE,QAAQ,SAAO,GAAE,QAAQ,SAAO,GAAE,QAAQ,aAAW;;;;;;;;;;ACI74c;;;;;;;;;;;;;;;;;;;;;;;;;;;ACiFO,8BAAMG,oBAEb;CACE,AAAQ,SAA4C;CAEpD,YACE,AACiBC,SACjB;EADiB;;;;;;;;;CAUnB,MAAM,eAA8B;EAClC,MAAM,eAAe,MAAM,gBAAgB,OAAO,KAAK,QAAQ;AAC/D,MAAI,aAAa,SAAS,CACxB,OAAM,IAAI,MAAM,iCAAiC,aAAa,MAAM,UAAU;AAEhF,OAAK,SAAS,aAAa,KAAK;;;;;;;;;CAUlC,MAAM,kBAAiC;AACrC,MAAI,KAAK,QAAQ;AACf,SAAM,KAAK,OAAO,OAAO,CAAC,iBAAiB;AAC3C,QAAK,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BlB,QACE,eACA,SACA,SAC+D;AAC/D,MAAI,CAAC,KAAK,OACR,QAAOC,oBAAO,MACZC,oBAAO,MACL,IAAI,eACF,oFACD,CACF,CACF;AAGH,SAAO,KAAK,OAAO,QAAQ,eAAe,SAAS,QAAQ;;;;CA9E9D,YAAY;oBAOR,OAAO,qBAAqB;;;;;;;ACC1B,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,MAAMC,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":["t","n","r","i","AmqpClientService","Future","Result","AmqpClientModule"],"sources":["../../../node_modules/.pnpm/@swan-io+boxed@3.2.1_typescript@5.9.3/node_modules/@swan-io/boxed/dist/Boxed.js","../src/client.module-definition.ts","../src/client.service.ts","../src/client.module.ts"],"sourcesContent":["var t=function(t){return Object.keys(t)},n=function(t){return Object.values(t)},r=Object.prototype.hasOwnProperty,e={__proto__:null,fromEntries:Object.fromEntries,entries:function(t){return Object.entries(t)},keys:t,values:n,fromOptional:function(t){var n={};for(var e in t)if(r.call(t,e)){var u=t[e];if(void 0===u)continue;u.isSome()&&(n[e]=u.get())}return n}},u=new WeakMap,o=\"function\"==typeof WeakRef?WeakRef:/*#__PURE__*/function(){function t(t){u.set(this,t)}return t.prototype.deref=function(){return u.get(this)},t}(),i=function(){var t=new Map,n=\"function\"==typeof FinalizationRegistry?new FinalizationRegistry(function(n){t.delete(n)}):void 0;return{set:function(r,e){t.set(r,new o(e)),void 0!==n&&n.register(e,r)},get:function(n){var r=t.get(n);if(void 0!==r)return r.deref()}}},a=Symbol.for(\"__boxed_type__\"),c=function(t,n){for(var r=Math.min(t.length,n.length),e=Array(r),u=-1;++u<r;)e[u]=[t[u],n[u]];return e},f=i(),s=/*#__PURE__*/function(){function t(){}t.fromPredicate=function(t,n){return n(t)?p.Some(t):v};var n=t.prototype;return n.map=function(t){return this===v?this:p.Some(t(this.value))},n.flatMap=function(t){return this===v?this:t(this.value)},n.filter=function(t){return this===v||t(this.value)?this:v},n.get=function(){return this.value},n.getWithDefault=function(t){return this===v?t:this.value},n.getOr=function(t){return this===v?t:this.value},n.orElse=function(t){return this===v?t:this},n.mapOr=function(t,n){return this===v?t:n(this.value)},n.match=function(t){return this===v?t.None():t.Some(this.value)},n.tap=function(t){return t(this),this},n.tapSome=function(t){return this===v||t(this.value),this},n.toUndefined=function(){if(this!==v)return this.value},n.toNull=function(){return this===v?null:this.value},n.toResult=function(t){return this.match({Some:function(t){return k.Ok(t)},None:function(){return k.Error(t)}})},n.isSome=function(){return this!==v},n.isNone=function(){return this===v},n.toJSON=function(){return this.match({None:function(){var t;return(t={})[a]=\"Option\",t.tag=\"None\",t},Some:function(t){var n;return(n={})[a]=\"Option\",n.tag=\"Some\",n.value=t,n}})},t}();s.P={Some:function(t){return{tag:\"Some\",value:t}},None:{tag:\"None\"}},s.Some=function(t){var n=f.get(t);if(null==n){var r=Object.create(h);return r.tag=\"Some\",r.value=t,Object.freeze(r),f.set(t,r),r}return n},s.None=function(){return v},s.isOption=function(t){return null!=t&&\"Option\"===t.__boxed_type__},s.fromNullable=function(t){return null==t?v:p.Some(t)},s.fromNull=function(t){return null===t?v:p.Some(t)},s.fromUndefined=function(t){return void 0===t?v:p.Some(t)},s.all=function(t){for(var n,r=t.length,e=p.Some([]),u=0,o=function(){if(u>=r)return{v:e};var n=t[u];null!=n&&(e=e.flatMap(function(t){return n.map(function(n){return t.push(n),t})})),u++};;)if(n=o())return n.v},s.allFromDict=function(r){var e=t(r);return p.all(n(r)).map(function(t){return Object.fromEntries(c(e,t))})},s.equals=function(t,n,r){return t.isSome()&&n.isSome()?r(t.get(),n.get()):t.tag===n.tag},s.fromJSON=function(t){return\"None\"===t.tag?p.None():p.Some(t.value)},s.prototype.__boxed_type__=\"Option\";var l,h=s.prototype,v=((l=Object.create(h)).tag=\"None\",Object.freeze(l),l),p=s,m=i(),g=i(),O=/*#__PURE__*/function(){function t(){}var n=t.prototype;return n.map=function(t){return\"Ok\"===this.tag?k.Ok(t(this.value)):this},n.mapError=function(t){return\"Ok\"===this.tag?this:k.Error(t(this.error))},n.flatMap=function(t){return\"Ok\"===this.tag?t(this.value):this},n.flatMapError=function(t){return\"Ok\"===this.tag?this:t(this.error)},n.get=function(){return this.value},n.getError=function(){return this.error},n.getWithDefault=function(t){return\"Ok\"===this.tag?this.value:t},n.getOr=function(t){return\"Ok\"===this.tag?this.value:t},n.mapOr=function(t,n){return\"Error\"===this.tag?t:n(this.value)},n.match=function(t){return\"Ok\"===this.tag?t.Ok(this.value):t.Error(this.error)},n.tap=function(t){return t(this),this},n.tapOk=function(t){return\"Ok\"===this.tag&&t(this.value),this},n.tapError=function(t){return\"Error\"===this.tag&&t(this.error),this},n.toOption=function(){return\"Ok\"===this.tag?p.Some(this.value):v},n.isOk=function(){return\"Ok\"===this.tag},n.isError=function(){return\"Error\"===this.tag},n.toJSON=function(){return this.match({Ok:function(t){var n;return(n={})[a]=\"Result\",n.tag=\"Ok\",n.value=t,n},Error:function(t){var n;return(n={})[a]=\"Result\",n.tag=\"Error\",n.error=t,n}})},t}();O.P={Ok:function(t){return{tag:\"Ok\",value:t}},Error:function(t){return{tag:\"Error\",error:t}}},O.Ok=function(t){var n=m.get(t);if(null==n){var r=Object.create(_);return r.tag=\"Ok\",r.value=t,Object.freeze(r),m.set(t,r),r}return n},O.Error=function(t){var n=g.get(t);if(null==n){var r=Object.create(_);return r.tag=\"Error\",r.error=t,Object.freeze(r),g.set(t,r),r}return n},O.isResult=function(t){return null!=t&&\"Result\"===t.__boxed_type__},O.fromExecution=function(t){try{return k.Ok(t())}catch(t){return k.Error(t)}},O.fromPromise=function(t){try{return Promise.resolve(function(n,r){try{var e=Promise.resolve(t).then(function(t){return k.Ok(t)})}catch(t){return r(t)}return e&&e.then?e.then(void 0,r):e}(0,function(t){return k.Error(t)}))}catch(t){return Promise.reject(t)}},O.fromOption=function(t,n){return t.toResult(n)},O.all=function(t){for(var n,r=t.length,e=k.Ok([]),u=0,o=function(){if(u>=r)return{v:e};var n=t[u];null!=n&&(e=e.flatMap(function(t){return n.map(function(n){return t.push(n),t})})),u++};;)if(n=o())return n.v},O.allFromDict=function(r){var e=t(r);return k.all(n(r)).map(function(t){return Object.fromEntries(c(e,t))})},O.equals=function(t,n,r){return t.tag===n.tag&&(!(!t.isError()||!n.isError())||!(!t.isOk()||!n.isOk())&&r(t.get(),n.get()))},O.fromJSON=function(t){return\"Ok\"===t.tag?k.Ok(t.value):k.Error(t.error)},O.prototype.__boxed_type__=\"Result\";var _=O.prototype,k=O,d=function(t,n){return t===n?0:t>n?1:-1},y={__proto__:null,from:Array.from,of:Array.of,isArray:Array.isArray,findMap:function(t,n){for(var r=-1;++r<t.length;){var e=n(t[r]);if(e.isSome())return e}return p.None()},filterMap:function(t,n){var r=[];return t.forEach(function(t){var e=n(t);e.isSome()&&r.push(e.get())}),r},find:function(t,n){for(var r=-1;++r<t.length;){var e=t[r];if(n(e))return p.Some(e)}return p.None()},findIndex:function(t,n){for(var r=-1;++r<t.length;)if(n(t[r]))return p.Some(r);return p.None()},binarySearchBy:function(t,n,r){if(void 0===r&&(r=d),0===t.length)return-1;for(var e=0,u=t.length-1;;){var o=e+(u-e)/2|0;if(o===e||o===u)return u;var i=r(n,t[o]);if(0===i)return o;i>0?e=o:i<0&&(u=o)}},unzip:function(t){for(var n=t.length,r=Array(n),e=Array(n),u=-1;++u<n;){var o=t[u];void 0!==o&&(r[u]=o[0],e[u]=o[1])}return[r,e]},zip:c},E=i(),b=/*#__PURE__*/function(){function t(){}var n=t.prototype;return n.map=function(t){return this===j||this===D?this:R.Done(t(this.value))},n.flatMap=function(t){return this===j||this===D?this:t(this.value)},n.mapOkToResult=function(t){return this.map(function(n){return n.match({Ok:function(n){return t(n)},Error:function(){return n}})})},n.mapErrorToResult=function(t){return this.map(function(n){return n.match({Error:function(n){return t(n)},Ok:function(){return n}})})},n.mapOk=function(t){return this.map(function(n){return n.match({Ok:function(n){return k.Ok(t(n))},Error:function(){return n}})})},n.mapError=function(t){return this.map(function(n){return n.match({Ok:function(){return n},Error:function(n){return k.Error(t(n))}})})},n.flatMapOk=function(t){return this.flatMap(function(n){return n.match({Ok:function(n){return t(n)},Error:function(){return R.Done(n)}})})},n.flatMapError=function(t){return this.flatMap(function(n){return n.match({Ok:function(){return R.Done(n)},Error:function(n){return t(n)}})})},n.get=function(){return this.value},n.getWithDefault=function(t){return this===j||this===D?t:this.value},n.getOr=function(t){return this===j||this===D?t:this.value},n.mapOr=function(t,n){return this===j||this===D?t:n(this.value)},n.match=function(t){return this===j?t.NotAsked():this===D?t.Loading():t.Done(this.value)},n.tap=function(t){return t(this),this},n.toOption=function(){return this===j||this===D?p.None():p.Some(this.value)},n.isDone=function(){return this!==j&&this!==D},n.isLoading=function(){return this===D},n.isNotAsked=function(){return this===j},n.toJSON=function(){return this.match({NotAsked:function(){var t;return(t={})[a]=\"AsyncData\",t.tag=\"NotAsked\",t},Loading:function(){var t;return(t={})[a]=\"AsyncData\",t.tag=\"Loading\",t},Done:function(t){var n;return(n={})[a]=\"AsyncData\",n.tag=\"Done\",n.value=t,n}})},t}();b.P={Done:function(t){return{tag:\"Done\",value:t}},NotAsked:{tag:\"NotAsked\"},Loading:{tag:\"Loading\"}},b.Done=function(t){var n=E.get(t);if(null==n){var r=Object.create(N);return r.tag=\"Done\",r.value=t,Object.freeze(r),E.set(t,r),r}return n},b.Loading=function(){return D},b.NotAsked=function(){return j},b.all=function(t){for(var n,r=t.length,e=R.Done([]),u=0,o=function(){if(u>=r)return{v:e};var n=t[u];null!=n&&(e=e.flatMap(function(t){return n.map(function(n){return t.push(n),t})})),u++};;)if(n=o())return n.v},b.allFromDict=function(r){var e=t(r);return R.all(n(r)).map(function(t){return Object.fromEntries(c(e,t))})},b.equals=function(t,n,r){return\"Done\"===t.tag&&\"Done\"===n.tag?r(t.value,n.value):t.tag===n.tag},b.isAsyncData=function(t){return null!=t&&\"AsyncData\"===t.__boxed_type__},b.fromJSON=function(t){return\"NotAsked\"===t.tag?R.NotAsked():\"Loading\"===t.tag?R.Loading():R.Done(t.value)},b.prototype.__boxed_type__=\"AsyncData\";var S,N=b.prototype,D=((S=Object.create(N)).tag=\"Loading\",Object.freeze(S),S),j=function(){var t=Object.create(N);return t.tag=\"NotAsked\",Object.freeze(t),t}(),R=b,A=/*#__PURE__*/function(){function t(){this._state=void 0,this._state={tag:\"Pending\"}}t.fromPromise=function(t){return P.make(function(n){t.then(function(t){return n(k.Ok(t))},function(t){return n(k.Error(t))})})};var n=t.prototype;return n.onResolve=function(t){var n;\"Pending\"===this._state.tag?(this._state.resolveCallbacks=null!=(n=this._state.resolveCallbacks)?n:[],this._state.resolveCallbacks.push(t)):\"Resolved\"===this._state.tag&&t(this._state.value)},n.onCancel=function(t){var n;\"Pending\"===this._state.tag?(this._state.cancelCallbacks=null!=(n=this._state.cancelCallbacks)?n:[],this._state.cancelCallbacks.push(t)):\"Cancelled\"===this._state.tag&&t()},n.cancel=function(){if(\"Pending\"===this._state.tag){var t=this._state,n=t.cancel,r=t.cancelCallbacks;this._state={tag:\"Cancelled\"},null!=n&&n(),null==r||r.forEach(function(t){return t()})}},n.map=function(t,n){var r=this;void 0===n&&(n=!1);var e=P.make(function(e){if(r.onResolve(function(n){e(t(n))}),n)return function(){r.cancel()}});return this.onCancel(function(){e.cancel()}),e},n.then=function(t){return this.onResolve(t),this},n.flatMap=function(t,n){var r=this;void 0===n&&(n=!1);var e=P.make(function(u){if(r.onResolve(function(n){var r=t(n);r.onResolve(u),r.onCancel(function(){return e.cancel()})}),n)return function(){r.cancel()}});return this.onCancel(function(){e.cancel()}),e},n.tap=function(t){return this.onResolve(t),this},n.tapOk=function(t){return this.onResolve(function(n){n.match({Ok:function(n){return t(n)},Error:function(){}})}),this},n.tapError=function(t){return this.onResolve(function(n){n.match({Ok:function(){},Error:function(n){return t(n)}})}),this},n.mapOkToResult=function(t,n){return void 0===n&&(n=!1),this.map(function(n){return n.match({Ok:function(n){return t(n)},Error:function(){return n}})},n)},n.mapErrorToResult=function(t,n){return void 0===n&&(n=!1),this.map(function(n){return n.match({Error:function(n){return t(n)},Ok:function(){return n}})},n)},n.mapOk=function(t,n){return void 0===n&&(n=!1),this.map(function(n){return n.match({Ok:function(n){return k.Ok(t(n))},Error:function(){return n}})},n)},n.mapError=function(t,n){return void 0===n&&(n=!1),this.map(function(n){return n.match({Ok:function(){return n},Error:function(n){return k.Error(t(n))}})},n)},n.flatMapOk=function(t,n){return void 0===n&&(n=!1),this.flatMap(function(n){return n.match({Ok:function(n){return t(n)},Error:function(){return P.value(n)}})},n)},n.flatMapError=function(t,n){return void 0===n&&(n=!1),this.flatMap(function(n){return n.match({Ok:function(){return P.value(n)},Error:function(n){return t(n)}})},n)},n.toPromise=function(){var t=this;return new Promise(function(n){t.onResolve(n)})},n.resultToPromise=function(){var t=this;return new Promise(function(n,r){t.onResolve(function(t){t.match({Ok:n,Error:r})})})},t}();A.make=function(t){var n=Object.create(M);return n._state={tag:\"Pending\"},n._state.cancel=t(function(t){if(\"Pending\"===n._state.tag){var r=n._state.resolveCallbacks;n._state={tag:\"Resolved\",value:t},null==r||r.forEach(function(n){return n(t)})}}),n},A.isFuture=function(t){return null!=t&&Object.prototype.isPrototypeOf.call(M,t)},A.value=function(t){var n=Object.create(M);return n._state={tag:\"Resolved\",value:t},n},A.all=function(t,n){void 0===n&&(n=!1);for(var r,e=t.length,u=P.value([]),o=0,i=function(){if(o>=e)return{v:u};var r=t[o];null!=r&&(u=u.flatMap(function(t){return r.map(function(n){return t.push(n),t},n)},n)),o++};;)if(r=i())return r.v},A.allFromDict=function(r){var e=t(r);return P.all(n(r)).map(function(t){return Object.fromEntries(c(e,t))})},A.wait=function(t){return P.make(function(n){var r=setTimeout(function(){return n()},t);return function(){return clearTimeout(r)}})},A.retry=function(t,n){var r=n.max;return function n(e){return t(e).flatMapError(function(t){return e+1<r?n(e+1):P.value(k.Error(t))})}(0)},A.concurrent=function(t,n){var r=n.concurrency;return P.make(function(n){var e=Array(t.length),u=r-1,o=0;0!==t.length?t.slice(0,r).forEach(function r(i,a){return i().tap(function(i){if(e[a]=i,++o<t.length){var c=t[++u];null!=c&&r(c,u)}else n(e)})}):n([])})};var M=Object.create(null,Object.getOwnPropertyDescriptors(A.prototype)),P=A,x={make:function(){var t;return[P.make(function(n){t=n}),t]}},C=Symbol(\"NOT_COMPUTED\");function z(){return z=Object.assign?Object.assign.bind():function(t){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var e in r)Object.prototype.hasOwnProperty.call(r,e)&&(t[e]=r[e])}return t},z.apply(this,arguments)}var J={__proto__:null,encode:function(t,n){return JSON.stringify(t,function(t,n){return null==n?n:\"string\"==typeof n[a]?z({},n,{__boxed_type__:n[a]}):n},n)},decode:function(t){return JSON.parse(t,function(t,n){return null==n?n:\"Option\"===n.__boxed_type__?p.fromJSON(n):\"Result\"===n.__boxed_type__?k.fromJSON(n):\"AsyncData\"===n.__boxed_type__?R.fromJSON(n):n})}};exports.Array=y,exports.AsyncData=R,exports.Deferred=x,exports.Dict=e,exports.Future=P,exports.Lazy=function(t){var n={contents:C};return{get:function(){return n.contents===C&&(n.contents=t()),n.contents}}},exports.Option=p,exports.Result=k,exports.Serializer=J;\n//# sourceMappingURL=Boxed.js.map\n","/**\n * Injection token for AMQP client module options\n * Used by NestJS DI system to inject configuration into AmqpClientService\n */\nexport const MODULE_OPTIONS_TOKEN = Symbol(\"AMQP_CLIENT_MODULE_OPTIONS\");\n","import type { AmqpConnectionManagerOptions, ConnectionUrl } from \"amqp-connection-manager\";\nimport {\n type ClientInferPublisherInput,\n MessageValidationError,\n type PublishOptions,\n TechnicalError,\n TypedAmqpClient,\n} from \"@amqp-contract/client\";\nimport type { ContractDefinition, InferPublisherNames } from \"@amqp-contract/contract\";\nimport { Future, Result } from \"@swan-io/boxed\";\nimport { Inject, Injectable, type OnModuleDestroy, type OnModuleInit } from \"@nestjs/common\";\nimport { MODULE_OPTIONS_TOKEN } from \"./client.module-definition.js\";\n\n/**\n * Configuration options for the AMQP client NestJS module.\n *\n * @typeParam TContract - The contract definition type\n *\n * @example\n * ```typescript\n * const options: AmqpClientModuleOptions<typeof contract> = {\n * contract: myContract,\n * urls: ['amqp://localhost'],\n * connectionOptions: {\n * heartbeatIntervalInSeconds: 30\n * }\n * };\n * ```\n */\nexport type AmqpClientModuleOptions<TContract extends ContractDefinition> = {\n /** The AMQP contract definition specifying publishers and their message schemas */\n contract: 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 client service for NestJS applications.\n *\n * This service wraps {@link TypedAmqpClient} and integrates it with the NestJS\n * lifecycle, automatically initializing the connection 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 { AmqpClientModule } from '@amqp-contract/client-nestjs';\n *\n * @Module({\n * imports: [\n * AmqpClientModule.forRoot({\n * contract: myContract,\n * urls: ['amqp://localhost']\n * })\n * ]\n * })\n * export class AppModule {}\n *\n * // In your service\n * import { AmqpClientService } from '@amqp-contract/client-nestjs';\n *\n * @Injectable()\n * export class OrderService {\n * constructor(\n * private readonly amqpClient: AmqpClientService<typeof myContract>\n * ) {}\n *\n * async createOrder(order: Order) {\n * const result = await this.amqpClient.publish('orderCreated', {\n * orderId: order.id,\n * amount: order.total\n * }).resultToPromise();\n * }\n * }\n * ```\n */\n@Injectable()\nexport class AmqpClientService<TContract extends ContractDefinition>\n implements OnModuleInit, OnModuleDestroy\n{\n private client: TypedAmqpClient<TContract> | null = null;\n\n constructor(\n @Inject(MODULE_OPTIONS_TOKEN)\n private readonly options: AmqpClientModuleOptions<TContract>,\n ) {}\n\n /**\n * Initialize the AMQP client when the NestJS module starts.\n *\n * This lifecycle hook automatically creates and initializes the client\n * when the NestJS application starts up. The connection will be established\n * in the background with automatic reconnection handling.\n */\n async onModuleInit(): Promise<void> {\n this.client = await TypedAmqpClient.create(this.options).resultToPromise();\n }\n\n /**\n * Close the AMQP client when the NestJS module is destroyed.\n *\n * This lifecycle hook ensures proper cleanup of resources when the\n * NestJS application shuts down, gracefully closing the connection\n * and cleaning up all consumers.\n */\n async onModuleDestroy(): Promise<void> {\n if (this.client) {\n await this.client.close().resultToPromise();\n this.client = null;\n }\n }\n\n /**\n * Publish a message using a contract-defined publisher.\n *\n * This method provides type-safe message publishing with automatic validation\n * and explicit error handling through the Result type.\n *\n * @param publisherName - The name of the publisher from the contract\n * @param message - The message payload (type-checked against the contract)\n * @param options - Optional AMQP publish options including compression support\n * @returns A Future that resolves to a Result indicating success or failure\n *\n * @example Basic publishing\n * ```typescript\n * await this.amqpClient.publish('orderCreated', {\n * orderId: '123',\n * amount: 99.99\n * }).resultToPromise();\n * ```\n *\n * @example Publishing with compression\n * ```typescript\n * await this.amqpClient.publish('orderCreated', {\n * orderId: '123',\n * amount: 99.99\n * }, {\n * compression: 'gzip'\n * }).resultToPromise();\n * ```\n */\n publish<TName extends InferPublisherNames<TContract>>(\n publisherName: TName,\n message: ClientInferPublisherInput<TContract, TName>,\n options?: PublishOptions,\n ): Future<Result<void, TechnicalError | MessageValidationError>> {\n if (!this.client) {\n return Future.value(\n Result.Error(\n new TechnicalError(\n \"Client not initialized. Ensure the module has been initialized before publishing.\",\n ),\n ),\n );\n }\n\n return this.client.publish(publisherName, message, options);\n }\n}\n","import { type AmqpClientModuleOptions, AmqpClientService } from \"./client.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 \"./client.module-definition.js\";\n\n/**\n * Factory function return type for async module configuration\n */\ntype AmqpClientModuleOptionsFactory<TContract extends ContractDefinition> =\n | AmqpClientModuleOptions<TContract>\n | Promise<AmqpClientModuleOptions<TContract>>;\n\n/**\n * Options for async module configuration using factory pattern\n */\nexport type AmqpClientModuleAsyncOptions<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[]) => AmqpClientModuleOptionsFactory<TContract>;\n /**\n * Optional dependencies to inject into the factory function.\n * Can be a token (string/symbol) or a class 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 client integration\n * This module provides type-safe AMQP client functionality using @amqp-contract/client\n * without relying on NestJS decorators (except for dependency injection)\n *\n * @typeParam TContract - The contract definition type for type-safe publishing\n *\n * @example\n * ```typescript\n * // Synchronous configuration\n * @Module({\n * imports: [\n * AmqpClientModule.forRoot({\n * contract: myContract,\n * urls: ['amqp://localhost']\n * })\n * ]\n * })\n * export class AppModule {}\n *\n * // Asynchronous configuration\n * @Module({\n * imports: [\n * AmqpClientModule.forRootAsync({\n * imports: [ConfigModule],\n * useFactory: (configService: ConfigService) => ({\n * contract: myContract,\n * urls: configService.get('AMQP_URLS')\n * }),\n * inject: [ConfigService]\n * })\n * ]\n * })\n * export class AppModule {}\n *\n * // Using the client in a service\n * @Injectable()\n * export class OrderService {\n * constructor(\n * private readonly amqpClient: AmqpClientService<typeof myContract>\n * ) {}\n *\n * async createOrder(order: Order) {\n * // publish is fully typed based on the contract\n * await this.amqpClient.publish('orderCreated', {\n * orderId: order.id,\n * amount: order.total\n * }).resultToPromise();\n * }\n * }\n * ```\n */\n@Module({})\nexport class AmqpClientModule {\n /**\n * Register the AMQP client module with synchronous configuration\n *\n * @param options - The client configuration options with contract\n * @returns A dynamic module for NestJS\n */\n static forRoot<TContract extends ContractDefinition>(\n options: AmqpClientModuleOptions<TContract>,\n ): DynamicModule {\n return {\n module: AmqpClientModule,\n providers: [\n {\n provide: MODULE_OPTIONS_TOKEN,\n useValue: options,\n },\n AmqpClientService,\n ],\n exports: [AmqpClientService],\n };\n }\n\n /**\n * Register the AMQP client 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: AmqpClientModuleAsyncOptions<TContract>,\n ): DynamicModule {\n const providers: Provider[] = [\n {\n provide: MODULE_OPTIONS_TOKEN,\n useFactory: options.useFactory,\n inject: options.inject ?? [],\n },\n AmqpClientService,\n ];\n\n return {\n module: AmqpClientModule,\n imports: options.imports ?? [],\n providers,\n exports: [AmqpClientService],\n };\n }\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
package/docs/index.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
### AmqpClientModule
|
|
10
10
|
|
|
11
|
-
Defined in: [packages/client-nestjs/src/client.module.ts:93](https://github.com/btravers/amqp-contract/blob/
|
|
11
|
+
Defined in: [packages/client-nestjs/src/client.module.ts:93](https://github.com/btravers/amqp-contract/blob/7897a0ef6745684800b11ec9bbc26bfab645f2a7/packages/client-nestjs/src/client.module.ts#L93)
|
|
12
12
|
|
|
13
13
|
NestJS module for AMQP client integration
|
|
14
14
|
This module provides type-safe AMQP client functionality using @amqp-contract/client
|
|
@@ -84,7 +84,7 @@ new AmqpClientModule(): AmqpClientModule;
|
|
|
84
84
|
static forRoot<TContract>(options): DynamicModule;
|
|
85
85
|
```
|
|
86
86
|
|
|
87
|
-
Defined in: [packages/client-nestjs/src/client.module.ts:100](https://github.com/btravers/amqp-contract/blob/
|
|
87
|
+
Defined in: [packages/client-nestjs/src/client.module.ts:100](https://github.com/btravers/amqp-contract/blob/7897a0ef6745684800b11ec9bbc26bfab645f2a7/packages/client-nestjs/src/client.module.ts#L100)
|
|
88
88
|
|
|
89
89
|
Register the AMQP client module with synchronous configuration
|
|
90
90
|
|
|
@@ -112,7 +112,7 @@ A dynamic module for NestJS
|
|
|
112
112
|
static forRootAsync<TContract>(options): DynamicModule;
|
|
113
113
|
```
|
|
114
114
|
|
|
115
|
-
Defined in: [packages/client-nestjs/src/client.module.ts:122](https://github.com/btravers/amqp-contract/blob/
|
|
115
|
+
Defined in: [packages/client-nestjs/src/client.module.ts:122](https://github.com/btravers/amqp-contract/blob/7897a0ef6745684800b11ec9bbc26bfab645f2a7/packages/client-nestjs/src/client.module.ts#L122)
|
|
116
116
|
|
|
117
117
|
Register the AMQP client module with asynchronous configuration
|
|
118
118
|
|
|
@@ -138,7 +138,7 @@ A dynamic module for NestJS
|
|
|
138
138
|
|
|
139
139
|
### AmqpClientService
|
|
140
140
|
|
|
141
|
-
Defined in: [packages/client-nestjs/src/client.service.ts:
|
|
141
|
+
Defined in: [packages/client-nestjs/src/client.service.ts:82](https://github.com/btravers/amqp-contract/blob/7897a0ef6745684800b11ec9bbc26bfab645f2a7/packages/client-nestjs/src/client.service.ts#L82)
|
|
142
142
|
|
|
143
143
|
Type-safe AMQP client service for NestJS applications.
|
|
144
144
|
|
|
@@ -176,10 +176,6 @@ export class OrderService {
|
|
|
176
176
|
orderId: order.id,
|
|
177
177
|
amount: order.total
|
|
178
178
|
}).resultToPromise();
|
|
179
|
-
|
|
180
|
-
if (result.isError()) {
|
|
181
|
-
throw new Error('Failed to publish order event');
|
|
182
|
-
}
|
|
183
179
|
}
|
|
184
180
|
}
|
|
185
181
|
```
|
|
@@ -203,7 +199,7 @@ export class OrderService {
|
|
|
203
199
|
new AmqpClientService<TContract>(options): AmqpClientService<TContract>;
|
|
204
200
|
```
|
|
205
201
|
|
|
206
|
-
Defined in: [packages/client-nestjs/src/client.service.ts:
|
|
202
|
+
Defined in: [packages/client-nestjs/src/client.service.ts:87](https://github.com/btravers/amqp-contract/blob/7897a0ef6745684800b11ec9bbc26bfab645f2a7/packages/client-nestjs/src/client.service.ts#L87)
|
|
207
203
|
|
|
208
204
|
###### Parameters
|
|
209
205
|
|
|
@@ -223,7 +219,7 @@ Defined in: [packages/client-nestjs/src/client.service.ts:91](https://github.com
|
|
|
223
219
|
onModuleDestroy(): Promise<void>;
|
|
224
220
|
```
|
|
225
221
|
|
|
226
|
-
Defined in: [packages/client-nestjs/src/client.service.ts:
|
|
222
|
+
Defined in: [packages/client-nestjs/src/client.service.ts:110](https://github.com/btravers/amqp-contract/blob/7897a0ef6745684800b11ec9bbc26bfab645f2a7/packages/client-nestjs/src/client.service.ts#L110)
|
|
227
223
|
|
|
228
224
|
Close the AMQP client when the NestJS module is destroyed.
|
|
229
225
|
|
|
@@ -247,7 +243,7 @@ OnModuleDestroy.onModuleDestroy
|
|
|
247
243
|
onModuleInit(): Promise<void>;
|
|
248
244
|
```
|
|
249
245
|
|
|
250
|
-
Defined in: [packages/client-nestjs/src/client.service.ts:
|
|
246
|
+
Defined in: [packages/client-nestjs/src/client.service.ts:99](https://github.com/btravers/amqp-contract/blob/7897a0ef6745684800b11ec9bbc26bfab645f2a7/packages/client-nestjs/src/client.service.ts#L99)
|
|
251
247
|
|
|
252
248
|
Initialize the AMQP client when the NestJS module starts.
|
|
253
249
|
|
|
@@ -276,7 +272,7 @@ publish<TName>(
|
|
|
276
272
|
| MessageValidationError>>;
|
|
277
273
|
```
|
|
278
274
|
|
|
279
|
-
Defined in: [packages/client-nestjs/src/client.service.ts:
|
|
275
|
+
Defined in: [packages/client-nestjs/src/client.service.ts:146](https://github.com/btravers/amqp-contract/blob/7897a0ef6745684800b11ec9bbc26bfab645f2a7/packages/client-nestjs/src/client.service.ts#L146)
|
|
280
276
|
|
|
281
277
|
Publish a message using a contract-defined publisher.
|
|
282
278
|
|
|
@@ -295,7 +291,7 @@ and explicit error handling through the Result type.
|
|
|
295
291
|
| ------ | ------ | ------ |
|
|
296
292
|
| `publisherName` | `TName` | The name of the publisher from the contract |
|
|
297
293
|
| `message` | [`ClientInferPublisherInput`](#clientinferpublisherinput)\<`TContract`, `TName`\> | The message payload (type-checked against the contract) |
|
|
298
|
-
| `options?` | `
|
|
294
|
+
| `options?` | `PublishOptions` | Optional AMQP publish options including compression support |
|
|
299
295
|
|
|
300
296
|
###### Returns
|
|
301
297
|
|
|
@@ -305,17 +301,22 @@ and explicit error handling through the Result type.
|
|
|
305
301
|
|
|
306
302
|
A Future that resolves to a Result indicating success or failure
|
|
307
303
|
|
|
308
|
-
######
|
|
304
|
+
###### Examples
|
|
309
305
|
|
|
310
306
|
```typescript
|
|
311
|
-
|
|
307
|
+
await this.amqpClient.publish('orderCreated', {
|
|
312
308
|
orderId: '123',
|
|
313
309
|
amount: 99.99
|
|
314
310
|
}).resultToPromise();
|
|
311
|
+
```
|
|
315
312
|
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
313
|
+
```typescript
|
|
314
|
+
await this.amqpClient.publish('orderCreated', {
|
|
315
|
+
orderId: '123',
|
|
316
|
+
amount: 99.99
|
|
317
|
+
}, {
|
|
318
|
+
compression: 'gzip'
|
|
319
|
+
}).resultToPromise();
|
|
319
320
|
```
|
|
320
321
|
|
|
321
322
|
## Interfaces
|
|
@@ -371,7 +372,7 @@ This includes validation failures and AMQP channel issues
|
|
|
371
372
|
type AmqpClientModuleAsyncOptions<TContract> = object;
|
|
372
373
|
```
|
|
373
374
|
|
|
374
|
-
Defined in: [packages/client-nestjs/src/client.module.ts:22](https://github.com/btravers/amqp-contract/blob/
|
|
375
|
+
Defined in: [packages/client-nestjs/src/client.module.ts:22](https://github.com/btravers/amqp-contract/blob/7897a0ef6745684800b11ec9bbc26bfab645f2a7/packages/client-nestjs/src/client.module.ts#L22)
|
|
375
376
|
|
|
376
377
|
Options for async module configuration using factory pattern
|
|
377
378
|
|
|
@@ -385,9 +386,9 @@ Options for async module configuration using factory pattern
|
|
|
385
386
|
|
|
386
387
|
| Property | Type | Description | Defined in |
|
|
387
388
|
| ------ | ------ | ------ | ------ |
|
|
388
|
-
| <a id="imports"></a> `imports?` | `ModuleMetadata`\[`"imports"`\] | Optional list of imported modules that export providers needed by the factory | [packages/client-nestjs/src/client.module.ts:37](https://github.com/btravers/amqp-contract/blob/
|
|
389
|
-
| <a id="inject"></a> `inject?` | (`string` \| `symbol` \| `Type`\<`unknown`\>)[] | Optional dependencies to inject into the factory function. Can be a token (string/symbol) or a class reference to a provider. | [packages/client-nestjs/src/client.module.ts:33](https://github.com/btravers/amqp-contract/blob/
|
|
390
|
-
| <a id="usefactory"></a> `useFactory` | (...`args`) => `AmqpClientModuleOptionsFactory`\<`TContract`\> | Factory function that returns the module options. Can use injected dependencies to create configuration. | [packages/client-nestjs/src/client.module.ts:28](https://github.com/btravers/amqp-contract/blob/
|
|
389
|
+
| <a id="imports"></a> `imports?` | `ModuleMetadata`\[`"imports"`\] | Optional list of imported modules that export providers needed by the factory | [packages/client-nestjs/src/client.module.ts:37](https://github.com/btravers/amqp-contract/blob/7897a0ef6745684800b11ec9bbc26bfab645f2a7/packages/client-nestjs/src/client.module.ts#L37) |
|
|
390
|
+
| <a id="inject"></a> `inject?` | (`string` \| `symbol` \| `Type`\<`unknown`\>)[] | Optional dependencies to inject into the factory function. Can be a token (string/symbol) or a class reference to a provider. | [packages/client-nestjs/src/client.module.ts:33](https://github.com/btravers/amqp-contract/blob/7897a0ef6745684800b11ec9bbc26bfab645f2a7/packages/client-nestjs/src/client.module.ts#L33) |
|
|
391
|
+
| <a id="usefactory"></a> `useFactory` | (...`args`) => `AmqpClientModuleOptionsFactory`\<`TContract`\> | Factory function that returns the module options. Can use injected dependencies to create configuration. | [packages/client-nestjs/src/client.module.ts:28](https://github.com/btravers/amqp-contract/blob/7897a0ef6745684800b11ec9bbc26bfab645f2a7/packages/client-nestjs/src/client.module.ts#L28) |
|
|
391
392
|
|
|
392
393
|
***
|
|
393
394
|
|
|
@@ -397,7 +398,7 @@ Options for async module configuration using factory pattern
|
|
|
397
398
|
type AmqpClientModuleOptions<TContract> = object;
|
|
398
399
|
```
|
|
399
400
|
|
|
400
|
-
Defined in: [packages/client-nestjs/src/client.service.ts:30](https://github.com/btravers/amqp-contract/blob/
|
|
401
|
+
Defined in: [packages/client-nestjs/src/client.service.ts:30](https://github.com/btravers/amqp-contract/blob/7897a0ef6745684800b11ec9bbc26bfab645f2a7/packages/client-nestjs/src/client.service.ts#L30)
|
|
401
402
|
|
|
402
403
|
Configuration options for the AMQP client NestJS module.
|
|
403
404
|
|
|
@@ -423,9 +424,9 @@ const options: AmqpClientModuleOptions<typeof contract> = {
|
|
|
423
424
|
|
|
424
425
|
| Property | Type | Description | Defined in |
|
|
425
426
|
| ------ | ------ | ------ | ------ |
|
|
426
|
-
| <a id="connectionoptions"></a> `connectionOptions?` | `AmqpConnectionManagerOptions` | Optional connection configuration (heartbeat, reconnect settings, etc.) | [packages/client-nestjs/src/client.service.ts:36](https://github.com/btravers/amqp-contract/blob/
|
|
427
|
-
| <a id="contract"></a> `contract` | `TContract` | The AMQP contract definition specifying publishers and their message schemas | [packages/client-nestjs/src/client.service.ts:32](https://github.com/btravers/amqp-contract/blob/
|
|
428
|
-
| <a id="urls"></a> `urls` | `ConnectionUrl`[] | AMQP broker URL(s). Multiple URLs provide failover support | [packages/client-nestjs/src/client.service.ts:34](https://github.com/btravers/amqp-contract/blob/
|
|
427
|
+
| <a id="connectionoptions"></a> `connectionOptions?` | `AmqpConnectionManagerOptions` | Optional connection configuration (heartbeat, reconnect settings, etc.) | [packages/client-nestjs/src/client.service.ts:36](https://github.com/btravers/amqp-contract/blob/7897a0ef6745684800b11ec9bbc26bfab645f2a7/packages/client-nestjs/src/client.service.ts#L36) |
|
|
428
|
+
| <a id="contract"></a> `contract` | `TContract` | The AMQP contract definition specifying publishers and their message schemas | [packages/client-nestjs/src/client.service.ts:32](https://github.com/btravers/amqp-contract/blob/7897a0ef6745684800b11ec9bbc26bfab645f2a7/packages/client-nestjs/src/client.service.ts#L32) |
|
|
429
|
+
| <a id="urls"></a> `urls` | `ConnectionUrl`[] | AMQP broker URL(s). Multiple URLs provide failover support | [packages/client-nestjs/src/client.service.ts:34](https://github.com/btravers/amqp-contract/blob/7897a0ef6745684800b11ec9bbc26bfab645f2a7/packages/client-nestjs/src/client.service.ts#L34) |
|
|
429
430
|
|
|
430
431
|
***
|
|
431
432
|
|
|
@@ -454,7 +455,7 @@ Infer publisher input type (message payload) for a specific publisher in a contr
|
|
|
454
455
|
const MODULE_OPTIONS_TOKEN: typeof MODULE_OPTIONS_TOKEN;
|
|
455
456
|
```
|
|
456
457
|
|
|
457
|
-
Defined in: [packages/client-nestjs/src/client.module-definition.ts:5](https://github.com/btravers/amqp-contract/blob/
|
|
458
|
+
Defined in: [packages/client-nestjs/src/client.module-definition.ts:5](https://github.com/btravers/amqp-contract/blob/7897a0ef6745684800b11ec9bbc26bfab645f2a7/packages/client-nestjs/src/client.module-definition.ts#L5)
|
|
458
459
|
|
|
459
460
|
Injection token for AMQP client module options
|
|
460
461
|
Used by NestJS DI system to inject configuration into AmqpClientService
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amqp-contract/client-nestjs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "NestJS integration for @amqp-contract/client",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"amqp",
|
|
@@ -8,7 +8,16 @@
|
|
|
8
8
|
"contract",
|
|
9
9
|
"nestjs",
|
|
10
10
|
"rabbitmq",
|
|
11
|
-
"typescript"
|
|
11
|
+
"typescript",
|
|
12
|
+
"nodejs",
|
|
13
|
+
"messaging",
|
|
14
|
+
"type-safe",
|
|
15
|
+
"schema",
|
|
16
|
+
"validation",
|
|
17
|
+
"message-broker",
|
|
18
|
+
"message-queue",
|
|
19
|
+
"publisher",
|
|
20
|
+
"nest"
|
|
12
21
|
],
|
|
13
22
|
"homepage": "https://github.com/btravers/amqp-contract#readme",
|
|
14
23
|
"bugs": {
|
|
@@ -43,30 +52,30 @@
|
|
|
43
52
|
"docs"
|
|
44
53
|
],
|
|
45
54
|
"dependencies": {
|
|
46
|
-
"@amqp-contract/client": "0.
|
|
47
|
-
"@amqp-contract/contract": "0.
|
|
55
|
+
"@amqp-contract/client": "0.8.0",
|
|
56
|
+
"@amqp-contract/contract": "0.8.0"
|
|
48
57
|
},
|
|
49
58
|
"devDependencies": {
|
|
50
|
-
"@nestjs/common": "11.1.
|
|
51
|
-
"@nestjs/core": "11.1.
|
|
52
|
-
"@nestjs/testing": "11.1.
|
|
59
|
+
"@nestjs/common": "11.1.11",
|
|
60
|
+
"@nestjs/core": "11.1.11",
|
|
61
|
+
"@nestjs/testing": "11.1.11",
|
|
53
62
|
"@swan-io/boxed": "3.2.1",
|
|
54
63
|
"@types/amqplib": "0.10.8",
|
|
55
|
-
"@types/node": "25.0.
|
|
64
|
+
"@types/node": "25.0.5",
|
|
56
65
|
"@vitest/coverage-v8": "4.0.16",
|
|
57
66
|
"amqp-connection-manager": "5.0.0",
|
|
58
67
|
"amqplib": "0.10.9",
|
|
59
68
|
"reflect-metadata": "0.2.2",
|
|
60
69
|
"rxjs": "7.8.2",
|
|
61
|
-
"tsdown": "0.
|
|
70
|
+
"tsdown": "0.19.0",
|
|
62
71
|
"typedoc": "0.28.15",
|
|
63
72
|
"typedoc-plugin-markdown": "4.9.0",
|
|
64
73
|
"typescript": "5.9.3",
|
|
65
74
|
"vitest": "4.0.16",
|
|
66
|
-
"zod": "4.
|
|
67
|
-
"@amqp-contract/testing": "0.
|
|
68
|
-
"@amqp-contract/tsconfig": "0.
|
|
69
|
-
"@amqp-contract/typedoc": "0.0
|
|
75
|
+
"zod": "4.3.5",
|
|
76
|
+
"@amqp-contract/testing": "0.8.0",
|
|
77
|
+
"@amqp-contract/tsconfig": "0.1.0",
|
|
78
|
+
"@amqp-contract/typedoc": "0.1.0"
|
|
70
79
|
},
|
|
71
80
|
"peerDependencies": {
|
|
72
81
|
"@nestjs/common": ">=11.0.0",
|
|
@@ -80,7 +89,6 @@
|
|
|
80
89
|
"dev": "tsdown src/index.ts --format cjs,esm --dts --watch",
|
|
81
90
|
"test": "vitest run --project unit",
|
|
82
91
|
"test:integration": "vitest run --project integration",
|
|
83
|
-
"test:watch": "vitest --project unit",
|
|
84
92
|
"typecheck": "tsc --noEmit"
|
|
85
93
|
}
|
|
86
94
|
}
|