@amqp-contract/core 0.3.1 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.9-blue?logo=typescript)](https://www.typescriptlang.org/)
9
9
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
10
10
 
11
- This package provides centralized functionality for establishing AMQP topology (exchanges, queues, and bindings) from contract definitions.
11
+ This package provides centralized functionality for establishing AMQP topology (exchanges, queues, and bindings) from contract definitions, and defines the `Logger` interface used across amqp-contract packages.
12
12
 
13
13
  📖 **[Full documentation →](https://btravers.github.io/amqp-contract)**
14
14
 
@@ -24,11 +24,12 @@ yarn add @amqp-contract/core
24
24
 
25
25
  ## Usage
26
26
 
27
- The core package exports a `setupInfra` function that handles the creation of all AMQP resources defined in a contract.
27
+ ### AmqpClient
28
+
29
+ The core package exports an `AmqpClient` class that handles the creation of all AMQP resources defined in a contract.
28
30
 
29
31
  ```typescript
30
- import { connect } from "amqplib";
31
- import { setupInfra } from "@amqp-contract/core";
32
+ import { AmqpClient } from "@amqp-contract/core";
32
33
  import {
33
34
  defineContract,
34
35
  defineExchange,
@@ -56,44 +57,41 @@ const contract = defineContract({
56
57
  });
57
58
 
58
59
  // Setup AMQP resources
59
- const connection = await connect("amqp://localhost");
60
- const channel = await connection.createChannel();
60
+ const amqpClient = new AmqpClient(contract, {
61
+ urls: ["amqp://localhost"],
62
+ });
61
63
 
62
- await setupInfra(channel, contract);
64
+ // Clean up
65
+ await amqpClient.close();
63
66
  ```
64
67
 
65
- ## API
66
-
67
- ### `setupInfra(channel: Channel, contract: ContractDefinition): Promise<void>`
68
-
69
- Sets up all AMQP resources defined in the contract:
70
-
71
- - **Exchanges**: Creates all exchanges with their configurations
72
- - **Queues**: Creates all queues with their configurations
73
- - **Bindings**: Creates all bindings (queue-to-exchange and exchange-to-exchange)
74
-
75
- #### Parameters
68
+ ### Logger Interface
76
69
 
77
- - `channel`: AMQP channel to use for setup
78
- - `contract`: Contract definition containing exchanges, queues, and bindings
70
+ The core package exports a `Logger` interface that can be used to implement custom logging for AMQP operations:
79
71
 
80
- #### Returns
81
-
82
- A Promise that resolves when all resources are created.
83
-
84
- ## Features
85
-
86
- - Type-safe contract setup
87
- - Supports all exchange types (topic, direct, fanout)
88
- - ✅ Handles both queue-to-exchange and exchange-to-exchange bindings
89
- - ✅ Passes custom arguments to AMQP resources
90
- - Used internally by `@amqp-contract/client` and `@amqp-contract/worker`
72
+ ```typescript
73
+ import type { Logger } from "@amqp-contract/core";
74
+
75
+ const logger: Logger = {
76
+ debug: (message, context) => console.debug(message, context),
77
+ info: (message, context) => console.info(message, context),
78
+ warn: (message, context) => console.warn(message, context),
79
+ error: (message, context) => console.error(message, context),
80
+ };
81
+
82
+ // Pass the logger to client or worker
83
+ import { TypedAmqpClient } from "@amqp-contract/client";
84
+
85
+ const client = await TypedAmqpClient.create({
86
+ contract,
87
+ urls: ["amqp://localhost"],
88
+ logger, // Optional: logs published messages
89
+ });
90
+ ```
91
91
 
92
- ## Related Packages
92
+ ## API
93
93
 
94
- - [@amqp-contract/contract](../contract) - Contract definition builders
95
- - [@amqp-contract/client](../client) - Type-safe AMQP client
96
- - [@amqp-contract/worker](../worker) - Type-safe AMQP worker
94
+ For complete API documentation, see the [@amqp-contract/core API Reference](https://btravers.github.io/amqp-contract/api/core).
97
95
 
98
96
  ## Documentation
99
97
 
package/dist/index.d.cts CHANGED
@@ -1,6 +1,63 @@
1
1
  import { ContractDefinition } from "@amqp-contract/contract";
2
2
  import { AmqpConnectionManagerOptions, ChannelWrapper, ConnectionUrl } from "amqp-connection-manager";
3
3
 
4
+ //#region src/logger.d.ts
5
+
6
+ /**
7
+ * Context object for logger methods.
8
+ *
9
+ * This type includes reserved keys that provide consistent naming
10
+ * for common logging context properties.
11
+ *
12
+ * @property error - Error object or error details
13
+ */
14
+ type LoggerContext = Record<string, unknown> & {
15
+ error?: unknown;
16
+ };
17
+ /**
18
+ * Logger interface for amqp-contract packages.
19
+ *
20
+ * Provides a simple logging abstraction that can be implemented by users
21
+ * to integrate with their preferred logging framework.
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * // Simple console logger implementation
26
+ * const logger: Logger = {
27
+ * debug: (message, context) => console.debug(message, context),
28
+ * info: (message, context) => console.info(message, context),
29
+ * warn: (message, context) => console.warn(message, context),
30
+ * error: (message, context) => console.error(message, context),
31
+ * };
32
+ * ```
33
+ */
34
+ interface Logger {
35
+ /**
36
+ * Log debug level messages
37
+ * @param message - The log message
38
+ * @param context - Optional context to include with the log
39
+ */
40
+ debug(message: string, context?: LoggerContext): void;
41
+ /**
42
+ * Log info level messages
43
+ * @param message - The log message
44
+ * @param context - Optional context to include with the log
45
+ */
46
+ info(message: string, context?: LoggerContext): void;
47
+ /**
48
+ * Log warning level messages
49
+ * @param message - The log message
50
+ * @param context - Optional context to include with the log
51
+ */
52
+ warn(message: string, context?: LoggerContext): void;
53
+ /**
54
+ * Log error level messages
55
+ * @param message - The log message
56
+ * @param context - Optional context to include with the log
57
+ */
58
+ error(message: string, context?: LoggerContext): void;
59
+ }
60
+ //#endregion
4
61
  //#region src/index.d.ts
5
62
  type AmqpClientOptions = {
6
63
  urls: ConnectionUrl[];
@@ -16,5 +73,5 @@ declare class AmqpClient {
16
73
  private setup;
17
74
  }
18
75
  //#endregion
19
- export { AmqpClient, AmqpClientOptions };
76
+ export { AmqpClient, AmqpClientOptions, type Logger, type LoggerContext };
20
77
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"sourcesContent":[],"mappings":";;;;KASY,iBAAA;QACJ;EADI,iBAAA,CAAA,EAEU,4BAAA,GAAA,SAAA;AAGtB,CAAA;AAE2B,cAFd,UAAA,CAEc;EAGI,iBAAA,QAAA;EACD,iBAAA,OAAA;EASb,iBAAA,UAAA;EAAO,SAAA,OAAA,EAbG,cAaH;wBAVO,6BACD;WASb"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/logger.ts","../src/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAQA;AAqBA;;;AAoBkC,KAzCtB,aAAA,GAAgB,MAyCM,CAAA,MAAA,EAAA,OAAA,CAAA,GAAA;EAOC,KAAA,CAAA,EAAA,OAAA;CAAa;;;;AC7ChD;AAKA;;;;;;;;;;;;;UDaiB,MAAA;;;;;;mCAMkB;;;;;;kCAOD;;;;;;kCAOA;;;;;;mCAOC;;;;KC7CvB,iBAAA;EDHA,IAAA,ECIJ,aDJiB,EAAA;EAqBR,iBAAM,CAAA,EChBD,4BDgBC,GAAA,SAAA;CAMY;AAOD,cC1BrB,UAAA,CD0BqB;EAOA,iBAAA,QAAA;EAOC,iBAAA,OAAA;EAAa,iBAAA,UAAA;oBCtCrB;wBAGI,6BACD;WASb;EApBL,QAAA,KAAA;AAKZ"}
package/dist/index.d.mts CHANGED
@@ -1,6 +1,63 @@
1
1
  import { AmqpConnectionManagerOptions, ChannelWrapper, ConnectionUrl } from "amqp-connection-manager";
2
2
  import { ContractDefinition } from "@amqp-contract/contract";
3
3
 
4
+ //#region src/logger.d.ts
5
+
6
+ /**
7
+ * Context object for logger methods.
8
+ *
9
+ * This type includes reserved keys that provide consistent naming
10
+ * for common logging context properties.
11
+ *
12
+ * @property error - Error object or error details
13
+ */
14
+ type LoggerContext = Record<string, unknown> & {
15
+ error?: unknown;
16
+ };
17
+ /**
18
+ * Logger interface for amqp-contract packages.
19
+ *
20
+ * Provides a simple logging abstraction that can be implemented by users
21
+ * to integrate with their preferred logging framework.
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * // Simple console logger implementation
26
+ * const logger: Logger = {
27
+ * debug: (message, context) => console.debug(message, context),
28
+ * info: (message, context) => console.info(message, context),
29
+ * warn: (message, context) => console.warn(message, context),
30
+ * error: (message, context) => console.error(message, context),
31
+ * };
32
+ * ```
33
+ */
34
+ interface Logger {
35
+ /**
36
+ * Log debug level messages
37
+ * @param message - The log message
38
+ * @param context - Optional context to include with the log
39
+ */
40
+ debug(message: string, context?: LoggerContext): void;
41
+ /**
42
+ * Log info level messages
43
+ * @param message - The log message
44
+ * @param context - Optional context to include with the log
45
+ */
46
+ info(message: string, context?: LoggerContext): void;
47
+ /**
48
+ * Log warning level messages
49
+ * @param message - The log message
50
+ * @param context - Optional context to include with the log
51
+ */
52
+ warn(message: string, context?: LoggerContext): void;
53
+ /**
54
+ * Log error level messages
55
+ * @param message - The log message
56
+ * @param context - Optional context to include with the log
57
+ */
58
+ error(message: string, context?: LoggerContext): void;
59
+ }
60
+ //#endregion
4
61
  //#region src/index.d.ts
5
62
  type AmqpClientOptions = {
6
63
  urls: ConnectionUrl[];
@@ -16,5 +73,5 @@ declare class AmqpClient {
16
73
  private setup;
17
74
  }
18
75
  //#endregion
19
- export { AmqpClient, AmqpClientOptions };
76
+ export { AmqpClient, AmqpClientOptions, type Logger, type LoggerContext };
20
77
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/index.ts"],"sourcesContent":[],"mappings":";;;;KASY,iBAAA;QACJ;EADI,iBAAA,CAAA,EAEU,4BAAA,GAAA,SAAA;AAGtB,CAAA;AAE2B,cAFd,UAAA,CAEc;EAGI,iBAAA,QAAA;EACD,iBAAA,OAAA;EASb,iBAAA,UAAA;EAAO,SAAA,OAAA,EAbG,cAaH;wBAVO,6BACD;WASb"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/logger.ts","../src/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAQA;AAqBA;;;AAoBkC,KAzCtB,aAAA,GAAgB,MAyCM,CAAA,MAAA,EAAA,OAAA,CAAA,GAAA;EAOC,KAAA,CAAA,EAAA,OAAA;CAAa;;;;AC7ChD;AAKA;;;;;;;;;;;;;UDaiB,MAAA;;;;;;mCAMkB;;;;;;kCAOD;;;;;;kCAOA;;;;;;mCAOC;;;;KC7CvB,iBAAA;EDHA,IAAA,ECIJ,aDJiB,EAAA;EAqBR,iBAAM,CAAA,EChBD,4BDgBC,GAAA,SAAA;CAMY;AAOD,cC1BrB,UAAA,CD0BqB;EAOA,iBAAA,QAAA;EAOC,iBAAA,OAAA;EAAa,iBAAA,UAAA;oBCtCrB;wBAGI,6BACD;WASb;EApBL,QAAA,KAAA;AAKZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["contract: ContractDefinition","options: AmqpClientOptions"],"sources":["../src/index.ts"],"sourcesContent":["import type { Channel } from \"amqplib\";\nimport type { ContractDefinition } from \"@amqp-contract/contract\";\nimport amqp, {\n AmqpConnectionManager,\n AmqpConnectionManagerOptions,\n ChannelWrapper,\n ConnectionUrl,\n} from \"amqp-connection-manager\";\n\nexport type AmqpClientOptions = {\n urls: ConnectionUrl[];\n connectionOptions?: AmqpConnectionManagerOptions | undefined;\n};\n\nexport class AmqpClient {\n private readonly connection: AmqpConnectionManager;\n public readonly channel: ChannelWrapper;\n\n constructor(\n private readonly contract: ContractDefinition,\n private readonly options: AmqpClientOptions,\n ) {\n this.connection = amqp.connect(this.options.urls, this.options.connectionOptions);\n this.channel = this.connection.createChannel({\n json: true,\n setup: (channel: Channel) => this.setup(channel),\n });\n }\n\n async close(): Promise<void> {\n await this.channel.close();\n await this.connection.close();\n }\n\n private async setup(channel: Channel): Promise<void> {\n // Setup exchanges\n const exchangeResults = await Promise.allSettled(\n Object.values(this.contract.exchanges ?? {}).map((exchange) =>\n channel.assertExchange(exchange.name, exchange.type, {\n durable: exchange.durable,\n autoDelete: exchange.autoDelete,\n internal: exchange.internal,\n arguments: exchange.arguments,\n }),\n ),\n );\n const exchangeErrors = exchangeResults.filter(\n (result): result is PromiseRejectedResult => result.status === \"rejected\",\n );\n if (exchangeErrors.length > 0) {\n throw new AggregateError(\n exchangeErrors.map(({ reason }) => reason),\n \"Failed to setup exchanges\",\n );\n }\n\n // Setup queues\n const queueResults = await Promise.allSettled(\n Object.values(this.contract.queues ?? {}).map((queue) =>\n channel.assertQueue(queue.name, {\n durable: queue.durable,\n exclusive: queue.exclusive,\n autoDelete: queue.autoDelete,\n arguments: queue.arguments,\n }),\n ),\n );\n const queueErrors = queueResults.filter(\n (result): result is PromiseRejectedResult => result.status === \"rejected\",\n );\n if (queueErrors.length > 0) {\n throw new AggregateError(\n queueErrors.map(({ reason }) => reason),\n \"Failed to setup queues\",\n );\n }\n\n // Setup bindings\n const bindingResults = await Promise.allSettled(\n Object.values(this.contract.bindings ?? {}).map((binding) => {\n if (binding.type === \"queue\") {\n return channel.bindQueue(\n binding.queue.name,\n binding.exchange.name,\n binding.routingKey ?? \"\",\n binding.arguments,\n );\n }\n\n return channel.bindExchange(\n binding.destination.name,\n binding.source.name,\n binding.routingKey ?? \"\",\n binding.arguments,\n );\n }),\n );\n const bindingErrors = bindingResults.filter(\n (result): result is PromiseRejectedResult => result.status === \"rejected\",\n );\n if (bindingErrors.length > 0) {\n throw new AggregateError(\n bindingErrors.map(({ reason }) => reason),\n \"Failed to setup bindings\",\n );\n }\n }\n}\n"],"mappings":";;;AAcA,IAAa,aAAb,MAAwB;CACtB,AAAiB;CACjB,AAAgB;CAEhB,YACE,AAAiBA,UACjB,AAAiBC,SACjB;EAFiB;EACA;AAEjB,OAAK,aAAa,KAAK,QAAQ,KAAK,QAAQ,MAAM,KAAK,QAAQ,kBAAkB;AACjF,OAAK,UAAU,KAAK,WAAW,cAAc;GAC3C,MAAM;GACN,QAAQ,YAAqB,KAAK,MAAM,QAAQ;GACjD,CAAC;;CAGJ,MAAM,QAAuB;AAC3B,QAAM,KAAK,QAAQ,OAAO;AAC1B,QAAM,KAAK,WAAW,OAAO;;CAG/B,MAAc,MAAM,SAAiC;EAYnD,MAAM,kBAVkB,MAAM,QAAQ,WACpC,OAAO,OAAO,KAAK,SAAS,aAAa,EAAE,CAAC,CAAC,KAAK,aAChD,QAAQ,eAAe,SAAS,MAAM,SAAS,MAAM;GACnD,SAAS,SAAS;GAClB,YAAY,SAAS;GACrB,UAAU,SAAS;GACnB,WAAW,SAAS;GACrB,CAAC,CACH,CACF,EACsC,QACpC,WAA4C,OAAO,WAAW,WAChE;AACD,MAAI,eAAe,SAAS,EAC1B,OAAM,IAAI,eACR,eAAe,KAAK,EAAE,aAAa,OAAO,EAC1C,4BACD;EAcH,MAAM,eAVe,MAAM,QAAQ,WACjC,OAAO,OAAO,KAAK,SAAS,UAAU,EAAE,CAAC,CAAC,KAAK,UAC7C,QAAQ,YAAY,MAAM,MAAM;GAC9B,SAAS,MAAM;GACf,WAAW,MAAM;GACjB,YAAY,MAAM;GAClB,WAAW,MAAM;GAClB,CAAC,CACH,CACF,EACgC,QAC9B,WAA4C,OAAO,WAAW,WAChE;AACD,MAAI,YAAY,SAAS,EACvB,OAAM,IAAI,eACR,YAAY,KAAK,EAAE,aAAa,OAAO,EACvC,yBACD;EAuBH,MAAM,iBAnBiB,MAAM,QAAQ,WACnC,OAAO,OAAO,KAAK,SAAS,YAAY,EAAE,CAAC,CAAC,KAAK,YAAY;AAC3D,OAAI,QAAQ,SAAS,QACnB,QAAO,QAAQ,UACb,QAAQ,MAAM,MACd,QAAQ,SAAS,MACjB,QAAQ,cAAc,IACtB,QAAQ,UACT;AAGH,UAAO,QAAQ,aACb,QAAQ,YAAY,MACpB,QAAQ,OAAO,MACf,QAAQ,cAAc,IACtB,QAAQ,UACT;IACD,CACH,EACoC,QAClC,WAA4C,OAAO,WAAW,WAChE;AACD,MAAI,cAAc,SAAS,EACzB,OAAM,IAAI,eACR,cAAc,KAAK,EAAE,aAAa,OAAO,EACzC,2BACD"}
1
+ {"version":3,"file":"index.mjs","names":["contract: ContractDefinition","options: AmqpClientOptions"],"sources":["../src/index.ts"],"sourcesContent":["import type { Channel } from \"amqplib\";\nimport type { ContractDefinition } from \"@amqp-contract/contract\";\nimport amqp, {\n AmqpConnectionManager,\n AmqpConnectionManagerOptions,\n ChannelWrapper,\n ConnectionUrl,\n} from \"amqp-connection-manager\";\n\nexport type { Logger, LoggerContext } from \"./logger.js\";\n\nexport type AmqpClientOptions = {\n urls: ConnectionUrl[];\n connectionOptions?: AmqpConnectionManagerOptions | undefined;\n};\n\nexport class AmqpClient {\n private readonly connection: AmqpConnectionManager;\n public readonly channel: ChannelWrapper;\n\n constructor(\n private readonly contract: ContractDefinition,\n private readonly options: AmqpClientOptions,\n ) {\n this.connection = amqp.connect(this.options.urls, this.options.connectionOptions);\n this.channel = this.connection.createChannel({\n json: true,\n setup: (channel: Channel) => this.setup(channel),\n });\n }\n\n async close(): Promise<void> {\n await this.channel.close();\n await this.connection.close();\n }\n\n private async setup(channel: Channel): Promise<void> {\n // Setup exchanges\n const exchangeResults = await Promise.allSettled(\n Object.values(this.contract.exchanges ?? {}).map((exchange) =>\n channel.assertExchange(exchange.name, exchange.type, {\n durable: exchange.durable,\n autoDelete: exchange.autoDelete,\n internal: exchange.internal,\n arguments: exchange.arguments,\n }),\n ),\n );\n const exchangeErrors = exchangeResults.filter(\n (result): result is PromiseRejectedResult => result.status === \"rejected\",\n );\n if (exchangeErrors.length > 0) {\n throw new AggregateError(\n exchangeErrors.map(({ reason }) => reason),\n \"Failed to setup exchanges\",\n );\n }\n\n // Setup queues\n const queueResults = await Promise.allSettled(\n Object.values(this.contract.queues ?? {}).map((queue) =>\n channel.assertQueue(queue.name, {\n durable: queue.durable,\n exclusive: queue.exclusive,\n autoDelete: queue.autoDelete,\n arguments: queue.arguments,\n }),\n ),\n );\n const queueErrors = queueResults.filter(\n (result): result is PromiseRejectedResult => result.status === \"rejected\",\n );\n if (queueErrors.length > 0) {\n throw new AggregateError(\n queueErrors.map(({ reason }) => reason),\n \"Failed to setup queues\",\n );\n }\n\n // Setup bindings\n const bindingResults = await Promise.allSettled(\n Object.values(this.contract.bindings ?? {}).map((binding) => {\n if (binding.type === \"queue\") {\n return channel.bindQueue(\n binding.queue.name,\n binding.exchange.name,\n binding.routingKey ?? \"\",\n binding.arguments,\n );\n }\n\n return channel.bindExchange(\n binding.destination.name,\n binding.source.name,\n binding.routingKey ?? \"\",\n binding.arguments,\n );\n }),\n );\n const bindingErrors = bindingResults.filter(\n (result): result is PromiseRejectedResult => result.status === \"rejected\",\n );\n if (bindingErrors.length > 0) {\n throw new AggregateError(\n bindingErrors.map(({ reason }) => reason),\n \"Failed to setup bindings\",\n );\n }\n }\n}\n"],"mappings":";;;AAgBA,IAAa,aAAb,MAAwB;CACtB,AAAiB;CACjB,AAAgB;CAEhB,YACE,AAAiBA,UACjB,AAAiBC,SACjB;EAFiB;EACA;AAEjB,OAAK,aAAa,KAAK,QAAQ,KAAK,QAAQ,MAAM,KAAK,QAAQ,kBAAkB;AACjF,OAAK,UAAU,KAAK,WAAW,cAAc;GAC3C,MAAM;GACN,QAAQ,YAAqB,KAAK,MAAM,QAAQ;GACjD,CAAC;;CAGJ,MAAM,QAAuB;AAC3B,QAAM,KAAK,QAAQ,OAAO;AAC1B,QAAM,KAAK,WAAW,OAAO;;CAG/B,MAAc,MAAM,SAAiC;EAYnD,MAAM,kBAVkB,MAAM,QAAQ,WACpC,OAAO,OAAO,KAAK,SAAS,aAAa,EAAE,CAAC,CAAC,KAAK,aAChD,QAAQ,eAAe,SAAS,MAAM,SAAS,MAAM;GACnD,SAAS,SAAS;GAClB,YAAY,SAAS;GACrB,UAAU,SAAS;GACnB,WAAW,SAAS;GACrB,CAAC,CACH,CACF,EACsC,QACpC,WAA4C,OAAO,WAAW,WAChE;AACD,MAAI,eAAe,SAAS,EAC1B,OAAM,IAAI,eACR,eAAe,KAAK,EAAE,aAAa,OAAO,EAC1C,4BACD;EAcH,MAAM,eAVe,MAAM,QAAQ,WACjC,OAAO,OAAO,KAAK,SAAS,UAAU,EAAE,CAAC,CAAC,KAAK,UAC7C,QAAQ,YAAY,MAAM,MAAM;GAC9B,SAAS,MAAM;GACf,WAAW,MAAM;GACjB,YAAY,MAAM;GAClB,WAAW,MAAM;GAClB,CAAC,CACH,CACF,EACgC,QAC9B,WAA4C,OAAO,WAAW,WAChE;AACD,MAAI,YAAY,SAAS,EACvB,OAAM,IAAI,eACR,YAAY,KAAK,EAAE,aAAa,OAAO,EACvC,yBACD;EAuBH,MAAM,iBAnBiB,MAAM,QAAQ,WACnC,OAAO,OAAO,KAAK,SAAS,YAAY,EAAE,CAAC,CAAC,KAAK,YAAY;AAC3D,OAAI,QAAQ,SAAS,QACnB,QAAO,QAAQ,UACb,QAAQ,MAAM,MACd,QAAQ,SAAS,MACjB,QAAQ,cAAc,IACtB,QAAQ,UACT;AAGH,UAAO,QAAQ,aACb,QAAQ,YAAY,MACpB,QAAQ,OAAO,MACf,QAAQ,cAAc,IACtB,QAAQ,UACT;IACD,CACH,EACoC,QAClC,WAA4C,OAAO,WAAW,WAChE;AACD,MAAI,cAAc,SAAS,EACzB,OAAM,IAAI,eACR,cAAc,KAAK,EAAE,aAAa,OAAO,EACzC,2BACD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amqp-contract/core",
3
- "version": "0.3.1",
3
+ "version": "0.3.3",
4
4
  "description": "Core utilities for AMQP setup and management in amqp-contract",
5
5
  "keywords": [
6
6
  "amqp",
@@ -43,7 +43,7 @@
43
43
  "dependencies": {
44
44
  "amqp-connection-manager": "5.0.0",
45
45
  "amqplib": "0.10.9",
46
- "@amqp-contract/contract": "0.3.1"
46
+ "@amqp-contract/contract": "0.3.3"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@types/amqplib": "0.10.8",