@message-queue-toolkit/sns 17.3.0 → 18.0.1

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 CHANGED
@@ -9,6 +9,7 @@ export { AbstractSnsSqsConsumer } from './lib/sns/AbstractSnsSqsConsumer';
9
9
  export type { CommonMessage } from './lib/types/MessageTypes';
10
10
  export { deserializeSNSMessage } from './lib/utils/snsMessageDeserializer';
11
11
  export { assertTopic, deleteTopic, getTopicAttributes, deleteSubscription, findSubscriptionByTopicAndQueue, getSubscriptionAttributes, } from './lib/utils/snsUtils';
12
+ export { clearCachedCallerIdentity } from './lib/utils/stsUtils';
12
13
  export { subscribeToTopic } from './lib/utils/snsSubscriber';
13
14
  export { initSns, initSnsSqs } from './lib/utils/snsInitter';
14
15
  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.FakeConsumer = 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.AbstractSnsSqsConsumer = exports.AbstractSnsPublisher = exports.SnsConsumerErrorResolver = exports.AbstractSnsService = exports.SNS_MESSAGE_MAX_SIZE = void 0;
3
+ exports.FakeConsumer = exports.generateTopicSubscriptionPolicy = exports.generateFilterAttributes = exports.readSnsMessage = exports.initSnsSqs = exports.initSns = exports.subscribeToTopic = exports.clearCachedCallerIdentity = exports.getSubscriptionAttributes = exports.findSubscriptionByTopicAndQueue = exports.deleteSubscription = exports.getTopicAttributes = exports.deleteTopic = exports.assertTopic = exports.deserializeSNSMessage = exports.AbstractSnsSqsConsumer = exports.AbstractSnsPublisher = exports.SnsConsumerErrorResolver = exports.AbstractSnsService = exports.SNS_MESSAGE_MAX_SIZE = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  var AbstractSnsService_1 = require("./lib/sns/AbstractSnsService");
6
6
  Object.defineProperty(exports, "SNS_MESSAGE_MAX_SIZE", { enumerable: true, get: function () { return AbstractSnsService_1.SNS_MESSAGE_MAX_SIZE; } });
@@ -21,6 +21,8 @@ Object.defineProperty(exports, "getTopicAttributes", { enumerable: true, get: fu
21
21
  Object.defineProperty(exports, "deleteSubscription", { enumerable: true, get: function () { return snsUtils_1.deleteSubscription; } });
22
22
  Object.defineProperty(exports, "findSubscriptionByTopicAndQueue", { enumerable: true, get: function () { return snsUtils_1.findSubscriptionByTopicAndQueue; } });
23
23
  Object.defineProperty(exports, "getSubscriptionAttributes", { enumerable: true, get: function () { return snsUtils_1.getSubscriptionAttributes; } });
24
+ var stsUtils_1 = require("./lib/utils/stsUtils");
25
+ Object.defineProperty(exports, "clearCachedCallerIdentity", { enumerable: true, get: function () { return stsUtils_1.clearCachedCallerIdentity; } });
24
26
  var snsSubscriber_1 = require("./lib/utils/snsSubscriber");
25
27
  Object.defineProperty(exports, "subscribeToTopic", { enumerable: true, get: function () { return snsSubscriber_1.subscribeToTopic; } });
26
28
  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":";;;;AAQA,mEAAmE;AAA1D,0HAAA,oBAAoB,OAAA;AAE7B,mEAAiE;AAAxD,wHAAA,kBAAkB,OAAA;AAE3B,kFAAgF;AAAvE,oIAAA,wBAAwB,OAAA;AAGjC,uEAAqE;AAA5D,4HAAA,oBAAoB,OAAA;AAM7B,2EAAyE;AAAhE,gIAAA,sBAAsB,OAAA;AAI/B,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;AAGjC,8EAAmD;AACnD,wEAA6C;AAE7C,6DAA2D;AAAlD,4GAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AAQA,mEAAmE;AAA1D,0HAAA,oBAAoB,OAAA;AAE7B,mEAAiE;AAAxD,wHAAA,kBAAkB,OAAA;AAE3B,kFAAgF;AAAvE,oIAAA,wBAAwB,OAAA;AAGjC,uEAAqE;AAA5D,4HAAA,oBAAoB,OAAA;AAM7B,2EAAyE;AAAhE,gIAAA,sBAAsB,OAAA;AAI/B,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;AAE3B,iDAAgE;AAAvD,qHAAA,yBAAyB,OAAA;AAElC,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;AAGjC,8EAAmD;AACnD,wEAA6C;AAE7C,6DAA2D;AAAlD,4GAAA,YAAY,OAAA"}
@@ -1,10 +1,12 @@
1
1
  import type { CreateTopicCommandInput, SNSClient, Tag } from '@aws-sdk/client-sns';
2
2
  import type { QueueDependencies, QueueOptions } from '@message-queue-toolkit/core';
3
3
  import { AbstractQueueService } from '@message-queue-toolkit/core';
4
+ import type { STSClient } from '@aws-sdk/client-sts';
4
5
  import type { SNS_MESSAGE_BODY_TYPE } from '../types/MessageTypes';
5
6
  export declare const SNS_MESSAGE_MAX_SIZE: number;
6
7
  export type SNSDependencies = QueueDependencies & {
7
8
  snsClient: SNSClient;
9
+ stsClient: STSClient;
8
10
  };
9
11
  export type SNSTopicAWSConfig = CreateTopicCommandInput;
10
12
  export type SNSTopicConfig = {
@@ -23,6 +25,7 @@ export type SNSTopicConfig = {
23
25
  export type ExtraSNSCreationParams = {
24
26
  queueUrlsWithSubscribePermissionsPrefix?: string | readonly string[];
25
27
  allowedSourceOwner?: string;
28
+ forceTagUpdate?: boolean;
26
29
  };
27
30
  export type SNSCreationConfig = {
28
31
  topic?: SNSTopicAWSConfig;
@@ -35,6 +38,7 @@ export type SNSTopicLocatorType = {
35
38
  export type SNSOptions = QueueOptions<SNSCreationConfig, SNSTopicLocatorType>;
36
39
  export declare abstract class AbstractSnsService<MessagePayloadType extends object, MessageEnvelopeType extends object = SNS_MESSAGE_BODY_TYPE, SNSOptionsType extends SNSOptions = SNSOptions, DependenciesType extends SNSDependencies = SNSDependencies> extends AbstractQueueService<MessagePayloadType, MessageEnvelopeType, DependenciesType, SNSCreationConfig, SNSTopicLocatorType, SNSOptionsType> {
37
40
  protected readonly snsClient: SNSClient;
41
+ protected readonly stsClient: STSClient;
38
42
  protected topicArn: string;
39
43
  constructor(dependencies: DependenciesType, options: SNSOptionsType);
40
44
  init(): Promise<void>;
@@ -7,17 +7,19 @@ const snsInitter_1 = require("../utils/snsInitter");
7
7
  exports.SNS_MESSAGE_MAX_SIZE = 256 * 1024; // 256KB
8
8
  class AbstractSnsService extends core_1.AbstractQueueService {
9
9
  snsClient;
10
+ stsClient;
10
11
  // @ts-ignore
11
12
  topicArn;
12
13
  constructor(dependencies, options) {
13
14
  super(dependencies, options);
14
15
  this.snsClient = dependencies.snsClient;
16
+ this.stsClient = dependencies.stsClient;
15
17
  }
16
18
  async init() {
17
19
  if (this.deletionConfig && this.creationConfig) {
18
- await (0, snsInitter_1.deleteSns)(this.snsClient, this.deletionConfig, this.creationConfig);
20
+ await (0, snsInitter_1.deleteSns)(this.snsClient, this.stsClient, this.deletionConfig, this.creationConfig);
19
21
  }
20
- const initResult = await (0, snsInitter_1.initSns)(this.snsClient, this.locatorConfig, this.creationConfig);
22
+ const initResult = await (0, snsInitter_1.initSns)(this.snsClient, this.stsClient, this.locatorConfig, this.creationConfig);
21
23
  this.topicArn = initResult.topicArn;
22
24
  this.isInitted = true;
23
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSnsService.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsService.ts"],"names":[],"mappings":";;;AAEA,sDAAkE;AAGlE,oDAAwD;AAExD,yDAAyD;AAC5C,QAAA,oBAAoB,GAAG,GAAG,GAAG,IAAI,CAAA,CAAC,QAAQ;AAuCvD,MAAsB,kBAKpB,SAAQ,2BAOT;IACoB,SAAS,CAAW;IACvC,aAAa;IACH,QAAQ,CAAQ;IAE1B,YAAY,YAA8B,EAAE,OAAuB;QACjE,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAE5B,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,IAAA,sBAAS,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3E,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAA,oBAAO,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QACzF,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;AArCD,gDAqCC"}
1
+ {"version":3,"file":"AbstractSnsService.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsService.ts"],"names":[],"mappings":";;;AAEA,sDAAkE;AAIlE,oDAAwD;AAExD,yDAAyD;AAC5C,QAAA,oBAAoB,GAAG,GAAG,GAAG,IAAI,CAAA,CAAC,QAAQ;AAyCvD,MAAsB,kBAKpB,SAAQ,2BAOT;IACoB,SAAS,CAAW;IACpB,SAAS,CAAW;IACvC,aAAa;IACH,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,IAAA,sBAAS,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3F,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAA,oBAAO,EAC9B,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;AA5CD,gDA4CC"}
@@ -2,9 +2,11 @@ import type { SNSClient } from '@aws-sdk/client-sns';
2
2
  import type { SQSConsumerDependencies, SQSConsumerOptions, SQSCreationConfig, SQSMessage, SQSQueueLocatorType } from '@message-queue-toolkit/sqs';
3
3
  import { AbstractSqsConsumer } from '@message-queue-toolkit/sqs';
4
4
  import type { SNSSubscriptionOptions } from '../utils/snsSubscriber';
5
+ import type { STSClient } from '@aws-sdk/client-sts';
5
6
  import type { SNSCreationConfig, SNSOptions, SNSTopicLocatorType } from './AbstractSnsService';
6
7
  export type SNSSQSConsumerDependencies = SQSConsumerDependencies & {
7
8
  snsClient: SNSClient;
9
+ stsClient: STSClient;
8
10
  };
9
11
  export type SNSSQSCreationConfig = SQSCreationConfig & SNSCreationConfig;
10
12
  export type SNSSQSQueueLocatorType = Partial<SQSQueueLocatorType> & SNSTopicLocatorType & {
@@ -16,6 +18,7 @@ export type SNSSQSConsumerOptions<MessagePayloadType extends object, ExecutionCo
16
18
  export declare abstract class AbstractSnsSqsConsumer<MessagePayloadSchemas extends object, ExecutionContext, PrehandlerOutput = undefined> extends AbstractSqsConsumer<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput, SNSSQSCreationConfig, SNSSQSQueueLocatorType, SNSSQSConsumerOptions<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>> {
17
19
  private readonly subscriptionConfig?;
18
20
  private readonly snsClient;
21
+ private readonly stsClient;
19
22
  protected topicArn: string;
20
23
  protected subscriptionArn: string;
21
24
  protected constructor(dependencies: SNSSQSConsumerDependencies, options: SNSSQSConsumerOptions<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>, executionContext: ExecutionContext);
@@ -7,6 +7,7 @@ const snsMessageReader_1 = require("../utils/snsMessageReader");
7
7
  class AbstractSnsSqsConsumer extends sqs_1.AbstractSqsConsumer {
8
8
  subscriptionConfig;
9
9
  snsClient;
10
+ stsClient;
10
11
  // @ts-ignore
11
12
  topicArn;
12
13
  // @ts-ignore
@@ -17,15 +18,16 @@ class AbstractSnsSqsConsumer extends sqs_1.AbstractSqsConsumer {
17
18
  }, executionContext);
18
19
  this.subscriptionConfig = options.subscriptionConfig;
19
20
  this.snsClient = dependencies.snsClient;
21
+ this.stsClient = dependencies.stsClient;
20
22
  }
21
23
  async init() {
22
24
  if (this.deletionConfig && this.creationConfig && this.subscriptionConfig) {
23
- await (0, snsInitter_1.deleteSnsSqs)(this.sqsClient, this.snsClient, this.deletionConfig, this.creationConfig.queue, this.creationConfig.topic, this.subscriptionConfig, undefined, this.locatorConfig);
25
+ await (0, snsInitter_1.deleteSnsSqs)(this.sqsClient, this.snsClient, this.stsClient, this.deletionConfig, this.creationConfig.queue, this.creationConfig.topic, this.subscriptionConfig, undefined, this.locatorConfig);
24
26
  }
25
27
  else if (this.deletionConfig && this.creationConfig) {
26
28
  await (0, sqs_1.deleteSqs)(this.sqsClient, this.deletionConfig, this.creationConfig);
27
29
  }
28
- const initSnsSqsResult = await (0, snsInitter_1.initSnsSqs)(this.sqsClient, this.snsClient, this.locatorConfig, this.creationConfig, this.subscriptionConfig, { logger: this.logger });
30
+ const initSnsSqsResult = await (0, snsInitter_1.initSnsSqs)(this.sqsClient, this.snsClient, this.stsClient, this.locatorConfig, this.creationConfig, this.subscriptionConfig, { logger: this.logger });
29
31
  this.queueName = initSnsSqsResult.queueName;
30
32
  this.queueUrl = initSnsSqsResult.queueUrl;
31
33
  this.topicArn = initSnsSqsResult.topicArn;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSnsSqsConsumer.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsSqsConsumer.ts"],"names":[],"mappings":";;;AAQA,oDAA2E;AAE3E,oDAA8D;AAC9D,gEAA0D;AA8B1D,MAAsB,sBAIpB,SAAQ,yBAOT;IACkB,kBAAkB,CAAyB;IAC3C,SAAS,CAAW;IAErC,aAAa;IACH,QAAQ,CAAQ;IAC1B,aAAa;IACH,eAAe,CAAQ;IAEjC,YACE,YAAwC,EACxC,OAAyF,EACzF,gBAAkC;QAElC,KAAK,CACH,YAAY,EACZ;YACE,GAAG,OAAO;SACX,EACD,gBAAgB,CACjB,CAAA;QAED,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAA;QACpD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;IACzC,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1E,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,SAAS,EACT,IAAI,CAAC,aAAa,CACnB,CAAA;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtD,MAAM,IAAA,eAAS,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3E,CAAC;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,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACxB,CAAA;QACD,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAA;QAC3C,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;QAEvD,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAA;IAClC,CAAC;IAEkB,cAAc,CAAC,OAAmB;QACnD,MAAM,MAAM,GAAG,IAAA,iCAAc,EAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAC1D,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,MAAM,CAAA;QACf,CAAC;QAED,qDAAqD;QACrD,OAAO,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IACtC,CAAC;IAEkB,aAAa,CAAC,cAAqC;QACpE,OAAO,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;IACnE,CAAC;CACF;AAlFD,wDAkFC"}
1
+ {"version":3,"file":"AbstractSnsSqsConsumer.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsSqsConsumer.ts"],"names":[],"mappings":";;;AAQA,oDAA2E;AAE3E,oDAA8D;AAC9D,gEAA0D;AAgC1D,MAAsB,sBAIpB,SAAQ,yBAOT;IACkB,kBAAkB,CAAyB;IAC3C,SAAS,CAAW;IACpB,SAAS,CAAW;IAErC,aAAa;IACH,QAAQ,CAAQ;IAC1B,aAAa;IACH,eAAe,CAAQ;IAEjC,YACE,YAAwC,EACxC,OAAyF,EACzF,gBAAkC;QAElC,KAAK,CACH,YAAY,EACZ;YACE,GAAG,OAAO;SACX,EACD,gBAAgB,CACjB,CAAA;QAED,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAA;QACpD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;QACvC,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;IACzC,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1E,MAAM,IAAA,yBAAY,EAChB,IAAI,CAAC,SAAS,EACd,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,SAAS,EACT,IAAI,CAAC,aAAa,CACnB,CAAA;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtD,MAAM,IAAA,eAAS,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3E,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,IAAA,uBAAU,EACvC,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,kBAAkB,EACvB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACxB,CAAA;QACD,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAA;QAC3C,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;QAEvD,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAA;IAClC,CAAC;IAEkB,cAAc,CAAC,OAAmB;QACnD,MAAM,MAAM,GAAG,IAAA,iCAAc,EAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAC1D,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,MAAM,CAAA;QACf,CAAC;QAED,qDAAqD;QACrD,OAAO,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IACtC,CAAC;IAEkB,aAAa,CAAC,cAAqC;QACpE,OAAO,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;IACnE,CAAC;CACF;AAtFD,wDAsFC"}
@@ -13,6 +13,7 @@ class SnsPublisherManager extends core_1.AbstractPublisherManager {
13
13
  newPublisherOptions: options.newPublisherOptions,
14
14
  publisherDependencies: {
15
15
  snsClient: dependencies.snsClient,
16
+ stsClient: dependencies.stsClient,
16
17
  logger: dependencies.logger,
17
18
  errorReporter: dependencies.errorReporter,
18
19
  },
@@ -1 +1 @@
1
- {"version":3,"file":"SnsPublisherManager.js","sourceRoot":"","sources":["../../../lib/sns/SnsPublisherManager.ts"],"names":[],"mappings":";;;AAOA,sDAAsE;AAYtE,2EAAuE;AA0BvE,MAAa,mBAIX,SAAQ,+BAeT;IACC,YACE,YAAwE,EACxE,OAIC;QAED,KAAK,CAAC;YACJ,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,YAAY,CAAC,aAAa;YACzC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,UAAU;YAClD,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,qBAAqB,EAAE;gBACrB,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,aAAa,EAAE,YAAY,CAAC,aAAa;aAC1C;YACD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,IAAI,qDAAyB,EAAE;SAC9E,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,CACL,KAAiE,EACjE,OAA8D,EAC9D,sBAA8C,EAC9C,cAAkC;QAElC,4EAA4E;QAC5E,kCAAkC;QAClC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,sBAAsB,EAAE,cAAc,CAAC,CAAA;IAC9E,CAAC;IAEkB,qBAAqB,CACtC,WAAuE;QAEvE,OAAO;YACL,GAAG,IAAI,CAAC,mBAAmB;YAC3B,KAAK,EAAE;gBACL,IAAI,EAAE,WAAW;aAClB;SACF,CAAA;IACH,CAAC;IAEkB,kBAAkB,CACnC,KAA8B;QAE9B,OAAO,KAAK,CAAC,QAAQ,CAAA;IACvB,CAAC;CACF;AAtED,kDAsEC"}
1
+ {"version":3,"file":"SnsPublisherManager.js","sourceRoot":"","sources":["../../../lib/sns/SnsPublisherManager.ts"],"names":[],"mappings":";;;AAOA,sDAAsE;AAYtE,2EAAuE;AA0BvE,MAAa,mBAIX,SAAQ,+BAeT;IACC,YACE,YAAwE,EACxE,OAIC;QAED,KAAK,CAAC;YACJ,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,YAAY,CAAC,aAAa;YACzC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,UAAU;YAClD,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,qBAAqB,EAAE;gBACrB,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,aAAa,EAAE,YAAY,CAAC,aAAa;aAC1C;YACD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,IAAI,qDAAyB,EAAE;SAC9E,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,CACL,KAAiE,EACjE,OAA8D,EAC9D,sBAA8C,EAC9C,cAAkC;QAElC,4EAA4E;QAC5E,kCAAkC;QAClC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,sBAAsB,EAAE,cAAc,CAAC,CAAA;IAC9E,CAAC;IAEkB,qBAAqB,CACtC,WAAuE;QAEvE,OAAO;YACL,GAAG,IAAI,CAAC,mBAAmB;YAC3B,KAAK,EAAE;gBACL,IAAI,EAAE,WAAW;aAClB;SACF,CAAA;IACH,CAAC;IAEkB,kBAAkB,CACnC,KAA8B;QAE9B,OAAO,KAAK,CAAC,QAAQ,CAAA;IACvB,CAAC;CACF;AAvED,kDAuEC"}
@@ -4,15 +4,16 @@ import type { DeletionConfig, ExtraParams } from '@message-queue-toolkit/core';
4
4
  import type { SQSCreationConfig } from '@message-queue-toolkit/sqs';
5
5
  import type { SNSCreationConfig, SNSTopicLocatorType } from '../sns/AbstractSnsService';
6
6
  import type { SNSSQSQueueLocatorType } from '../sns/AbstractSnsSqsConsumer';
7
+ import type { STSClient } from '@aws-sdk/client-sts';
7
8
  import type { SNSSubscriptionOptions } from './snsSubscriber';
8
- export declare function initSnsSqs(sqsClient: SQSClient, snsClient: SNSClient, locatorConfig?: SNSSQSQueueLocatorType, creationConfig?: SNSCreationConfig & SQSCreationConfig, subscriptionConfig?: SNSSubscriptionOptions, extraParams?: ExtraParams): Promise<{
9
+ export declare function initSnsSqs(sqsClient: SQSClient, snsClient: SNSClient, stsClient: STSClient, locatorConfig?: SNSSQSQueueLocatorType, creationConfig?: SNSCreationConfig & SQSCreationConfig, subscriptionConfig?: SNSSubscriptionOptions, extraParams?: ExtraParams): Promise<{
9
10
  subscriptionArn: string;
10
11
  topicArn: string;
11
12
  queueUrl: string;
12
13
  queueName: string;
13
14
  }>;
14
- export declare function deleteSnsSqs(sqsClient: SQSClient, snsClient: SNSClient, deletionConfig: DeletionConfig, queueConfiguration: CreateQueueCommandInput, topicConfiguration: CreateTopicCommandInput | undefined, subscriptionConfiguration: SNSSubscriptionOptions, extraParams?: ExtraParams, topicLocator?: SNSTopicLocatorType): Promise<void>;
15
- export declare function deleteSns(snsClient: SNSClient, deletionConfig: DeletionConfig, creationConfig: SNSCreationConfig): Promise<void>;
16
- export declare function initSns(snsClient: SNSClient, locatorConfig?: SNSTopicLocatorType, creationConfig?: SNSCreationConfig): Promise<{
15
+ 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
+ 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<{
17
18
  topicArn: string;
18
19
  }>;
@@ -10,7 +10,7 @@ const TopicTypes_1 = require("../types/TopicTypes");
10
10
  const snsSubscriber_1 = require("./snsSubscriber");
11
11
  const snsUtils_1 = require("./snsUtils");
12
12
  // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: <explanation>
13
- async function initSnsSqs(sqsClient, snsClient, locatorConfig, creationConfig, subscriptionConfig, extraParams) {
13
+ async function initSnsSqs(sqsClient, snsClient, stsClient, locatorConfig, creationConfig, subscriptionConfig, extraParams) {
14
14
  if (!locatorConfig?.subscriptionArn) {
15
15
  if (!creationConfig?.topic && !locatorConfig?.topicArn && !locatorConfig?.topicName) {
16
16
  throw new Error('If locatorConfig.subscriptionArn is not specified, creationConfig.topic is mandatory in order to attempt to create missing topic and subscribe to it OR locatorConfig.name or locatorConfig.topicArn parameter is mandatory, to create subscription for existing topic.');
@@ -28,7 +28,7 @@ async function initSnsSqs(sqsClient, snsClient, locatorConfig, creationConfig, s
28
28
  ...locatorConfig,
29
29
  ...creationConfig.topic,
30
30
  };
31
- const { subscriptionArn, topicArn, queueUrl } = await (0, snsSubscriber_1.subscribeToTopic)(sqsClient, snsClient, creationConfig.queue, topicResolutionOptions, subscriptionConfig, {
31
+ const { subscriptionArn, topicArn, queueUrl } = await (0, snsSubscriber_1.subscribeToTopic)(sqsClient, snsClient, stsClient, creationConfig.queue, topicResolutionOptions, subscriptionConfig, {
32
32
  updateAttributesIfExists: creationConfig.updateAttributesIfExists,
33
33
  queueUrlsWithSubscribePermissionsPrefix: creationConfig.queueUrlsWithSubscribePermissionsPrefix,
34
34
  allowedSourceOwner: creationConfig.allowedSourceOwner,
@@ -80,14 +80,14 @@ async function initSnsSqs(sqsClient, snsClient, locatorConfig, creationConfig, s
80
80
  queueName,
81
81
  };
82
82
  }
83
- async function deleteSnsSqs(sqsClient, snsClient, deletionConfig, queueConfiguration, topicConfiguration, subscriptionConfiguration, extraParams, topicLocator) {
83
+ async function deleteSnsSqs(sqsClient, snsClient, stsClient, deletionConfig, queueConfiguration, topicConfiguration, subscriptionConfiguration, extraParams, topicLocator) {
84
84
  if (!deletionConfig.deleteIfExists) {
85
85
  return;
86
86
  }
87
87
  if ((0, core_1.isProduction)() && !deletionConfig.forceDeleteInProduction) {
88
88
  throw new Error('You are running autodeletion in production. This can and probably will cause a loss of data. If you are absolutely sure you want to do this, please set deletionConfig.forceDeleteInProduction to true');
89
89
  }
90
- const { subscriptionArn } = await (0, snsSubscriber_1.subscribeToTopic)(sqsClient, snsClient, queueConfiguration, topicConfiguration ?? topicLocator, subscriptionConfiguration, extraParams);
90
+ const { subscriptionArn } = await (0, snsSubscriber_1.subscribeToTopic)(sqsClient, snsClient, stsClient, queueConfiguration, topicConfiguration ?? topicLocator, subscriptionConfiguration, extraParams);
91
91
  if (!subscriptionArn) {
92
92
  throw new Error('subscriptionArn must be set for automatic deletion');
93
93
  }
@@ -101,11 +101,11 @@ async function deleteSnsSqs(sqsClient, snsClient, deletionConfig, queueConfigura
101
101
  if (!topicName) {
102
102
  throw new Error('Failed to resolve topic name');
103
103
  }
104
- await (0, snsUtils_1.deleteTopic)(snsClient, topicName);
104
+ await (0, snsUtils_1.deleteTopic)(snsClient, stsClient, topicName);
105
105
  }
106
106
  await (0, snsUtils_1.deleteSubscription)(snsClient, subscriptionArn);
107
107
  }
108
- async function deleteSns(snsClient, deletionConfig, creationConfig) {
108
+ async function deleteSns(snsClient, stsClient, deletionConfig, creationConfig) {
109
109
  if (!deletionConfig.deleteIfExists) {
110
110
  return;
111
111
  }
@@ -115,9 +115,9 @@ async function deleteSns(snsClient, deletionConfig, creationConfig) {
115
115
  if (!creationConfig.topic?.Name) {
116
116
  throw new Error('topic.Name must be set for automatic deletion');
117
117
  }
118
- await (0, snsUtils_1.deleteTopic)(snsClient, creationConfig.topic.Name);
118
+ await (0, snsUtils_1.deleteTopic)(snsClient, stsClient, creationConfig.topic.Name);
119
119
  }
120
- async function initSns(snsClient, locatorConfig, creationConfig) {
120
+ async function initSns(snsClient, stsClient, locatorConfig, creationConfig) {
121
121
  if (locatorConfig) {
122
122
  const topicArn = locatorConfig.topicArn ?? (await (0, snsUtils_1.getTopicArnByName)(snsClient, locatorConfig.topicName));
123
123
  const checkResult = await (0, snsUtils_1.getTopicAttributes)(snsClient, topicArn);
@@ -132,9 +132,10 @@ async function initSns(snsClient, locatorConfig, creationConfig) {
132
132
  if (!creationConfig) {
133
133
  throw new Error('When locatorConfig for the topic is not specified, creationConfig of the topic is mandatory');
134
134
  }
135
- const topicArn = await (0, snsUtils_1.assertTopic)(snsClient, creationConfig.topic, {
135
+ const topicArn = await (0, snsUtils_1.assertTopic)(snsClient, stsClient, creationConfig.topic, {
136
136
  queueUrlsWithSubscribePermissionsPrefix: creationConfig.queueUrlsWithSubscribePermissionsPrefix,
137
137
  allowedSourceOwner: creationConfig.allowedSourceOwner,
138
+ forceTagUpdate: creationConfig.forceTagUpdate,
138
139
  });
139
140
  return {
140
141
  topicArn,
@@ -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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"}
@@ -4,11 +4,12 @@ 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
+ import type { STSClient } from '@aws-sdk/client-sts';
7
8
  import { type TopicResolutionOptions } from '../types/TopicTypes';
8
9
  export type SNSSubscriptionOptions = Omit<SubscribeCommandInput, 'TopicArn' | 'Endpoint' | 'Protocol' | 'ReturnSubscriptionArn'> & {
9
10
  updateAttributesIfExists: boolean;
10
11
  };
11
- export declare function subscribeToTopic(sqsClient: SQSClient, snsClient: SNSClient, queueConfiguration: CreateQueueCommandInput, topicConfiguration: TopicResolutionOptions, subscriptionConfiguration: SNSSubscriptionOptions, extraParams?: ExtraSNSCreationParams & ExtraSQSCreationParams & ExtraParams): Promise<{
12
+ export declare function subscribeToTopic(sqsClient: SQSClient, snsClient: SNSClient, stsClient: STSClient, queueConfiguration: CreateQueueCommandInput, topicConfiguration: TopicResolutionOptions, subscriptionConfiguration: SNSSubscriptionOptions, extraParams?: ExtraSNSCreationParams & ExtraSQSCreationParams & ExtraParams): Promise<{
12
13
  subscriptionArn: string | undefined;
13
14
  topicArn: string;
14
15
  queueUrl: string;
@@ -5,23 +5,24 @@ const client_sns_1 = require("@aws-sdk/client-sns");
5
5
  const sqs_1 = require("@message-queue-toolkit/sqs");
6
6
  const TopicTypes_1 = require("../types/TopicTypes");
7
7
  const snsUtils_1 = require("./snsUtils");
8
- async function resolveTopicArnToSubscribeTo(topicConfiguration, snsClient, extraParams) {
8
+ async function resolveTopicArnToSubscribeTo(snsClient, stsClient, topicConfiguration, extraParams) {
9
9
  //If topicArn is present, let's use it and return early.
10
10
  if ((0, TopicTypes_1.isSNSTopicLocatorType)(topicConfiguration) && topicConfiguration.topicArn) {
11
11
  return topicConfiguration.topicArn;
12
12
  }
13
13
  //If input configuration is capable of creating a topic, let's create it and return its ARN.
14
14
  if ((0, TopicTypes_1.isCreateTopicCommand)(topicConfiguration)) {
15
- return await (0, snsUtils_1.assertTopic)(snsClient, topicConfiguration, {
15
+ return await (0, snsUtils_1.assertTopic)(snsClient, stsClient, topicConfiguration, {
16
16
  queueUrlsWithSubscribePermissionsPrefix: extraParams?.queueUrlsWithSubscribePermissionsPrefix,
17
17
  allowedSourceOwner: extraParams?.allowedSourceOwner,
18
+ forceTagUpdate: extraParams?.forceTagUpdate,
18
19
  });
19
20
  }
20
21
  //Last option: let's not create a topic but resolve a ARN based on the desired topic name.
21
22
  return await (0, snsUtils_1.getTopicArnByName)(snsClient, topicConfiguration.topicName);
22
23
  }
23
- async function subscribeToTopic(sqsClient, snsClient, queueConfiguration, topicConfiguration, subscriptionConfiguration, extraParams) {
24
- const topicArn = await resolveTopicArnToSubscribeTo(topicConfiguration, snsClient, extraParams);
24
+ async function subscribeToTopic(sqsClient, snsClient, stsClient, queueConfiguration, topicConfiguration, subscriptionConfiguration, extraParams) {
25
+ const topicArn = await resolveTopicArnToSubscribeTo(snsClient, stsClient, topicConfiguration, extraParams);
25
26
  const { queueUrl, queueArn } = await (0, sqs_1.assertQueue)(sqsClient, queueConfiguration, {
26
27
  topicArnsWithPublishPermissionsPrefix: extraParams?.topicArnsWithPublishPermissionsPrefix,
27
28
  updateAttributesIfExists: extraParams?.updateAttributesIfExists,
@@ -1 +1 @@
1
- {"version":3,"file":"snsSubscriber.js","sourceRoot":"","sources":["../../../lib/utils/snsSubscriber.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snsSubscriber.js","sourceRoot":"","sources":["../../../lib/utils/snsSubscriber.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,14 @@
1
1
  import { type CreateTopicCommandInput, type SNSClient } from '@aws-sdk/client-sns';
2
- import type { Either } from '@lokalise/node-core';
2
+ import { type Either } from '@lokalise/node-core';
3
3
  import type { ExtraSNSCreationParams } from '../sns/AbstractSnsService';
4
+ import type { STSClient } from '@aws-sdk/client-sts';
4
5
  type AttributesResult = {
5
6
  attributes?: Record<string, string>;
6
7
  };
7
8
  export declare function getTopicAttributes(snsClient: SNSClient, topicArn: string): Promise<Either<'not_found', AttributesResult>>;
8
9
  export declare function getSubscriptionAttributes(snsClient: SNSClient, subscriptionArn: string): Promise<Either<'not_found', AttributesResult>>;
9
- export declare function assertTopic(snsClient: SNSClient, topicOptions: CreateTopicCommandInput, extraParams?: ExtraSNSCreationParams): Promise<string>;
10
- export declare function deleteTopic(client: SNSClient, topicName: string): Promise<void>;
10
+ export declare function assertTopic(snsClient: SNSClient, stsClient: STSClient, topicOptions: CreateTopicCommandInput, extraParams?: ExtraSNSCreationParams): Promise<string>;
11
+ export declare function deleteTopic(snsClient: SNSClient, stsClient: STSClient, topicName: string): Promise<void>;
11
12
  export declare function deleteSubscription(client: SNSClient, subscriptionArn: string): Promise<void>;
12
13
  export declare function findSubscriptionByTopicAndQueue(snsClient: SNSClient, topicArn: string, queueArn: string): Promise<import("@aws-sdk/client-sns").Subscription | undefined>;
13
14
  export declare function getTopicArnByName(snsClient: SNSClient, topicName?: string): Promise<string>;
@@ -10,8 +10,10 @@ exports.findSubscriptionByTopicAndQueue = findSubscriptionByTopicAndQueue;
10
10
  exports.getTopicArnByName = getTopicArnByName;
11
11
  const client_sns_1 = require("@aws-sdk/client-sns");
12
12
  const client_sns_2 = require("@aws-sdk/client-sns");
13
+ const node_core_1 = require("@lokalise/node-core");
13
14
  const sqs_1 = require("@message-queue-toolkit/sqs");
14
15
  const snsAttributeUtils_1 = require("./snsAttributeUtils");
16
+ const stsUtils_1 = require("./stsUtils");
15
17
  async function getTopicAttributes(snsClient, topicArn) {
16
18
  const command = new client_sns_2.GetTopicAttributesCommand({
17
19
  TopicArn: topicArn,
@@ -58,13 +60,35 @@ async function getSubscriptionAttributes(snsClient, subscriptionArn) {
58
60
  throw err;
59
61
  }
60
62
  }
61
- async function assertTopic(snsClient, topicOptions, extraParams) {
62
- const command = new client_sns_2.CreateTopicCommand(topicOptions);
63
- const response = await snsClient.send(command);
64
- if (!response.TopicArn) {
65
- throw new Error('No topic arn in response');
63
+ async function assertTopic(snsClient, stsClient, topicOptions, extraParams) {
64
+ let topicArn;
65
+ try {
66
+ const command = new client_sns_2.CreateTopicCommand(topicOptions);
67
+ const response = await snsClient.send(command);
68
+ if (!response.TopicArn)
69
+ throw new Error('No topic arn in response');
70
+ topicArn = response.TopicArn;
71
+ }
72
+ catch (error) {
73
+ if (!(0, node_core_1.isError)(error))
74
+ throw error;
75
+ // To build ARN we need topic name and error should be "topic already exist with different tags"
76
+ if (!topicOptions.Name || !isTopicAlreadyExistWithDifferentTagsError(error))
77
+ throw error;
78
+ topicArn = await (0, stsUtils_1.buildTopicArn)(stsClient, topicOptions.Name);
79
+ if (!extraParams?.forceTagUpdate) {
80
+ const currentTags = await snsClient.send(new client_sns_1.ListTagsForResourceCommand({ ResourceArn: topicArn }));
81
+ throw new node_core_1.InternalError({
82
+ message: `${topicOptions.Name} - ${error.message}`,
83
+ details: {
84
+ currentTags: JSON.stringify(currentTags),
85
+ newTags: JSON.stringify(topicOptions.Tags),
86
+ },
87
+ errorCode: 'SNS_TOPIC_ALREADY_EXISTS_WITH_DIFFERENT_TAGS',
88
+ cause: error,
89
+ });
90
+ }
66
91
  }
67
- const topicArn = response.TopicArn;
68
92
  if (extraParams?.queueUrlsWithSubscribePermissionsPrefix || extraParams?.allowedSourceOwner) {
69
93
  const setTopicAttributesCommand = new client_sns_2.SetTopicAttributesCommand({
70
94
  TopicArn: topicArn,
@@ -77,17 +101,23 @@ async function assertTopic(snsClient, topicOptions, extraParams) {
77
101
  });
78
102
  await snsClient.send(setTopicAttributesCommand);
79
103
  }
104
+ if (extraParams?.forceTagUpdate && topicOptions.Tags) {
105
+ const tagTopicCommand = new client_sns_1.TagResourceCommand({
106
+ ResourceArn: topicArn,
107
+ Tags: topicOptions.Tags,
108
+ });
109
+ await snsClient.send(tagTopicCommand);
110
+ }
80
111
  return topicArn;
81
112
  }
82
- async function deleteTopic(client, topicName) {
113
+ async function deleteTopic(snsClient, stsClient, topicName) {
83
114
  try {
84
- const topicArn = await assertTopic(client, {
115
+ const topicArn = await assertTopic(snsClient, stsClient, {
85
116
  Name: topicName,
86
117
  });
87
- const command = new client_sns_2.DeleteTopicCommand({
118
+ await snsClient.send(new client_sns_2.DeleteTopicCommand({
88
119
  TopicArn: topicArn,
89
- });
90
- await client.send(command);
120
+ }));
91
121
  }
92
122
  catch (_) {
93
123
  // we don't care it operation has failed
@@ -141,4 +171,14 @@ async function getTopicArnByName(snsClient, topicName) {
141
171
  */
142
172
  const calculateOutgoingMessageSize = (message) => (0, sqs_1.calculateOutgoingMessageSize)(message);
143
173
  exports.calculateOutgoingMessageSize = calculateOutgoingMessageSize;
174
+ const isTopicAlreadyExistWithDifferentTagsError = (error) => !!error &&
175
+ (0, node_core_1.isError)(error) &&
176
+ 'Error' in error &&
177
+ !!error.Error &&
178
+ typeof error.Error === 'object' &&
179
+ 'Code' in error.Error &&
180
+ 'Message' in error.Error &&
181
+ typeof error.Error.Message === 'string' &&
182
+ error.Error.Code === 'InvalidParameter' &&
183
+ error.Error.Message.includes('already exists with different tags');
144
184
  //# sourceMappingURL=snsUtils.js.map
@@ -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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"}
@@ -0,0 +1,8 @@
1
+ import { type STSClient } from '@aws-sdk/client-sts';
2
+ /**
3
+ * Manually builds the ARN of a topic based on the current AWS account and the topic name.
4
+ * It follows the following pattern: arn:aws:sns:<region>:<account-id>:<topic-name>
5
+ * Doc -> https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html
6
+ */
7
+ export declare const buildTopicArn: (client: STSClient, topicName: string) => Promise<string>;
8
+ export declare const clearCachedCallerIdentity: () => void;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clearCachedCallerIdentity = exports.buildTopicArn = void 0;
4
+ const client_sts_1 = require("@aws-sdk/client-sts");
5
+ let callerIdentityPromise;
6
+ let callerIdentityCached;
7
+ /**
8
+ * Manually builds the ARN of a topic based on the current AWS account and the topic name.
9
+ * It follows the following pattern: arn:aws:sns:<region>:<account-id>:<topic-name>
10
+ * Doc -> https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html
11
+ */
12
+ const buildTopicArn = async (client, topicName) => {
13
+ const identityResponse = await getAndCacheCallerIdentity(client);
14
+ const region = typeof client.config.region === 'string' ? client.config.region : await client.config.region();
15
+ return `arn:aws:sns:${region}:${identityResponse.Account}:${topicName}`;
16
+ };
17
+ exports.buildTopicArn = buildTopicArn;
18
+ const clearCachedCallerIdentity = () => {
19
+ callerIdentityPromise = undefined;
20
+ callerIdentityCached = undefined;
21
+ };
22
+ exports.clearCachedCallerIdentity = clearCachedCallerIdentity;
23
+ const getAndCacheCallerIdentity = async (client) => {
24
+ if (!callerIdentityCached) {
25
+ if (!callerIdentityPromise) {
26
+ callerIdentityPromise = client.send(new client_sts_1.GetCallerIdentityCommand({})).then((response) => {
27
+ callerIdentityCached = response;
28
+ });
29
+ }
30
+ await callerIdentityPromise;
31
+ callerIdentityPromise = undefined;
32
+ }
33
+ return callerIdentityCached;
34
+ };
35
+ //# sourceMappingURL=stsUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stsUtils.js","sourceRoot":"","sources":["../../../lib/utils/stsUtils.ts"],"names":[],"mappings":";;;AAAA,oDAI4B;AAE5B,IAAI,qBAAgD,CAAA;AACpD,IAAI,oBAAgE,CAAA;AAEpE;;;;GAIG;AACI,MAAM,aAAa,GAAG,KAAK,EAAE,MAAiB,EAAE,SAAiB,EAAE,EAAE;IAC1E,MAAM,gBAAgB,GAAG,MAAM,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAChE,MAAM,MAAM,GACV,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;IAEhG,OAAO,eAAe,MAAM,IAAI,gBAAgB,CAAC,OAAO,IAAI,SAAS,EAAE,CAAA;AACzE,CAAC,CAAA;AANY,QAAA,aAAa,iBAMzB;AAEM,MAAM,yBAAyB,GAAG,GAAG,EAAE;IAC5C,qBAAqB,GAAG,SAAS,CAAA;IACjC,oBAAoB,GAAG,SAAS,CAAA;AAClC,CAAC,CAAA;AAHY,QAAA,yBAAyB,6BAGrC;AAED,MAAM,yBAAyB,GAAG,KAAK,EACrC,MAAiB,EACwB,EAAE;IAC3C,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC3B,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,qCAAwB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACtF,oBAAoB,GAAG,QAAQ,CAAA;YACjC,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,qBAAqB,CAAA;QAC3B,qBAAqB,GAAG,SAAS,CAAA;IACnC,CAAC;IAED,OAAO,oBAAqB,CAAA;AAC9B,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@message-queue-toolkit/sns",
3
- "version": "17.3.0",
3
+ "version": "18.0.1",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "description": "SNS adapter for message-queue-toolkit",
@@ -32,6 +32,7 @@
32
32
  "peerDependencies": {
33
33
  "@aws-sdk/client-sns": "^3.632.0",
34
34
  "@aws-sdk/client-sqs": "^3.632.0",
35
+ "@aws-sdk/client-sts": "^3.632.0",
35
36
  "@message-queue-toolkit/core": ">=15.0.0",
36
37
  "@message-queue-toolkit/schemas": ">=2.0.0",
37
38
  "@message-queue-toolkit/sqs": "^17.0.0"
@@ -40,11 +41,11 @@
40
41
  "@aws-sdk/client-s3": "^3.670.0",
41
42
  "@aws-sdk/client-sns": "^3.670.0",
42
43
  "@aws-sdk/client-sqs": "^3.670.0",
44
+ "@biomejs/biome": "1.9.4",
45
+ "@kibertoad/biome-config": "^1.2.1",
43
46
  "@message-queue-toolkit/core": "*",
44
47
  "@message-queue-toolkit/s3-payload-store": "*",
45
48
  "@message-queue-toolkit/sqs": "*",
46
- "@biomejs/biome": "1.9.3",
47
- "@kibertoad/biome-config": "^1.2.1",
48
49
  "@types/node": "^22.7.5",
49
50
  "@vitest/coverage-v8": "^2.1.2",
50
51
  "awilix": "^12.0.1",