@amqp-contract/core 0.19.0 → 0.21.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 CHANGED
@@ -41,8 +41,8 @@ import {
41
41
  import { z } from "zod";
42
42
 
43
43
  // Define resources
44
- const ordersExchange = defineExchange("orders", "topic", { durable: true });
45
- const orderProcessingQueue = defineQueue("order-processing", { durable: true });
44
+ const ordersExchange = defineExchange("orders");
45
+ const orderProcessingQueue = defineQueue("order-processing");
46
46
  const orderMessage = defineMessage(z.object({ orderId: z.string() }));
47
47
 
48
48
  const orderCreatedEvent = defineEventPublisher(ordersExchange, orderMessage, {
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  //#region \0rolldown/runtime.js
3
3
  var __create = Object.create;
4
4
  var __defProp = Object.defineProperty;
@@ -7,16 +7,12 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
7
7
  var __getProtoOf = Object.getPrototypeOf;
8
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
9
  var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
12
- key = keys[i];
13
- if (!__hasOwnProp.call(to, key) && key !== except) {
14
- __defProp(to, key, {
15
- get: ((k) => from[k]).bind(null, key),
16
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
- });
18
- }
19
- }
10
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
+ key = keys[i];
12
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
13
+ get: ((k) => from[k]).bind(null, key),
14
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
+ });
20
16
  }
21
17
  return to;
22
18
  };
@@ -24,13 +20,11 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
24
20
  value: mod,
25
21
  enumerable: true
26
22
  }) : target, mod));
27
-
28
23
  //#endregion
29
24
  let _swan_io_boxed = require("@swan-io/boxed");
30
25
  let amqp_connection_manager = require("amqp-connection-manager");
31
- amqp_connection_manager = __toESM(amqp_connection_manager);
26
+ amqp_connection_manager = __toESM(amqp_connection_manager, 1);
32
27
  let _amqp_contract_contract = require("@amqp-contract/contract");
33
-
34
28
  //#region src/connection-manager.ts
35
29
  /**
36
30
  * Connection manager singleton for sharing AMQP connections across clients.
@@ -155,7 +149,6 @@ var ConnectionManagerSingleton = class ConnectionManagerSingleton {
155
149
  this.refCounts.clear();
156
150
  }
157
151
  };
158
-
159
152
  //#endregion
160
153
  //#region src/errors.ts
161
154
  /**
@@ -192,7 +185,6 @@ var MessageValidationError = class extends Error {
192
185
  if (typeof ErrorConstructor.captureStackTrace === "function") ErrorConstructor.captureStackTrace(this, this.constructor);
193
186
  }
194
187
  };
195
-
196
188
  //#endregion
197
189
  //#region src/setup.ts
198
190
  /**
@@ -238,14 +230,11 @@ async function setupAmqpTopology(channel, contract) {
238
230
  queueArguments["x-dead-letter-exchange"] = queue.deadLetter.exchange.name;
239
231
  if (queue.deadLetter.routingKey) queueArguments["x-dead-letter-routing-key"] = queue.deadLetter.routingKey;
240
232
  }
241
- if (queue.type === "quorum") {
242
- if (queue.deliveryLimit !== void 0) queueArguments["x-delivery-limit"] = queue.deliveryLimit;
243
- return channel.assertQueue(queue.name, {
244
- durable: true,
245
- autoDelete: queue.autoDelete,
246
- arguments: queueArguments
247
- });
248
- }
233
+ if (queue.type === "quorum") return channel.assertQueue(queue.name, {
234
+ durable: true,
235
+ arguments: queueArguments
236
+ });
237
+ if (queue.maxPriority !== void 0) queueArguments["x-max-priority"] = queue.maxPriority;
249
238
  return channel.assertQueue(queue.name, {
250
239
  durable: queue.durable,
251
240
  exclusive: queue.exclusive,
@@ -260,7 +249,6 @@ async function setupAmqpTopology(channel, contract) {
260
249
  }))).filter((result) => result.status === "rejected");
261
250
  if (bindingErrors.length > 0) throw new AggregateError(bindingErrors.map(({ reason }) => reason), "Failed to setup bindings");
262
251
  }
263
-
264
252
  //#endregion
265
253
  //#region src/amqp-client.ts
266
254
  /**
@@ -325,10 +313,12 @@ var AmqpClient = class {
325
313
  this.contract = contract;
326
314
  this.urls = options.urls;
327
315
  if (options.connectionOptions !== void 0) this.connectionOptions = options.connectionOptions;
328
- this.connection = ConnectionManagerSingleton.getInstance().getConnection(options.urls, options.connectionOptions);
316
+ const singleton = ConnectionManagerSingleton.getInstance();
317
+ this.connection = singleton.getConnection(options.urls, options.connectionOptions);
329
318
  const defaultSetup = (channel) => setupAmqpTopology(channel, this.contract);
330
319
  const { setup: userSetup, ...otherChannelOptions } = options.channelOptions ?? {};
331
320
  const channelOpts = {
321
+ confirm: true,
332
322
  json: true,
333
323
  setup: defaultSetup,
334
324
  ...otherChannelOptions
@@ -372,6 +362,17 @@ var AmqpClient = class {
372
362
  return _swan_io_boxed.Future.fromPromise(this.channelWrapper.publish(exchange, routingKey, content, options)).mapError((error) => new TechnicalError("Failed to publish message", error));
373
363
  }
374
364
  /**
365
+ * Publish a message directly to a queue.
366
+ *
367
+ * @param queue - The queue name
368
+ * @param content - The message content (will be JSON serialized if json: true)
369
+ * @param options - Optional publish options
370
+ * @returns A Future with `Result<boolean>` - true if message was sent, false if channel buffer is full
371
+ */
372
+ sendToQueue(queue, content, options) {
373
+ return _swan_io_boxed.Future.fromPromise(this.channelWrapper.sendToQueue(queue, content, options)).mapError((error) => new TechnicalError("Failed to publish message to queue", error));
374
+ }
375
+ /**
375
376
  * Start consuming messages from a queue.
376
377
  *
377
378
  * @param queue - The queue name
@@ -455,7 +456,6 @@ var AmqpClient = class {
455
456
  await ConnectionManagerSingleton.getInstance()._resetForTesting();
456
457
  }
457
458
  };
458
-
459
459
  //#endregion
460
460
  //#region src/telemetry.ts
461
461
  /**
@@ -679,7 +679,6 @@ function _resetTelemetryCacheForTesting() {
679
679
  cachedPublishLatencyHistogram = void 0;
680
680
  cachedConsumeLatencyHistogram = void 0;
681
681
  }
682
-
683
682
  //#endregion
684
683
  exports.AmqpClient = AmqpClient;
685
684
  exports.ConnectionManagerSingleton = ConnectionManagerSingleton;
@@ -694,4 +693,4 @@ exports.recordConsumeMetric = recordConsumeMetric;
694
693
  exports.recordPublishMetric = recordPublishMetric;
695
694
  exports.setupAmqpTopology = setupAmqpTopology;
696
695
  exports.startConsumeSpan = startConsumeSpan;
697
- exports.startPublishSpan = startPublishSpan;
696
+ exports.startPublishSpan = startPublishSpan;
package/dist/index.d.cts CHANGED
@@ -1,65 +1,9 @@
1
+ import { ContractDefinition } from "@amqp-contract/contract";
2
+ import { Future, Result } from "@swan-io/boxed";
1
3
  import { AmqpConnectionManager, AmqpConnectionManagerOptions, ConnectionUrl, CreateChannelOpts } from "amqp-connection-manager";
2
4
  import { Channel, ConsumeMessage, Options } from "amqplib";
3
- import { Future, Result } from "@swan-io/boxed";
4
- import { ContractDefinition } from "@amqp-contract/contract";
5
5
  import { Attributes, Counter, Histogram, Span, Tracer } from "@opentelemetry/api";
6
6
 
7
- //#region src/logger.d.ts
8
- /**
9
- * Context object for logger methods.
10
- *
11
- * This type includes reserved keys that provide consistent naming
12
- * for common logging context properties.
13
- *
14
- * @property error - Error object or error details
15
- */
16
- type LoggerContext = Record<string, unknown> & {
17
- error?: unknown;
18
- };
19
- /**
20
- * Logger interface for amqp-contract packages.
21
- *
22
- * Provides a simple logging abstraction that can be implemented by users
23
- * to integrate with their preferred logging framework.
24
- *
25
- * @example
26
- * ```typescript
27
- * // Simple console logger implementation
28
- * const logger: Logger = {
29
- * debug: (message, context) => console.debug(message, context),
30
- * info: (message, context) => console.info(message, context),
31
- * warn: (message, context) => console.warn(message, context),
32
- * error: (message, context) => console.error(message, context),
33
- * };
34
- * ```
35
- */
36
- type Logger = {
37
- /**
38
- * Log debug level messages
39
- * @param message - The log message
40
- * @param context - Optional context to include with the log
41
- */
42
- debug(message: string, context?: LoggerContext): void;
43
- /**
44
- * Log info level messages
45
- * @param message - The log message
46
- * @param context - Optional context to include with the log
47
- */
48
- info(message: string, context?: LoggerContext): void;
49
- /**
50
- * Log warning level messages
51
- * @param message - The log message
52
- * @param context - Optional context to include with the log
53
- */
54
- warn(message: string, context?: LoggerContext): void;
55
- /**
56
- * Log error level messages
57
- * @param message - The log message
58
- * @param context - Optional context to include with the log
59
- */
60
- error(message: string, context?: LoggerContext): void;
61
- };
62
- //#endregion
63
7
  //#region src/errors.d.ts
64
8
  /**
65
9
  * Error for technical/runtime failures that cannot be prevented by TypeScript.
@@ -103,6 +47,18 @@ type AmqpClientOptions = {
103
47
  * Callback type for consuming messages.
104
48
  */
105
49
  type ConsumeCallback = (msg: ConsumeMessage | null) => void | Promise<void>;
50
+ /**
51
+ * Publish options that extend amqplib's Options.Publish with optional timeout support.
52
+ */
53
+ type PublishOptions = Options.Publish & {
54
+ /** Message will be rejected after timeout ms */timeout?: number;
55
+ };
56
+ /**
57
+ * Consume options that extend amqplib's Options.Consume with optional prefetch support.
58
+ */
59
+ type ConsumerOptions = Options.Consume & {
60
+ /** Number of messages to prefetch */prefetch?: number;
61
+ };
106
62
  /**
107
63
  * AMQP client that manages connections and channels with automatic topology setup.
108
64
  *
@@ -174,7 +130,16 @@ declare class AmqpClient {
174
130
  * @param options - Optional publish options
175
131
  * @returns A Future with `Result<boolean>` - true if message was sent, false if channel buffer is full
176
132
  */
177
- publish(exchange: string, routingKey: string, content: Buffer | unknown, options?: Options.Publish): Future<Result<boolean, TechnicalError>>;
133
+ publish(exchange: string, routingKey: string, content: Buffer | unknown, options?: PublishOptions): Future<Result<boolean, TechnicalError>>;
134
+ /**
135
+ * Publish a message directly to a queue.
136
+ *
137
+ * @param queue - The queue name
138
+ * @param content - The message content (will be JSON serialized if json: true)
139
+ * @param options - Optional publish options
140
+ * @returns A Future with `Result<boolean>` - true if message was sent, false if channel buffer is full
141
+ */
142
+ sendToQueue(queue: string, content: Buffer | unknown, options?: PublishOptions): Future<Result<boolean, TechnicalError>>;
178
143
  /**
179
144
  * Start consuming messages from a queue.
180
145
  *
@@ -183,7 +148,7 @@ declare class AmqpClient {
183
148
  * @param options - Optional consume options
184
149
  * @returns A Future with `Result<string>` - the consumer tag
185
150
  */
186
- consume(queue: string, callback: ConsumeCallback, options?: Options.Consume): Future<Result<string, TechnicalError>>;
151
+ consume(queue: string, callback: ConsumeCallback, options?: ConsumerOptions): Future<Result<string, TechnicalError>>;
187
152
  /**
188
153
  * Cancel a consumer by its consumer tag.
189
154
  *
@@ -326,6 +291,62 @@ declare class ConnectionManagerSingleton {
326
291
  _resetForTesting(): Promise<void>;
327
292
  }
328
293
  //#endregion
294
+ //#region src/logger.d.ts
295
+ /**
296
+ * Context object for logger methods.
297
+ *
298
+ * This type includes reserved keys that provide consistent naming
299
+ * for common logging context properties.
300
+ *
301
+ * @property error - Error object or error details
302
+ */
303
+ type LoggerContext = Record<string, unknown> & {
304
+ error?: unknown;
305
+ };
306
+ /**
307
+ * Logger interface for amqp-contract packages.
308
+ *
309
+ * Provides a simple logging abstraction that can be implemented by users
310
+ * to integrate with their preferred logging framework.
311
+ *
312
+ * @example
313
+ * ```typescript
314
+ * // Simple console logger implementation
315
+ * const logger: Logger = {
316
+ * debug: (message, context) => console.debug(message, context),
317
+ * info: (message, context) => console.info(message, context),
318
+ * warn: (message, context) => console.warn(message, context),
319
+ * error: (message, context) => console.error(message, context),
320
+ * };
321
+ * ```
322
+ */
323
+ type Logger = {
324
+ /**
325
+ * Log debug level messages
326
+ * @param message - The log message
327
+ * @param context - Optional context to include with the log
328
+ */
329
+ debug(message: string, context?: LoggerContext): void;
330
+ /**
331
+ * Log info level messages
332
+ * @param message - The log message
333
+ * @param context - Optional context to include with the log
334
+ */
335
+ info(message: string, context?: LoggerContext): void;
336
+ /**
337
+ * Log warning level messages
338
+ * @param message - The log message
339
+ * @param context - Optional context to include with the log
340
+ */
341
+ warn(message: string, context?: LoggerContext): void;
342
+ /**
343
+ * Log error level messages
344
+ * @param message - The log message
345
+ * @param context - Optional context to include with the log
346
+ */
347
+ error(message: string, context?: LoggerContext): void;
348
+ };
349
+ //#endregion
329
350
  //#region src/setup.d.ts
330
351
  /**
331
352
  * Setup AMQP topology (exchanges, queues, and bindings) from a contract definition.
@@ -438,5 +459,5 @@ declare function recordConsumeMetric(provider: TelemetryProvider, queueName: str
438
459
  */
439
460
  declare function _resetTelemetryCacheForTesting(): void;
440
461
  //#endregion
441
- export { AmqpClient, type AmqpClientOptions, ConnectionManagerSingleton, type ConsumeCallback, type Logger, type LoggerContext, MessageValidationError, MessagingSemanticConventions, TechnicalError, type TelemetryProvider, _resetTelemetryCacheForTesting, defaultTelemetryProvider, endSpanError, endSpanSuccess, recordConsumeMetric, recordPublishMetric, setupAmqpTopology, startConsumeSpan, startPublishSpan };
462
+ export { AmqpClient, type AmqpClientOptions, ConnectionManagerSingleton, type ConsumeCallback, type ConsumerOptions, type Logger, type LoggerContext, MessageValidationError, MessagingSemanticConventions, type PublishOptions, TechnicalError, type TelemetryProvider, _resetTelemetryCacheForTesting, defaultTelemetryProvider, endSpanError, endSpanSuccess, recordConsumeMetric, recordPublishMetric, setupAmqpTopology, startConsumeSpan, startPublishSpan };
442
463
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/logger.ts","../src/errors.ts","../src/amqp-client.ts","../src/connection-manager.ts","../src/setup.ts","../src/telemetry.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/errors.ts","../src/amqp-client.ts","../src/connection-manager.ts","../src/logger.ts","../src/setup.ts","../src/telemetry.ts"],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -4,62 +4,6 @@ import { ContractDefinition } from "@amqp-contract/contract";
4
4
  import { Attributes, Counter, Histogram, Span, Tracer } from "@opentelemetry/api";
5
5
  import { Channel, ConsumeMessage, Options } from "amqplib";
6
6
 
7
- //#region src/logger.d.ts
8
- /**
9
- * Context object for logger methods.
10
- *
11
- * This type includes reserved keys that provide consistent naming
12
- * for common logging context properties.
13
- *
14
- * @property error - Error object or error details
15
- */
16
- type LoggerContext = Record<string, unknown> & {
17
- error?: unknown;
18
- };
19
- /**
20
- * Logger interface for amqp-contract packages.
21
- *
22
- * Provides a simple logging abstraction that can be implemented by users
23
- * to integrate with their preferred logging framework.
24
- *
25
- * @example
26
- * ```typescript
27
- * // Simple console logger implementation
28
- * const logger: Logger = {
29
- * debug: (message, context) => console.debug(message, context),
30
- * info: (message, context) => console.info(message, context),
31
- * warn: (message, context) => console.warn(message, context),
32
- * error: (message, context) => console.error(message, context),
33
- * };
34
- * ```
35
- */
36
- type Logger = {
37
- /**
38
- * Log debug level messages
39
- * @param message - The log message
40
- * @param context - Optional context to include with the log
41
- */
42
- debug(message: string, context?: LoggerContext): void;
43
- /**
44
- * Log info level messages
45
- * @param message - The log message
46
- * @param context - Optional context to include with the log
47
- */
48
- info(message: string, context?: LoggerContext): void;
49
- /**
50
- * Log warning level messages
51
- * @param message - The log message
52
- * @param context - Optional context to include with the log
53
- */
54
- warn(message: string, context?: LoggerContext): void;
55
- /**
56
- * Log error level messages
57
- * @param message - The log message
58
- * @param context - Optional context to include with the log
59
- */
60
- error(message: string, context?: LoggerContext): void;
61
- };
62
- //#endregion
63
7
  //#region src/errors.d.ts
64
8
  /**
65
9
  * Error for technical/runtime failures that cannot be prevented by TypeScript.
@@ -103,6 +47,18 @@ type AmqpClientOptions = {
103
47
  * Callback type for consuming messages.
104
48
  */
105
49
  type ConsumeCallback = (msg: ConsumeMessage | null) => void | Promise<void>;
50
+ /**
51
+ * Publish options that extend amqplib's Options.Publish with optional timeout support.
52
+ */
53
+ type PublishOptions = Options.Publish & {
54
+ /** Message will be rejected after timeout ms */timeout?: number;
55
+ };
56
+ /**
57
+ * Consume options that extend amqplib's Options.Consume with optional prefetch support.
58
+ */
59
+ type ConsumerOptions = Options.Consume & {
60
+ /** Number of messages to prefetch */prefetch?: number;
61
+ };
106
62
  /**
107
63
  * AMQP client that manages connections and channels with automatic topology setup.
108
64
  *
@@ -174,7 +130,16 @@ declare class AmqpClient {
174
130
  * @param options - Optional publish options
175
131
  * @returns A Future with `Result<boolean>` - true if message was sent, false if channel buffer is full
176
132
  */
177
- publish(exchange: string, routingKey: string, content: Buffer | unknown, options?: Options.Publish): Future<Result<boolean, TechnicalError>>;
133
+ publish(exchange: string, routingKey: string, content: Buffer | unknown, options?: PublishOptions): Future<Result<boolean, TechnicalError>>;
134
+ /**
135
+ * Publish a message directly to a queue.
136
+ *
137
+ * @param queue - The queue name
138
+ * @param content - The message content (will be JSON serialized if json: true)
139
+ * @param options - Optional publish options
140
+ * @returns A Future with `Result<boolean>` - true if message was sent, false if channel buffer is full
141
+ */
142
+ sendToQueue(queue: string, content: Buffer | unknown, options?: PublishOptions): Future<Result<boolean, TechnicalError>>;
178
143
  /**
179
144
  * Start consuming messages from a queue.
180
145
  *
@@ -183,7 +148,7 @@ declare class AmqpClient {
183
148
  * @param options - Optional consume options
184
149
  * @returns A Future with `Result<string>` - the consumer tag
185
150
  */
186
- consume(queue: string, callback: ConsumeCallback, options?: Options.Consume): Future<Result<string, TechnicalError>>;
151
+ consume(queue: string, callback: ConsumeCallback, options?: ConsumerOptions): Future<Result<string, TechnicalError>>;
187
152
  /**
188
153
  * Cancel a consumer by its consumer tag.
189
154
  *
@@ -326,6 +291,62 @@ declare class ConnectionManagerSingleton {
326
291
  _resetForTesting(): Promise<void>;
327
292
  }
328
293
  //#endregion
294
+ //#region src/logger.d.ts
295
+ /**
296
+ * Context object for logger methods.
297
+ *
298
+ * This type includes reserved keys that provide consistent naming
299
+ * for common logging context properties.
300
+ *
301
+ * @property error - Error object or error details
302
+ */
303
+ type LoggerContext = Record<string, unknown> & {
304
+ error?: unknown;
305
+ };
306
+ /**
307
+ * Logger interface for amqp-contract packages.
308
+ *
309
+ * Provides a simple logging abstraction that can be implemented by users
310
+ * to integrate with their preferred logging framework.
311
+ *
312
+ * @example
313
+ * ```typescript
314
+ * // Simple console logger implementation
315
+ * const logger: Logger = {
316
+ * debug: (message, context) => console.debug(message, context),
317
+ * info: (message, context) => console.info(message, context),
318
+ * warn: (message, context) => console.warn(message, context),
319
+ * error: (message, context) => console.error(message, context),
320
+ * };
321
+ * ```
322
+ */
323
+ type Logger = {
324
+ /**
325
+ * Log debug level messages
326
+ * @param message - The log message
327
+ * @param context - Optional context to include with the log
328
+ */
329
+ debug(message: string, context?: LoggerContext): void;
330
+ /**
331
+ * Log info level messages
332
+ * @param message - The log message
333
+ * @param context - Optional context to include with the log
334
+ */
335
+ info(message: string, context?: LoggerContext): void;
336
+ /**
337
+ * Log warning level messages
338
+ * @param message - The log message
339
+ * @param context - Optional context to include with the log
340
+ */
341
+ warn(message: string, context?: LoggerContext): void;
342
+ /**
343
+ * Log error level messages
344
+ * @param message - The log message
345
+ * @param context - Optional context to include with the log
346
+ */
347
+ error(message: string, context?: LoggerContext): void;
348
+ };
349
+ //#endregion
329
350
  //#region src/setup.d.ts
330
351
  /**
331
352
  * Setup AMQP topology (exchanges, queues, and bindings) from a contract definition.
@@ -438,5 +459,5 @@ declare function recordConsumeMetric(provider: TelemetryProvider, queueName: str
438
459
  */
439
460
  declare function _resetTelemetryCacheForTesting(): void;
440
461
  //#endregion
441
- export { AmqpClient, type AmqpClientOptions, ConnectionManagerSingleton, type ConsumeCallback, type Logger, type LoggerContext, MessageValidationError, MessagingSemanticConventions, TechnicalError, type TelemetryProvider, _resetTelemetryCacheForTesting, defaultTelemetryProvider, endSpanError, endSpanSuccess, recordConsumeMetric, recordPublishMetric, setupAmqpTopology, startConsumeSpan, startPublishSpan };
462
+ export { AmqpClient, type AmqpClientOptions, ConnectionManagerSingleton, type ConsumeCallback, type ConsumerOptions, type Logger, type LoggerContext, MessageValidationError, MessagingSemanticConventions, type PublishOptions, TechnicalError, type TelemetryProvider, _resetTelemetryCacheForTesting, defaultTelemetryProvider, endSpanError, endSpanSuccess, recordConsumeMetric, recordPublishMetric, setupAmqpTopology, startConsumeSpan, startPublishSpan };
442
463
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/logger.ts","../src/errors.ts","../src/amqp-client.ts","../src/connection-manager.ts","../src/setup.ts","../src/telemetry.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/errors.ts","../src/amqp-client.ts","../src/connection-manager.ts","../src/logger.ts","../src/setup.ts","../src/telemetry.ts"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -2,10 +2,8 @@ import { createRequire } from "node:module";
2
2
  import { Future } from "@swan-io/boxed";
3
3
  import amqp from "amqp-connection-manager";
4
4
  import { extractQueue } from "@amqp-contract/contract";
5
-
6
5
  //#region \0rolldown/runtime.js
7
6
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
8
-
9
7
  //#endregion
10
8
  //#region src/connection-manager.ts
11
9
  /**
@@ -131,7 +129,6 @@ var ConnectionManagerSingleton = class ConnectionManagerSingleton {
131
129
  this.refCounts.clear();
132
130
  }
133
131
  };
134
-
135
132
  //#endregion
136
133
  //#region src/errors.ts
137
134
  /**
@@ -168,7 +165,6 @@ var MessageValidationError = class extends Error {
168
165
  if (typeof ErrorConstructor.captureStackTrace === "function") ErrorConstructor.captureStackTrace(this, this.constructor);
169
166
  }
170
167
  };
171
-
172
168
  //#endregion
173
169
  //#region src/setup.ts
174
170
  /**
@@ -214,14 +210,11 @@ async function setupAmqpTopology(channel, contract) {
214
210
  queueArguments["x-dead-letter-exchange"] = queue.deadLetter.exchange.name;
215
211
  if (queue.deadLetter.routingKey) queueArguments["x-dead-letter-routing-key"] = queue.deadLetter.routingKey;
216
212
  }
217
- if (queue.type === "quorum") {
218
- if (queue.deliveryLimit !== void 0) queueArguments["x-delivery-limit"] = queue.deliveryLimit;
219
- return channel.assertQueue(queue.name, {
220
- durable: true,
221
- autoDelete: queue.autoDelete,
222
- arguments: queueArguments
223
- });
224
- }
213
+ if (queue.type === "quorum") return channel.assertQueue(queue.name, {
214
+ durable: true,
215
+ arguments: queueArguments
216
+ });
217
+ if (queue.maxPriority !== void 0) queueArguments["x-max-priority"] = queue.maxPriority;
225
218
  return channel.assertQueue(queue.name, {
226
219
  durable: queue.durable,
227
220
  exclusive: queue.exclusive,
@@ -236,7 +229,6 @@ async function setupAmqpTopology(channel, contract) {
236
229
  }))).filter((result) => result.status === "rejected");
237
230
  if (bindingErrors.length > 0) throw new AggregateError(bindingErrors.map(({ reason }) => reason), "Failed to setup bindings");
238
231
  }
239
-
240
232
  //#endregion
241
233
  //#region src/amqp-client.ts
242
234
  /**
@@ -301,10 +293,12 @@ var AmqpClient = class {
301
293
  this.contract = contract;
302
294
  this.urls = options.urls;
303
295
  if (options.connectionOptions !== void 0) this.connectionOptions = options.connectionOptions;
304
- this.connection = ConnectionManagerSingleton.getInstance().getConnection(options.urls, options.connectionOptions);
296
+ const singleton = ConnectionManagerSingleton.getInstance();
297
+ this.connection = singleton.getConnection(options.urls, options.connectionOptions);
305
298
  const defaultSetup = (channel) => setupAmqpTopology(channel, this.contract);
306
299
  const { setup: userSetup, ...otherChannelOptions } = options.channelOptions ?? {};
307
300
  const channelOpts = {
301
+ confirm: true,
308
302
  json: true,
309
303
  setup: defaultSetup,
310
304
  ...otherChannelOptions
@@ -348,6 +342,17 @@ var AmqpClient = class {
348
342
  return Future.fromPromise(this.channelWrapper.publish(exchange, routingKey, content, options)).mapError((error) => new TechnicalError("Failed to publish message", error));
349
343
  }
350
344
  /**
345
+ * Publish a message directly to a queue.
346
+ *
347
+ * @param queue - The queue name
348
+ * @param content - The message content (will be JSON serialized if json: true)
349
+ * @param options - Optional publish options
350
+ * @returns A Future with `Result<boolean>` - true if message was sent, false if channel buffer is full
351
+ */
352
+ sendToQueue(queue, content, options) {
353
+ return Future.fromPromise(this.channelWrapper.sendToQueue(queue, content, options)).mapError((error) => new TechnicalError("Failed to publish message to queue", error));
354
+ }
355
+ /**
351
356
  * Start consuming messages from a queue.
352
357
  *
353
358
  * @param queue - The queue name
@@ -431,7 +436,6 @@ var AmqpClient = class {
431
436
  await ConnectionManagerSingleton.getInstance()._resetForTesting();
432
437
  }
433
438
  };
434
-
435
439
  //#endregion
436
440
  //#region src/telemetry.ts
437
441
  /**
@@ -655,7 +659,7 @@ function _resetTelemetryCacheForTesting() {
655
659
  cachedPublishLatencyHistogram = void 0;
656
660
  cachedConsumeLatencyHistogram = void 0;
657
661
  }
658
-
659
662
  //#endregion
660
663
  export { AmqpClient, ConnectionManagerSingleton, MessageValidationError, MessagingSemanticConventions, TechnicalError, _resetTelemetryCacheForTesting, defaultTelemetryProvider, endSpanError, endSpanSuccess, recordConsumeMetric, recordPublishMetric, setupAmqpTopology, startConsumeSpan, startPublishSpan };
664
+
661
665
  //# sourceMappingURL=index.mjs.map