@message-queue-toolkit/sns 24.0.0 → 24.3.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
@@ -94,7 +94,7 @@ Publisher → SNS Topic → [Subscriptions] → SQS Queues → Consumers
94
94
  ### Message Schemas
95
95
 
96
96
  Messages use the same schema requirements as SQS. Each message must have:
97
- - A unique message type field (discriminator for routing) - configurable via `messageTypeField` (required)
97
+ - A unique message type field (discriminator for routing) - configurable via `messageTypeResolver` (required)
98
98
  - A message ID field (for tracking and deduplication) - configurable via `messageIdField` (default: `'id'`)
99
99
  - A timestamp field (added automatically if missing) - configurable via `messageTimestampField` (default: `'timestamp'`)
100
100
 
@@ -143,7 +143,7 @@ class UserEventsPublisher extends AbstractSnsPublisher<SupportedMessages> {
143
143
  },
144
144
  {
145
145
  messageSchemas: [UserCreatedSchema, UserUpdatedSchema],
146
- messageTypeField: 'messageType',
146
+ messageTypeResolver: { messageTypePath: 'messageType' },
147
147
  creationConfig: {
148
148
  topic: {
149
149
  Name: 'user-events-topic',
@@ -160,8 +160,8 @@ class UserEventsPublisher extends AbstractSnsPublisher<SupportedMessages> {
160
160
  // Use the publisher
161
161
  const snsClient = new SNSClient({ region: 'us-east-1' })
162
162
  const stsClient = new STSClient({ region: 'us-east-1' })
163
- const publisher = new UserEventsPublisher(snsClient, stsClient)
164
163
 
164
+ const publisher = new UserEventsPublisher(snsClient, stsClient)
165
165
  await publisher.init()
166
166
 
167
167
  // Publish to the topic - all subscribers will receive this message
@@ -214,7 +214,7 @@ class UserEventsConsumer extends AbstractSnsSqsConsumer<
214
214
  },
215
215
  },
216
216
  {
217
- messageTypeField: 'messageType',
217
+ messageTypeResolver: { messageTypePath: 'messageType' },
218
218
  handlers: new MessageHandlerConfigBuilder<SupportedMessages, ExecutionContext>()
219
219
  .addConfig(
220
220
  UserCreatedSchema,
@@ -287,7 +287,7 @@ class UserEventsFifoPublisher extends AbstractSnsPublisher<SupportedMessages> {
287
287
  },
288
288
  {
289
289
  messageSchemas: [UserCreatedSchema, UserUpdatedSchema],
290
- messageTypeField: 'messageType',
290
+ messageTypeResolver: { messageTypePath: 'messageType' },
291
291
  fifoTopic: true, // Enable FIFO mode
292
292
 
293
293
  // Option 1: Use a field from the message as MessageGroupId
@@ -374,7 +374,7 @@ class UserEventsFifoConsumer extends AbstractSnsSqsConsumer<
374
374
  },
375
375
  {
376
376
  fifoQueue: true, // Enable FIFO mode for SQS queue
377
- messageTypeField: 'messageType',
377
+ messageTypeResolver: { messageTypePath: 'messageType' },
378
378
  handlers: new MessageHandlerConfigBuilder<SupportedMessages, ExecutionContext>()
379
379
  .addConfig(UserCreatedSchema, handleUserCreated)
380
380
  .addConfig(UserUpdatedSchema, handleUserUpdated)
@@ -489,13 +489,171 @@ When using `locatorConfig`, you connect to an existing topic without creating it
489
489
  }
490
490
  ```
491
491
 
492
+ ### Startup Resource Polling
493
+
494
+ When your SNS topic or SQS queue may not exist at startup (e.g., created by another service or infrastructure-as-code pipeline), you can enable polling to wait for resources to become available instead of failing immediately:
495
+
496
+ ```typescript
497
+ {
498
+ locatorConfig: {
499
+ topicName: 'my-topic',
500
+ queueUrl: 'https://sqs.us-east-1.amazonaws.com/123456789012/my-queue',
501
+ subscriptionArn: 'arn:aws:sns:us-east-1:123456789012:my-topic:uuid',
502
+
503
+ // Enable startup resource polling
504
+ startupResourcePolling: {
505
+ enabled: true,
506
+ pollingIntervalMs: 5000, // Check every 5 seconds (default)
507
+ timeoutMs: 60000, // Timeout after 60 seconds
508
+ // timeoutMs: 'NO_TIMEOUT', // Or poll indefinitely
509
+
510
+ // Optional: Non-blocking mode
511
+ nonBlocking: false, // Default: false (blocking)
512
+ },
513
+ },
514
+ }
515
+ ```
516
+
517
+ #### Blocking Mode (Default)
518
+
519
+ In blocking mode, `init()` or `start()` will wait until both the topic and queue are available:
520
+
521
+ ```typescript
522
+ const consumer = new MyConsumer(deps, {
523
+ locatorConfig: {
524
+ topicName: 'my-topic',
525
+ queueUrl: 'https://sqs...',
526
+ subscriptionArn: 'arn:aws:sns:...',
527
+ startupResourcePolling: {
528
+ enabled: true,
529
+ pollingIntervalMs: 5000,
530
+ timeoutMs: 60000,
531
+ },
532
+ },
533
+ })
534
+
535
+ // This will block until topic and queue are available (or timeout)
536
+ await consumer.start()
537
+ ```
538
+
539
+ If the timeout is reached before resources are available, a `StartupResourcePollingTimeoutError` is thrown.
540
+
541
+ #### Non-Blocking Mode
542
+
543
+ In non-blocking mode, `init()` returns immediately even if resources aren't available. Background polling continues and you're notified via callbacks:
544
+
545
+ ```typescript
546
+ const consumer = new MyConsumer(deps, {
547
+ locatorConfig: {
548
+ topicName: 'my-topic',
549
+ queueUrl: 'https://sqs...',
550
+ subscriptionArn: 'arn:aws:sns:...',
551
+ startupResourcePolling: {
552
+ enabled: true,
553
+ pollingIntervalMs: 5000,
554
+ timeoutMs: 60000,
555
+ nonBlocking: true, // Return immediately
556
+ },
557
+ },
558
+ })
559
+
560
+ // Returns immediately, even if resources don't exist yet
561
+ await consumer.start()
562
+
563
+ // Check if resources are ready
564
+ if (!consumer.resourcesReady) {
565
+ console.log('Resources not yet available, waiting in background...')
566
+ }
567
+ ```
568
+
569
+ #### Callbacks for Non-Blocking Mode
570
+
571
+ When using non-blocking mode, you can provide callbacks to be notified when resources become available or when polling fails:
572
+
573
+ ```typescript
574
+ // Using initSnsSqs directly for more control
575
+ import { initSnsSqs } from '@message-queue-toolkit/sns'
576
+
577
+ const result = await initSnsSqs(
578
+ sqsClient,
579
+ snsClient,
580
+ stsClient,
581
+ {
582
+ topicName: 'my-topic',
583
+ queueUrl: 'https://sqs...',
584
+ startupResourcePolling: {
585
+ enabled: true,
586
+ pollingIntervalMs: 5000,
587
+ timeoutMs: 60000,
588
+ nonBlocking: true,
589
+ },
590
+ },
591
+ creationConfig,
592
+ subscriptionConfig,
593
+ {
594
+ // Called when all resources become available
595
+ onResourcesReady: ({ topicArn, queueUrl }) => {
596
+ console.log('Resources are now available!')
597
+ console.log('Topic ARN:', topicArn)
598
+ console.log('Queue URL:', queueUrl)
599
+ },
600
+
601
+ // Called if background polling fails (e.g., timeout or unexpected error)
602
+ onResourcesError: (error, context) => {
603
+ if (context.isFinal) {
604
+ // Polling has stopped and will not retry
605
+ console.error('Failed to wait for resources:', error.message)
606
+ // Handle error - maybe alert, retry, or graceful degradation
607
+ } else {
608
+ // Transient error, polling will continue
609
+ console.warn('Transient error while polling:', error.message)
610
+ }
611
+ },
612
+ },
613
+ )
614
+
615
+ if (result.resourcesReady) {
616
+ console.log('Resources were immediately available')
617
+ } else {
618
+ console.log('Waiting for resources in background...')
619
+ }
620
+ ```
621
+
622
+ #### Subscription Creation Mode
623
+
624
+ When you want to **create** a subscription (no existing `subscriptionArn`), startup resource polling will wait for the topic to exist before attempting to subscribe:
625
+
626
+ ```typescript
627
+ const consumer = new MyConsumer(deps, {
628
+ locatorConfig: {
629
+ topicName: 'my-topic', // Topic created by another service
630
+ // No subscriptionArn - we'll create the subscription
631
+ startupResourcePolling: {
632
+ enabled: true,
633
+ pollingIntervalMs: 5000,
634
+ timeoutMs: 60000,
635
+ },
636
+ },
637
+ creationConfig: {
638
+ queue: { QueueName: 'my-consumer-queue' }, // Queue will be created
639
+ },
640
+ })
641
+
642
+ // This will:
643
+ // 1. Poll until the topic exists
644
+ // 2. Create the SQS queue
645
+ // 3. Subscribe the queue to the topic
646
+ // 4. Start consuming
647
+ await consumer.start()
648
+ ```
649
+
492
650
  ### Publisher Options
493
651
 
494
652
  ```typescript
495
653
  {
496
654
  // Required - Message Schema Configuration
497
655
  messageSchemas: [Schema1, Schema2], // Array of Zod schemas
498
- messageTypeField: 'messageType', // Field containing message type discriminator
656
+ messageTypeResolver: { messageTypePath: 'messageType' }, // Field containing message type discriminator
499
657
 
500
658
  // Topic Configuration (one of these required)
501
659
  creationConfig: { /* ... */ }, // Create topic if doesn't exist
@@ -541,7 +699,7 @@ SNS consumers use the same options as SQS consumers, plus SNS-specific subscript
541
699
 
542
700
  // Required - Message Handling Configuration
543
701
  handlers: MessageHandlerConfigBuilder.build(),
544
- messageTypeField: 'messageType',
702
+ messageTypeResolver: { messageTypePath: 'messageType' },
545
703
 
546
704
  // Topic & Queue Configuration
547
705
  creationConfig: {
package/dist/index.d.ts CHANGED
@@ -10,7 +10,7 @@ export { FakeConsumer } from './sns/fakes/FakeConsumer.ts';
10
10
  export * from './sns/SnsPublisherManager.ts';
11
11
  export type { CommonMessage } from './types/MessageTypes.ts';
12
12
  export { generateFilterAttributes, generateTopicSubscriptionPolicy, } from './utils/snsAttributeUtils.ts';
13
- export { initSns, initSnsSqs } from './utils/snsInitter.ts';
13
+ export { type InitSnsExtraParams, type InitSnsSqsExtraParams, initSns, initSnsSqs, } from './utils/snsInitter.ts';
14
14
  export { deserializeSNSMessage } from './utils/snsMessageDeserializer.ts';
15
15
  export { readSnsMessage } from './utils/snsMessageReader.ts';
16
16
  export { subscribeToTopic } from './utils/snsSubscriber.ts';
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ export * from "./sns/CommonSnsPublisherFactory.js";
6
6
  export { FakeConsumer } from "./sns/fakes/FakeConsumer.js";
7
7
  export * from "./sns/SnsPublisherManager.js";
8
8
  export { generateFilterAttributes, generateTopicSubscriptionPolicy, } from "./utils/snsAttributeUtils.js";
9
- export { initSns, initSnsSqs } from "./utils/snsInitter.js";
9
+ export { initSns, initSnsSqs, } from "./utils/snsInitter.js";
10
10
  export { deserializeSNSMessage } from "./utils/snsMessageDeserializer.js";
11
11
  export { readSnsMessage } from "./utils/snsMessageReader.js";
12
12
  export { subscribeToTopic } from "./utils/snsSubscriber.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;AAE/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAQpE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAQtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AACxE,cAAc,oCAAoC,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,cAAc,8BAA8B,CAAA;AAE5C,OAAO,EACL,wBAAwB,EACxB,+BAA+B,GAChC,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EACL,WAAW,EACX,4BAA4B,EAC5B,kBAAkB,EAClB,WAAW,EACX,+BAA+B,EAC/B,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,GACtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAE/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAQpE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAQtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AACxE,cAAc,oCAAoC,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,cAAc,8BAA8B,CAAA;AAE5C,OAAO,EACL,wBAAwB,EACxB,+BAA+B,GAChC,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAGL,OAAO,EACP,UAAU,GACX,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EACL,WAAW,EACX,4BAA4B,EAC5B,kBAAkB,EAClB,WAAW,EACX,+BAA+B,EAC/B,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,GACtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA"}
@@ -48,8 +48,8 @@ export class AbstractSnsPublisher extends AbstractSnsService {
48
48
  const parsedMessage = messageSchemaResult.result.parse(message);
49
49
  const topicName = this.locatorConfig?.topicName ?? this.creationConfig?.topic?.Name ?? 'unknown';
50
50
  if (this.logMessages) {
51
- // @ts-expect-error
52
- const resolvedLogMessage = this.resolveMessageLog(message, message[this.messageTypeField]);
51
+ const messageType = this.resolveMessageTypeFromMessage(message) ?? 'unknown';
52
+ const resolvedLogMessage = this.resolveMessageLog(message, messageType);
53
53
  this.logMessage(resolvedLogMessage);
54
54
  }
55
55
  const updatedMessage = this.updateInternalProperties(message);
@@ -85,8 +85,7 @@ export class AbstractSnsPublisher extends AbstractSnsService {
85
85
  details: {
86
86
  publisher: this.constructor.name,
87
87
  topic: this.topicArn,
88
- // @ts-expect-error
89
- messageType: message[this.messageTypeField] ?? 'unknown',
88
+ messageType: this.resolveMessageTypeFromMessage(message) ?? 'unknown',
90
89
  },
91
90
  cause: err,
92
91
  });
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSnsPublisher.js","sourceRoot":"","sources":["../../lib/sns/AbstractSnsPublisher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractSnsPublisher.js","sourceRoot":"","sources":["../../lib/sns/AbstractSnsPublisher.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { CreateTopicCommandInput, SNSClient, Tag } from '@aws-sdk/client-sns';
2
2
  import type { STSClient } from '@aws-sdk/client-sts';
3
- import type { QueueDependencies, QueueOptions } from '@message-queue-toolkit/core';
3
+ import type { BaseQueueLocatorType, QueueDependencies, QueueOptions } from '@message-queue-toolkit/core';
4
4
  import { AbstractQueueService } from '@message-queue-toolkit/core';
5
5
  import type { SNS_MESSAGE_BODY_TYPE } from '../types/MessageTypes.ts';
6
6
  export declare const SNS_MESSAGE_MAX_SIZE: number;
@@ -31,7 +31,7 @@ export type SNSCreationConfig = {
31
31
  topic?: SNSTopicAWSConfig;
32
32
  updateAttributesIfExists?: boolean;
33
33
  } & ExtraSNSCreationParams;
34
- export type SNSTopicLocatorType = {
34
+ export type SNSTopicLocatorType = BaseQueueLocatorType & {
35
35
  topicArn?: string;
36
36
  topicName?: string;
37
37
  };
@@ -16,7 +16,7 @@ export class AbstractSnsService extends AbstractQueueService {
16
16
  if (this.deletionConfig && this.creationConfig) {
17
17
  await deleteSns(this.snsClient, this.stsClient, this.deletionConfig, this.creationConfig);
18
18
  }
19
- const initResult = await initSns(this.snsClient, this.stsClient, this.locatorConfig, this.creationConfig);
19
+ const initResult = await initSns(this.snsClient, this.stsClient, this.locatorConfig, this.creationConfig, { logger: this.logger });
20
20
  this.topicArn = initResult.topicArn;
21
21
  this.isInitted = true;
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSnsService.js","sourceRoot":"","sources":["../../lib/sns/AbstractSnsService.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAElE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAE3D,yDAAyD;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,GAAG,IAAI,CAAA,CAAC,QAAQ;AAyCvD,MAAM,OAAgB,kBAKpB,SAAQ,oBAOT;IACoB,SAAS,CAAW;IACpB,SAAS,CAAW;IACvC,mBAAmB;IACT,QAAQ,CAAQ;IAE1B,YAAY,YAA8B,EAAE,OAAuB;QACjE,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAE5B,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;QACvC,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;IACzC,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/C,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3F,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,OAAO,CAC9B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CACpB,CAAA;QACD,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;IACvB,CAAC;IAEe,KAAK;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACtB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"AbstractSnsService.js","sourceRoot":"","sources":["../../lib/sns/AbstractSnsService.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAElE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAE3D,yDAAyD;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,GAAG,IAAI,CAAA,CAAC,QAAQ;AAyCvD,MAAM,OAAgB,kBAKpB,SAAQ,oBAOT;IACoB,SAAS,CAAW;IACpB,SAAS,CAAW;IACvC,mBAAmB;IACT,QAAQ,CAAQ;IAE1B,YAAY,YAA8B,EAAE,OAAuB;QACjE,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAE5B,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;QACvC,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;IACzC,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/C,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3F,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,OAAO,CAC9B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,EACnB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACxB,CAAA;QACD,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;IACvB,CAAC;IAEe,KAAK;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACtB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;CACF"}
@@ -19,7 +19,7 @@ export class FakeConsumer extends AbstractSnsSqsConsumer {
19
19
  subscriptionConfig: {
20
20
  updateAttributesIfExists: true,
21
21
  },
22
- messageTypeField: 'type',
22
+ messageTypeResolver: { messageTypePath: 'type' },
23
23
  handlerSpy: true,
24
24
  }, dependencies);
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FakeConsumer.js","sourceRoot":"","sources":["../../../lib/sns/fakes/FakeConsumer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAA;AAIzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AAErE,MAAM,OAAO,YAAiD,SAAQ,sBAGrE;IACC,YACE,YAAwC,EACxC,KAAa,EACb,KAAa,EACb,aAA2B;QAE3B,KAAK,CACH,YAAY,EACZ;YACE,QAAQ,EAAE,IAAI,2BAA2B,EAAc;iBACpD,SAAS,CAAC,aAAa,EAAE,GAAG,EAAE,CAC7B,OAAO,CAAC,OAAO,CAAC;gBACd,MAAM,EAAE,SAAS;aAClB,CAAC,CACH;iBACA,KAAK,EAAE;YACV,cAAc,EAAE;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,KAAK;iBACZ;gBACD,KAAK,EAAE;oBACL,SAAS,EAAE,KAAK;iBACjB;aACF;YACD,kBAAkB,EAAE;gBAClB,wBAAwB,EAAE,IAAI;aAC/B;YACD,gBAAgB,EAAE,MAAM;YACxB,UAAU,EAAE,IAAI;SACjB,EACD,YAAY,CACb,CAAA;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"FakeConsumer.js","sourceRoot":"","sources":["../../../lib/sns/fakes/FakeConsumer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAA;AAIzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AAErE,MAAM,OAAO,YAAiD,SAAQ,sBAGrE;IACC,YACE,YAAwC,EACxC,KAAa,EACb,KAAa,EACb,aAA2B;QAE3B,KAAK,CACH,YAAY,EACZ;YACE,QAAQ,EAAE,IAAI,2BAA2B,EAAc;iBACpD,SAAS,CAAC,aAAa,EAAE,GAAG,EAAE,CAC7B,OAAO,CAAC,OAAO,CAAC;gBACd,MAAM,EAAE,SAAS;aAClB,CAAC,CACH;iBACA,KAAK,EAAE;YACV,cAAc,EAAE;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,KAAK;iBACZ;gBACD,KAAK,EAAE;oBACL,SAAS,EAAE,KAAK;iBACjB;aACF;YACD,kBAAkB,EAAE;gBAClB,wBAAwB,EAAE,IAAI;aAC/B;YACD,mBAAmB,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE;YAChD,UAAU,EAAE,IAAI;SACjB,EACD,YAAY,CACb,CAAA;IACH,CAAC;CACF"}
@@ -5,7 +5,7 @@ export type TopicSubscriptionPolicyParams = {
5
5
  allowedSourceOwner?: string;
6
6
  };
7
7
  export declare function generateTopicSubscriptionPolicy(params: TopicSubscriptionPolicyParams): string;
8
- export declare function generateFilterAttributes(messageSchemas: ZodSchema<any>[], messageTypeField: string): {
8
+ export declare function generateFilterAttributes(messageSchemas: ZodSchema<any>[], messageTypePath: string): {
9
9
  FilterPolicy: string;
10
10
  FilterPolicyScope: string;
11
11
  };
@@ -33,10 +33,10 @@ export function generateTopicSubscriptionPolicy(params) {
33
33
  }
34
34
  export function generateFilterAttributes(
35
35
  // biome-ignore lint/suspicious/noExplicitAny: Expected
36
- messageSchemas, messageTypeField) {
36
+ messageSchemas, messageTypePath) {
37
37
  const messageTypes = messageSchemas.map((schema) => {
38
38
  // @ts-expect-error
39
- return schema.shape[messageTypeField].value;
39
+ return schema.shape[messageTypePath].value;
40
40
  });
41
41
  return {
42
42
  FilterPolicy: JSON.stringify({
@@ -1 +1 @@
1
- {"version":3,"file":"snsAttributeUtils.js","sourceRoot":"","sources":["../../lib/utils/snsAttributeUtils.ts"],"names":[],"mappings":"AAEA,gGAAgG;AAChG,MAAM,cAAc,GAAG,YAAY,CAAA;AAQnC,MAAM,UAAU,+BAA+B,CAAC,MAAqC;IACnF,MAAM,YAAY,GAAG;QACnB,OAAO,EAAE,cAAc;QACvB,EAAE,EAAE,qBAAqB;QACzB,SAAS,EAAE;YACT;gBACE,GAAG,EAAE,sBAAsB;gBAC3B,MAAM,EAAE,OAAO;gBACf,SAAS,EAAE;oBACT,GAAG,EAAE,GAAG;iBACT;gBACD,MAAM,EAAE,CAAC,eAAe,CAAC;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,SAAS,EAAE,EAAE;aACd;SACF;KACF,CAAA;IAED,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC9B,mBAAmB;QACnB,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,GAAG;YACjD,iBAAiB,EAAE,MAAM,CAAC,kBAAkB;SAC7C,CAAA;IACH,CAAC;IACD,IAAI,MAAM,CAAC,wBAAwB,EAAE,MAAM,IAAI,MAAM,CAAC,wBAAwB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1F,mBAAmB;QACnB,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,GAAG;YAC/C,cAAc,EAAE,MAAM,CAAC,wBAAwB;SAChD,CAAA;IACH,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,wBAAwB;AACtC,uDAAuD;AACvD,cAAgC,EAChC,gBAAwB;IAExB,MAAM,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACjD,mBAAmB;QACnB,OAAO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAe,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;YAC3B,IAAI,EAAE,YAAY;SACnB,CAAC;QACF,iBAAiB,EAAE,aAAa;KACjC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"snsAttributeUtils.js","sourceRoot":"","sources":["../../lib/utils/snsAttributeUtils.ts"],"names":[],"mappings":"AAEA,gGAAgG;AAChG,MAAM,cAAc,GAAG,YAAY,CAAA;AAQnC,MAAM,UAAU,+BAA+B,CAAC,MAAqC;IACnF,MAAM,YAAY,GAAG;QACnB,OAAO,EAAE,cAAc;QACvB,EAAE,EAAE,qBAAqB;QACzB,SAAS,EAAE;YACT;gBACE,GAAG,EAAE,sBAAsB;gBAC3B,MAAM,EAAE,OAAO;gBACf,SAAS,EAAE;oBACT,GAAG,EAAE,GAAG;iBACT;gBACD,MAAM,EAAE,CAAC,eAAe,CAAC;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,SAAS,EAAE,EAAE;aACd;SACF;KACF,CAAA;IAED,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC9B,mBAAmB;QACnB,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,GAAG;YACjD,iBAAiB,EAAE,MAAM,CAAC,kBAAkB;SAC7C,CAAA;IACH,CAAC;IACD,IAAI,MAAM,CAAC,wBAAwB,EAAE,MAAM,IAAI,MAAM,CAAC,wBAAwB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1F,mBAAmB;QACnB,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,GAAG;YAC/C,cAAc,EAAE,MAAM,CAAC,wBAAwB;SAChD,CAAA;IACH,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,wBAAwB;AACtC,uDAAuD;AACvD,cAAgC,EAChC,eAAuB;IAEvB,MAAM,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACjD,mBAAmB;QACnB,OAAO,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,KAAe,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;YAC3B,IAAI,EAAE,YAAY;SACnB,CAAC;QACF,iBAAiB,EAAE,aAAa;KACjC,CAAA;AACH,CAAC"}
@@ -1,19 +1,45 @@
1
1
  import type { CreateTopicCommandInput, SNSClient } from '@aws-sdk/client-sns';
2
2
  import type { CreateQueueCommandInput, SQSClient } from '@aws-sdk/client-sqs';
3
3
  import type { STSClient } from '@aws-sdk/client-sts';
4
- import type { DeletionConfig, ExtraParams } from '@message-queue-toolkit/core';
4
+ import type { DeletionConfig, ExtraParams, PollingErrorCallback } from '@message-queue-toolkit/core';
5
5
  import { type SQSCreationConfig } from '@message-queue-toolkit/sqs';
6
6
  import type { SNSCreationConfig, SNSTopicLocatorType } from '../sns/AbstractSnsService.ts';
7
7
  import type { SNSSQSQueueLocatorType } from '../sns/AbstractSnsSqsConsumer.ts';
8
8
  import type { SNSSubscriptionOptions } from './snsSubscriber.ts';
9
- export declare function initSnsSqs(sqsClient: SQSClient, snsClient: SNSClient, stsClient: STSClient, locatorConfig?: SNSSQSQueueLocatorType, creationConfig?: SNSCreationConfig & SQSCreationConfig, subscriptionConfig?: SNSSubscriptionOptions, extraParams?: ExtraParams): Promise<{
9
+ export type InitSnsSqsExtraParams = ExtraParams & {
10
+ /**
11
+ * Callback invoked when resources become available in non-blocking mode.
12
+ * Only called when startupResourcePolling.nonBlocking is true and resources were not immediately available.
13
+ */
14
+ onResourcesReady?: (result: {
15
+ topicArn: string;
16
+ queueUrl: string;
17
+ }) => void;
18
+ /**
19
+ * Callback invoked when background resource polling or subscription creation fails in non-blocking mode.
20
+ * This can happen due to polling timeout or subscription creation failure.
21
+ */
22
+ onResourcesError?: PollingErrorCallback;
23
+ };
24
+ export type InitSnsExtraParams = ExtraParams & {
25
+ /**
26
+ * Callback invoked when topic becomes available in non-blocking mode.
27
+ * Only called when startupResourcePolling.nonBlocking is true and topic was not immediately available.
28
+ */
29
+ onTopicReady?: (result: {
30
+ topicArn: string;
31
+ }) => void;
32
+ };
33
+ export declare function initSnsSqs(sqsClient: SQSClient, snsClient: SNSClient, stsClient: STSClient, locatorConfig?: SNSSQSQueueLocatorType, creationConfig?: SNSCreationConfig & SQSCreationConfig, subscriptionConfig?: SNSSubscriptionOptions, extraParams?: InitSnsSqsExtraParams): Promise<{
10
34
  subscriptionArn: string;
11
35
  topicArn: string;
12
36
  queueUrl: string;
13
37
  queueName: string;
38
+ resourcesReady: boolean;
14
39
  }>;
15
40
  export declare function deleteSnsSqs(sqsClient: SQSClient, snsClient: SNSClient, stsClient: STSClient, deletionConfig: DeletionConfig, queueConfiguration: CreateQueueCommandInput, topicConfiguration: CreateTopicCommandInput | undefined, subscriptionConfiguration: SNSSubscriptionOptions, extraParams?: ExtraParams, topicLocator?: SNSTopicLocatorType): Promise<void>;
16
41
  export declare function deleteSns(snsClient: SNSClient, stsClient: STSClient, deletionConfig: DeletionConfig, creationConfig: SNSCreationConfig): Promise<void>;
17
- export declare function initSns(snsClient: SNSClient, stsClient: STSClient, locatorConfig?: SNSTopicLocatorType, creationConfig?: SNSCreationConfig): Promise<{
42
+ export declare function initSns(snsClient: SNSClient, stsClient: STSClient, locatorConfig?: SNSTopicLocatorType, creationConfig?: SNSCreationConfig, extraParams?: InitSnsExtraParams): Promise<{
18
43
  topicArn: string;
44
+ resourcesReady: boolean;
19
45
  }>;
@@ -1,9 +1,106 @@
1
- import { isProduction } from '@message-queue-toolkit/core';
1
+ import { isError } from '@lokalise/node-core';
2
+ import { isProduction, isStartupResourcePollingEnabled, waitForResource, } from '@message-queue-toolkit/core';
2
3
  import { deleteQueue, getQueueAttributes, resolveQueueUrlFromLocatorConfig, } from '@message-queue-toolkit/sqs';
3
4
  import { isCreateTopicCommand } from "../types/TopicTypes.js";
4
5
  import { subscribeToTopic } from "./snsSubscriber.js";
5
6
  import { assertTopic, deleteSubscription, deleteTopic, getTopicAttributes } from "./snsUtils.js";
6
7
  import { buildTopicArn } from "./stsUtils.js";
8
+ // Helper function to poll for SNS topic availability
9
+ async function pollForTopic(snsClient, topicArn, startupResourcePolling, extraParams, onResourceAvailable, onError) {
10
+ const topicResult = await waitForResource({
11
+ config: startupResourcePolling,
12
+ resourceName: `SNS topic ${topicArn}`,
13
+ logger: extraParams?.logger,
14
+ errorReporter: extraParams?.errorReporter,
15
+ onResourceAvailable,
16
+ onError,
17
+ checkFn: async () => {
18
+ const result = await getTopicAttributes(snsClient, topicArn);
19
+ if (result.error === 'not_found') {
20
+ return { isAvailable: false };
21
+ }
22
+ return { isAvailable: true, result: result.result };
23
+ },
24
+ });
25
+ return { topicResult, topicArn };
26
+ }
27
+ // Helper function to create subscription
28
+ async function createSubscription(sqsClient, snsClient, stsClient, creationConfig, topicResolutionOptions, subscriptionConfig, extraParams) {
29
+ const { subscriptionArn, topicArn, queueUrl } = await subscribeToTopic(sqsClient, snsClient, stsClient, creationConfig.queue, topicResolutionOptions, subscriptionConfig, {
30
+ updateAttributesIfExists: creationConfig.updateAttributesIfExists,
31
+ queueUrlsWithSubscribePermissionsPrefix: creationConfig.queueUrlsWithSubscribePermissionsPrefix,
32
+ allowedSourceOwner: creationConfig.allowedSourceOwner,
33
+ topicArnsWithPublishPermissionsPrefix: creationConfig.topicArnsWithPublishPermissionsPrefix,
34
+ logger: extraParams?.logger,
35
+ forceTagUpdate: creationConfig.forceTagUpdate,
36
+ });
37
+ if (!subscriptionArn) {
38
+ throw new Error('Failed to subscribe');
39
+ }
40
+ return { subscriptionArn, topicArn, queueUrl };
41
+ }
42
+ // Helper to handle subscription creation with optional topic polling (blocking and non-blocking)
43
+ async function createSubscriptionWithPolling(sqsClient, snsClient, stsClient, creationConfig, topicResolutionOptions, subscriptionConfig, topicArn, startupResourcePolling, extraParams) {
44
+ const nonBlocking = startupResourcePolling.nonBlocking === true;
45
+ const queueName = creationConfig.queue.QueueName;
46
+ const onTopicReady = async () => {
47
+ try {
48
+ const result = await createSubscription(sqsClient, snsClient, stsClient, creationConfig, topicResolutionOptions, subscriptionConfig, extraParams);
49
+ extraParams?.onResourcesReady?.({
50
+ topicArn: result.topicArn,
51
+ queueUrl: result.queueUrl,
52
+ });
53
+ }
54
+ catch (err) {
55
+ const error = isError(err) ? err : new Error(String(err));
56
+ extraParams?.logger?.error({
57
+ message: 'Background subscription creation failed',
58
+ topicArn,
59
+ error,
60
+ });
61
+ // Subscription creation failure is final - we don't retry
62
+ extraParams?.onResourcesError?.(error, { isFinal: true });
63
+ }
64
+ };
65
+ const { topicResult } = await pollForTopic(snsClient, topicArn, startupResourcePolling, extraParams, nonBlocking ? onTopicReady : undefined, nonBlocking ? extraParams?.onResourcesError : undefined);
66
+ // Non-blocking: return early if topic wasn't immediately available
67
+ if (nonBlocking && topicResult === undefined) {
68
+ return {
69
+ subscriptionArn: '',
70
+ topicArn,
71
+ queueName,
72
+ queueUrl: '',
73
+ resourcesReady: false,
74
+ };
75
+ }
76
+ // Blocking: topic is now available, create subscription
77
+ const result = await createSubscription(sqsClient, snsClient, stsClient, creationConfig, topicResolutionOptions, subscriptionConfig, extraParams);
78
+ return {
79
+ subscriptionArn: result.subscriptionArn,
80
+ topicArn: result.topicArn,
81
+ queueName,
82
+ queueUrl: result.queueUrl,
83
+ resourcesReady: true,
84
+ };
85
+ }
86
+ // Helper function to poll for SQS queue availability
87
+ async function pollForQueue(sqsClient, queueUrl, startupResourcePolling, extraParams, onResourceAvailable, onError) {
88
+ return await waitForResource({
89
+ config: startupResourcePolling,
90
+ resourceName: `SQS queue ${queueUrl}`,
91
+ logger: extraParams?.logger,
92
+ errorReporter: extraParams?.errorReporter,
93
+ onResourceAvailable,
94
+ onError,
95
+ checkFn: async () => {
96
+ const result = await getQueueAttributes(sqsClient, queueUrl);
97
+ if (result.error === 'not_found') {
98
+ return { isAvailable: false };
99
+ }
100
+ return { isAvailable: true, result: result.result };
101
+ },
102
+ });
103
+ }
7
104
  // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: fixme
8
105
  export async function initSnsSqs(sqsClient, snsClient, stsClient, locatorConfig, creationConfig, subscriptionConfig, extraParams) {
9
106
  if (!locatorConfig?.subscriptionArn) {
@@ -23,38 +120,127 @@ export async function initSnsSqs(sqsClient, snsClient, stsClient, locatorConfig,
23
120
  ...locatorConfig,
24
121
  ...creationConfig.topic,
25
122
  };
26
- const { subscriptionArn, topicArn, queueUrl } = await subscribeToTopic(sqsClient, snsClient, stsClient, creationConfig.queue, topicResolutionOptions, subscriptionConfig, {
27
- updateAttributesIfExists: creationConfig.updateAttributesIfExists,
28
- queueUrlsWithSubscribePermissionsPrefix: creationConfig.queueUrlsWithSubscribePermissionsPrefix,
29
- allowedSourceOwner: creationConfig.allowedSourceOwner,
30
- topicArnsWithPublishPermissionsPrefix: creationConfig.topicArnsWithPublishPermissionsPrefix,
31
- logger: extraParams?.logger,
32
- forceTagUpdate: creationConfig.forceTagUpdate,
33
- });
34
- if (!subscriptionArn) {
35
- throw new Error('Failed to subscribe');
123
+ // If startup resource polling is enabled and we're not creating the topic (just locating it),
124
+ // we should poll for the topic to exist before attempting to subscribe
125
+ const startupResourcePolling = locatorConfig?.startupResourcePolling;
126
+ if (isStartupResourcePollingEnabled(startupResourcePolling) &&
127
+ !isCreateTopicCommand(topicResolutionOptions)) {
128
+ const topicArnToWaitFor = topicResolutionOptions.topicArn ??
129
+ (await buildTopicArn(stsClient, topicResolutionOptions.topicName ?? ''));
130
+ return await createSubscriptionWithPolling(sqsClient, snsClient, stsClient, creationConfig, topicResolutionOptions, subscriptionConfig, topicArnToWaitFor, startupResourcePolling, extraParams);
36
131
  }
132
+ // No polling needed - create subscription immediately
133
+ const { subscriptionArn, topicArn, queueUrl } = await createSubscription(sqsClient, snsClient, stsClient, creationConfig, topicResolutionOptions, subscriptionConfig, extraParams);
37
134
  return {
38
135
  subscriptionArn,
39
136
  topicArn,
40
137
  queueName: creationConfig.queue.QueueName,
41
138
  queueUrl,
139
+ resourcesReady: true,
42
140
  };
43
141
  }
44
142
  const queueUrl = await resolveQueueUrlFromLocatorConfig(sqsClient, locatorConfig);
45
- const checkPromises = [];
46
143
  // Check for existing resources, using the locators
47
144
  const subscriptionTopicArn = locatorConfig.topicArn ?? (await buildTopicArn(stsClient, locatorConfig.topicName ?? ''));
48
- const topicPromise = getTopicAttributes(snsClient, subscriptionTopicArn);
49
- checkPromises.push(topicPromise);
50
- const queuePromise = getQueueAttributes(sqsClient, queueUrl);
51
- checkPromises.push(queuePromise);
52
- const [topicCheckResult, queueCheckResult] = await Promise.all(checkPromises);
53
- if (queueCheckResult?.error === 'not_found') {
54
- throw new Error(`Queue with queueUrl ${queueUrl} does not exist.`);
145
+ const startupResourcePolling = locatorConfig.startupResourcePolling;
146
+ // If startup resource polling is enabled, poll for resources to become available
147
+ if (isStartupResourcePollingEnabled(startupResourcePolling)) {
148
+ const nonBlocking = startupResourcePolling.nonBlocking === true;
149
+ // Track availability for non-blocking mode coordination
150
+ let topicAvailable = false;
151
+ let queueAvailable = false;
152
+ const notifyIfBothReady = () => {
153
+ if (nonBlocking && topicAvailable && queueAvailable) {
154
+ extraParams?.onResourcesReady?.({ topicArn: subscriptionTopicArn, queueUrl });
155
+ }
156
+ };
157
+ // Wait for topic to become available
158
+ const { topicResult } = await pollForTopic(snsClient, subscriptionTopicArn, startupResourcePolling, extraParams, () => {
159
+ topicAvailable = true;
160
+ notifyIfBothReady();
161
+ }, (error, context) => {
162
+ extraParams?.onResourcesError?.(error, context);
163
+ });
164
+ // If topic was immediately available, mark it
165
+ if (topicResult !== undefined) {
166
+ topicAvailable = true;
167
+ }
168
+ // If non-blocking and topic wasn't immediately available, return early
169
+ // Background polling will continue and call notifyIfBothReady when topic is available
170
+ if (nonBlocking && topicResult === undefined) {
171
+ const splitUrl = queueUrl.split('/');
172
+ // biome-ignore lint/style/noNonNullAssertion: It's ok
173
+ const queueName = splitUrl[splitUrl.length - 1];
174
+ // Also start polling for queue in background so we can notify when both are ready
175
+ pollForQueue(sqsClient, queueUrl, startupResourcePolling, extraParams, () => {
176
+ queueAvailable = true;
177
+ notifyIfBothReady();
178
+ }, (error, context) => {
179
+ extraParams?.onResourcesError?.(error, context);
180
+ })
181
+ .then((result) => {
182
+ // If queue was immediately available, pollForQueue returns the result
183
+ // but doesn't call onResourceAvailable, so we handle it here
184
+ if (result !== undefined) {
185
+ queueAvailable = true;
186
+ notifyIfBothReady();
187
+ }
188
+ })
189
+ .catch((err) => {
190
+ // Handle unexpected errors during background polling
191
+ const error = isError(err) ? err : new Error(String(err));
192
+ extraParams?.logger?.error({
193
+ message: 'Background queue polling failed unexpectedly',
194
+ queueUrl,
195
+ error,
196
+ });
197
+ extraParams?.onResourcesError?.(error, { isFinal: true });
198
+ });
199
+ return {
200
+ subscriptionArn: locatorConfig.subscriptionArn,
201
+ topicArn: subscriptionTopicArn,
202
+ queueUrl,
203
+ queueName,
204
+ resourcesReady: false,
205
+ };
206
+ }
207
+ // Wait for queue to become available
208
+ const queueResult = await pollForQueue(sqsClient, queueUrl, startupResourcePolling, extraParams, () => {
209
+ queueAvailable = true;
210
+ notifyIfBothReady();
211
+ });
212
+ // If queue was immediately available, mark it
213
+ if (queueResult !== undefined) {
214
+ queueAvailable = true;
215
+ }
216
+ // If non-blocking and queue wasn't immediately available, return early
217
+ if (nonBlocking && queueResult === undefined) {
218
+ const splitUrl = queueUrl.split('/');
219
+ // biome-ignore lint/style/noNonNullAssertion: It's ok
220
+ const queueName = splitUrl[splitUrl.length - 1];
221
+ return {
222
+ subscriptionArn: locatorConfig.subscriptionArn,
223
+ topicArn: subscriptionTopicArn,
224
+ queueUrl,
225
+ queueName,
226
+ resourcesReady: false,
227
+ };
228
+ }
55
229
  }
56
- if (topicCheckResult?.error === 'not_found') {
57
- throw new Error(`Topic with topicArn ${locatorConfig.topicArn} does not exist.`);
230
+ else {
231
+ // Original behavior: check resources once and fail immediately if not found
232
+ const checkPromises = [];
233
+ const topicPromise = getTopicAttributes(snsClient, subscriptionTopicArn);
234
+ checkPromises.push(topicPromise);
235
+ const queuePromise = getQueueAttributes(sqsClient, queueUrl);
236
+ checkPromises.push(queuePromise);
237
+ const [topicCheckResult, queueCheckResult] = await Promise.all(checkPromises);
238
+ if (queueCheckResult?.error === 'not_found') {
239
+ throw new Error(`Queue with queueUrl ${queueUrl} does not exist.`);
240
+ }
241
+ if (topicCheckResult?.error === 'not_found') {
242
+ throw new Error(`Topic with topicArn ${subscriptionTopicArn} does not exist.`);
243
+ }
58
244
  }
59
245
  let queueName;
60
246
  if (queueUrl) {
@@ -71,6 +257,7 @@ export async function initSnsSqs(sqsClient, snsClient, stsClient, locatorConfig,
71
257
  topicArn: subscriptionTopicArn,
72
258
  queueUrl,
73
259
  queueName,
260
+ resourcesReady: true,
74
261
  };
75
262
  }
76
263
  export async function deleteSnsSqs(sqsClient, snsClient, stsClient, deletionConfig, queueConfiguration, topicConfiguration, subscriptionConfiguration, extraParams, topicLocator) {
@@ -112,17 +299,50 @@ export async function deleteSns(snsClient, stsClient, deletionConfig, creationCo
112
299
  }
113
300
  await deleteTopic(snsClient, stsClient, creationConfig.topic.Name);
114
301
  }
115
- export async function initSns(snsClient, stsClient, locatorConfig, creationConfig) {
116
- if (locatorConfig) {
117
- if (!locatorConfig.topicArn && !locatorConfig.topicName) {
118
- throw new Error('When locatorConfig for the topic is specified, either topicArn or topicName must be specified');
302
+ async function initSnsWithLocator(snsClient, stsClient, locatorConfig, extraParams) {
303
+ if (!locatorConfig.topicArn && !locatorConfig.topicName) {
304
+ throw new Error('When locatorConfig for the topic is specified, either topicArn or topicName must be specified');
305
+ }
306
+ const topicArn = locatorConfig.topicArn ?? (await buildTopicArn(stsClient, locatorConfig.topicName ?? ''));
307
+ const startupResourcePolling = locatorConfig.startupResourcePolling;
308
+ // If startup resource polling is enabled, poll for topic to become available
309
+ if (isStartupResourcePollingEnabled(startupResourcePolling)) {
310
+ const nonBlocking = startupResourcePolling.nonBlocking === true;
311
+ const topicResult = await waitForResource({
312
+ config: startupResourcePolling,
313
+ resourceName: `SNS topic ${topicArn}`,
314
+ logger: extraParams?.logger,
315
+ errorReporter: extraParams?.errorReporter,
316
+ onResourceAvailable: () => {
317
+ if (nonBlocking) {
318
+ extraParams?.onTopicReady?.({ topicArn });
319
+ }
320
+ },
321
+ checkFn: async () => {
322
+ const result = await getTopicAttributes(snsClient, topicArn);
323
+ if (result.error === 'not_found') {
324
+ return { isAvailable: false };
325
+ }
326
+ return { isAvailable: true, result: result.result };
327
+ },
328
+ });
329
+ // In non-blocking mode, return early if topic wasn't immediately available
330
+ if (nonBlocking && topicResult === undefined) {
331
+ return { topicArn, resourcesReady: false };
119
332
  }
120
- const topicArn = locatorConfig.topicArn ?? (await buildTopicArn(stsClient, locatorConfig.topicName ?? ''));
333
+ }
334
+ else {
335
+ // Original behavior: check once and fail immediately if not found
121
336
  const checkResult = await getTopicAttributes(snsClient, topicArn);
122
337
  if (checkResult.error === 'not_found') {
123
- throw new Error(`Topic with topicArn ${locatorConfig.topicArn} does not exist.`);
338
+ throw new Error(`Topic with topicArn ${topicArn} does not exist.`);
124
339
  }
125
- return { topicArn };
340
+ }
341
+ return { topicArn, resourcesReady: true };
342
+ }
343
+ export async function initSns(snsClient, stsClient, locatorConfig, creationConfig, extraParams) {
344
+ if (locatorConfig) {
345
+ return initSnsWithLocator(snsClient, stsClient, locatorConfig, extraParams);
126
346
  }
127
347
  // create new topic if it does not exist
128
348
  if (!creationConfig) {
@@ -134,6 +354,6 @@ export async function initSns(snsClient, stsClient, locatorConfig, creationConfi
134
354
  allowedSourceOwner: creationConfig.allowedSourceOwner,
135
355
  forceTagUpdate: creationConfig.forceTagUpdate,
136
356
  });
137
- return { topicArn };
357
+ return { topicArn, resourcesReady: true };
138
358
  }
139
359
  //# sourceMappingURL=snsInitter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"snsInitter.js","sourceRoot":"","sources":["../../lib/utils/snsInitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snsInitter.js","sourceRoot":"","sources":["../../lib/utils/snsInitter.ts"],"names":[],"mappings":"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"}
@@ -16,8 +16,9 @@ export async function getTopicAttributes(snsClient, topicArn) {
16
16
  };
17
17
  }
18
18
  catch (err) {
19
+ // SNS returns NotFoundException for non-existent topics
19
20
  // @ts-expect-error
20
- if (err.Code === 'AWS.SimpleQueueService.NonExistentQueue') {
21
+ if (err.name === 'NotFoundException' || err.name === 'NotFound') {
21
22
  return {
22
23
  error: 'not_found',
23
24
  };
@@ -38,8 +39,9 @@ export async function getSubscriptionAttributes(snsClient, subscriptionArn) {
38
39
  };
39
40
  }
40
41
  catch (err) {
42
+ // SNS returns NotFoundException for non-existent subscriptions
41
43
  // @ts-expect-error
42
- if (err.Code === 'AWS.SimpleQueueService.NonExistentQueue') {
44
+ if (err.name === 'NotFoundException' || err.name === 'NotFound') {
43
45
  return {
44
46
  error: 'not_found',
45
47
  };
@@ -1 +1 @@
1
- {"version":3,"file":"snsUtils.js","sourceRoot":"","sources":["../../lib/utils/snsUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snsUtils.js","sourceRoot":"","sources":["../../lib/utils/snsUtils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@message-queue-toolkit/sns",
3
- "version": "24.0.0",
3
+ "version": "24.3.0",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "description": "SNS adapter for message-queue-toolkit",
@@ -51,7 +51,7 @@
51
51
  "@message-queue-toolkit/redis-message-deduplication-store": "*",
52
52
  "@message-queue-toolkit/s3-payload-store": "*",
53
53
  "@message-queue-toolkit/sqs": "*",
54
- "@types/node": "^24.10.1",
54
+ "@types/node": "^25.0.2",
55
55
  "@vitest/coverage-v8": "^3.2.4",
56
56
  "awilix": "^12.0.5",
57
57
  "awilix-manager": "^6.1.0",
@@ -59,7 +59,7 @@
59
59
  "rimraf": "^6.0.1",
60
60
  "typescript": "^5.9.3",
61
61
  "vitest": "^3.2.4",
62
- "zod": "^4.1.12"
62
+ "zod": "^4.1.13"
63
63
  },
64
64
  "homepage": "https://github.com/kibertoad/message-queue-toolkit",
65
65
  "repository": {