@message-queue-toolkit/sns 3.8.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/sns/AbstractSnsSqsConsumerMonoSchema.d.ts +3 -3
- package/dist/lib/sns/AbstractSnsSqsConsumerMonoSchema.js +6 -1
- package/dist/lib/sns/AbstractSnsSqsConsumerMonoSchema.js.map +1 -1
- package/dist/lib/utils/snsSubscriber.d.ts +3 -1
- package/dist/lib/utils/snsSubscriber.js +31 -0
- package/dist/lib/utils/snsSubscriber.js.map +1 -1
- package/dist/lib/utils/snsUtils.d.ts +4 -2
- package/dist/lib/utils/snsUtils.js +35 -1
- package/dist/lib/utils/snsUtils.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export type { NewSnsSqsConsumerOptionsMulti, ExistingSnsSqsConsumerOptionsMulti,
|
|
|
10
10
|
export type { SNSMessageOptions } from './lib/sns/AbstractSnsPublisherMonoSchema';
|
|
11
11
|
export type { CommonMessage } from './lib/types/MessageTypes';
|
|
12
12
|
export { deserializeSNSMessage } from './lib/utils/snsMessageDeserializer';
|
|
13
|
-
export { assertTopic, deleteTopic, getTopicAttributes, deleteSubscription, } from './lib/utils/snsUtils';
|
|
13
|
+
export { assertTopic, deleteTopic, getTopicAttributes, deleteSubscription, findSubscriptionByTopicAndQueue, getSubscriptionAttributes, } from './lib/utils/snsUtils';
|
|
14
14
|
export { subscribeToTopic } from './lib/utils/snsSubscriber';
|
|
15
15
|
export { initSns, initSnsSqs } from './lib/utils/snsInitter';
|
|
16
16
|
export { readSnsMessage } from './lib/utils/snsMessageReader';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateTopicSubscriptionPolicy = exports.generateFilterAttributes = exports.readSnsMessage = exports.initSnsSqs = exports.initSns = exports.subscribeToTopic = exports.deleteSubscription = exports.getTopicAttributes = exports.deleteTopic = exports.assertTopic = exports.deserializeSNSMessage = exports.AbstractSnsSqsConsumerMultiSchema = exports.AbstractSnsSqsConsumerMonoSchema = exports.AbstractSnsPublisherMultiSchema = exports.AbstractSnsPublisherMonoSchema = exports.SnsConsumerErrorResolver = exports.AbstractSnsService = void 0;
|
|
3
|
+
exports.generateTopicSubscriptionPolicy = exports.generateFilterAttributes = exports.readSnsMessage = exports.initSnsSqs = exports.initSns = exports.subscribeToTopic = exports.getSubscriptionAttributes = exports.findSubscriptionByTopicAndQueue = exports.deleteSubscription = exports.getTopicAttributes = exports.deleteTopic = exports.assertTopic = exports.deserializeSNSMessage = exports.AbstractSnsSqsConsumerMultiSchema = exports.AbstractSnsSqsConsumerMonoSchema = exports.AbstractSnsPublisherMultiSchema = exports.AbstractSnsPublisherMonoSchema = exports.SnsConsumerErrorResolver = exports.AbstractSnsService = void 0;
|
|
4
4
|
var AbstractSnsService_1 = require("./lib/sns/AbstractSnsService");
|
|
5
5
|
Object.defineProperty(exports, "AbstractSnsService", { enumerable: true, get: function () { return AbstractSnsService_1.AbstractSnsService; } });
|
|
6
6
|
var SnsConsumerErrorResolver_1 = require("./lib/errors/SnsConsumerErrorResolver");
|
|
@@ -20,6 +20,8 @@ Object.defineProperty(exports, "assertTopic", { enumerable: true, get: function
|
|
|
20
20
|
Object.defineProperty(exports, "deleteTopic", { enumerable: true, get: function () { return snsUtils_1.deleteTopic; } });
|
|
21
21
|
Object.defineProperty(exports, "getTopicAttributes", { enumerable: true, get: function () { return snsUtils_1.getTopicAttributes; } });
|
|
22
22
|
Object.defineProperty(exports, "deleteSubscription", { enumerable: true, get: function () { return snsUtils_1.deleteSubscription; } });
|
|
23
|
+
Object.defineProperty(exports, "findSubscriptionByTopicAndQueue", { enumerable: true, get: function () { return snsUtils_1.findSubscriptionByTopicAndQueue; } });
|
|
24
|
+
Object.defineProperty(exports, "getSubscriptionAttributes", { enumerable: true, get: function () { return snsUtils_1.getSubscriptionAttributes; } });
|
|
23
25
|
var snsSubscriber_1 = require("./lib/utils/snsSubscriber");
|
|
24
26
|
Object.defineProperty(exports, "subscribeToTopic", { enumerable: true, get: function () { return snsSubscriber_1.subscribeToTopic; } });
|
|
25
27
|
var snsInitter_1 = require("./lib/utils/snsInitter");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAaA,mEAAiE;AAAxD,wHAAA,kBAAkB,OAAA;AAE3B,kFAAgF;AAAvE,oIAAA,wBAAwB,OAAA;AAEjC,2FAAyF;AAAhF,gJAAA,8BAA8B,OAAA;AACvC,6FAA2F;AAAlF,kJAAA,+BAA+B,OAAA;AAExC,+FAA6F;AAApF,oJAAA,gCAAgC,OAAA;AACzC,iGAA+F;AAAtF,sJAAA,iCAAiC,OAAA;AAkB1C,6EAA0E;AAAjE,+HAAA,qBAAqB,OAAA;AAE9B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAaA,mEAAiE;AAAxD,wHAAA,kBAAkB,OAAA;AAE3B,kFAAgF;AAAvE,oIAAA,wBAAwB,OAAA;AAEjC,2FAAyF;AAAhF,gJAAA,8BAA8B,OAAA;AACvC,6FAA2F;AAAlF,kJAAA,+BAA+B,OAAA;AAExC,+FAA6F;AAApF,oJAAA,gCAAgC,OAAA;AACzC,iGAA+F;AAAtF,sJAAA,iCAAiC,OAAA;AAkB1C,6EAA0E;AAAjE,+HAAA,qBAAqB,OAAA;AAE9B,iDAO6B;AAN3B,uGAAA,WAAW,OAAA;AACX,uGAAA,WAAW,OAAA;AACX,8GAAA,kBAAkB,OAAA;AAClB,8GAAA,kBAAkB,OAAA;AAClB,2HAAA,+BAA+B,OAAA;AAC/B,qHAAA,yBAAyB,OAAA;AAG3B,2DAA4D;AAAnD,iHAAA,gBAAgB,OAAA;AACzB,qDAA4D;AAAnD,qGAAA,OAAO,OAAA;AAAE,wGAAA,UAAU,OAAA;AAC5B,iEAA6D;AAApD,kHAAA,cAAc,OAAA;AACvB,mEAGsC;AAFpC,6HAAA,wBAAwB,OAAA;AACxB,oIAAA,+BAA+B,OAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { SNSClient } from '@aws-sdk/client-sns';
|
|
2
2
|
import type { Either } from '@lokalise/node-core';
|
|
3
|
-
import type { MonoSchemaQueueOptions } from '@message-queue-toolkit/core';
|
|
3
|
+
import type { MonoSchemaQueueOptions, BarrierResult } from '@message-queue-toolkit/core';
|
|
4
4
|
import type { SQSConsumerDependencies, NewSQSConsumerOptions, ExistingSQSConsumerOptions, SQSQueueLocatorType, SQSCreationConfig, SQSMessage } from '@message-queue-toolkit/sqs';
|
|
5
5
|
import { AbstractSqsConsumer } from '@message-queue-toolkit/sqs';
|
|
6
6
|
import type { ZodSchema } from 'zod';
|
|
@@ -20,7 +20,7 @@ export type SNSSQSConsumerDependencies = SQSConsumerDependencies & {
|
|
|
20
20
|
export type SNSSQSQueueLocatorType = SQSQueueLocatorType & SNSQueueLocatorType & {
|
|
21
21
|
subscriptionArn?: string;
|
|
22
22
|
};
|
|
23
|
-
export declare abstract class AbstractSnsSqsConsumerMonoSchema<MessagePayloadType extends object> extends AbstractSqsConsumer<MessagePayloadType, SNSSQSQueueLocatorType, SNSCreationConfig & SQSCreationConfig, NewSnsSqsConsumerOptions | ExistingSnsSqsConsumerOptionsMono<MessagePayloadType
|
|
23
|
+
export declare abstract class AbstractSnsSqsConsumerMonoSchema<MessagePayloadType extends object, BarrierOutput = undefined> extends AbstractSqsConsumer<MessagePayloadType, SNSSQSQueueLocatorType, SNSCreationConfig & SQSCreationConfig, NewSnsSqsConsumerOptions | ExistingSnsSqsConsumerOptionsMono<MessagePayloadType>, BarrierOutput> {
|
|
24
24
|
private readonly subscriptionConfig?;
|
|
25
25
|
private readonly snsClient;
|
|
26
26
|
private readonly messageSchema;
|
|
@@ -33,6 +33,6 @@ export declare abstract class AbstractSnsSqsConsumerMonoSchema<MessagePayloadTyp
|
|
|
33
33
|
/**
|
|
34
34
|
* Override to implement barrier pattern
|
|
35
35
|
*/
|
|
36
|
-
protected preHandlerBarrier(_message: MessagePayloadType, _messageType: string): Promise<
|
|
36
|
+
protected preHandlerBarrier(_message: MessagePayloadType, _messageType: string): Promise<BarrierResult<BarrierOutput>>;
|
|
37
37
|
init(): Promise<void>;
|
|
38
38
|
}
|
|
@@ -4,6 +4,10 @@ exports.AbstractSnsSqsConsumerMonoSchema = void 0;
|
|
|
4
4
|
const sqs_1 = require("@message-queue-toolkit/sqs");
|
|
5
5
|
const snsInitter_1 = require("../utils/snsInitter");
|
|
6
6
|
const snsMessageReader_1 = require("../utils/snsMessageReader");
|
|
7
|
+
const DEFAULT_BARRIER_RESULT = {
|
|
8
|
+
isPassing: true,
|
|
9
|
+
output: undefined,
|
|
10
|
+
};
|
|
7
11
|
class AbstractSnsSqsConsumerMonoSchema extends sqs_1.AbstractSqsConsumer {
|
|
8
12
|
subscriptionConfig;
|
|
9
13
|
snsClient;
|
|
@@ -34,7 +38,8 @@ class AbstractSnsSqsConsumerMonoSchema extends sqs_1.AbstractSqsConsumer {
|
|
|
34
38
|
* Override to implement barrier pattern
|
|
35
39
|
*/
|
|
36
40
|
preHandlerBarrier(_message, _messageType) {
|
|
37
|
-
|
|
41
|
+
// @ts-ignore
|
|
42
|
+
return Promise.resolve(DEFAULT_BARRIER_RESULT);
|
|
38
43
|
}
|
|
39
44
|
async init() {
|
|
40
45
|
if (this.deletionConfig && this.creationConfig && this.subscriptionConfig) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractSnsSqsConsumerMonoSchema.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsSqsConsumerMonoSchema.ts"],"names":[],"mappings":";;;AAWA,oDAA2E;AAG3E,oDAA8D;AAC9D,gEAA0D;AAqC1D,MAAsB,
|
|
1
|
+
{"version":3,"file":"AbstractSnsSqsConsumerMonoSchema.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsSqsConsumerMonoSchema.ts"],"names":[],"mappings":";;;AAWA,oDAA2E;AAG3E,oDAA8D;AAC9D,gEAA0D;AAqC1D,MAAM,sBAAsB,GAAG;IAC7B,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,SAAS;CACT,CAAA;AAEV,MAAsB,gCAGpB,SAAQ,yBAMT;IACkB,kBAAkB,CAAyB;IAC3C,SAAS,CAAW;IACpB,aAAa,CAA+B;IAC5C,YAAY,CAA8C;IAC3E,aAAa;IACN,QAAQ,CAAQ;IACvB,aAAa;IACN,eAAe,CAAQ;IAE9B,YACE,YAAwC,EACxC,OAEyD;QAEzD,KAAK,CAAC,YAAY,EAAE;YAClB,GAAG,OAAO;SACX,CAAC,CAAA;QAEF,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAA;QACpD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;QACvC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAA;QAC1C,IAAI,CAAC,YAAY,GAAG;YAClB,MAAM,EAAE,IAAI,CAAC,aAAa;SAC3B,CAAA;IACH,CAAC;IAEkB,aAAa;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAEkB,cAAc,CAAC,OAAmB;QACnD,OAAO,IAAA,iCAAc,EAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;IACpD,CAAC;IAED;;OAEG;IACO,iBAAiB,CACzB,QAA4B,EAC5B,YAAoB;QAEpB,aAAa;QACb,OAAO,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAA;IAChD,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzE,MAAM,IAAA,yBAAY,EAChB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,cAAc,CAAC,KAAK,EACzB,IAAI,CAAC,cAAc,CAAC,KAAK,EACzB,IAAI,CAAC,kBAAkB,EACvB;gBACE,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CACF,CAAA;SACF;aAAM,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE;YACrD,MAAM,IAAA,eAAS,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;SAC1E;QAED,MAAM,gBAAgB,GAAG,MAAM,IAAA,uBAAU,EACvC,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,kBAAkB,EACvB;YACE,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CACF,CAAA;QACD,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAA;QACzC,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAA;QACzC,IAAI,CAAC,eAAe,GAAG,gBAAgB,CAAC,eAAe,CAAA;IACzD,CAAC;CACF;AAvFD,4EAuFC"}
|
|
@@ -4,7 +4,9 @@ import type { CreateQueueCommandInput, SQSClient } from '@aws-sdk/client-sqs';
|
|
|
4
4
|
import type { ExtraParams } from '@message-queue-toolkit/core';
|
|
5
5
|
import type { ExtraSQSCreationParams } from '@message-queue-toolkit/sqs';
|
|
6
6
|
import type { ExtraSNSCreationParams } from '../sns/AbstractSnsService';
|
|
7
|
-
export type SNSSubscriptionOptions = Omit<SubscribeCommandInput, 'TopicArn' | 'Endpoint' | 'Protocol' | 'ReturnSubscriptionArn'
|
|
7
|
+
export type SNSSubscriptionOptions = Omit<SubscribeCommandInput, 'TopicArn' | 'Endpoint' | 'Protocol' | 'ReturnSubscriptionArn'> & {
|
|
8
|
+
updateAttributesIfExists: boolean;
|
|
9
|
+
};
|
|
8
10
|
export declare function subscribeToTopic(sqsClient: SQSClient, snsClient: SNSClient, queueConfiguration: CreateQueueCommandInput, topicConfiguration: CreateTopicCommandInput, subscriptionConfiguration: SNSSubscriptionOptions, extraParams?: ExtraSNSCreationParams & ExtraSQSCreationParams & ExtraParams): Promise<{
|
|
9
11
|
subscriptionArn: string | undefined;
|
|
10
12
|
topicArn: string;
|
|
@@ -31,8 +31,39 @@ async function subscribeToTopic(sqsClient, snsClient, queueConfiguration, topicC
|
|
|
31
31
|
const logger = extraParams?.logger ?? console;
|
|
32
32
|
// @ts-ignore
|
|
33
33
|
logger.error(`Error while creating subscription for queue "${queueConfiguration.QueueName}", topic "${topicConfiguration.Name}": ${err.message}`);
|
|
34
|
+
if (subscriptionConfiguration.updateAttributesIfExists &&
|
|
35
|
+
err.message.indexOf('Subscription already exists with different attributes') !== -1) {
|
|
36
|
+
const result = await tryToUpdateSubscription(snsClient, topicArn, queueArn, subscriptionConfiguration);
|
|
37
|
+
if (!result) {
|
|
38
|
+
logger.error('Failed to update subscription');
|
|
39
|
+
throw err;
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
subscriptionArn: result.SubscriptionArn,
|
|
43
|
+
topicArn,
|
|
44
|
+
queueUrl,
|
|
45
|
+
queueArn,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
34
48
|
throw err;
|
|
35
49
|
}
|
|
36
50
|
}
|
|
37
51
|
exports.subscribeToTopic = subscribeToTopic;
|
|
52
|
+
async function tryToUpdateSubscription(snsClient, topicArn, queueArn, subscriptionConfiguration) {
|
|
53
|
+
const subscription = await (0, snsUtils_1.findSubscriptionByTopicAndQueue)(snsClient, topicArn, queueArn);
|
|
54
|
+
if (!subscription || !subscriptionConfiguration.Attributes) {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
const setSubscriptionAttributesCommands = Object.entries(subscriptionConfiguration.Attributes).map(([key, value]) => {
|
|
58
|
+
return new client_sns_1.SetSubscriptionAttributesCommand({
|
|
59
|
+
SubscriptionArn: subscription.SubscriptionArn,
|
|
60
|
+
AttributeName: key,
|
|
61
|
+
AttributeValue: value,
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
for (let command of setSubscriptionAttributesCommands) {
|
|
65
|
+
await snsClient.send(command);
|
|
66
|
+
}
|
|
67
|
+
return subscription;
|
|
68
|
+
}
|
|
38
69
|
//# sourceMappingURL=snsSubscriber.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snsSubscriber.js","sourceRoot":"","sources":["../../../lib/utils/snsSubscriber.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"snsSubscriber.js","sourceRoot":"","sources":["../../../lib/utils/snsSubscriber.ts"],"names":[],"mappings":";;;AACA,oDAAwF;AAKxF,oDAAwD;AAIxD,yCAAyE;AAOlE,KAAK,UAAU,gBAAgB,CACpC,SAAoB,EACpB,SAAoB,EACpB,kBAA2C,EAC3C,kBAA2C,EAC3C,yBAAiD,EACjD,WAA2E;IAE3E,MAAM,QAAQ,GAAG,MAAM,IAAA,sBAAW,EAAC,SAAS,EAAE,kBAAkB,EAAE;QAChE,uCAAuC,EAAE,WAAW,EAAE,uCAAuC;KAC9F,CAAC,CAAA;IACF,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAA,iBAAW,EAAC,SAAS,EAAE,kBAAkB,EAAE;QAC9E,qCAAqC,EAAE,WAAW,EAAE,qCAAqC;KAC1F,CAAC,CAAA;IAEF,MAAM,gBAAgB,GAAG,IAAI,6BAAgB,CAAC;QAC5C,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,KAAK;QACf,qBAAqB,EAAE,IAAI;QAC3B,GAAG,yBAAyB;KAC7B,CAAC,CAAA;IAEF,IAAI;QACF,MAAM,kBAAkB,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACjE,OAAO;YACL,eAAe,EAAE,kBAAkB,CAAC,eAAe;YACnD,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAA;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,MAAM,GAAG,WAAW,EAAE,MAAM,IAAI,OAAO,CAAA;QAC7C,aAAa;QACb,MAAM,CAAC,KAAK,CACV,gDAAgD,kBAAkB,CAAC,SAAS,aAC1E,kBAAkB,CAAC,IACrB,MAAO,GAAa,CAAC,OAAO,EAAE,CAC/B,CAAA;QAED,IACE,yBAAyB,CAAC,wBAAwB;YACjD,GAAa,CAAC,OAAO,CAAC,OAAO,CAAC,uDAAuD,CAAC,KAAK,CAAC,CAAC,EAC9F;YACA,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAC1C,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,yBAAyB,CAC1B,CAAA;YACD,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAA;gBAC7C,MAAM,GAAG,CAAA;aACV;YACD,OAAO;gBACL,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,QAAQ;gBACR,QAAQ;gBACR,QAAQ;aACT,CAAA;SACF;QAED,MAAM,GAAG,CAAA;KACV;AACH,CAAC;AAhED,4CAgEC;AAED,KAAK,UAAU,uBAAuB,CACpC,SAAoB,EACpB,QAAgB,EAChB,QAAgB,EAChB,yBAAiD;IAEjD,MAAM,YAAY,GAAG,MAAM,IAAA,0CAA+B,EAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACzF,IAAI,CAAC,YAAY,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE;QAC1D,OAAO,SAAS,CAAA;KACjB;IAED,MAAM,iCAAiC,GAAG,MAAM,CAAC,OAAO,CACtD,yBAAyB,CAAC,UAAU,CACrC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACrB,OAAO,IAAI,6CAAgC,CAAC;YAC1C,eAAe,EAAE,YAAY,CAAC,eAAe;YAC7C,aAAa,EAAE,GAAG;YAClB,cAAc,EAAE,KAAK;SACtB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,KAAK,IAAI,OAAO,IAAI,iCAAiC,EAAE;QACrD,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KAC9B;IAED,OAAO,YAAY,CAAA;AACrB,CAAC"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { CreateTopicCommandInput, SNSClient } from '@aws-sdk/client-sns';
|
|
2
2
|
import type { Either } from '@lokalise/node-core';
|
|
3
3
|
import type { ExtraSNSCreationParams } from '../sns/AbstractSnsService';
|
|
4
|
-
type
|
|
4
|
+
type AttributesResult = {
|
|
5
5
|
attributes?: Record<string, string>;
|
|
6
6
|
};
|
|
7
|
-
export declare function getTopicAttributes(snsClient: SNSClient, topicArn: string): Promise<Either<'not_found',
|
|
7
|
+
export declare function getTopicAttributes(snsClient: SNSClient, topicArn: string): Promise<Either<'not_found', AttributesResult>>;
|
|
8
|
+
export declare function getSubscriptionAttributes(snsClient: SNSClient, subscriptionArn: string): Promise<Either<'not_found', AttributesResult>>;
|
|
8
9
|
export declare function assertTopic(snsClient: SNSClient, topicOptions: CreateTopicCommandInput, extraParams?: ExtraSNSCreationParams): Promise<string>;
|
|
9
10
|
export declare function deleteTopic(client: SNSClient, topicName: string): Promise<void>;
|
|
10
11
|
export declare function deleteSubscription(client: SNSClient, subscriptionArn: string): Promise<void>;
|
|
12
|
+
export declare function findSubscriptionByTopicAndQueue(snsClient: SNSClient, topicArn: string, queueArn: string): Promise<import("@aws-sdk/client-sns").Subscription | undefined>;
|
|
11
13
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.deleteSubscription = exports.deleteTopic = exports.assertTopic = exports.getTopicAttributes = void 0;
|
|
3
|
+
exports.findSubscriptionByTopicAndQueue = exports.deleteSubscription = exports.deleteTopic = exports.assertTopic = exports.getSubscriptionAttributes = exports.getTopicAttributes = void 0;
|
|
4
4
|
const client_sns_1 = require("@aws-sdk/client-sns");
|
|
5
5
|
const snsAttributeUtils_1 = require("./snsAttributeUtils");
|
|
6
6
|
async function getTopicAttributes(snsClient, topicArn) {
|
|
@@ -27,6 +27,30 @@ async function getTopicAttributes(snsClient, topicArn) {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
exports.getTopicAttributes = getTopicAttributes;
|
|
30
|
+
async function getSubscriptionAttributes(snsClient, subscriptionArn) {
|
|
31
|
+
const command = new client_sns_1.GetSubscriptionAttributesCommand({
|
|
32
|
+
SubscriptionArn: subscriptionArn,
|
|
33
|
+
});
|
|
34
|
+
try {
|
|
35
|
+
const response = await snsClient.send(command);
|
|
36
|
+
return {
|
|
37
|
+
result: {
|
|
38
|
+
attributes: response.Attributes,
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
// @ts-ignore
|
|
44
|
+
if (err.Code === 'AWS.SimpleQueueService.NonExistentQueue') {
|
|
45
|
+
return {
|
|
46
|
+
// @ts-ignore
|
|
47
|
+
error: 'not_found',
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
throw err;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.getSubscriptionAttributes = getSubscriptionAttributes;
|
|
30
54
|
async function assertTopic(snsClient, topicOptions, extraParams) {
|
|
31
55
|
const command = new client_sns_1.CreateTopicCommand(topicOptions);
|
|
32
56
|
const response = await snsClient.send(command);
|
|
@@ -72,4 +96,14 @@ async function deleteSubscription(client, subscriptionArn) {
|
|
|
72
96
|
}
|
|
73
97
|
}
|
|
74
98
|
exports.deleteSubscription = deleteSubscription;
|
|
99
|
+
async function findSubscriptionByTopicAndQueue(snsClient, topicArn, queueArn) {
|
|
100
|
+
const listSubscriptionsCommand = new client_sns_1.ListSubscriptionsByTopicCommand({
|
|
101
|
+
TopicArn: topicArn,
|
|
102
|
+
});
|
|
103
|
+
const listSubscriptionResult = await snsClient.send(listSubscriptionsCommand);
|
|
104
|
+
return listSubscriptionResult.Subscriptions?.find((entry) => {
|
|
105
|
+
return entry.Endpoint === queueArn;
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
exports.findSubscriptionByTopicAndQueue = findSubscriptionByTopicAndQueue;
|
|
75
109
|
//# sourceMappingURL=snsUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snsUtils.js","sourceRoot":"","sources":["../../../lib/utils/snsUtils.ts"],"names":[],"mappings":";;;AACA,
|
|
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": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "SNS adapter for message-queue-toolkit",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"peerDependencies": {
|
|
34
34
|
"@aws-sdk/client-sns": "^3.385.0",
|
|
35
35
|
"@aws-sdk/client-sqs": "^3.385.0",
|
|
36
|
-
"@message-queue-toolkit/core": "^
|
|
37
|
-
"@message-queue-toolkit/sqs": "^
|
|
36
|
+
"@message-queue-toolkit/core": "^4.0.0",
|
|
37
|
+
"@message-queue-toolkit/sqs": "^4.0.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@aws-sdk/client-sns": "^3.385.0",
|