@message-queue-toolkit/sqs 22.6.0 → 22.7.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
@@ -2400,6 +2400,225 @@ import { SQS_RESOURCE_CURRENT_QUEUE } from '@message-queue-toolkit/sqs'
2400
2400
 
2401
2401
  The library is designed to be testable:
2402
2402
 
2403
+ ### TestSqsPublisher - Testing Utility for Invalid Messages
2404
+
2405
+ `TestSqsPublisher` is a specialized testing utility that allows you to publish arbitrary messages to SQS queues **without any validation**. This is useful for:
2406
+
2407
+ - Testing error handling with invalid/malformed messages
2408
+ - Testing edge cases without schema constraints
2409
+ - Integration testing with arbitrary test data
2410
+ - Verifying consumer behavior with non-standard messages
2411
+
2412
+ **⚠️ IMPORTANT: This is a testing utility only. Do not use in production code.**
2413
+
2414
+ #### Features
2415
+
2416
+ - ✅ **No validation** - Bypasses Zod schemas, deduplication, and payload offloading
2417
+ - ✅ **Flexible queue targeting** - Accepts `queueUrl`, `queueName`, consumer, or publisher instances
2418
+ - ✅ **FIFO support** - Works with both standard and FIFO queues
2419
+ - ✅ **Simple API** - One publisher instance can publish to any queue
2420
+
2421
+ #### Basic Usage
2422
+
2423
+ ```typescript
2424
+ import { TestSqsPublisher } from '@message-queue-toolkit/sqs'
2425
+ import { SQSClient } from '@aws-sdk/client-sqs'
2426
+
2427
+ const sqsClient = new SQSClient({ region: 'us-east-1' })
2428
+ const testPublisher = new TestSqsPublisher(sqsClient)
2429
+
2430
+ // Publish to a queue by URL
2431
+ await testPublisher.publish(
2432
+ { any: 'data', without: 'validation' },
2433
+ { queueUrl: 'https://sqs.us-east-1.amazonaws.com/123456789012/my-queue' }
2434
+ )
2435
+
2436
+ // Publish to a queue by name
2437
+ await testPublisher.publish(
2438
+ { incomplete: 'message' },
2439
+ { queueName: 'my-queue' }
2440
+ )
2441
+ ```
2442
+
2443
+ #### Publishing to Consumer's Queue
2444
+
2445
+ Extract the queue URL from an existing consumer:
2446
+
2447
+ ```typescript
2448
+ const consumer = new UserEventsConsumer(sqsClient, userService)
2449
+ await consumer.init()
2450
+
2451
+ const testPublisher = new TestSqsPublisher(sqsClient)
2452
+
2453
+ // Publish directly to the consumer's queue
2454
+ await testPublisher.publish(
2455
+ {
2456
+ invalid: 'schema',
2457
+ missing: 'required fields',
2458
+ },
2459
+ { consumer }
2460
+ )
2461
+ ```
2462
+
2463
+ #### Publishing to Publisher's Queue
2464
+
2465
+ Extract the queue URL from an existing publisher:
2466
+
2467
+ ```typescript
2468
+ const regularPublisher = new UserEventsPublisher(sqsClient)
2469
+ await regularPublisher.init()
2470
+
2471
+ const testPublisher = new TestSqsPublisher(sqsClient)
2472
+
2473
+ // Publish to the same queue without validation
2474
+ await testPublisher.publish(
2475
+ { totally: 'arbitrary', data: true },
2476
+ { publisher: regularPublisher }
2477
+ )
2478
+ ```
2479
+
2480
+ #### Testing Invalid Message Handling
2481
+
2482
+ ```typescript
2483
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest'
2484
+
2485
+ describe('Consumer Error Handling', () => {
2486
+ let sqsClient: SQSClient
2487
+ let consumer: UserEventsConsumer
2488
+ let testPublisher: TestSqsPublisher
2489
+
2490
+ beforeEach(async () => {
2491
+ sqsClient = new SQSClient({
2492
+ endpoint: 'http://localhost:4566', // LocalStack
2493
+ region: 'us-east-1',
2494
+ })
2495
+
2496
+ consumer = new UserEventsConsumer(sqsClient, userService, {
2497
+ handlerSpy: true,
2498
+ })
2499
+ await consumer.start()
2500
+
2501
+ testPublisher = new TestSqsPublisher(sqsClient)
2502
+ })
2503
+
2504
+ afterEach(async () => {
2505
+ await consumer.close()
2506
+ })
2507
+
2508
+ it('handles message with missing required fields', async () => {
2509
+ // Publish invalid message
2510
+ await testPublisher.publish(
2511
+ {
2512
+ // Missing: id, messageType, timestamp
2513
+ someData: 'incomplete',
2514
+ },
2515
+ { consumer } // Publish to consumer's queue
2516
+ )
2517
+
2518
+ // Wait briefly for processing
2519
+ await new Promise(resolve => setTimeout(resolve, 1000))
2520
+
2521
+ // Verify consumer handled the error gracefully
2522
+ // (e.g., sent to DLQ, logged error, etc.)
2523
+ expect(errorLogger.errors).toContainEqual(
2524
+ expect.objectContaining({
2525
+ message: expect.stringContaining('Invalid message format'),
2526
+ })
2527
+ )
2528
+ })
2529
+
2530
+ it('handles message with wrong data types', async () => {
2531
+ await testPublisher.publish(
2532
+ {
2533
+ id: 123, // Should be string
2534
+ messageType: null, // Should be string literal
2535
+ userId: ['not', 'a', 'string'], // Should be string
2536
+ },
2537
+ { consumer }
2538
+ )
2539
+
2540
+ await new Promise(resolve => setTimeout(resolve, 1000))
2541
+
2542
+ // Verify error handling
2543
+ expect(validationErrors).toHaveLength(1)
2544
+ })
2545
+
2546
+ it('handles completely malformed messages', async () => {
2547
+ await testPublisher.publish(
2548
+ {
2549
+ totally: 'random',
2550
+ nested: { deeply: { data: [1, 2, 3] } },
2551
+ unexpected: true,
2552
+ },
2553
+ { consumer }
2554
+ )
2555
+
2556
+ await new Promise(resolve => setTimeout(resolve, 1000))
2557
+
2558
+ // Message should be rejected and sent to DLQ
2559
+ expect(dlqMessages).toHaveLength(1)
2560
+ })
2561
+ })
2562
+ ```
2563
+
2564
+ #### FIFO Queue Testing
2565
+
2566
+ ```typescript
2567
+ it('publishes to FIFO queue with MessageGroupId', async () => {
2568
+ const testPublisher = new TestSqsPublisher(sqsClient)
2569
+
2570
+ await testPublisher.publish(
2571
+ { test: 'fifo-message' },
2572
+ {
2573
+ queueUrl: 'https://sqs.us-east-1.amazonaws.com/123456789012/my-queue.fifo',
2574
+ MessageGroupId: 'test-group',
2575
+ MessageDeduplicationId: 'unique-id-123',
2576
+ }
2577
+ )
2578
+
2579
+ // Verify message was published
2580
+ const result = await consumer.handlerSpy.waitForMessage(
2581
+ (msg) => msg.test === 'fifo-message',
2582
+ 'consumed'
2583
+ )
2584
+
2585
+ expect(result).toBeDefined()
2586
+ })
2587
+ ```
2588
+
2589
+ #### API Reference
2590
+
2591
+ ```typescript
2592
+ class TestSqsPublisher {
2593
+ constructor(sqsClient: SQSClient)
2594
+
2595
+ /**
2596
+ * Publish a message to an SQS queue without validation
2597
+ * @param payload - Any JSON-serializable object
2598
+ * @param options - Queue targeting and FIFO options
2599
+ */
2600
+ async publish(
2601
+ payload: any,
2602
+ options:
2603
+ | { queueUrl: string; MessageGroupId?: string; MessageDeduplicationId?: string }
2604
+ | { queueName: string; MessageGroupId?: string; MessageDeduplicationId?: string }
2605
+ | { consumer: AbstractSqsConsumer<any, any, any, any, any>; MessageGroupId?: string; MessageDeduplicationId?: string }
2606
+ | { publisher: AbstractSqsPublisher<any>; MessageGroupId?: string; MessageDeduplicationId?: string }
2607
+ ): Promise<void>
2608
+ }
2609
+ ```
2610
+
2611
+ **When to use `TestSqsPublisher`:**
2612
+ - ✅ Testing error handling and edge cases
2613
+ - ✅ Integration tests with invalid data
2614
+ - ✅ Testing consumer resilience
2615
+ - ✅ Debugging message processing issues
2616
+
2617
+ **When NOT to use `TestSqsPublisher`:**
2618
+ - ❌ Production code
2619
+ - ❌ Publishing valid messages (use regular publishers)
2620
+ - ❌ Messages that need validation, deduplication, or offloading
2621
+
2403
2622
  ### Integration Tests
2404
2623
 
2405
2624
  ```typescript
@@ -0,0 +1,127 @@
1
+ import type { SQSClient } from '@aws-sdk/client-sqs';
2
+ import type { AbstractSqsConsumer } from '../sqs/AbstractSqsConsumer.ts';
3
+ import type { AbstractSqsPublisher } from '../sqs/AbstractSqsPublisher.ts';
4
+ /**
5
+ * Options for publishing messages with TestSqsPublisher.
6
+ * Supports multiple mutually exclusive ways to specify the target queue.
7
+ */
8
+ export type TestSqsPublishOptions = {
9
+ queueUrl: string;
10
+ queueName?: never;
11
+ consumer?: never;
12
+ publisher?: never;
13
+ MessageGroupId?: string;
14
+ MessageDeduplicationId?: string;
15
+ } | {
16
+ queueName: string;
17
+ queueUrl?: never;
18
+ consumer?: never;
19
+ publisher?: never;
20
+ MessageGroupId?: string;
21
+ MessageDeduplicationId?: string;
22
+ } | {
23
+ consumer: AbstractSqsConsumer<any, any, any, any, any>;
24
+ queueUrl?: never;
25
+ queueName?: never;
26
+ publisher?: never;
27
+ MessageGroupId?: string;
28
+ MessageDeduplicationId?: string;
29
+ } | {
30
+ publisher: AbstractSqsPublisher<any>;
31
+ queueUrl?: never;
32
+ queueName?: never;
33
+ consumer?: never;
34
+ MessageGroupId?: string;
35
+ MessageDeduplicationId?: string;
36
+ };
37
+ /**
38
+ * TestSqsPublisher - A testing utility for publishing arbitrary messages to SQS queues without validation.
39
+ *
40
+ * This publisher bypasses all message validation, schema checking, deduplication, and payload offloading
41
+ * to enable testing edge cases, invalid messages, and integration scenarios.
42
+ *
43
+ * **IMPORTANT: This is a testing utility only. Do not use in production code.**
44
+ *
45
+ * Features:
46
+ * - Publish any JSON-serializable payload to any SQS queue
47
+ * - No Zod schema validation
48
+ * - No message deduplication
49
+ * - No payload offloading
50
+ * - Accept queueUrl string or consumer/publisher instance per publish call
51
+ * - Automatically resolve queueUrl from consumer/publisher
52
+ * - Support FIFO queue options (MessageGroupId, MessageDeduplicationId)
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * // Create a single publisher for all queues
57
+ * const publisher = new TestSqsPublisher(sqsClient)
58
+ *
59
+ * // Publish to different queues
60
+ * await publisher.publish({ any: 'data' }, { queueUrl: 'https://sqs...' })
61
+ * await publisher.publish({ test: 'message' }, { queueName: 'my-queue' })
62
+ * await publisher.publish({ test: 'message' }, { consumer: myConsumer })
63
+ * await publisher.publish({ other: 'data' }, { publisher: myPublisher })
64
+ *
65
+ * // FIFO queue with options
66
+ * await publisher.publish(
67
+ * { test: 'message' },
68
+ * {
69
+ * queueUrl: 'https://sqs.../my-queue.fifo',
70
+ * MessageGroupId: 'group1',
71
+ * MessageDeduplicationId: 'unique-id'
72
+ * }
73
+ * )
74
+ * ```
75
+ */
76
+ export declare class TestSqsPublisher {
77
+ private readonly sqsClient;
78
+ /**
79
+ * Creates a new TestSqsPublisher instance.
80
+ *
81
+ * @param sqsClient - AWS SQS client instance
82
+ */
83
+ constructor(sqsClient: SQSClient);
84
+ /**
85
+ * Publishes a message to an SQS queue without any validation.
86
+ *
87
+ * @param payload - Any JSON-serializable object to publish
88
+ * @param options - Queue and message options
89
+ * @param options.queueUrl - Direct queue URL (mutually exclusive with queueName/consumer/publisher)
90
+ * @param options.queueName - Queue name to resolve to URL (mutually exclusive with queueUrl/consumer/publisher)
91
+ * @param options.consumer - Consumer instance to extract queue URL from (mutually exclusive with queueUrl/queueName/publisher)
92
+ * @param options.publisher - Publisher instance to extract queue URL from (mutually exclusive with queueUrl/queueName/consumer)
93
+ * @param options.MessageGroupId - Required for FIFO queues (queue name ends with .fifo)
94
+ * @param options.MessageDeduplicationId - Optional deduplication ID for FIFO queues
95
+ *
96
+ * @returns Promise that resolves when message is published
97
+ * @throws {Error} If none of queueUrl/queueName/consumer/publisher is provided
98
+ * @throws {Error} If consumer/publisher has not been initialized (no queueUrl available)
99
+ * @throws {Error} If SQS publish fails
100
+ *
101
+ * @example
102
+ * ```typescript
103
+ * // Using with a queue URL
104
+ * await publisher.publish({ test: 'data' }, { queueUrl: 'https://sqs...' })
105
+ *
106
+ * // Using with a queue name
107
+ * await publisher.publish({ test: 'data' }, { queueName: 'my-queue' })
108
+ *
109
+ * // Using with a consumer
110
+ * await publisher.publish({ test: 'data' }, { consumer: myConsumer })
111
+ *
112
+ * // Using with a publisher
113
+ * await publisher.publish({ test: 'data' }, { publisher: myPublisher })
114
+ *
115
+ * // FIFO queue
116
+ * await publisher.publish(
117
+ * { test: 'data' },
118
+ * {
119
+ * queueUrl: 'https://sqs.../queue.fifo',
120
+ * MessageGroupId: 'group1',
121
+ * MessageDeduplicationId: 'unique-id'
122
+ * }
123
+ * )
124
+ * ```
125
+ */
126
+ publish(payload: unknown, options: TestSqsPublishOptions): Promise<void>;
127
+ }
@@ -0,0 +1,137 @@
1
+ import { SendMessageCommand } from '@aws-sdk/client-sqs';
2
+ import { getQueueUrl } from "../utils/sqsUtils.js";
3
+ /**
4
+ * TestSqsPublisher - A testing utility for publishing arbitrary messages to SQS queues without validation.
5
+ *
6
+ * This publisher bypasses all message validation, schema checking, deduplication, and payload offloading
7
+ * to enable testing edge cases, invalid messages, and integration scenarios.
8
+ *
9
+ * **IMPORTANT: This is a testing utility only. Do not use in production code.**
10
+ *
11
+ * Features:
12
+ * - Publish any JSON-serializable payload to any SQS queue
13
+ * - No Zod schema validation
14
+ * - No message deduplication
15
+ * - No payload offloading
16
+ * - Accept queueUrl string or consumer/publisher instance per publish call
17
+ * - Automatically resolve queueUrl from consumer/publisher
18
+ * - Support FIFO queue options (MessageGroupId, MessageDeduplicationId)
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * // Create a single publisher for all queues
23
+ * const publisher = new TestSqsPublisher(sqsClient)
24
+ *
25
+ * // Publish to different queues
26
+ * await publisher.publish({ any: 'data' }, { queueUrl: 'https://sqs...' })
27
+ * await publisher.publish({ test: 'message' }, { queueName: 'my-queue' })
28
+ * await publisher.publish({ test: 'message' }, { consumer: myConsumer })
29
+ * await publisher.publish({ other: 'data' }, { publisher: myPublisher })
30
+ *
31
+ * // FIFO queue with options
32
+ * await publisher.publish(
33
+ * { test: 'message' },
34
+ * {
35
+ * queueUrl: 'https://sqs.../my-queue.fifo',
36
+ * MessageGroupId: 'group1',
37
+ * MessageDeduplicationId: 'unique-id'
38
+ * }
39
+ * )
40
+ * ```
41
+ */
42
+ export class TestSqsPublisher {
43
+ sqsClient;
44
+ /**
45
+ * Creates a new TestSqsPublisher instance.
46
+ *
47
+ * @param sqsClient - AWS SQS client instance
48
+ */
49
+ constructor(sqsClient) {
50
+ this.sqsClient = sqsClient;
51
+ }
52
+ /**
53
+ * Publishes a message to an SQS queue without any validation.
54
+ *
55
+ * @param payload - Any JSON-serializable object to publish
56
+ * @param options - Queue and message options
57
+ * @param options.queueUrl - Direct queue URL (mutually exclusive with queueName/consumer/publisher)
58
+ * @param options.queueName - Queue name to resolve to URL (mutually exclusive with queueUrl/consumer/publisher)
59
+ * @param options.consumer - Consumer instance to extract queue URL from (mutually exclusive with queueUrl/queueName/publisher)
60
+ * @param options.publisher - Publisher instance to extract queue URL from (mutually exclusive with queueUrl/queueName/consumer)
61
+ * @param options.MessageGroupId - Required for FIFO queues (queue name ends with .fifo)
62
+ * @param options.MessageDeduplicationId - Optional deduplication ID for FIFO queues
63
+ *
64
+ * @returns Promise that resolves when message is published
65
+ * @throws {Error} If none of queueUrl/queueName/consumer/publisher is provided
66
+ * @throws {Error} If consumer/publisher has not been initialized (no queueUrl available)
67
+ * @throws {Error} If SQS publish fails
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * // Using with a queue URL
72
+ * await publisher.publish({ test: 'data' }, { queueUrl: 'https://sqs...' })
73
+ *
74
+ * // Using with a queue name
75
+ * await publisher.publish({ test: 'data' }, { queueName: 'my-queue' })
76
+ *
77
+ * // Using with a consumer
78
+ * await publisher.publish({ test: 'data' }, { consumer: myConsumer })
79
+ *
80
+ * // Using with a publisher
81
+ * await publisher.publish({ test: 'data' }, { publisher: myPublisher })
82
+ *
83
+ * // FIFO queue
84
+ * await publisher.publish(
85
+ * { test: 'data' },
86
+ * {
87
+ * queueUrl: 'https://sqs.../queue.fifo',
88
+ * MessageGroupId: 'group1',
89
+ * MessageDeduplicationId: 'unique-id'
90
+ * }
91
+ * )
92
+ * ```
93
+ */
94
+ async publish(payload, options) {
95
+ let queueUrl;
96
+ if (options.queueUrl) {
97
+ queueUrl = options.queueUrl;
98
+ }
99
+ else if (options.queueName) {
100
+ // Resolve queue name to URL
101
+ const result = await getQueueUrl(this.sqsClient, options.queueName);
102
+ if (result.error) {
103
+ throw result.error;
104
+ }
105
+ queueUrl = result.result;
106
+ }
107
+ else if (options.consumer) {
108
+ // Extract queueUrl from consumer
109
+ // @ts-expect-error - Accessing protected property for testing purposes
110
+ const consumerQueueUrl = options.consumer.queueUrl;
111
+ if (!consumerQueueUrl) {
112
+ throw new Error('Consumer has not been initialized. Call consumer.init() before passing it to TestSqsPublisher.publish().');
113
+ }
114
+ queueUrl = consumerQueueUrl;
115
+ }
116
+ else if (options.publisher) {
117
+ // Extract queueUrl from publisher
118
+ // @ts-expect-error - Accessing protected property for testing purposes
119
+ const publisherQueueUrl = options.publisher.queueUrl;
120
+ if (!publisherQueueUrl) {
121
+ throw new Error('Publisher has not been initialized. Call publisher.init() or publisher.publish() before passing it to TestSqsPublisher.publish().');
122
+ }
123
+ queueUrl = publisherQueueUrl;
124
+ }
125
+ else {
126
+ throw new Error('Either queueUrl, queueName, consumer, or publisher must be provided in options');
127
+ }
128
+ const command = new SendMessageCommand({
129
+ QueueUrl: queueUrl,
130
+ MessageBody: JSON.stringify(payload),
131
+ MessageGroupId: options.MessageGroupId,
132
+ MessageDeduplicationId: options.MessageDeduplicationId,
133
+ });
134
+ await this.sqsClient.send(command);
135
+ }
136
+ }
137
+ //# sourceMappingURL=TestSqsPublisher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestSqsPublisher.js","sourceRoot":"","sources":["../../lib/fakes/TestSqsPublisher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAIxD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAoDlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,OAAO,gBAAgB;IACV,SAAS,CAAW;IAErC;;;;OAIG;IACH,YAAY,SAAoB;QAC9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyCG;IACH,KAAK,CAAC,OAAO,CAAC,OAAgB,EAAE,OAA8B;QAC5D,IAAI,QAAgB,CAAA;QAEpB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAC7B,CAAC;aAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAC7B,4BAA4B;YAC5B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;YACnE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,MAAM,MAAM,CAAC,KAAK,CAAA;YACpB,CAAC;YACD,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAA;QAC1B,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC5B,iCAAiC;YACjC,uEAAuE;YACvE,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,QAA8B,CAAA;YACxE,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CACb,0GAA0G,CAC3G,CAAA;YACH,CAAC;YACD,QAAQ,GAAG,gBAAgB,CAAA;QAC7B,CAAC;aAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAC7B,kCAAkC;YAClC,uEAAuE;YACvE,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,QAA8B,CAAA;YAC1E,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CACb,mIAAmI,CACpI,CAAA;YACH,CAAC;YACD,QAAQ,GAAG,iBAAiB,CAAA;QAC9B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAA;QACH,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC;YACrC,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YACpC,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;SACvD,CAAC,CAAA;QAEF,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export { SqsConsumerErrorResolver } from './errors/SqsConsumerErrorResolver.ts';
2
2
  export { FakeConsumerErrorResolver } from './fakes/FakeConsumerErrorResolver.ts';
3
+ export { TestSqsPublisher, type TestSqsPublishOptions } from './fakes/TestSqsPublisher.ts';
3
4
  export type { SQSConsumerDependencies, SQSConsumerOptions } from './sqs/AbstractSqsConsumer.ts';
4
5
  export { AbstractSqsConsumer } from './sqs/AbstractSqsConsumer.ts';
5
6
  export type { SQSMessageOptions, SQSPublisherOptions } from './sqs/AbstractSqsPublisher.ts';
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export { SqsConsumerErrorResolver } from "./errors/SqsConsumerErrorResolver.js";
2
2
  export { FakeConsumerErrorResolver } from "./fakes/FakeConsumerErrorResolver.js";
3
+ export { TestSqsPublisher } from "./fakes/TestSqsPublisher.js";
3
4
  export { AbstractSqsConsumer } from "./sqs/AbstractSqsConsumer.js";
4
5
  export { AbstractSqsPublisher, OFFLOADED_PAYLOAD_SIZE_ATTRIBUTE, } from "./sqs/AbstractSqsPublisher.js";
5
6
  export { SQS_MESSAGE_MAX_SIZE, SQS_RESOURCE_ANY, SQS_RESOURCE_CURRENT_QUEUE, } from "./sqs/AbstractSqsService.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AAEhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAGlE,OAAO,EACL,oBAAoB,EACpB,gCAAgC,GACjC,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAEL,oBAAoB,EACpB,gBAAgB,EAChB,0BAA0B,GAO3B,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,wBAAwB,GAGzB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAE,gCAAgC,EAAE,MAAM,yBAAyB,CAAA;AAC1E,OAAO,EACL,kCAAkC,EAClC,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,EACL,WAAW,EACX,4BAA4B,EAC5B,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,gCAAgC,EAChC,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAA8B,MAAM,6BAA6B,CAAA;AAE1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAGlE,OAAO,EACL,oBAAoB,EACpB,gCAAgC,GACjC,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAEL,oBAAoB,EACpB,gBAAgB,EAChB,0BAA0B,GAO3B,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,wBAAwB,GAGzB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAE,gCAAgC,EAAE,MAAM,yBAAyB,CAAA;AAC1E,OAAO,EACL,kCAAkC,EAClC,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,EACL,WAAW,EACX,4BAA4B,EAC5B,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,gCAAgC,EAChC,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,qBAAqB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@message-queue-toolkit/sqs",
3
- "version": "22.6.0",
3
+ "version": "22.7.0",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "description": "SQS adapter for message-queue-toolkit",