@amqp-contract/worker 0.12.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,4 +1,5 @@
1
1
  let _amqp_contract_core = require("@amqp-contract/core");
2
+ let _amqp_contract_contract = require("@amqp-contract/contract");
2
3
  let _swan_io_boxed = require("@swan-io/boxed");
3
4
  let node_zlib = require("node:zlib");
4
5
  let node_util = require("node:util");
@@ -49,6 +50,133 @@ var NonRetryableError = class extends Error {
49
50
  if (typeof ErrorConstructor.captureStackTrace === "function") ErrorConstructor.captureStackTrace(this, this.constructor);
50
51
  }
51
52
  };
53
+ /**
54
+ * Type guard to check if an error is a RetryableError.
55
+ *
56
+ * Use this to check error types in catch blocks or error handlers.
57
+ *
58
+ * @param error - The error to check
59
+ * @returns True if the error is a RetryableError
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * import { isRetryableError } from '@amqp-contract/worker';
64
+ *
65
+ * try {
66
+ * await processMessage();
67
+ * } catch (error) {
68
+ * if (isRetryableError(error)) {
69
+ * console.log('Will retry:', error.message);
70
+ * } else {
71
+ * console.log('Permanent failure:', error);
72
+ * }
73
+ * }
74
+ * ```
75
+ */
76
+ function isRetryableError(error) {
77
+ return error instanceof RetryableError;
78
+ }
79
+ /**
80
+ * Type guard to check if an error is a NonRetryableError.
81
+ *
82
+ * Use this to check error types in catch blocks or error handlers.
83
+ *
84
+ * @param error - The error to check
85
+ * @returns True if the error is a NonRetryableError
86
+ *
87
+ * @example
88
+ * ```typescript
89
+ * import { isNonRetryableError } from '@amqp-contract/worker';
90
+ *
91
+ * try {
92
+ * await processMessage();
93
+ * } catch (error) {
94
+ * if (isNonRetryableError(error)) {
95
+ * console.log('Will not retry:', error.message);
96
+ * }
97
+ * }
98
+ * ```
99
+ */
100
+ function isNonRetryableError(error) {
101
+ return error instanceof NonRetryableError;
102
+ }
103
+ /**
104
+ * Type guard to check if an error is any HandlerError (RetryableError or NonRetryableError).
105
+ *
106
+ * @param error - The error to check
107
+ * @returns True if the error is a HandlerError
108
+ *
109
+ * @example
110
+ * ```typescript
111
+ * import { isHandlerError } from '@amqp-contract/worker';
112
+ *
113
+ * function handleError(error: unknown) {
114
+ * if (isHandlerError(error)) {
115
+ * // error is RetryableError | NonRetryableError
116
+ * console.log('Handler error:', error.name, error.message);
117
+ * }
118
+ * }
119
+ * ```
120
+ */
121
+ function isHandlerError(error) {
122
+ return isRetryableError(error) || isNonRetryableError(error);
123
+ }
124
+ /**
125
+ * Create a RetryableError with less verbosity.
126
+ *
127
+ * This is a shorthand factory function for creating RetryableError instances.
128
+ * Use it for cleaner error creation in handlers.
129
+ *
130
+ * @param message - Error message describing the failure
131
+ * @param cause - Optional underlying error that caused this failure
132
+ * @returns A new RetryableError instance
133
+ *
134
+ * @example
135
+ * ```typescript
136
+ * import { retryable } from '@amqp-contract/worker';
137
+ * import { Future, Result } from '@swan-io/boxed';
138
+ *
139
+ * const handler = ({ payload }) =>
140
+ * Future.fromPromise(processPayment(payload))
141
+ * .mapOk(() => undefined)
142
+ * .mapError((e) => retryable('Payment service unavailable', e));
143
+ *
144
+ * // Equivalent to:
145
+ * // .mapError((e) => new RetryableError('Payment service unavailable', e));
146
+ * ```
147
+ */
148
+ function retryable(message, cause) {
149
+ return new RetryableError(message, cause);
150
+ }
151
+ /**
152
+ * Create a NonRetryableError with less verbosity.
153
+ *
154
+ * This is a shorthand factory function for creating NonRetryableError instances.
155
+ * Use it for cleaner error creation in handlers.
156
+ *
157
+ * @param message - Error message describing the failure
158
+ * @param cause - Optional underlying error that caused this failure
159
+ * @returns A new NonRetryableError instance
160
+ *
161
+ * @example
162
+ * ```typescript
163
+ * import { nonRetryable } from '@amqp-contract/worker';
164
+ * import { Future, Result } from '@swan-io/boxed';
165
+ *
166
+ * const handler = ({ payload }) => {
167
+ * if (!isValidPayload(payload)) {
168
+ * return Future.value(Result.Error(nonRetryable('Invalid payload format')));
169
+ * }
170
+ * return Future.value(Result.Ok(undefined));
171
+ * };
172
+ *
173
+ * // Equivalent to:
174
+ * // return Future.value(Result.Error(new NonRetryableError('Invalid payload format')));
175
+ * ```
176
+ */
177
+ function nonRetryable(message, cause) {
178
+ return new NonRetryableError(message, cause);
179
+ }
52
180
 
53
181
  //#endregion
54
182
  //#region src/decompression.ts
@@ -247,7 +375,8 @@ var TypedAmqpWorker = class TypedAmqpWorker {
247
375
  * TypeScript guarantees consumer and handler exist for valid consumer names.
248
376
  */
249
377
  consume(consumerName) {
250
- const consumer = this.contract.consumers[consumerName];
378
+ const consumerEntry = this.contract.consumers[consumerName];
379
+ const consumer = (0, _amqp_contract_contract.extractConsumer)(consumerEntry);
251
380
  const handler = this.actualHandlers[consumerName];
252
381
  return this.consumeSingle(consumerName, consumer, handler);
253
382
  }
@@ -611,4 +740,9 @@ exports.NonRetryableError = NonRetryableError;
611
740
  exports.RetryableError = RetryableError;
612
741
  exports.TypedAmqpWorker = TypedAmqpWorker;
613
742
  exports.defineHandler = defineHandler;
614
- exports.defineHandlers = defineHandlers;
743
+ exports.defineHandlers = defineHandlers;
744
+ exports.isHandlerError = isHandlerError;
745
+ exports.isNonRetryableError = isNonRetryableError;
746
+ exports.isRetryableError = isRetryableError;
747
+ exports.nonRetryable = nonRetryable;
748
+ exports.retryable = retryable;
package/dist/index.d.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Logger, TechnicalError, TelemetryProvider } from "@amqp-contract/core";
2
2
  import { AmqpConnectionManagerOptions, ConnectionUrl } from "amqp-connection-manager";
3
- import { ConsumerDefinition, ContractDefinition, InferConsumerNames, MessageDefinition } from "@amqp-contract/contract";
3
+ import { ConsumerDefinition, ConsumerEntry, ContractDefinitionInput, InferConsumerNames, MessageDefinition } from "@amqp-contract/contract";
4
4
  import { Future, Result } from "@swan-io/boxed";
5
5
  import { ConsumeMessage } from "amqplib";
6
6
  import { StandardSchemaV1 } from "@standard-schema/spec";
@@ -41,6 +41,123 @@ declare class NonRetryableError extends Error {
41
41
  * Use this type when defining handlers that explicitly signal error outcomes.
42
42
  */
43
43
  type HandlerError = RetryableError | NonRetryableError;
44
+ /**
45
+ * Type guard to check if an error is a RetryableError.
46
+ *
47
+ * Use this to check error types in catch blocks or error handlers.
48
+ *
49
+ * @param error - The error to check
50
+ * @returns True if the error is a RetryableError
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * import { isRetryableError } from '@amqp-contract/worker';
55
+ *
56
+ * try {
57
+ * await processMessage();
58
+ * } catch (error) {
59
+ * if (isRetryableError(error)) {
60
+ * console.log('Will retry:', error.message);
61
+ * } else {
62
+ * console.log('Permanent failure:', error);
63
+ * }
64
+ * }
65
+ * ```
66
+ */
67
+ declare function isRetryableError(error: unknown): error is RetryableError;
68
+ /**
69
+ * Type guard to check if an error is a NonRetryableError.
70
+ *
71
+ * Use this to check error types in catch blocks or error handlers.
72
+ *
73
+ * @param error - The error to check
74
+ * @returns True if the error is a NonRetryableError
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * import { isNonRetryableError } from '@amqp-contract/worker';
79
+ *
80
+ * try {
81
+ * await processMessage();
82
+ * } catch (error) {
83
+ * if (isNonRetryableError(error)) {
84
+ * console.log('Will not retry:', error.message);
85
+ * }
86
+ * }
87
+ * ```
88
+ */
89
+ declare function isNonRetryableError(error: unknown): error is NonRetryableError;
90
+ /**
91
+ * Type guard to check if an error is any HandlerError (RetryableError or NonRetryableError).
92
+ *
93
+ * @param error - The error to check
94
+ * @returns True if the error is a HandlerError
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * import { isHandlerError } from '@amqp-contract/worker';
99
+ *
100
+ * function handleError(error: unknown) {
101
+ * if (isHandlerError(error)) {
102
+ * // error is RetryableError | NonRetryableError
103
+ * console.log('Handler error:', error.name, error.message);
104
+ * }
105
+ * }
106
+ * ```
107
+ */
108
+ declare function isHandlerError(error: unknown): error is HandlerError;
109
+ /**
110
+ * Create a RetryableError with less verbosity.
111
+ *
112
+ * This is a shorthand factory function for creating RetryableError instances.
113
+ * Use it for cleaner error creation in handlers.
114
+ *
115
+ * @param message - Error message describing the failure
116
+ * @param cause - Optional underlying error that caused this failure
117
+ * @returns A new RetryableError instance
118
+ *
119
+ * @example
120
+ * ```typescript
121
+ * import { retryable } from '@amqp-contract/worker';
122
+ * import { Future, Result } from '@swan-io/boxed';
123
+ *
124
+ * const handler = ({ payload }) =>
125
+ * Future.fromPromise(processPayment(payload))
126
+ * .mapOk(() => undefined)
127
+ * .mapError((e) => retryable('Payment service unavailable', e));
128
+ *
129
+ * // Equivalent to:
130
+ * // .mapError((e) => new RetryableError('Payment service unavailable', e));
131
+ * ```
132
+ */
133
+ declare function retryable(message: string, cause?: unknown): RetryableError;
134
+ /**
135
+ * Create a NonRetryableError with less verbosity.
136
+ *
137
+ * This is a shorthand factory function for creating NonRetryableError instances.
138
+ * Use it for cleaner error creation in handlers.
139
+ *
140
+ * @param message - Error message describing the failure
141
+ * @param cause - Optional underlying error that caused this failure
142
+ * @returns A new NonRetryableError instance
143
+ *
144
+ * @example
145
+ * ```typescript
146
+ * import { nonRetryable } from '@amqp-contract/worker';
147
+ * import { Future, Result } from '@swan-io/boxed';
148
+ *
149
+ * const handler = ({ payload }) => {
150
+ * if (!isValidPayload(payload)) {
151
+ * return Future.value(Result.Error(nonRetryable('Invalid payload format')));
152
+ * }
153
+ * return Future.value(Result.Ok(undefined));
154
+ * };
155
+ *
156
+ * // Equivalent to:
157
+ * // return Future.value(Result.Error(new NonRetryableError('Invalid payload format')));
158
+ * ```
159
+ */
160
+ declare function nonRetryable(message: string, cause?: unknown): NonRetryableError;
44
161
  //#endregion
45
162
  //#region src/types.d.ts
46
163
  /**
@@ -48,31 +165,39 @@ type HandlerError = RetryableError | NonRetryableError;
48
165
  */
49
166
  type InferSchemaInput<TSchema extends StandardSchemaV1> = TSchema extends StandardSchemaV1<infer TInput> ? TInput : never;
50
167
  /**
51
- * Infer consumer message payload input type
168
+ * Extract the ConsumerDefinition from any consumer entry type.
169
+ * Handles ConsumerDefinition, EventConsumerResult, and CommandConsumerConfig.
52
170
  */
53
- type ConsumerInferPayloadInput<TConsumer extends ConsumerDefinition> = InferSchemaInput<TConsumer["message"]["payload"]>;
171
+ type ExtractConsumerDefinition<T extends ConsumerEntry> = T extends ConsumerDefinition ? T : T extends {
172
+ consumer: ConsumerDefinition;
173
+ } ? T["consumer"] : never;
174
+ /**
175
+ * Infer consumer message payload input type.
176
+ * Works with any consumer entry type by first extracting the ConsumerDefinition.
177
+ */
178
+ type ConsumerInferPayloadInput<TConsumer extends ConsumerEntry> = ExtractConsumerDefinition<TConsumer> extends ConsumerDefinition ? InferSchemaInput<ExtractConsumerDefinition<TConsumer>["message"]["payload"]> : never;
54
179
  /**
55
180
  * Infer consumer message headers input type
56
181
  * Returns undefined if no headers schema is defined
57
182
  */
58
- type ConsumerInferHeadersInput<TConsumer extends ConsumerDefinition> = TConsumer["message"] extends MessageDefinition<infer _TPayload, infer THeaders> ? THeaders extends StandardSchemaV1<Record<string, unknown>> ? InferSchemaInput<THeaders> : undefined : undefined;
183
+ type ConsumerInferHeadersInput<TConsumer extends ConsumerEntry> = ExtractConsumerDefinition<TConsumer> extends ConsumerDefinition ? ExtractConsumerDefinition<TConsumer>["message"] extends MessageDefinition<infer _TPayload, infer THeaders> ? THeaders extends StandardSchemaV1<Record<string, unknown>> ? InferSchemaInput<THeaders> : undefined : undefined : undefined;
59
184
  /**
60
185
  * Infer all consumers from contract
61
186
  */
62
- type InferConsumers<TContract extends ContractDefinition> = NonNullable<TContract["consumers"]>;
187
+ type InferConsumers<TContract extends ContractDefinitionInput> = NonNullable<TContract["consumers"]>;
63
188
  /**
64
- * Get specific consumer definition from contract
189
+ * Get specific consumer entry from contract
65
190
  */
66
- type InferConsumer<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>> = InferConsumers<TContract>[TName];
191
+ type InferConsumer<TContract extends ContractDefinitionInput, TName extends InferConsumerNames<TContract>> = InferConsumers<TContract>[TName];
67
192
  /**
68
193
  * Infer the payload type for a specific consumer
69
194
  */
70
- type WorkerInferConsumerPayload<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>> = ConsumerInferPayloadInput<InferConsumer<TContract, TName>>;
195
+ type WorkerInferConsumerPayload<TContract extends ContractDefinitionInput, TName extends InferConsumerNames<TContract>> = ConsumerInferPayloadInput<InferConsumer<TContract, TName>>;
71
196
  /**
72
197
  * Infer the headers type for a specific consumer
73
198
  * Returns undefined if no headers schema is defined
74
199
  */
75
- type WorkerInferConsumerHeaders<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>> = ConsumerInferHeadersInput<InferConsumer<TContract, TName>>;
200
+ type WorkerInferConsumerHeaders<TContract extends ContractDefinitionInput, TName extends InferConsumerNames<TContract>> = ConsumerInferHeadersInput<InferConsumer<TContract, TName>>;
76
201
  /**
77
202
  * A consumed message containing parsed payload and headers.
78
203
  *
@@ -103,21 +228,24 @@ type WorkerConsumedMessage<TPayload, THeaders$1 = undefined> = {
103
228
  * Infer the full consumed message type for a specific consumer.
104
229
  * Includes both payload and headers (if defined).
105
230
  */
106
- type WorkerInferConsumedMessage<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>> = WorkerConsumedMessage<WorkerInferConsumerPayload<TContract, TName>, WorkerInferConsumerHeaders<TContract, TName>>;
231
+ type WorkerInferConsumedMessage<TContract extends ContractDefinitionInput, TName extends InferConsumerNames<TContract>> = WorkerConsumedMessage<WorkerInferConsumerPayload<TContract, TName>, WorkerInferConsumerHeaders<TContract, TName>>;
107
232
  /**
108
- * Safe consumer handler type for a specific consumer.
233
+ * Consumer handler type for a specific consumer.
109
234
  * Returns a `Future<Result<void, HandlerError>>` for explicit error handling.
110
235
  *
111
- * **Recommended over unsafe handlers** for better error control:
236
+ * Error handling:
112
237
  * - RetryableError: Message will be retried with exponential backoff
113
238
  * - NonRetryableError: Message will be immediately sent to DLQ
114
239
  *
240
+ * The `WorkerInfer*` naming pattern indicates type inference helpers that extract
241
+ * types from a contract definition at compile time.
242
+ *
115
243
  * @param message - The parsed message containing validated payload and headers
116
244
  * @param rawMessage - The raw AMQP message with all metadata (fields, properties, content)
117
245
  *
118
246
  * @example
119
247
  * ```typescript
120
- * const handler: WorkerInferSafeConsumerHandler<typeof contract, 'processOrder'> =
248
+ * const handler: WorkerInferConsumerHandler<typeof contract, 'processOrder'> =
121
249
  * ({ payload }, rawMessage) => {
122
250
  * console.log(payload.orderId); // Typed payload
123
251
  * console.log(rawMessage.fields.deliveryTag); // Raw AMQP message
@@ -125,9 +253,9 @@ type WorkerInferConsumedMessage<TContract extends ContractDefinition, TName exte
125
253
  * };
126
254
  * ```
127
255
  */
128
- type WorkerInferSafeConsumerHandler<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>> = (message: WorkerInferConsumedMessage<TContract, TName>, rawMessage: ConsumeMessage) => Future<Result<void, HandlerError>>;
256
+ type WorkerInferConsumerHandler<TContract extends ContractDefinitionInput, TName extends InferConsumerNames<TContract>> = (message: WorkerInferConsumedMessage<TContract, TName>, rawMessage: ConsumeMessage) => Future<Result<void, HandlerError>>;
129
257
  /**
130
- * Safe handler entry for a consumer - either a function or a tuple of [handler, options].
258
+ * Handler entry for a consumer - either a function or a tuple of [handler, options].
131
259
  *
132
260
  * Two patterns are supported:
133
261
  * 1. Simple handler: `({ payload }, rawMessage) => Future.value(Result.Ok(undefined))`
@@ -136,14 +264,36 @@ type WorkerInferSafeConsumerHandler<TContract extends ContractDefinition, TName
136
264
  * Note: Retry configuration is now defined at the queue level in the contract,
137
265
  * not at the handler level. See `QueueDefinition.retry` for configuration options.
138
266
  */
139
- type WorkerInferSafeConsumerHandlerEntry<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>> = WorkerInferSafeConsumerHandler<TContract, TName> | readonly [WorkerInferSafeConsumerHandler<TContract, TName>, {
267
+ type WorkerInferConsumerHandlerEntry<TContract extends ContractDefinitionInput, TName extends InferConsumerNames<TContract>> = WorkerInferConsumerHandler<TContract, TName> | readonly [WorkerInferConsumerHandler<TContract, TName>, {
140
268
  prefetch?: number;
141
269
  }];
142
270
  /**
143
- * Safe consumer handlers for a contract.
271
+ * Consumer handlers for a contract.
144
272
  * All handlers return `Future<Result<void, HandlerError>>` for explicit error control.
273
+ *
274
+ * @example
275
+ * ```typescript
276
+ * const handlers: WorkerInferConsumerHandlers<typeof contract> = {
277
+ * processOrder: ({ payload }) =>
278
+ * Future.fromPromise(processPayment(payload))
279
+ * .mapOk(() => undefined)
280
+ * .mapError((error) => new RetryableError('Payment failed', error)),
281
+ * };
282
+ * ```
283
+ */
284
+ type WorkerInferConsumerHandlers<TContract extends ContractDefinitionInput> = { [K in InferConsumerNames<TContract>]: WorkerInferConsumerHandlerEntry<TContract, K> };
285
+ /**
286
+ * @deprecated Use `WorkerInferConsumerHandler` instead. Will be removed in next major version.
287
+ */
288
+ type WorkerInferSafeConsumerHandler<TContract extends ContractDefinitionInput, TName extends InferConsumerNames<TContract>> = WorkerInferConsumerHandler<TContract, TName>;
289
+ /**
290
+ * @deprecated Use `WorkerInferConsumerHandlerEntry` instead. Will be removed in next major version.
291
+ */
292
+ type WorkerInferSafeConsumerHandlerEntry<TContract extends ContractDefinitionInput, TName extends InferConsumerNames<TContract>> = WorkerInferConsumerHandlerEntry<TContract, TName>;
293
+ /**
294
+ * @deprecated Use `WorkerInferConsumerHandlers` instead. Will be removed in next major version.
145
295
  */
146
- type WorkerInferSafeConsumerHandlers<TContract extends ContractDefinition> = { [K in InferConsumerNames<TContract>]: WorkerInferSafeConsumerHandlerEntry<TContract, K> };
296
+ type WorkerInferSafeConsumerHandlers<TContract extends ContractDefinitionInput> = WorkerInferConsumerHandlers<TContract>;
147
297
  //#endregion
148
298
  //#region src/worker.d.ts
149
299
  /**
@@ -181,7 +331,7 @@ type WorkerInferSafeConsumerHandlers<TContract extends ContractDefinition> = { [
181
331
  * Note: Retry configuration is defined at the queue level in the contract,
182
332
  * not at the handler level. See `QueueDefinition.retry` for configuration options.
183
333
  */
184
- type CreateWorkerOptions<TContract extends ContractDefinition> = {
334
+ type CreateWorkerOptions<TContract extends ContractDefinitionInput> = {
185
335
  /** The AMQP contract definition specifying consumers and their message schemas */
186
336
  contract: TContract;
187
337
  /**
@@ -189,7 +339,7 @@ type CreateWorkerOptions<TContract extends ContractDefinition> = {
189
339
  * Handlers must return `Future<Result<void, HandlerError>>` for explicit error handling.
190
340
  * Use defineHandler() to create handlers.
191
341
  */
192
- handlers: WorkerInferSafeConsumerHandlers<TContract>;
342
+ handlers: WorkerInferConsumerHandlers<TContract>;
193
343
  /** AMQP broker URL(s). Multiple URLs provide failover support */
194
344
  urls: ConnectionUrl[];
195
345
  /** Optional connection configuration (heartbeat, reconnect settings, etc.) */
@@ -243,7 +393,7 @@ type CreateWorkerOptions<TContract extends ContractDefinition> = {
243
393
  * await worker.close().resultToPromise();
244
394
  * ```
245
395
  */
246
- declare class TypedAmqpWorker<TContract extends ContractDefinition> {
396
+ declare class TypedAmqpWorker<TContract extends ContractDefinitionInput> {
247
397
  private readonly contract;
248
398
  private readonly amqpClient;
249
399
  private readonly logger?;
@@ -280,7 +430,7 @@ declare class TypedAmqpWorker<TContract extends ContractDefinition> {
280
430
  * }).resultToPromise();
281
431
  * ```
282
432
  */
283
- static create<TContract extends ContractDefinition>({
433
+ static create<TContract extends ContractDefinitionInput>({
284
434
  contract,
285
435
  handlers,
286
436
  urls,
@@ -457,10 +607,10 @@ declare class TypedAmqpWorker<TContract extends ContractDefinition> {
457
607
  * );
458
608
  * ```
459
609
  */
460
- declare function defineHandler<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>>(contract: TContract, consumerName: TName, handler: WorkerInferSafeConsumerHandler<TContract, TName>): WorkerInferSafeConsumerHandlerEntry<TContract, TName>;
461
- declare function defineHandler<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>>(contract: TContract, consumerName: TName, handler: WorkerInferSafeConsumerHandler<TContract, TName>, options: {
610
+ declare function defineHandler<TContract extends ContractDefinitionInput, TName extends InferConsumerNames<TContract>>(contract: TContract, consumerName: TName, handler: WorkerInferConsumerHandler<TContract, TName>): WorkerInferConsumerHandlerEntry<TContract, TName>;
611
+ declare function defineHandler<TContract extends ContractDefinitionInput, TName extends InferConsumerNames<TContract>>(contract: TContract, consumerName: TName, handler: WorkerInferConsumerHandler<TContract, TName>, options: {
462
612
  prefetch?: number;
463
- }): WorkerInferSafeConsumerHandlerEntry<TContract, TName>;
613
+ }): WorkerInferConsumerHandlerEntry<TContract, TName>;
464
614
  /**
465
615
  * Define multiple type-safe handlers for consumers in a contract.
466
616
  *
@@ -490,7 +640,7 @@ declare function defineHandler<TContract extends ContractDefinition, TName exten
490
640
  * });
491
641
  * ```
492
642
  */
493
- declare function defineHandlers<TContract extends ContractDefinition>(contract: TContract, handlers: WorkerInferSafeConsumerHandlers<TContract>): WorkerInferSafeConsumerHandlers<TContract>;
643
+ declare function defineHandlers<TContract extends ContractDefinitionInput>(contract: TContract, handlers: WorkerInferConsumerHandlers<TContract>): WorkerInferConsumerHandlers<TContract>;
494
644
  //#endregion
495
- export { type CreateWorkerOptions, type HandlerError, MessageValidationError, NonRetryableError, RetryableError, TypedAmqpWorker, type WorkerConsumedMessage, type WorkerInferConsumedMessage, type WorkerInferConsumerHeaders, type WorkerInferSafeConsumerHandler, type WorkerInferSafeConsumerHandlerEntry, type WorkerInferSafeConsumerHandlers, defineHandler, defineHandlers };
645
+ export { type CreateWorkerOptions, type HandlerError, MessageValidationError, NonRetryableError, RetryableError, TypedAmqpWorker, type WorkerConsumedMessage, type WorkerInferConsumedMessage, type WorkerInferConsumerHandler, type WorkerInferConsumerHandlerEntry, type WorkerInferConsumerHandlers, type WorkerInferConsumerHeaders, type WorkerInferSafeConsumerHandler, type WorkerInferSafeConsumerHandlerEntry, type WorkerInferSafeConsumerHandlers, defineHandler, defineHandlers, isHandlerError, isNonRetryableError, isRetryableError, nonRetryable, retryable };
496
646
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/errors.ts","../src/types.ts","../src/worker.ts","../src/handlers.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;cAGa,sBAAA,SAA+B,KAAA;;;;;AAA5C;AAwBA;AAwBA;AAqBA;;;;AC1DK,cDaQ,cAAA,SAAuB,KAAA,CCbf;EAAiB,SAAA,KAAA,CAAA,EAAA,OAAA,GAAA,SAAA;EACpC,WAAA,CAAA,OAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,OAAA,GAAA,SAAA;;;AAAgC;;;;;AAKqD;AAQtC,cDuBpC,iBAAA,SAA0B,KAAA,CCvBU;EAC/C,SAAA,KAAA,CAAA,EAAA,OAAA,GAAA,SAAA;EAA6B,WAAA,CAAA,OAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,OAAA,GAAA,SAAA;;;;;;AAS1B,KDkCO,YAAA,GAAe,cClCR,GDkCyB,iBClCzB;;;;;;ADnCnB,KCWK,gBDXQ,CAAA,gBCWyB,gBDXW,CAAA,GCY/C,ODZ+C,SCY/B,gBDZ+B,CAAA,KAAA,OAAA,CAAA,GAAA,MAAA,GAAA,KAAA;AAwBjD;AAwBA;AAqBA;KCpDK,4CAA4C,sBAAsB,iBACrE;;;AAZ4D;;KAmBzD,yBAbH,CAAA,kBAa+C,kBAb/C,CAAA,GAcA,SAdA,CAAA,SAAA,CAAA,SAc6B,iBAd7B,CAAA,KAAA,UAAA,EAAA,KAAA,SAAA,CAAA,GAAA,QAAA,SAeqB,gBAfrB,CAesC,MAftC,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,GAgBM,gBAhBN,CAgBuB,QAhBvB,CAAA,GAAA,SAAA,GAAA,SAAA;;;AAAgC;KAuB7B,cAlB4C,CAAA,kBAkBX,kBAlBW,CAAA,GAkBW,WAlBX,CAkBuB,SAlBvB,CAAA,WAAA,CAAA,CAAA;;;;AAAsC,KAuBlF,aAfA,CAAA,kBAgBe,kBAhBU,EAAA,cAiBd,kBAjBc,CAiBK,SAjBL,CAAA,CAAA,GAkB1B,cAlB0B,CAkBX,SAlBW,CAAA,CAkBA,KAlBA,CAAA;;;;KAuBzB,0BArBmC,CAAA,kBAsBpB,kBAtBoB,EAAA,cAuBxB,kBAvBwB,CAuBL,SAvBK,CAAA,CAAA,GAwBpC,yBAxBoC,CAwBV,aAxBU,CAwBI,SAxBJ,EAwBe,KAxBf,CAAA,CAAA;;;;;AAQnC,KAsBO,0BAtBO,CAAA,kBAuBC,kBAvBD,EAAA,cAwBH,kBAxBG,CAwBgB,SAxBhB,CAAA,CAAA,GAyBf,yBAzBe,CAyBW,aAzBX,CAyByB,SAzBzB,EAyBoC,KAzBpC,CAAA,CAAA;;;;;AAAoD;;;;;;;;AAQpC;;;;;;;;AAQN,KA+BjB,qBA/BiB,CAAA,QAAA,EAAA,aAAA,SAAA,CAAA,GAAA;EAMjB;EACQ,OAAA,EA0BT,QA1BS;EACe;EAAnB,OAAA,EA2BL,UA3BK,SAAA,SAAA,GAAA,SAAA,GA2BoC,UA3BpC;CAC4B;;;;;AAsBhC,KAWA,0BAXqB,CAAA,kBAYb,kBAZa,EAAA,cAajB,kBAbiB,CAaE,SAbF,CAAA,CAAA,GAc7B,qBAd6B,CAe/B,0BAf+B,CAeJ,SAfI,EAeO,KAfP,CAAA,EAgB/B,0BAhB+B,CAgBJ,SAhBI,EAgBO,KAhBP,CAAA,CAAA;;;;;AAWjC;;;;;;;;;;;;AAoCA;;;;;AAIiD,KAJrC,8BAIqC,CAAA,kBAH7B,kBAG6B,EAAA,cAFjC,kBAEiC,CAFd,SAEc,CAAA,CAAA,GAAA,CAAA,OAAA,EAAtC,0BAAsC,CAAX,SAAW,EAAA,KAAA,CAAA,EAAA,UAAA,EACnC,cADmC,EAAA,GAE5C,MAF4C,CAErC,MAFqC,CAAA,IAAA,EAExB,YAFwB,CAAA,CAAA;;;;;;;AAcjD;;;;AAImC,KAJvB,mCAIuB,CAAA,kBAHf,kBAGe,EAAA,cAFnB,kBAEmB,CAFA,SAEA,CAAA,CAAA,GAA/B,8BAA+B,CAAA,SAAA,EAAW,KAAX,CAAA,GAAA,SAAA,CACrB,8BADqB,CACU,SADV,EACqB,KADrB,CAAA,EAAA;EAAW,QAAA,CAAA,EAAA,MAAA;CAA1C,CAAA;;;;;AAOQ,KAAA,+BAA+B,CAAA,kBAAmB,kBAAnB,CAAA,GAAA,QACnC,kBADsD,CACnC,SADmC,CAAA,GACtB,mCADsB,CACc,SADd,EACyB,CADzB,CAAA,EACnC;;;;;;AD/J3B;AAwBA;AAwBA;AAqBA;;;;AC/D8D;;;;;AAM5B;;;;;AAKqD;;;;;;;;;AAW/D;;;;;AAO+C;AAMnD,KCgDR,mBDhDQ,CAAA,kBCgD8B,kBDhD9B,CAAA,GAAA;EACe;EAAnB,QAAA,ECiDJ,SDjDI;EACG;;;;AAAgB;EAMf,QAAA,ECgDR,+BDhDQ,CCgDwB,SDhDxB,CAAA;EACe;EAAnB,IAAA,ECiDR,aDjDQ,EAAA;EAC4B;EAAW,iBAAA,CAAA,ECkDjC,4BDlDiC,GAAA,SAAA;EAAzB;EAA1B,MAAA,CAAA,ECoDO,MDpDP,GAAA,SAAA;EAAyB;AAM7B;;;;EAG4C,SAAA,CAAA,ECiD9B,iBDjD8B,GAAA,SAAA;CAAW;;;;AAsBvD;;;;;AAWA;;;;;;;;;;;;AAoCA;;;;;;;;;;;;AAkBA;;;;;;;;AAKwD,cCA3C,eDA2C,CAAA,kBCAT,kBDAS,CAAA,CAAA;EAA1C,iBAAA,QAAA;EAA8B,iBAAA,UAAA;EAMhC,iBAAA,MAAA;EAAkD;;;EACc,iBAAA,cAAA;EAAW,iBAAA,eAAA;EAA/C,iBAAA,YAAA;EAAmC,iBAAA,SAAA;;;;ACtE3E;;;;;;;;;;AA+DA;;;;;;;;;;;;;EAoFgF,OAAA,MAAA,CAAA,kBAP9C,kBAO8C,CAAA,CAAA;IAAA,QAAA;IAAA,QAAA;IAAA,IAAA;IAAA,iBAAA;IAAA,MAAA;IAAA;EAAA,CAAA,EAA3E,mBAA2E,CAAvD,SAAuD,CAAA,CAAA,EAA1C,MAA0C,CAAnC,MAAmC,CAA5B,eAA4B,CAAZ,SAAY,CAAA,EAAA,cAAA,CAAA,CAAA;EAAnC;;;;;;;;;ACzI7C;;;;;;;EAMqD,KAAA,CAAA,CAAA,EDuK1C,MCvK0C,CDuKnC,MCvKmC,CAAA,IAAA,EDuKtB,cCvKsB,CAAA,CAAA;EAA1C;;;;EAC2B,QAAA,yBAAA;EACtB;;;;EAIJ,QAAA,UAAA;EACI,QAAA,sBAAA;EAC0B;;;;EAEQ,QAAA,OAAA;EAA/C;;AA+CH;EAAiD,QAAA,cAAA;EACrC;;;;EAET,QAAA,uBAAA;EAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AHrKlC;AAwBA;AAwBA;AAqBA;;;;AC/D8D;;;;;AAM5B;;;;;AAKqD;;;;;;;;;AAW/D;;;;;AAO+C;;;;;;;;AAQpC;;;AAOnB,iBEiDA,aFjDA,CAAA,kBEkDI,kBFlDJ,EAAA,cEmDA,kBFnDA,CEmDmB,SFnDnB,CAAA,CAAA,CAAA,QAAA,EEqDJ,SFrDI,EAAA,YAAA,EEsDA,KFtDA,EAAA,OAAA,EEuDL,8BFvDK,CEuD0B,SFvD1B,EEuDqC,KFvDrC,CAAA,CAAA,EEwDb,mCFxDa,CEwDuB,SFxDvB,EEwDkC,KFxDlC,CAAA;AAC4B,iBEwD5B,aFxD4B,CAAA,kBEyDxB,kBFzDwB,EAAA,cE0D5B,kBF1D4B,CE0DT,SF1DS,CAAA,CAAA,CAAA,QAAA,EE4DhC,SF5DgC,EAAA,YAAA,EE6D5B,KF7D4B,EAAA,OAAA,EE8DjC,8BF9DiC,CE8DF,SF9DE,EE8DS,KF9DT,CAAA,EAAA,OAAA,EAAA;EAAW,QAAA,CAAA,EAAA,MAAA;CAAzB,CAAA,EEgE3B,mCFhE2B,CEgES,SFhET,EEgEoB,KFhEpB,CAAA;;;AAM9B;;;;;;;;;AAyBA;;;;;AAWA;;;;;;;;;;;;AAoCA;AACoB,iBEgCJ,cFhCI,CAAA,kBEgC6B,kBFhC7B,CAAA,CAAA,QAAA,EEiCR,SFjCQ,EAAA,QAAA,EEkCR,+BFlCQ,CEkCwB,SFlCxB,CAAA,CAAA,EEmCjB,+BFnCiB,CEmCe,SFnCf,CAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/errors.ts","../src/types.ts","../src/worker.ts","../src/handlers.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;cAGa,sBAAA,SAA+B,KAAA;;;;;AAA5C;AAwBA;AAwBA;AAqBA;AA6BA;AAyBA;AAsBA;AAgCgB,cAzJH,cAAA,SAAuB,KAAA,CAyJuC;EA8B3D,SAAA,KAAA,CAAY,EAAA,OAAA,GAAoC,SAAA;;;;ACxMF;;;;;AAM5B;AAMO,cD6B5B,iBAAA,SAA0B,KAAA,CC7BE;EAAiB,SAAA,KAAA,CAAA,EAAA,OAAA,GAAA,SAAA;EAAU,WAAA,CAAA,OAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,OAAA,GAAA,SAAA;;;;;;AAU/D,KDwCO,YAAA,GAAe,cCxCG,GDwCc,iBCxCd;;;;;;;;;AAER;;;;;;;;;;;;;AAcI;;AASxB,iBD4Cc,gBAAA,CC5Cd,KAAA,EAAA,OAAA,CAAA,EAAA,KAAA,ID4CyD,cC5CzD;;;AAD0E;;;;;;;;AAUzC;;;;;;;;;AAcnC;;AAEmC,iBD4CnB,mBAAA,CC5CmB,KAAA,EAAA,OAAA,CAAA,EAAA,KAAA,ID4C2B,iBC5C3B;;;;;;;AAuBnC;;;;;AAWA;;;;;;;AAK6B,iBD2Bb,cAAA,CC3Ba,KAAA,EAAA,OAAA,CAAA,EAAA,KAAA,ID2B4B,YC3B5B;;;;;AAkC7B;;;;;;;;;;;;AAkBA;;;;;;;;AAKoD,iBDEpC,SAAA,CCFoC,OAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,OAAA,CAAA,EDES,cCFT;;;AAgBpD;;;;;;;;AAYA;;;;;;;;AAQA;;;;;;;;AAQY,iBDZI,YAAA,CCYJ,OAA+B,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,OAAA,CAAA,EDZqB,iBCYrB;;;;;;AD3N3C,KCYK,gBDZQ,CAAA,gBCYyB,gBDZW,CAAA,GCa/C,ODb+C,SCa/B,gBDb+B,CAAA,KAAA,OAAA,CAAA,GAAA,MAAA,GAAA,KAAA;AAwBjD;AAwBA;AAqBA;AA6BA;AAyBA,KCxGK,yBDwG8B,CAAA,UCxGM,aDwGqB,CAAA,GCxGJ,CDwGqB,SCxGX,kBDwGW,GCvG3E,CDuG2E,GCtG3E,CDsG2E,SAAA;EAsB/D,QAAA,EC5HU,kBD4HI;AAgC9B,CAAA,GC3JM,CD2JU,CAAA,UAAS,CAAA,GAAA,KAAA;AA8BzB;;;;ACxM8D,KAsBzD,yBAjBgB,CAAA,kBAiB4B,aAjB5B,CAAA,GAkBnB,yBAlBmB,CAkBO,SAlBP,CAAA,SAkB0B,kBAlB1B,GAmBf,gBAnBe,CAmBE,yBAnBF,CAmB4B,SAnB5B,CAAA,CAAA,SAAA,CAAA,CAAA,SAAA,CAAA,CAAA,GAAA,KAAA;;;;;AACa,KAyB7B,yBAnBA,CAAA,kBAmB4C,aAnBnB,CAAA,GAoB5B,yBApB4B,CAoBF,SApBE,CAAA,SAoBiB,kBApBjB,GAqBxB,yBArBwB,CAqBE,SArBF,CAAA,CAAA,SAAA,CAAA,SAqBgC,iBArBhC,CAAA,KAAA,UAAA,EAAA,KAAA,SAAA,CAAA,GAAA,QAAA,SAyBL,gBAzBK,CAyBY,MAzBZ,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,GA0BpB,gBA1BoB,CA0BH,QA1BG,CAAA,GAAA,SAAA,GAAA,SAAA,GAAA,SAAA;;;;KAkCzB,cAjCD,CAAA,kBAiCkC,uBAjClC,CAAA,GAiC6D,WAjC7D,CAkCF,SAlCE,CAAA,WAAA,CAAA,CAAA;;;;KAwCC,aAtCE,CAAA,kBAuCa,uBAvCb,EAAA,cAwCS,kBAxCT,CAwC4B,SAxC5B,CAAA,CAAA,GAyCH,cAzCG,CAyCY,SAzCZ,CAAA,CAyCuB,KAzCvB,CAAA;AAAA;;;KA8CF,0BAtCH,CAAA,kBAuCkB,uBAvClB,EAAA,cAwCc,kBAxCd,CAwCiC,SAxCjC,CAAA,CAAA,GAyCE,yBAzCF,CAyC4B,aAzC5B,CAyC0C,SAzC1C,EAyCqD,KAzCrD,CAAA,CAAA;;;;;AACoB,KA8CV,0BA9CU,CAAA,kBA+CF,uBA/CE,EAAA,cAgDN,kBAhDM,CAgDa,SAhDb,CAAA,CAAA,GAiDlB,yBAjDkB,CAiDQ,aAjDR,CAiDsB,SAjDtB,EAiDiC,KAjDjC,CAAA,CAAA;AAAA;;;;;;;;;;;;;AAcI;;;;;AAQkD;;AASzC,KAwCvB,qBAxCuB,CAAA,QAAA,EAAA,aAAA,SAAA,CAAA,GAAA;EAAnB;EACG,OAAA,EAyCR,QAzCQ;EAAf;EAA0B,OAAA,EA2CnB,UA3CmB,SAAA,SAAA,GAAA,SAAA,GA2CsB,UA3CtB;CAAK;AAAA;;;;AAQS,KA0ChC,0BA1CgC,CAAA,kBA2CxB,uBA3CwB,EAAA,cA4C5B,kBA5C4B,CA4CT,SA5CS,CAAA,CAAA,GA6CxC,qBA7CwC,CA8C1C,0BA9C0C,CA8Cf,SA9Ce,EA8CJ,KA9CI,CAAA,EA+C1C,0BA/C0C,CA+Cf,SA/Ce,EA+CJ,KA/CI,CAAA,CAAA;;;;;AAM5C;;;;;;;;;AAyBA;;;;;AAWA;;;;;;AAIE,KAmCU,0BAnCV,CAAA,kBAoCkB,uBApClB,EAAA,cAqCc,kBArCd,CAqCiC,SArCjC,CAAA,CAAA,GAAA,CAAA,OAAA,EAuCS,0BAvCT,CAuCoC,SAvCpC,EAuC+C,KAvC/C,CAAA,EAAA,UAAA,EAwCY,cAxCZ,EAAA,GAyCG,MAzCH,CAyCU,MAzCV,CAAA,IAAA,EAyCuB,YAzCvB,CAAA,CAAA;;;;;;AAmCF;;;;;AAIiD,KAcrC,+BAdqC,CAAA,kBAe7B,uBAf6B,EAAA,cAgBjC,kBAhBiC,CAgBd,SAhBc,CAAA,CAAA,GAkB7C,0BAlB6C,CAkBlB,SAlBkB,EAkBP,KAlBO,CAAA,GAAA,SAAA,CAmBnC,0BAnBmC,CAmBR,SAnBQ,EAmBG,KAnBH,CAAA,EAAA;EAAtC,QAAA,CAAA,EAAA,MAAA;CACG,CAAA;;;;;AAad;;;;;;;;;;AAKwC,KAgB5B,2BAhB4B,CAAA,kBAgBkB,uBAhBlB,CAAA,GAAA,QAiBhC,kBADI,CACe,SADY,CAAA,GACC,+BADD,CACiC,SADjC,EAC4C,CAD5C,CAAA,EAAmB;;;;AACyB,KAWvE,8BAXuE,CAAA,kBAY/D,uBAZ+D,EAAA,cAanE,kBAbmE,CAahD,SAbgD,CAAA,CAAA,GAc/E,0BAd+E,CAcpD,SAdoD,EAczC,KAdyC,CAAA;;;AAWnF;AACoB,KAOR,mCAPQ,CAAA,kBAQA,uBARA,EAAA,cASJ,kBATI,CASe,SATf,CAAA,CAAA,GAUhB,+BAVgB,CAUgB,SAVhB,EAU2B,KAV3B,CAAA;;;;AAEsB,KAa9B,+BAb8B,CAAA,kBAaoB,uBAbpB,CAAA,GAcxC,2BAdwC,CAcZ,SAdY,CAAA;;;;;;AD9M1C;AAwBA;AAwBA;AAqBA;AA6BA;AAyBA;AAsBA;AAgCA;AA8BA;;;;ACxM8D;;;;;AAM5B;;;;;;;;;AAS3B;;;;;;AASgB,KC2DX,mBD3DW,CAAA,kBC2D2B,uBD3D3B,CAAA,GAAA;EAAjB;EAAgB,QAAA,EC6DV,SD7DU;EAOjB;;;;;EAE2B,QAAA,EC0DpB,2BD1DoB,CC0DQ,SD1DR,CAAA;EAA1B;EAAwD,IAAA,EC4DtD,aD5DsD,EAAA;EAIpB;EAAjB,iBAAA,CAAA,EC0DH,4BD1DG,GAAA,SAAA;EACE;EAAjB,MAAA,CAAA,EC2DC,MD3DD,GAAA,SAAA;EAAgB;AAAA;;;;EAQkD,SAAA,CAAA,ECyD9D,iBDzD8D,GAAA,SAAA;AAAA,CAAA;;;;;;;;AAUzC;;;;;;;;;AAcnC;;;;;;;;;AAyBA;;;;;AAWA;;;;;;;;;;AAGI,cCqCS,eDrCT,CAAA,kBCqC2C,uBDrC3C,CAAA,CAAA;EAAqB,iBAAA,QAAA;EAoCb,iBAAA,UAAA;EACQ,iBAAA,MAAA;EACe;;;EAEc,iBAAA,cAAA;EAAtC,iBAAA,eAAA;EACG,iBAAA,YAAA;EACW,iBAAA,SAAA;EAAb,QAAA,WAAA,CAAA;EAAP;;AAYL;;;;;;;;;;;AAqBA;;;;;;;;AAYA;;;;EAG+B,OAAA,MAAA,CAAA,kBCwBG,uBDxBH,CAAA,CAAA;IAAA,QAAA;IAAA,QAAA;IAAA,IAAA;IAAA,iBAAA;IAAA,MAAA;IAAA;EAAA,CAAA,EC+B1B,mBD/B0B,CC+BN,SD/BM,CAAA,CAAA,EC+BO,MD/BP,CC+Bc,MD/Bd,CC+BqB,eD/BrB,CC+BqC,SD/BrC,CAAA,EC+BiD,cD/BjD,CAAA,CAAA;EAAW;;;AAK1C;;;;;;;;AAQA;;;;;WCsDW,OAAO,aAAa;;;AAvL/B;;EAEY,QAAA,yBAAA;EAM4B;;;;EAM7B,QAAA,UAAA;EAMG,QAAA,sBAAA;EAAiB;AA2C/B;;;EA8EI,QAAA,OAAA;EACA;;;EAGA,QAAA,cAAA;EACA;;;;EACgD,QAAA,uBAAA;EAA4B;;;EAoCjD,QAAA,aAAA;EAAb;;;;;;AC9KlB;;;;;;;;;;;EAOG,QAAA,WAAA;EAA+B;AAClC;;;;;;;;EAMW,QAAA,uBAAA;EAEwB;;;EAAD,QAAA,qBAAA;EA+ClB;;;EAEwB,QAAA,mBAAA;EAA5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AHpKZ;AAwBA;AAwBA;AAqBA;AA6BA;AAyBA;AAsBA;AAgCA;AA8BA;;;;ACxM8D;;;;;AAM5B;;;;;;;;;AAS3B;;;;;;;;;AASe;;;;;;;AASwC,iBE2D9C,aF3D8C,CAAA,kBE4D1C,uBF5D0C,EAAA,cE6D9C,kBF7D8C,CE6D3B,SF7D2B,CAAA,CAAA,CAAA,QAAA,EE+DlD,SF/DkD,EAAA,YAAA,EEgE9C,KFhE8C,EAAA,OAAA,EEiEnD,0BFjEmD,CEiExB,SFjEwB,EEiEb,KFjEa,CAAA,CAAA,EEkE3D,+BFlE2D,CEkE3B,SFlE2B,EEkEhB,KFlEgB,CAAA;AAIpB,iBE+D1B,aF/D0B,CAAA,kBEgEtB,uBFhEsB,EAAA,cEiE1B,kBFjE0B,CEiEP,SFjEO,CAAA,CAAA,CAAA,QAAA,EEmE9B,SFnE8B,EAAA,YAAA,EEoE1B,KFpE0B,EAAA,OAAA,EEqE/B,0BFrE+B,CEqEJ,SFrEI,EEqEO,KFrEP,CAAA,EAAA,OAAA,EAAA;EAAjB,QAAA,CAAA,EAAA,MAAA;CACE,CAAA,EEsExB,+BFtEwB,CEsEQ,SFtER,EEsEmB,KFtEnB,CAAA;;;AAAD;;;;;AAQkD;;;;;;;;AAUzC;;;;;;;;;AAcnC;;;;;AAGuD,iBEkFvC,cFlFuC,CAAA,kBEkFN,uBFlFM,CAAA,CAAA,QAAA,EEmF3C,SFnF2C,EAAA,QAAA,EEoF3C,2BFpF2C,CEoFf,SFpFe,CAAA,CAAA,EEqFpD,2BFrFoD,CEqFxB,SFrFwB,CAAA"}