@message-queue-toolkit/sns 21.1.1 → 22.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.
Files changed (74) hide show
  1. package/dist/errors/SnsConsumerErrorResolver.js +32 -0
  2. package/dist/errors/SnsConsumerErrorResolver.js.map +1 -0
  3. package/dist/index.d.ts +19 -19
  4. package/dist/index.js +15 -39
  5. package/dist/index.js.map +1 -1
  6. package/dist/{lib/sns → sns}/AbstractSnsPublisher.d.ts +2 -2
  7. package/dist/{lib/sns → sns}/AbstractSnsPublisher.js +12 -16
  8. package/dist/sns/AbstractSnsPublisher.js.map +1 -0
  9. package/dist/{lib/sns → sns}/AbstractSnsService.d.ts +1 -1
  10. package/dist/sns/AbstractSnsService.js +28 -0
  11. package/dist/sns/AbstractSnsService.js.map +1 -0
  12. package/dist/{lib/sns → sns}/AbstractSnsSqsConsumer.d.ts +2 -2
  13. package/dist/{lib/sns → sns}/AbstractSnsSqsConsumer.js +8 -12
  14. package/dist/sns/AbstractSnsSqsConsumer.js.map +1 -0
  15. package/dist/{lib/sns → sns}/CommonSnsPublisherFactory.d.ts +3 -3
  16. package/dist/sns/CommonSnsPublisherFactory.js +9 -0
  17. package/dist/sns/CommonSnsPublisherFactory.js.map +1 -0
  18. package/dist/{lib/sns → sns}/SnsPublisherManager.d.ts +4 -5
  19. package/dist/{lib/sns → sns}/SnsPublisherManager.js +4 -8
  20. package/dist/sns/SnsPublisherManager.js.map +1 -0
  21. package/dist/{lib/sns → sns}/fakes/FakeConsumer.d.ts +2 -2
  22. package/dist/{lib/sns → sns}/fakes/FakeConsumer.js +4 -8
  23. package/dist/sns/fakes/FakeConsumer.js.map +1 -0
  24. package/dist/types/MessageTypes.js +19 -0
  25. package/dist/types/MessageTypes.js.map +1 -0
  26. package/dist/{lib/types → types}/TopicTypes.d.ts +1 -1
  27. package/dist/types/TopicTypes.js +8 -0
  28. package/dist/types/TopicTypes.js.map +1 -0
  29. package/dist/{lib/utils → utils}/snsAttributeUtils.js +2 -7
  30. package/dist/utils/snsAttributeUtils.js.map +1 -0
  31. package/dist/{lib/utils → utils}/snsInitter.d.ts +3 -3
  32. package/dist/{lib/utils → utils}/snsInitter.js +33 -34
  33. package/dist/utils/snsInitter.js.map +1 -0
  34. package/dist/utils/snsMessageDeserializer.js +14 -0
  35. package/dist/utils/snsMessageDeserializer.js.map +1 -0
  36. package/dist/{lib/utils → utils}/snsMessageReader.js +1 -4
  37. package/dist/utils/snsMessageReader.js.map +1 -0
  38. package/dist/{lib/utils → utils}/snsSubscriber.d.ts +3 -4
  39. package/dist/{lib/utils → utils}/snsSubscriber.js +14 -17
  40. package/dist/utils/snsSubscriber.js.map +1 -0
  41. package/dist/{lib/utils → utils}/snsUtils.d.ts +1 -1
  42. package/dist/{lib/utils → utils}/snsUtils.js +38 -42
  43. package/dist/utils/snsUtils.js.map +1 -0
  44. package/dist/{lib/utils → utils}/stsUtils.js +5 -9
  45. package/dist/utils/stsUtils.js.map +1 -0
  46. package/package.json +78 -64
  47. package/dist/lib/errors/SnsConsumerErrorResolver.js +0 -36
  48. package/dist/lib/errors/SnsConsumerErrorResolver.js.map +0 -1
  49. package/dist/lib/sns/AbstractSnsPublisher.js.map +0 -1
  50. package/dist/lib/sns/AbstractSnsService.js +0 -32
  51. package/dist/lib/sns/AbstractSnsService.js.map +0 -1
  52. package/dist/lib/sns/AbstractSnsSqsConsumer.js.map +0 -1
  53. package/dist/lib/sns/CommonSnsPublisherFactory.js +0 -14
  54. package/dist/lib/sns/CommonSnsPublisherFactory.js.map +0 -1
  55. package/dist/lib/sns/SnsPublisherManager.js.map +0 -1
  56. package/dist/lib/sns/fakes/FakeConsumer.js.map +0 -1
  57. package/dist/lib/types/MessageTypes.js +0 -23
  58. package/dist/lib/types/MessageTypes.js.map +0 -1
  59. package/dist/lib/types/TopicTypes.js +0 -12
  60. package/dist/lib/types/TopicTypes.js.map +0 -1
  61. package/dist/lib/utils/snsAttributeUtils.js.map +0 -1
  62. package/dist/lib/utils/snsInitter.js.map +0 -1
  63. package/dist/lib/utils/snsMessageDeserializer.js +0 -18
  64. package/dist/lib/utils/snsMessageDeserializer.js.map +0 -1
  65. package/dist/lib/utils/snsMessageReader.js.map +0 -1
  66. package/dist/lib/utils/snsSubscriber.js.map +0 -1
  67. package/dist/lib/utils/snsUtils.js.map +0 -1
  68. package/dist/lib/utils/stsUtils.js.map +0 -1
  69. /package/dist/{lib/errors → errors}/SnsConsumerErrorResolver.d.ts +0 -0
  70. /package/dist/{lib/types → types}/MessageTypes.d.ts +0 -0
  71. /package/dist/{lib/utils → utils}/snsAttributeUtils.d.ts +0 -0
  72. /package/dist/{lib/utils → utils}/snsMessageDeserializer.d.ts +0 -0
  73. /package/dist/{lib/utils → utils}/snsMessageReader.d.ts +0 -0
  74. /package/dist/{lib/utils → utils}/stsUtils.d.ts +0 -0
@@ -1,17 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.initSnsSqs = initSnsSqs;
4
- exports.deleteSnsSqs = deleteSnsSqs;
5
- exports.deleteSns = deleteSns;
6
- exports.initSns = initSns;
7
- const core_1 = require("@message-queue-toolkit/core");
8
- const sqs_1 = require("@message-queue-toolkit/sqs");
9
- const sqs_2 = require("@message-queue-toolkit/sqs");
10
- const TopicTypes_1 = require("../types/TopicTypes");
11
- const snsSubscriber_1 = require("./snsSubscriber");
12
- const snsUtils_1 = require("./snsUtils");
1
+ import { isProduction } from '@message-queue-toolkit/core';
2
+ import { resolveQueueUrlFromLocatorConfig, } from '@message-queue-toolkit/sqs';
3
+ import { deleteQueue, getQueueAttributes } from '@message-queue-toolkit/sqs';
4
+ import { isCreateTopicCommand } from "../types/TopicTypes.js";
5
+ import { subscribeToTopic } from "./snsSubscriber.js";
6
+ import { assertTopic, deleteSubscription, deleteTopic, getTopicArnByName, getTopicAttributes, } from "./snsUtils.js";
13
7
  // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: <explanation>
14
- async function initSnsSqs(sqsClient, snsClient, stsClient, locatorConfig, creationConfig, subscriptionConfig, extraParams) {
8
+ export async function initSnsSqs(sqsClient, snsClient, stsClient, locatorConfig, creationConfig, subscriptionConfig, extraParams) {
15
9
  if (!locatorConfig?.subscriptionArn) {
16
10
  if (!creationConfig?.topic && !locatorConfig?.topicArn && !locatorConfig?.topicName) {
17
11
  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.');
@@ -29,7 +23,7 @@ async function initSnsSqs(sqsClient, snsClient, stsClient, locatorConfig, creati
29
23
  ...locatorConfig,
30
24
  ...creationConfig.topic,
31
25
  };
32
- const { subscriptionArn, topicArn, queueUrl } = await (0, snsSubscriber_1.subscribeToTopic)(sqsClient, snsClient, stsClient, creationConfig.queue, topicResolutionOptions, subscriptionConfig, {
26
+ const { subscriptionArn, topicArn, queueUrl } = await subscribeToTopic(sqsClient, snsClient, stsClient, creationConfig.queue, topicResolutionOptions, subscriptionConfig, {
33
27
  updateAttributesIfExists: creationConfig.updateAttributesIfExists,
34
28
  queueUrlsWithSubscribePermissionsPrefix: creationConfig.queueUrlsWithSubscribePermissionsPrefix,
35
29
  allowedSourceOwner: creationConfig.allowedSourceOwner,
@@ -47,27 +41,29 @@ async function initSnsSqs(sqsClient, snsClient, stsClient, locatorConfig, creati
47
41
  queueUrl,
48
42
  };
49
43
  }
50
- const queueUrl = await (0, sqs_1.resolveQueueUrlFromLocatorConfig)(sqsClient, locatorConfig);
44
+ const queueUrl = await resolveQueueUrlFromLocatorConfig(sqsClient, locatorConfig);
51
45
  const checkPromises = [];
52
46
  // Check for existing resources, using the locators
53
- const subscriptionTopicArn = locatorConfig.topicArn ?? (await (0, snsUtils_1.getTopicArnByName)(snsClient, locatorConfig.topicName));
54
- const topicPromise = (0, snsUtils_1.getTopicAttributes)(snsClient, subscriptionTopicArn);
47
+ const subscriptionTopicArn = locatorConfig.topicArn ?? (await getTopicArnByName(snsClient, locatorConfig.topicName));
48
+ const topicPromise = getTopicAttributes(snsClient, subscriptionTopicArn);
55
49
  checkPromises.push(topicPromise);
56
- const queuePromise = (0, sqs_2.getQueueAttributes)(sqsClient, queueUrl);
50
+ const queuePromise = getQueueAttributes(sqsClient, queueUrl);
57
51
  checkPromises.push(queuePromise);
58
52
  const [topicCheckResult, queueCheckResult] = await Promise.all(checkPromises);
59
53
  if (queueCheckResult?.error === 'not_found') {
60
54
  throw new Error(`Queue with queueUrl ${queueUrl} does not exist.`);
61
55
  }
62
- if (topicCheckResult.error === 'not_found') {
56
+ if (topicCheckResult?.error === 'not_found') {
63
57
  throw new Error(`Topic with topicArn ${locatorConfig.topicArn} does not exist.`);
64
58
  }
65
59
  let queueName;
66
60
  if (queueUrl) {
67
61
  const splitUrl = queueUrl.split('/');
62
+ // biome-ignore lint/style/noNonNullAssertion: <explanation>
68
63
  queueName = splitUrl[splitUrl.length - 1];
69
64
  }
70
65
  else {
66
+ // biome-ignore lint/style/noNonNullAssertion: <explanation>
71
67
  queueName = creationConfig.queue.QueueName;
72
68
  }
73
69
  return {
@@ -77,47 +73,49 @@ async function initSnsSqs(sqsClient, snsClient, stsClient, locatorConfig, creati
77
73
  queueName,
78
74
  };
79
75
  }
80
- async function deleteSnsSqs(sqsClient, snsClient, stsClient, deletionConfig, queueConfiguration, topicConfiguration, subscriptionConfiguration, extraParams, topicLocator) {
76
+ export async function deleteSnsSqs(sqsClient, snsClient, stsClient, deletionConfig, queueConfiguration, topicConfiguration, subscriptionConfiguration, extraParams, topicLocator) {
81
77
  if (!deletionConfig.deleteIfExists) {
82
78
  return;
83
79
  }
84
- if ((0, core_1.isProduction)() && !deletionConfig.forceDeleteInProduction) {
80
+ if (isProduction() && !deletionConfig.forceDeleteInProduction) {
85
81
  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');
86
82
  }
87
- const { subscriptionArn } = await (0, snsSubscriber_1.subscribeToTopic)(sqsClient, snsClient, stsClient, queueConfiguration, topicConfiguration ?? topicLocator, subscriptionConfiguration, extraParams);
83
+ const { subscriptionArn } = await subscribeToTopic(sqsClient, snsClient, stsClient, queueConfiguration,
84
+ // biome-ignore lint/style/noNonNullAssertion: <explanation>
85
+ topicConfiguration ?? topicLocator, subscriptionConfiguration, extraParams);
88
86
  if (!subscriptionArn) {
89
87
  throw new Error('subscriptionArn must be set for automatic deletion');
90
88
  }
91
- await (0, sqs_2.deleteQueue)(sqsClient,
92
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
89
+ await deleteQueue(sqsClient,
90
+ // biome-ignore lint/style/noNonNullAssertion: <explanation>
93
91
  queueConfiguration.QueueName, deletionConfig.waitForConfirmation !== false);
94
92
  if (topicConfiguration) {
95
- const topicName = (0, TopicTypes_1.isCreateTopicCommand)(topicConfiguration)
93
+ const topicName = isCreateTopicCommand(topicConfiguration)
96
94
  ? topicConfiguration.Name
97
95
  : 'undefined';
98
96
  if (!topicName) {
99
97
  throw new Error('Failed to resolve topic name');
100
98
  }
101
- await (0, snsUtils_1.deleteTopic)(snsClient, stsClient, topicName);
99
+ await deleteTopic(snsClient, stsClient, topicName);
102
100
  }
103
- await (0, snsUtils_1.deleteSubscription)(snsClient, subscriptionArn);
101
+ await deleteSubscription(snsClient, subscriptionArn);
104
102
  }
105
- async function deleteSns(snsClient, stsClient, deletionConfig, creationConfig) {
103
+ export async function deleteSns(snsClient, stsClient, deletionConfig, creationConfig) {
106
104
  if (!deletionConfig.deleteIfExists) {
107
105
  return;
108
106
  }
109
- if ((0, core_1.isProduction)() && !deletionConfig.forceDeleteInProduction) {
107
+ if (isProduction() && !deletionConfig.forceDeleteInProduction) {
110
108
  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');
111
109
  }
112
110
  if (!creationConfig.topic?.Name) {
113
111
  throw new Error('topic.Name must be set for automatic deletion');
114
112
  }
115
- await (0, snsUtils_1.deleteTopic)(snsClient, stsClient, creationConfig.topic.Name);
113
+ await deleteTopic(snsClient, stsClient, creationConfig.topic.Name);
116
114
  }
117
- async function initSns(snsClient, stsClient, locatorConfig, creationConfig) {
115
+ export async function initSns(snsClient, stsClient, locatorConfig, creationConfig) {
118
116
  if (locatorConfig) {
119
- const topicArn = locatorConfig.topicArn ?? (await (0, snsUtils_1.getTopicArnByName)(snsClient, locatorConfig.topicName));
120
- const checkResult = await (0, snsUtils_1.getTopicAttributes)(snsClient, topicArn);
117
+ const topicArn = locatorConfig.topicArn ?? (await getTopicArnByName(snsClient, locatorConfig.topicName));
118
+ const checkResult = await getTopicAttributes(snsClient, topicArn);
121
119
  if (checkResult.error === 'not_found') {
122
120
  throw new Error(`Topic with topicArn ${locatorConfig.topicArn} does not exist.`);
123
121
  }
@@ -129,7 +127,8 @@ async function initSns(snsClient, stsClient, locatorConfig, creationConfig) {
129
127
  if (!creationConfig) {
130
128
  throw new Error('When locatorConfig for the topic is not specified, creationConfig of the topic is mandatory');
131
129
  }
132
- const topicArn = await (0, snsUtils_1.assertTopic)(snsClient, stsClient, creationConfig.topic, {
130
+ // biome-ignore lint/style/noNonNullAssertion: <explanation>
131
+ const topicArn = await assertTopic(snsClient, stsClient, creationConfig.topic, {
133
132
  queueUrlsWithSubscribePermissionsPrefix: creationConfig.queueUrlsWithSubscribePermissionsPrefix,
134
133
  allowedSourceOwner: creationConfig.allowedSourceOwner,
135
134
  forceTagUpdate: creationConfig.forceTagUpdate,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snsInitter.js","sourceRoot":"","sources":["../../lib/utils/snsInitter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { parseMessage } from '@message-queue-toolkit/core';
2
+ import { SNS_MESSAGE_BODY_SCHEMA } from "../types/MessageTypes.js";
3
+ export const deserializeSNSMessage = (message, type, errorProcessor) => {
4
+ try {
5
+ const snsMessage = SNS_MESSAGE_BODY_SCHEMA.parse(JSON.parse(message.Body));
6
+ return parseMessage(JSON.parse(snsMessage.Message), type, errorProcessor);
7
+ }
8
+ catch (exception) {
9
+ return {
10
+ error: errorProcessor.processError(exception),
11
+ };
12
+ }
13
+ };
14
+ //# sourceMappingURL=snsMessageDeserializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snsMessageDeserializer.js","sourceRoot":"","sources":["../../lib/utils/snsMessageDeserializer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAI1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAElE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,OAAmB,EACnB,IAAgB,EAChB,cAA6B,EACsD,EAAE;IACrF,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QAE1E,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;IAC3E,CAAC;IAAC,OAAO,SAAS,EAAE,CAAC;QACnB,OAAO;YACL,KAAK,EAAE,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC;SAC9C,CAAA;IACH,CAAC;AACH,CAAC,CAAA"}
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.readSnsMessage = readSnsMessage;
4
- function readSnsMessage(message, errorProcessor) {
1
+ export function readSnsMessage(message, errorProcessor) {
5
2
  try {
6
3
  const snsMessage = JSON.parse(message.Body);
7
4
  const messagePayload = JSON.parse(snsMessage.Message);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snsMessageReader.js","sourceRoot":"","sources":["../../lib/utils/snsMessageReader.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,cAAc,CAC5B,OAAmB,EACnB,cAA6B;IAE7B,IAAI,CAAC;QACH,MAAM,UAAU,GAA0B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAClE,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAErD,OAAO;YACL,MAAM,EAAE;gBACN,IAAI,EAAE,cAAc;gBACpB,UAAU,EAAE,UAAU,CAAC,iBAAiB;aACzC;SACF,CAAA;IACH,CAAC;IAAC,OAAO,SAAS,EAAE,CAAC;QACnB,OAAO;YACL,KAAK,EAAE,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC;SAC9C,CAAA;IACH,CAAC;AACH,CAAC"}
@@ -1,11 +1,10 @@
1
- import type { SNSClient } from '@aws-sdk/client-sns';
2
- import type { SubscribeCommandInput } from '@aws-sdk/client-sns/dist-types/commands/SubscribeCommand';
1
+ import type { SNSClient, SubscribeCommandInput } from '@aws-sdk/client-sns';
3
2
  import type { CreateQueueCommandInput, SQSClient } from '@aws-sdk/client-sqs';
4
3
  import type { ExtraParams } from '@message-queue-toolkit/core';
5
4
  import type { ExtraSQSCreationParams } from '@message-queue-toolkit/sqs';
6
- import type { ExtraSNSCreationParams } from '../sns/AbstractSnsService';
5
+ import type { ExtraSNSCreationParams } from '../sns/AbstractSnsService.ts';
7
6
  import type { STSClient } from '@aws-sdk/client-sts';
8
- import { type TopicResolutionOptions } from '../types/TopicTypes';
7
+ import { type TopicResolutionOptions } from '../types/TopicTypes.ts';
9
8
  export type SNSSubscriptionOptions = Omit<SubscribeCommandInput, 'TopicArn' | 'Endpoint' | 'Protocol' | 'ReturnSubscriptionArn'> & {
10
9
  updateAttributesIfExists: boolean;
11
10
  };
@@ -1,34 +1,31 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.subscribeToTopic = subscribeToTopic;
4
- const client_sns_1 = require("@aws-sdk/client-sns");
5
- const sqs_1 = require("@message-queue-toolkit/sqs");
6
- const TopicTypes_1 = require("../types/TopicTypes");
7
- const snsUtils_1 = require("./snsUtils");
1
+ import { SetSubscriptionAttributesCommand, SubscribeCommand } from '@aws-sdk/client-sns';
2
+ import { assertQueue } from '@message-queue-toolkit/sqs';
3
+ import { isCreateTopicCommand, isSNSTopicLocatorType, } from "../types/TopicTypes.js";
4
+ import { assertTopic, findSubscriptionByTopicAndQueue, getTopicArnByName } from "./snsUtils.js";
8
5
  async function resolveTopicArnToSubscribeTo(snsClient, stsClient, topicConfiguration, extraParams) {
9
6
  //If topicArn is present, let's use it and return early.
10
- if ((0, TopicTypes_1.isSNSTopicLocatorType)(topicConfiguration) && topicConfiguration.topicArn) {
7
+ if (isSNSTopicLocatorType(topicConfiguration) && topicConfiguration.topicArn) {
11
8
  return topicConfiguration.topicArn;
12
9
  }
13
10
  //If input configuration is capable of creating a topic, let's create it and return its ARN.
14
- if ((0, TopicTypes_1.isCreateTopicCommand)(topicConfiguration)) {
15
- return await (0, snsUtils_1.assertTopic)(snsClient, stsClient, topicConfiguration, {
11
+ if (isCreateTopicCommand(topicConfiguration)) {
12
+ return await assertTopic(snsClient, stsClient, topicConfiguration, {
16
13
  queueUrlsWithSubscribePermissionsPrefix: extraParams?.queueUrlsWithSubscribePermissionsPrefix,
17
14
  allowedSourceOwner: extraParams?.allowedSourceOwner,
18
15
  forceTagUpdate: extraParams?.forceTagUpdate,
19
16
  });
20
17
  }
21
18
  //Last option: let's not create a topic but resolve a ARN based on the desired topic name.
22
- return await (0, snsUtils_1.getTopicArnByName)(snsClient, topicConfiguration.topicName);
19
+ return await getTopicArnByName(snsClient, topicConfiguration.topicName);
23
20
  }
24
- async function subscribeToTopic(sqsClient, snsClient, stsClient, queueConfiguration, topicConfiguration, subscriptionConfiguration, extraParams) {
21
+ export async function subscribeToTopic(sqsClient, snsClient, stsClient, queueConfiguration, topicConfiguration, subscriptionConfiguration, extraParams) {
25
22
  const topicArn = await resolveTopicArnToSubscribeTo(snsClient, stsClient, topicConfiguration, extraParams);
26
- const { queueUrl, queueArn } = await (0, sqs_1.assertQueue)(sqsClient, queueConfiguration, {
23
+ const { queueUrl, queueArn } = await assertQueue(sqsClient, queueConfiguration, {
27
24
  topicArnsWithPublishPermissionsPrefix: extraParams?.topicArnsWithPublishPermissionsPrefix,
28
25
  updateAttributesIfExists: extraParams?.updateAttributesIfExists,
29
26
  forceTagUpdate: extraParams?.forceTagUpdate,
30
27
  });
31
- const subscribeCommand = new client_sns_1.SubscribeCommand({
28
+ const subscribeCommand = new SubscribeCommand({
32
29
  TopicArn: topicArn,
33
30
  Endpoint: queueArn,
34
31
  Protocol: 'sqs',
@@ -47,7 +44,7 @@ async function subscribeToTopic(sqsClient, snsClient, stsClient, queueConfigurat
47
44
  catch (err) {
48
45
  const logger = extraParams?.logger ?? console;
49
46
  // @ts-ignore
50
- logger.error(`Error while creating subscription for queue "${queueConfiguration.QueueName}", topic "${(0, TopicTypes_1.isCreateTopicCommand)(topicConfiguration)
47
+ logger.error(`Error while creating subscription for queue "${queueConfiguration.QueueName}", topic "${isCreateTopicCommand(topicConfiguration)
51
48
  ? topicConfiguration.Name
52
49
  : topicConfiguration.topicName}": ${err.message}`);
53
50
  if (subscriptionConfiguration.updateAttributesIfExists &&
@@ -68,12 +65,12 @@ async function subscribeToTopic(sqsClient, snsClient, stsClient, queueConfigurat
68
65
  }
69
66
  }
70
67
  async function tryToUpdateSubscription(snsClient, topicArn, queueArn, subscriptionConfiguration) {
71
- const subscription = await (0, snsUtils_1.findSubscriptionByTopicAndQueue)(snsClient, topicArn, queueArn);
68
+ const subscription = await findSubscriptionByTopicAndQueue(snsClient, topicArn, queueArn);
72
69
  if (!subscription || !subscriptionConfiguration.Attributes) {
73
70
  return undefined;
74
71
  }
75
72
  const setSubscriptionAttributesCommands = Object.entries(subscriptionConfiguration.Attributes).map(([key, value]) => {
76
- return new client_sns_1.SetSubscriptionAttributesCommand({
73
+ return new SetSubscriptionAttributesCommand({
77
74
  SubscriptionArn: subscription.SubscriptionArn,
78
75
  AttributeName: key,
79
76
  AttributeValue: value,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snsSubscriber.js","sourceRoot":"","sources":["../../lib/utils/snsSubscriber.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { type CreateTopicCommandInput, type SNSClient } from '@aws-sdk/client-sns';
2
2
  import { type Either } from '@lokalise/node-core';
3
- import type { ExtraSNSCreationParams } from '../sns/AbstractSnsService';
3
+ import type { ExtraSNSCreationParams } from '../sns/AbstractSnsService.ts';
4
4
  import type { STSClient } from '@aws-sdk/client-sts';
5
5
  type AttributesResult = {
6
6
  attributes?: Record<string, string>;
@@ -1,21 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateOutgoingMessageSize = void 0;
4
- exports.getTopicAttributes = getTopicAttributes;
5
- exports.getSubscriptionAttributes = getSubscriptionAttributes;
6
- exports.assertTopic = assertTopic;
7
- exports.deleteTopic = deleteTopic;
8
- exports.deleteSubscription = deleteSubscription;
9
- exports.findSubscriptionByTopicAndQueue = findSubscriptionByTopicAndQueue;
10
- exports.getTopicArnByName = getTopicArnByName;
11
- const client_sns_1 = require("@aws-sdk/client-sns");
12
- const client_sns_2 = require("@aws-sdk/client-sns");
13
- const node_core_1 = require("@lokalise/node-core");
14
- const sqs_1 = require("@message-queue-toolkit/sqs");
15
- const snsAttributeUtils_1 = require("./snsAttributeUtils");
16
- const stsUtils_1 = require("./stsUtils");
17
- async function getTopicAttributes(snsClient, topicArn) {
18
- const command = new client_sns_2.GetTopicAttributesCommand({
1
+ import { ListTagsForResourceCommand, TagResourceCommand, paginateListTopics, } from '@aws-sdk/client-sns';
2
+ import { CreateTopicCommand, DeleteTopicCommand, GetSubscriptionAttributesCommand, GetTopicAttributesCommand, ListSubscriptionsByTopicCommand, SetTopicAttributesCommand, UnsubscribeCommand, } from '@aws-sdk/client-sns';
3
+ import { InternalError, isError } from '@lokalise/node-core';
4
+ import { calculateOutgoingMessageSize as sqsCalculateOutgoingMessageSize } from '@message-queue-toolkit/sqs';
5
+ import { generateTopicSubscriptionPolicy } from "./snsAttributeUtils.js";
6
+ import { buildTopicArn } from "./stsUtils.js";
7
+ export async function getTopicAttributes(snsClient, topicArn) {
8
+ const command = new GetTopicAttributesCommand({
19
9
  TopicArn: topicArn,
20
10
  });
21
11
  try {
@@ -37,8 +27,8 @@ async function getTopicAttributes(snsClient, topicArn) {
37
27
  throw err;
38
28
  }
39
29
  }
40
- async function getSubscriptionAttributes(snsClient, subscriptionArn) {
41
- const command = new client_sns_2.GetSubscriptionAttributesCommand({
30
+ export async function getSubscriptionAttributes(snsClient, subscriptionArn) {
31
+ const command = new GetSubscriptionAttributesCommand({
42
32
  SubscriptionArn: subscriptionArn,
43
33
  });
44
34
  try {
@@ -60,27 +50,34 @@ async function getSubscriptionAttributes(snsClient, subscriptionArn) {
60
50
  throw err;
61
51
  }
62
52
  }
63
- async function assertTopic(snsClient, stsClient, topicOptions, extraParams) {
53
+ export async function assertTopic(snsClient, stsClient, topicOptions, extraParams) {
64
54
  let topicArn;
65
55
  try {
66
- const command = new client_sns_2.CreateTopicCommand(topicOptions);
56
+ const command = new CreateTopicCommand(topicOptions);
67
57
  const response = await snsClient.send(command);
68
58
  if (!response.TopicArn)
69
59
  throw new Error('No topic arn in response');
70
60
  topicArn = response.TopicArn;
71
61
  }
72
62
  catch (error) {
73
- if (!(0, node_core_1.isError)(error))
63
+ if (!isError(error))
74
64
  throw error;
75
65
  // 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);
66
+ if (!topicOptions.Name || !isTopicAlreadyExistWithDifferentTagsError(error)) {
67
+ throw new InternalError({
68
+ message: `${topicOptions.Name} - ${error.message}`,
69
+ cause: error,
70
+ details: { topicName: topicOptions.Name },
71
+ errorCode: 'SNS_CREATE_TOPIC_COMMAND_UNEXPECTED_ERROR',
72
+ });
73
+ }
74
+ topicArn = await buildTopicArn(stsClient, topicOptions.Name);
79
75
  if (!extraParams?.forceTagUpdate) {
80
- const currentTags = await snsClient.send(new client_sns_1.ListTagsForResourceCommand({ ResourceArn: topicArn }));
81
- throw new node_core_1.InternalError({
76
+ const currentTags = await snsClient.send(new ListTagsForResourceCommand({ ResourceArn: topicArn }));
77
+ throw new InternalError({
82
78
  message: `${topicOptions.Name} - ${error.message}`,
83
79
  details: {
80
+ topicName: topicOptions.Name,
84
81
  currentTags: JSON.stringify(currentTags),
85
82
  newTags: JSON.stringify(topicOptions.Tags),
86
83
  },
@@ -90,10 +87,10 @@ async function assertTopic(snsClient, stsClient, topicOptions, extraParams) {
90
87
  }
91
88
  }
92
89
  if (extraParams?.queueUrlsWithSubscribePermissionsPrefix || extraParams?.allowedSourceOwner) {
93
- const setTopicAttributesCommand = new client_sns_2.SetTopicAttributesCommand({
90
+ const setTopicAttributesCommand = new SetTopicAttributesCommand({
94
91
  TopicArn: topicArn,
95
92
  AttributeName: 'Policy',
96
- AttributeValue: (0, snsAttributeUtils_1.generateTopicSubscriptionPolicy)({
93
+ AttributeValue: generateTopicSubscriptionPolicy({
97
94
  topicArn,
98
95
  allowedSqsQueueUrlPrefix: extraParams.queueUrlsWithSubscribePermissionsPrefix,
99
96
  allowedSourceOwner: extraParams.allowedSourceOwner,
@@ -102,7 +99,7 @@ async function assertTopic(snsClient, stsClient, topicOptions, extraParams) {
102
99
  await snsClient.send(setTopicAttributesCommand);
103
100
  }
104
101
  if (extraParams?.forceTagUpdate && topicOptions.Tags) {
105
- const tagTopicCommand = new client_sns_1.TagResourceCommand({
102
+ const tagTopicCommand = new TagResourceCommand({
106
103
  ResourceArn: topicArn,
107
104
  Tags: topicOptions.Tags,
108
105
  });
@@ -110,12 +107,12 @@ async function assertTopic(snsClient, stsClient, topicOptions, extraParams) {
110
107
  }
111
108
  return topicArn;
112
109
  }
113
- async function deleteTopic(snsClient, stsClient, topicName) {
110
+ export async function deleteTopic(snsClient, stsClient, topicName) {
114
111
  try {
115
112
  const topicArn = await assertTopic(snsClient, stsClient, {
116
113
  Name: topicName,
117
114
  });
118
- await snsClient.send(new client_sns_2.DeleteTopicCommand({
115
+ await snsClient.send(new DeleteTopicCommand({
119
116
  TopicArn: topicArn,
120
117
  }));
121
118
  }
@@ -123,8 +120,8 @@ async function deleteTopic(snsClient, stsClient, topicName) {
123
120
  // we don't care it operation has failed
124
121
  }
125
122
  }
126
- async function deleteSubscription(client, subscriptionArn) {
127
- const command = new client_sns_2.UnsubscribeCommand({
123
+ export async function deleteSubscription(client, subscriptionArn) {
124
+ const command = new UnsubscribeCommand({
128
125
  SubscriptionArn: subscriptionArn,
129
126
  });
130
127
  try {
@@ -134,8 +131,8 @@ async function deleteSubscription(client, subscriptionArn) {
134
131
  // we don't care it operation has failed
135
132
  }
136
133
  }
137
- async function findSubscriptionByTopicAndQueue(snsClient, topicArn, queueArn) {
138
- const listSubscriptionsCommand = new client_sns_2.ListSubscriptionsByTopicCommand({
134
+ export async function findSubscriptionByTopicAndQueue(snsClient, topicArn, queueArn) {
135
+ const listSubscriptionsCommand = new ListSubscriptionsByTopicCommand({
139
136
  TopicArn: topicArn,
140
137
  });
141
138
  const listSubscriptionResult = await snsClient.send(listSubscriptionsCommand);
@@ -143,12 +140,12 @@ async function findSubscriptionByTopicAndQueue(snsClient, topicArn, queueArn) {
143
140
  return entry.Endpoint === queueArn;
144
141
  });
145
142
  }
146
- async function getTopicArnByName(snsClient, topicName) {
143
+ export async function getTopicArnByName(snsClient, topicName) {
147
144
  if (!topicName) {
148
145
  throw new Error('topicName is not provided');
149
146
  }
150
147
  // Use paginator to automatically handle NextToken
151
- const paginator = (0, client_sns_1.paginateListTopics)({ client: snsClient }, {});
148
+ const paginator = paginateListTopics({ client: snsClient }, {});
152
149
  for await (const page of paginator) {
153
150
  for (const topic of page.Topics || []) {
154
151
  if (topic.TopicArn?.includes(topicName)) {
@@ -169,10 +166,9 @@ async function getTopicArnByName(snsClient, topicName) {
169
166
  *
170
167
  * A wrapper around the equivalent function in the SQS package.
171
168
  */
172
- const calculateOutgoingMessageSize = (message) => (0, sqs_1.calculateOutgoingMessageSize)(message);
173
- exports.calculateOutgoingMessageSize = calculateOutgoingMessageSize;
169
+ export const calculateOutgoingMessageSize = (message) => sqsCalculateOutgoingMessageSize(message);
174
170
  const isTopicAlreadyExistWithDifferentTagsError = (error) => !!error &&
175
- (0, node_core_1.isError)(error) &&
171
+ isError(error) &&
176
172
  'Error' in error &&
177
173
  !!error.Error &&
178
174
  typeof error.Error === 'object' &&
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snsUtils.js","sourceRoot":"","sources":["../../lib/utils/snsUtils.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,4 @@
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");
1
+ import { GetCallerIdentityCommand, } from '@aws-sdk/client-sts';
5
2
  let callerIdentityPromise;
6
3
  let callerIdentityCached;
7
4
  /**
@@ -9,27 +6,26 @@ let callerIdentityCached;
9
6
  * It follows the following pattern: arn:aws:sns:<region>:<account-id>:<topic-name>
10
7
  * Doc -> https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html
11
8
  */
12
- const buildTopicArn = async (client, topicName) => {
9
+ export const buildTopicArn = async (client, topicName) => {
13
10
  const identityResponse = await getAndCacheCallerIdentity(client);
14
11
  const region = typeof client.config.region === 'string' ? client.config.region : await client.config.region();
15
12
  return `arn:aws:sns:${region}:${identityResponse.Account}:${topicName}`;
16
13
  };
17
- exports.buildTopicArn = buildTopicArn;
18
- const clearCachedCallerIdentity = () => {
14
+ export const clearCachedCallerIdentity = () => {
19
15
  callerIdentityPromise = undefined;
20
16
  callerIdentityCached = undefined;
21
17
  };
22
- exports.clearCachedCallerIdentity = clearCachedCallerIdentity;
23
18
  const getAndCacheCallerIdentity = async (client) => {
24
19
  if (!callerIdentityCached) {
25
20
  if (!callerIdentityPromise) {
26
- callerIdentityPromise = client.send(new client_sts_1.GetCallerIdentityCommand({})).then((response) => {
21
+ callerIdentityPromise = client.send(new GetCallerIdentityCommand({})).then((response) => {
27
22
  callerIdentityCached = response;
28
23
  });
29
24
  }
30
25
  await callerIdentityPromise;
31
26
  callerIdentityPromise = undefined;
32
27
  }
28
+ // biome-ignore lint/style/noNonNullAssertion: <explanation>
33
29
  return callerIdentityCached;
34
30
  };
35
31
  //# sourceMappingURL=stsUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stsUtils.js","sourceRoot":"","sources":["../../lib/utils/stsUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,GAGzB,MAAM,qBAAqB,CAAA;AAE5B,IAAI,qBAAgD,CAAA;AACpD,IAAI,oBAAgE,CAAA;AAEpE;;;;GAIG;AACH,MAAM,CAAC,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;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,EAAE;IAC5C,qBAAqB,GAAG,SAAS,CAAA;IACjC,oBAAoB,GAAG,SAAS,CAAA;AAClC,CAAC,CAAA;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,wBAAwB,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,4DAA4D;IAC5D,OAAO,oBAAqB,CAAA;AAC9B,CAAC,CAAA"}