@message-queue-toolkit/sns 24.0.0 → 24.2.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 +8 -8
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/sns/AbstractSnsPublisher.js +3 -4
- package/dist/sns/AbstractSnsPublisher.js.map +1 -1
- package/dist/sns/AbstractSnsService.d.ts +2 -2
- package/dist/sns/AbstractSnsService.js +1 -1
- package/dist/sns/AbstractSnsService.js.map +1 -1
- package/dist/sns/fakes/FakeConsumer.js +1 -1
- package/dist/sns/fakes/FakeConsumer.js.map +1 -1
- package/dist/utils/snsAttributeUtils.d.ts +1 -1
- package/dist/utils/snsAttributeUtils.js +2 -2
- package/dist/utils/snsAttributeUtils.js.map +1 -1
- package/dist/utils/snsInitter.d.ts +23 -2
- package/dist/utils/snsInitter.js +174 -19
- package/dist/utils/snsInitter.js.map +1 -1
- package/dist/utils/snsUtils.js +4 -2
- package/dist/utils/snsUtils.js.map +1 -1
- package/package.json +3 -3
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 `
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
377
|
+
messageTypeResolver: { messageTypePath: 'messageType' },
|
|
378
378
|
handlers: new MessageHandlerConfigBuilder<SupportedMessages, ExecutionContext>()
|
|
379
379
|
.addConfig(UserCreatedSchema, handleUserCreated)
|
|
380
380
|
.addConfig(UserUpdatedSchema, handleUserUpdated)
|
|
@@ -495,7 +495,7 @@ When using `locatorConfig`, you connect to an existing topic without creating it
|
|
|
495
495
|
{
|
|
496
496
|
// Required - Message Schema Configuration
|
|
497
497
|
messageSchemas: [Schema1, Schema2], // Array of Zod schemas
|
|
498
|
-
|
|
498
|
+
messageTypeResolver: { messageTypePath: 'messageType' }, // Field containing message type discriminator
|
|
499
499
|
|
|
500
500
|
// Topic Configuration (one of these required)
|
|
501
501
|
creationConfig: { /* ... */ }, // Create topic if doesn't exist
|
|
@@ -541,7 +541,7 @@ SNS consumers use the same options as SQS consumers, plus SNS-specific subscript
|
|
|
541
541
|
|
|
542
542
|
// Required - Message Handling Configuration
|
|
543
543
|
handlers: MessageHandlerConfigBuilder.build(),
|
|
544
|
-
|
|
544
|
+
messageTypeResolver: { messageTypePath: 'messageType' },
|
|
545
545
|
|
|
546
546
|
// Topic & Queue Configuration
|
|
547
547
|
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,
|
|
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
|
-
|
|
52
|
-
const resolvedLogMessage = this.resolveMessageLog(message,
|
|
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
|
-
|
|
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":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAGL,0BAA0B,GAO3B,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAA;AAE7E,OAAO,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAO1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AA+C5D,MAAM,OAAgB,oBACpB,SAAQ,kBAA0D;IAGjD,sBAAsB,CAA4C;IAClE,sBAAsB,CAAS;IAC/B,WAAW,CAAS;IACpB,mBAAmB,CAAS;IAC5B,qBAAqB,CAAS;IAEvC,WAAW,CAAgB;IAEnC,YAAY,YAA6B,EAAE,OAAgD;QACzF,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAE5B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sCAAsC,CAAC,OAAO,CAAC,CAAA;QAClF,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAA;QACpE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAA;QAC7C,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAA;QACtD,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAA;IAC5D,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,MAAM,KAAK,CAAC,IAAI,EAAE,CAAA;QAElB,yCAAyC;QACzC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,CAAA;YACnF,IAAI,SAAS,EAAE,CAAC;gBACd,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA2B,EAAE,UAA6B,EAAE;QACxE,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QACvD,IAAI,mBAAmB,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,mBAAmB,CAAC,KAAK,CAAA;QACjC,CAAC;QAED,4CAA4C;QAC5C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,kCAAkC;YAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YAChC,CAAC;YACD,MAAM,IAAI,CAAC,WAAW,CAAA;YACtB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;QAC9B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,+BAA+B,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAClD,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC/D,MAAM,SAAS,GACb,IAAI,CAAC,aAAa,EAAE,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,IAAI,SAAS,CAAA;YAEhF,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,
|
|
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":"
|
|
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"}
|
|
@@ -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,
|
|
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>[],
|
|
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,
|
|
36
|
+
messageSchemas, messageTypePath) {
|
|
37
37
|
const messageTypes = messageSchemas.map((schema) => {
|
|
38
38
|
// @ts-expect-error
|
|
39
|
-
return schema.shape[
|
|
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,
|
|
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"}
|
|
@@ -6,14 +6,35 @@ 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
|
|
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
|
+
export type InitSnsExtraParams = ExtraParams & {
|
|
20
|
+
/**
|
|
21
|
+
* Callback invoked when topic becomes available in non-blocking mode.
|
|
22
|
+
* Only called when startupResourcePolling.nonBlocking is true and topic was not immediately available.
|
|
23
|
+
*/
|
|
24
|
+
onTopicReady?: (result: {
|
|
25
|
+
topicArn: string;
|
|
26
|
+
}) => void;
|
|
27
|
+
};
|
|
28
|
+
export declare function initSnsSqs(sqsClient: SQSClient, snsClient: SNSClient, stsClient: STSClient, locatorConfig?: SNSSQSQueueLocatorType, creationConfig?: SNSCreationConfig & SQSCreationConfig, subscriptionConfig?: SNSSubscriptionOptions, extraParams?: InitSnsSqsExtraParams): Promise<{
|
|
10
29
|
subscriptionArn: string;
|
|
11
30
|
topicArn: string;
|
|
12
31
|
queueUrl: string;
|
|
13
32
|
queueName: string;
|
|
33
|
+
resourcesReady: boolean;
|
|
14
34
|
}>;
|
|
15
35
|
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
36
|
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<{
|
|
37
|
+
export declare function initSns(snsClient: SNSClient, stsClient: STSClient, locatorConfig?: SNSTopicLocatorType, creationConfig?: SNSCreationConfig, extraParams?: InitSnsExtraParams): Promise<{
|
|
18
38
|
topicArn: string;
|
|
39
|
+
resourcesReady: boolean;
|
|
19
40
|
}>;
|
package/dist/utils/snsInitter.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isProduction } from '@message-queue-toolkit/core';
|
|
1
|
+
import { isProduction, isStartupResourcePollingEnabled, waitForResource, } from '@message-queue-toolkit/core';
|
|
2
2
|
import { deleteQueue, getQueueAttributes, resolveQueueUrlFromLocatorConfig, } from '@message-queue-toolkit/sqs';
|
|
3
3
|
import { isCreateTopicCommand } from "../types/TopicTypes.js";
|
|
4
4
|
import { subscribeToTopic } from "./snsSubscriber.js";
|
|
@@ -39,22 +39,143 @@ export async function initSnsSqs(sqsClient, snsClient, stsClient, locatorConfig,
|
|
|
39
39
|
topicArn,
|
|
40
40
|
queueName: creationConfig.queue.QueueName,
|
|
41
41
|
queueUrl,
|
|
42
|
+
resourcesReady: true,
|
|
42
43
|
};
|
|
43
44
|
}
|
|
44
45
|
const queueUrl = await resolveQueueUrlFromLocatorConfig(sqsClient, locatorConfig);
|
|
45
|
-
const checkPromises = [];
|
|
46
46
|
// Check for existing resources, using the locators
|
|
47
47
|
const subscriptionTopicArn = locatorConfig.topicArn ?? (await buildTopicArn(stsClient, locatorConfig.topicName ?? ''));
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
48
|
+
const startupResourcePolling = locatorConfig.startupResourcePolling;
|
|
49
|
+
// If startup resource polling is enabled, poll for resources to become available
|
|
50
|
+
if (isStartupResourcePollingEnabled(startupResourcePolling)) {
|
|
51
|
+
const nonBlocking = startupResourcePolling.nonBlocking === true;
|
|
52
|
+
// Track availability for non-blocking mode coordination
|
|
53
|
+
let topicAvailable = false;
|
|
54
|
+
let queueAvailable = false;
|
|
55
|
+
const notifyIfBothReady = () => {
|
|
56
|
+
if (nonBlocking && topicAvailable && queueAvailable) {
|
|
57
|
+
extraParams?.onResourcesReady?.({ topicArn: subscriptionTopicArn, queueUrl });
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
// Wait for topic to become available
|
|
61
|
+
const topicResult = await waitForResource({
|
|
62
|
+
config: startupResourcePolling,
|
|
63
|
+
resourceName: `SNS topic ${subscriptionTopicArn}`,
|
|
64
|
+
logger: extraParams?.logger,
|
|
65
|
+
errorReporter: extraParams?.errorReporter,
|
|
66
|
+
onResourceAvailable: () => {
|
|
67
|
+
topicAvailable = true;
|
|
68
|
+
notifyIfBothReady();
|
|
69
|
+
},
|
|
70
|
+
checkFn: async () => {
|
|
71
|
+
const result = await getTopicAttributes(snsClient, subscriptionTopicArn);
|
|
72
|
+
if (result.error === 'not_found') {
|
|
73
|
+
return { isAvailable: false };
|
|
74
|
+
}
|
|
75
|
+
return { isAvailable: true, result: result.result };
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
// If topic was immediately available, mark it
|
|
79
|
+
if (topicResult !== undefined) {
|
|
80
|
+
topicAvailable = true;
|
|
81
|
+
}
|
|
82
|
+
// If non-blocking and topic wasn't immediately available, return early
|
|
83
|
+
// Background polling will continue and call notifyIfBothReady when topic is available
|
|
84
|
+
if (nonBlocking && topicResult === undefined) {
|
|
85
|
+
const splitUrl = queueUrl.split('/');
|
|
86
|
+
// biome-ignore lint/style/noNonNullAssertion: It's ok
|
|
87
|
+
const queueName = splitUrl[splitUrl.length - 1];
|
|
88
|
+
// Also start polling for queue in background so we can notify when both are ready
|
|
89
|
+
waitForResource({
|
|
90
|
+
config: startupResourcePolling,
|
|
91
|
+
resourceName: `SQS queue ${queueUrl}`,
|
|
92
|
+
logger: extraParams?.logger,
|
|
93
|
+
errorReporter: extraParams?.errorReporter,
|
|
94
|
+
onResourceAvailable: () => {
|
|
95
|
+
queueAvailable = true;
|
|
96
|
+
notifyIfBothReady();
|
|
97
|
+
},
|
|
98
|
+
checkFn: async () => {
|
|
99
|
+
const result = await getQueueAttributes(sqsClient, queueUrl);
|
|
100
|
+
if (result.error === 'not_found') {
|
|
101
|
+
return { isAvailable: false };
|
|
102
|
+
}
|
|
103
|
+
return { isAvailable: true, result: result.result };
|
|
104
|
+
},
|
|
105
|
+
})
|
|
106
|
+
.then((result) => {
|
|
107
|
+
// If queue was immediately available, waitForResource returns the result
|
|
108
|
+
// but doesn't call onResourceAvailable, so we handle it here
|
|
109
|
+
if (result !== undefined) {
|
|
110
|
+
queueAvailable = true;
|
|
111
|
+
notifyIfBothReady();
|
|
112
|
+
}
|
|
113
|
+
})
|
|
114
|
+
.catch((error) => {
|
|
115
|
+
extraParams?.logger?.error({
|
|
116
|
+
message: 'Background polling for SQS queue failed',
|
|
117
|
+
queueUrl,
|
|
118
|
+
error,
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
return {
|
|
122
|
+
subscriptionArn: locatorConfig.subscriptionArn,
|
|
123
|
+
topicArn: subscriptionTopicArn,
|
|
124
|
+
queueUrl,
|
|
125
|
+
queueName,
|
|
126
|
+
resourcesReady: false,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
// Wait for queue to become available
|
|
130
|
+
const queueResult = await waitForResource({
|
|
131
|
+
config: startupResourcePolling,
|
|
132
|
+
resourceName: `SQS queue ${queueUrl}`,
|
|
133
|
+
logger: extraParams?.logger,
|
|
134
|
+
errorReporter: extraParams?.errorReporter,
|
|
135
|
+
onResourceAvailable: () => {
|
|
136
|
+
queueAvailable = true;
|
|
137
|
+
notifyIfBothReady();
|
|
138
|
+
},
|
|
139
|
+
checkFn: async () => {
|
|
140
|
+
const result = await getQueueAttributes(sqsClient, queueUrl);
|
|
141
|
+
if (result.error === 'not_found') {
|
|
142
|
+
return { isAvailable: false };
|
|
143
|
+
}
|
|
144
|
+
return { isAvailable: true, result: result.result };
|
|
145
|
+
},
|
|
146
|
+
});
|
|
147
|
+
// If queue was immediately available, mark it
|
|
148
|
+
if (queueResult !== undefined) {
|
|
149
|
+
queueAvailable = true;
|
|
150
|
+
}
|
|
151
|
+
// If non-blocking and queue wasn't immediately available, return early
|
|
152
|
+
if (nonBlocking && queueResult === undefined) {
|
|
153
|
+
const splitUrl = queueUrl.split('/');
|
|
154
|
+
// biome-ignore lint/style/noNonNullAssertion: It's ok
|
|
155
|
+
const queueName = splitUrl[splitUrl.length - 1];
|
|
156
|
+
return {
|
|
157
|
+
subscriptionArn: locatorConfig.subscriptionArn,
|
|
158
|
+
topicArn: subscriptionTopicArn,
|
|
159
|
+
queueUrl,
|
|
160
|
+
queueName,
|
|
161
|
+
resourcesReady: false,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
55
164
|
}
|
|
56
|
-
|
|
57
|
-
|
|
165
|
+
else {
|
|
166
|
+
// Original behavior: check resources once and fail immediately if not found
|
|
167
|
+
const checkPromises = [];
|
|
168
|
+
const topicPromise = getTopicAttributes(snsClient, subscriptionTopicArn);
|
|
169
|
+
checkPromises.push(topicPromise);
|
|
170
|
+
const queuePromise = getQueueAttributes(sqsClient, queueUrl);
|
|
171
|
+
checkPromises.push(queuePromise);
|
|
172
|
+
const [topicCheckResult, queueCheckResult] = await Promise.all(checkPromises);
|
|
173
|
+
if (queueCheckResult?.error === 'not_found') {
|
|
174
|
+
throw new Error(`Queue with queueUrl ${queueUrl} does not exist.`);
|
|
175
|
+
}
|
|
176
|
+
if (topicCheckResult?.error === 'not_found') {
|
|
177
|
+
throw new Error(`Topic with topicArn ${subscriptionTopicArn} does not exist.`);
|
|
178
|
+
}
|
|
58
179
|
}
|
|
59
180
|
let queueName;
|
|
60
181
|
if (queueUrl) {
|
|
@@ -71,6 +192,7 @@ export async function initSnsSqs(sqsClient, snsClient, stsClient, locatorConfig,
|
|
|
71
192
|
topicArn: subscriptionTopicArn,
|
|
72
193
|
queueUrl,
|
|
73
194
|
queueName,
|
|
195
|
+
resourcesReady: true,
|
|
74
196
|
};
|
|
75
197
|
}
|
|
76
198
|
export async function deleteSnsSqs(sqsClient, snsClient, stsClient, deletionConfig, queueConfiguration, topicConfiguration, subscriptionConfiguration, extraParams, topicLocator) {
|
|
@@ -112,17 +234,50 @@ export async function deleteSns(snsClient, stsClient, deletionConfig, creationCo
|
|
|
112
234
|
}
|
|
113
235
|
await deleteTopic(snsClient, stsClient, creationConfig.topic.Name);
|
|
114
236
|
}
|
|
115
|
-
|
|
116
|
-
if (locatorConfig) {
|
|
117
|
-
|
|
118
|
-
|
|
237
|
+
async function initSnsWithLocator(snsClient, stsClient, locatorConfig, extraParams) {
|
|
238
|
+
if (!locatorConfig.topicArn && !locatorConfig.topicName) {
|
|
239
|
+
throw new Error('When locatorConfig for the topic is specified, either topicArn or topicName must be specified');
|
|
240
|
+
}
|
|
241
|
+
const topicArn = locatorConfig.topicArn ?? (await buildTopicArn(stsClient, locatorConfig.topicName ?? ''));
|
|
242
|
+
const startupResourcePolling = locatorConfig.startupResourcePolling;
|
|
243
|
+
// If startup resource polling is enabled, poll for topic to become available
|
|
244
|
+
if (isStartupResourcePollingEnabled(startupResourcePolling)) {
|
|
245
|
+
const nonBlocking = startupResourcePolling.nonBlocking === true;
|
|
246
|
+
const topicResult = await waitForResource({
|
|
247
|
+
config: startupResourcePolling,
|
|
248
|
+
resourceName: `SNS topic ${topicArn}`,
|
|
249
|
+
logger: extraParams?.logger,
|
|
250
|
+
errorReporter: extraParams?.errorReporter,
|
|
251
|
+
onResourceAvailable: () => {
|
|
252
|
+
if (nonBlocking) {
|
|
253
|
+
extraParams?.onTopicReady?.({ topicArn });
|
|
254
|
+
}
|
|
255
|
+
},
|
|
256
|
+
checkFn: async () => {
|
|
257
|
+
const result = await getTopicAttributes(snsClient, topicArn);
|
|
258
|
+
if (result.error === 'not_found') {
|
|
259
|
+
return { isAvailable: false };
|
|
260
|
+
}
|
|
261
|
+
return { isAvailable: true, result: result.result };
|
|
262
|
+
},
|
|
263
|
+
});
|
|
264
|
+
// In non-blocking mode, return early if topic wasn't immediately available
|
|
265
|
+
if (nonBlocking && topicResult === undefined) {
|
|
266
|
+
return { topicArn, resourcesReady: false };
|
|
119
267
|
}
|
|
120
|
-
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
// Original behavior: check once and fail immediately if not found
|
|
121
271
|
const checkResult = await getTopicAttributes(snsClient, topicArn);
|
|
122
272
|
if (checkResult.error === 'not_found') {
|
|
123
|
-
throw new Error(`Topic with topicArn ${
|
|
273
|
+
throw new Error(`Topic with topicArn ${topicArn} does not exist.`);
|
|
124
274
|
}
|
|
125
|
-
|
|
275
|
+
}
|
|
276
|
+
return { topicArn, resourcesReady: true };
|
|
277
|
+
}
|
|
278
|
+
export async function initSns(snsClient, stsClient, locatorConfig, creationConfig, extraParams) {
|
|
279
|
+
if (locatorConfig) {
|
|
280
|
+
return initSnsWithLocator(snsClient, stsClient, locatorConfig, extraParams);
|
|
126
281
|
}
|
|
127
282
|
// create new topic if it does not exist
|
|
128
283
|
if (!creationConfig) {
|
|
@@ -134,6 +289,6 @@ export async function initSns(snsClient, stsClient, locatorConfig, creationConfi
|
|
|
134
289
|
allowedSourceOwner: creationConfig.allowedSourceOwner,
|
|
135
290
|
forceTagUpdate: creationConfig.forceTagUpdate,
|
|
136
291
|
});
|
|
137
|
-
return { topicArn };
|
|
292
|
+
return { topicArn, resourcesReady: true };
|
|
138
293
|
}
|
|
139
294
|
//# sourceMappingURL=snsInitter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snsInitter.js","sourceRoot":"","sources":["../../lib/utils/snsInitter.ts"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"snsInitter.js","sourceRoot":"","sources":["../../lib/utils/snsInitter.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/snsUtils.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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":"AAAA,OAAO,EACL,kBAAkB,EAElB,kBAAkB,EAClB,gCAAgC,EAChC,yBAAyB,EACzB,+BAA+B,EAC/B,0BAA0B,EAC1B,yBAAyB,EAEzB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAe,aAAa,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AACzE,OAAO,EAAE,4BAA4B,IAAI,+BAA+B,EAAE,MAAM,4BAA4B,CAAA;AAE5G,OAAO,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAM7C,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,SAAoB,EACpB,QAAgB;IAEhB,MAAM,OAAO,GAAG,IAAI,yBAAyB,CAAC;QAC5C,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAA;IAEF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC9C,OAAO;YACL,MAAM,EAAE;gBACN,UAAU,EAAE,QAAQ,CAAC,UAAU;aAChC;SACF,CAAA;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,mBAAmB;QACnB,IAAI,GAAG,CAAC,IAAI,KAAK,
|
|
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.
|
|
3
|
+
"version": "24.2.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": "^
|
|
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.
|
|
62
|
+
"zod": "^4.1.13"
|
|
63
63
|
},
|
|
64
64
|
"homepage": "https://github.com/kibertoad/message-queue-toolkit",
|
|
65
65
|
"repository": {
|