From 049de6a72a858f18cc38d360f53bd203b0e5644a Mon Sep 17 00:00:00 2001 From: Krzysztof Jamrog Date: Fri, 18 Apr 2025 16:07:21 +0200 Subject: [PATCH 1/4] Added queueName to SQS locator config --- packages/sns/lib/utils/snsInitter.ts | 28 +++----- packages/sns/package.json | 4 +- .../SnsSqsPermissionConsumer.spec.ts | 69 +++++++++++-------- packages/sqs/index.ts | 8 ++- packages/sqs/lib/sqs/AbstractSqsService.ts | 3 +- packages/sqs/lib/utils/sqsInitter.ts | 20 +++--- packages/sqs/lib/utils/sqsUtils.ts | 23 ++++++- packages/sqs/package.json | 2 +- .../consumers/SqsPermissionConsumer.spec.ts | 40 ++++++----- .../publishers/SqsPermissionPublisher.spec.ts | 32 ++++++--- 10 files changed, 140 insertions(+), 89 deletions(-) diff --git a/packages/sns/lib/utils/snsInitter.ts b/packages/sns/lib/utils/snsInitter.ts index ebaad77c..0f139b0a 100644 --- a/packages/sns/lib/utils/snsInitter.ts +++ b/packages/sns/lib/utils/snsInitter.ts @@ -2,7 +2,10 @@ import type { CreateTopicCommandInput, SNSClient } from '@aws-sdk/client-sns' import type { CreateQueueCommandInput, SQSClient } from '@aws-sdk/client-sqs' import type { DeletionConfig, ExtraParams } from '@message-queue-toolkit/core' import { isProduction } from '@message-queue-toolkit/core' -import type { SQSCreationConfig, SQSQueueLocatorType } from '@message-queue-toolkit/sqs' +import { + type SQSCreationConfig, + resolveQueueUrlFromLocatorConfig, +} from '@message-queue-toolkit/sqs' import { deleteQueue, getQueueAttributes } from '@message-queue-toolkit/sqs' import type { SNSCreationConfig, SNSTopicLocatorType } from '../sns/AbstractSnsService' @@ -86,11 +89,7 @@ export async function initSnsSqs( } } - if (!locatorConfig.queueUrl) { - throw new Error( - 'If locatorConfig.subscriptionArn is provided, you have to also provide locatorConfig.queueUrl', - ) - } + const queueUrl = await resolveQueueUrlFromLocatorConfig(sqsClient, locatorConfig) const checkPromises: Promise>[] = [] // Check for existing resources, using the locators @@ -99,26 +98,21 @@ export async function initSnsSqs( const topicPromise = getTopicAttributes(snsClient, subscriptionTopicArn) checkPromises.push(topicPromise) - if (locatorConfig.queueUrl) { - const queuePromise = getQueueAttributes( - sqsClient, - (locatorConfig as SQSQueueLocatorType).queueUrl, - ) - checkPromises.push(queuePromise) - } + const queuePromise = getQueueAttributes(sqsClient, queueUrl) + checkPromises.push(queuePromise) const [topicCheckResult, queueCheckResult] = await Promise.all(checkPromises) if (queueCheckResult?.error === 'not_found') { - throw new Error(`Queue with queueUrl ${locatorConfig.queueUrl} does not exist.`) + throw new Error(`Queue with queueUrl ${queueUrl} does not exist.`) } if (topicCheckResult.error === 'not_found') { throw new Error(`Topic with topicArn ${locatorConfig.topicArn} does not exist.`) } let queueName: string - if ((locatorConfig as SQSQueueLocatorType).queueUrl) { - const splitUrl = (locatorConfig as SQSQueueLocatorType).queueUrl.split('/') + if (queueUrl) { + const splitUrl = queueUrl.split('/') queueName = splitUrl[splitUrl.length - 1] } else { queueName = creationConfig!.queue.QueueName! @@ -127,7 +121,7 @@ export async function initSnsSqs( return { subscriptionArn: locatorConfig.subscriptionArn, topicArn: subscriptionTopicArn, - queueUrl: locatorConfig.queueUrl, + queueUrl, queueName, } } diff --git a/packages/sns/package.json b/packages/sns/package.json index 50e9bb2d..1384cc21 100644 --- a/packages/sns/package.json +++ b/packages/sns/package.json @@ -1,6 +1,6 @@ { "name": "@message-queue-toolkit/sns", - "version": "21.0.0", + "version": "21.0.1", "private": false, "license": "MIT", "description": "SNS adapter for message-queue-toolkit", @@ -35,7 +35,7 @@ "@aws-sdk/client-sts": "^3.632.0", "@message-queue-toolkit/core": ">=20.0.0", "@message-queue-toolkit/schemas": ">=2.0.0", - "@message-queue-toolkit/sqs": ">=20.0.0" + "@message-queue-toolkit/sqs": ">=20.0.1" }, "devDependencies": { "@aws-sdk/client-s3": "^3.670.0", diff --git a/packages/sns/test/consumers/SnsSqsPermissionConsumer.spec.ts b/packages/sns/test/consumers/SnsSqsPermissionConsumer.spec.ts index 9da22db4..8e81ad5c 100644 --- a/packages/sns/test/consumers/SnsSqsPermissionConsumer.spec.ts +++ b/packages/sns/test/consumers/SnsSqsPermissionConsumer.spec.ts @@ -20,6 +20,8 @@ describe('SnsSqsPermissionConsumer', () => { const queueName = 'some-queue' const topicNome = 'some-topic' + const queueUrl = `http://sqs.eu-west-1.localstack:4566/000000000000/${queueName}` + let diContainer: AwilixContainer let sqsClient: SQSClient let snsClient: SNSClient @@ -44,7 +46,7 @@ describe('SnsSqsPermissionConsumer', () => { const newConsumer = new SnsSqsPermissionConsumer(diContainer.cradle, { locatorConfig: { - queueUrl: `http://s3.localhost.localstack.cloud:4566/000000000000/${queueName}`, + queueUrl, subscriptionArn: 'dummy', topicArn: 'dummy', }, @@ -53,7 +55,7 @@ describe('SnsSqsPermissionConsumer', () => { await expect(() => newConsumer.init()).rejects.toThrow(/does not exist/) }) - it('does not create a new queue when queue locator is passed', async () => { + it('does not create a new queue when queue locator with url is passed', async () => { await assertQueue(sqsClient, { QueueName: queueName, }) @@ -65,16 +67,41 @@ describe('SnsSqsPermissionConsumer', () => { const newConsumer = new SnsSqsPermissionConsumer(diContainer.cradle, { locatorConfig: { topicArn: arn, - queueUrl: `http://s3.localhost.localstack.cloud:4566/000000000000/${queueName}`, + queueUrl, subscriptionArn: 'arn:aws:sns:eu-west-1:000000000000:user_permissions:bdf640a2-bedf-475a-98b8-758b88c87395', }, }) await newConsumer.init() - expect(newConsumer.subscriptionProps.queueUrl).toBe( - `http://s3.localhost.localstack.cloud:4566/000000000000/${queueName}`, + expect(newConsumer.subscriptionProps.queueUrl).toBe(queueUrl) + expect(newConsumer.subscriptionProps.queueName).toBe(queueName) + expect(newConsumer.subscriptionProps.topicArn).toEqual(arn) + expect(newConsumer.subscriptionProps.subscriptionArn).toBe( + 'arn:aws:sns:eu-west-1:000000000000:user_permissions:bdf640a2-bedf-475a-98b8-758b88c87395', ) + }) + + it('does not create a new queue when queue locator with name is passed', async () => { + await assertQueue(sqsClient, { + QueueName: queueName, + }) + + const arn = await assertTopic(snsClient, stsClient, { + Name: topicNome, + }) + + const newConsumer = new SnsSqsPermissionConsumer(diContainer.cradle, { + locatorConfig: { + topicArn: arn, + queueName, + subscriptionArn: + 'arn:aws:sns:eu-west-1:000000000000:user_permissions:bdf640a2-bedf-475a-98b8-758b88c87395', + }, + }) + + await newConsumer.init() + expect(newConsumer.subscriptionProps.queueUrl).toBe(queueUrl) expect(newConsumer.subscriptionProps.queueName).toBe(queueName) expect(newConsumer.subscriptionProps.topicArn).toEqual(arn) expect(newConsumer.subscriptionProps.subscriptionArn).toBe( @@ -99,9 +126,7 @@ describe('SnsSqsPermissionConsumer', () => { }) await newConsumer.init() - expect(newConsumer.subscriptionProps.queueUrl).toBe( - `http://sqs.eu-west-1.localstack:4566/000000000000/${queueName}`, - ) + expect(newConsumer.subscriptionProps.queueUrl).toBe(queueUrl) expect(newConsumer.subscriptionProps.queueName).toBe(queueName) expect(newConsumer.subscriptionProps.topicArn).toEqual(arn) expect(newConsumer.subscriptionProps.subscriptionArn).toMatch( @@ -151,9 +176,7 @@ describe('SnsSqsPermissionConsumer', () => { }) await newConsumer.init() - expect(newConsumer.subscriptionProps.queueUrl).toBe( - `http://sqs.eu-west-1.localstack:4566/000000000000/${queueName}`, - ) + expect(newConsumer.subscriptionProps.queueUrl).toBe(queueUrl) expect(newConsumer.subscriptionProps.queueName).toBe(queueName) const updateCall = sqsSpy.mock.calls.find((entry) => { @@ -197,9 +220,7 @@ describe('SnsSqsPermissionConsumer', () => { }) await newConsumer.init() - expect(newConsumer.subscriptionProps.queueUrl).toBe( - `http://sqs.eu-west-1.localstack:4566/000000000000/${queueName}`, - ) + expect(newConsumer.subscriptionProps.queueUrl).toBe(queueUrl) expect(newConsumer.subscriptionProps.queueName).toBe(queueName) const updateCall = sqsSpy.mock.calls.find((entry) => { @@ -382,9 +403,7 @@ describe('SnsSqsPermissionConsumer', () => { }) await newConsumer.init() - expect(newConsumer.subscriptionProps.queueUrl).toBe( - `http://sqs.eu-west-1.localstack:4566/000000000000/${queueName}`, - ) + expect(newConsumer.subscriptionProps.queueUrl).toBe(queueUrl) expect(newConsumer.subscriptionProps.queueName).toBe(queueName) const attributes = await getQueueAttributes( @@ -426,9 +445,7 @@ describe('SnsSqsPermissionConsumer', () => { }) await newConsumer.init() - expect(newConsumer.subscriptionProps.queueUrl).toBe( - `http://sqs.eu-west-1.localstack:4566/000000000000/${queueName}`, - ) + expect(newConsumer.subscriptionProps.queueUrl).toBe(queueUrl) const attributes = await getQueueAttributes( sqsClient, @@ -461,9 +478,7 @@ describe('SnsSqsPermissionConsumer', () => { }) await newConsumer.init() - expect(newConsumer.subscriptionProps.queueUrl).toBe( - `http://sqs.eu-west-1.localstack:4566/000000000000/${queueName}`, - ) + expect(newConsumer.subscriptionProps.queueUrl).toBe(queueUrl) expect(newConsumer.subscriptionProps.queueName).toBe(queueName) const attributes = await getQueueAttributes( @@ -492,9 +507,7 @@ describe('SnsSqsPermissionConsumer', () => { }) await newConsumer.init() - expect(newConsumer.subscriptionProps.queueUrl).toBe( - `http://sqs.eu-west-1.localstack:4566/000000000000/${queueName}`, - ) + expect(newConsumer.subscriptionProps.queueUrl).toBe(queueUrl) expect(newConsumer.subscriptionProps.deadLetterQueueUrl).toBe( 'http://sqs.eu-west-1.localstack:4566/000000000000/deadLetterQueue', ) @@ -532,9 +545,7 @@ describe('SnsSqsPermissionConsumer', () => { }) await newConsumer.init() - expect(newConsumer.subscriptionProps.queueUrl).toBe( - `http://sqs.eu-west-1.localstack:4566/000000000000/${queueName}`, - ) + expect(newConsumer.subscriptionProps.queueUrl).toBe(queueUrl) expect(newConsumer.subscriptionProps.deadLetterQueueUrl).toBe( 'http://sqs.eu-west-1.localstack:4566/000000000000/deadLetterQueue', ) diff --git a/packages/sqs/index.ts b/packages/sqs/index.ts index 2f9a8751..a613d1f8 100644 --- a/packages/sqs/index.ts +++ b/packages/sqs/index.ts @@ -18,7 +18,13 @@ export { } from './lib/sqs/AbstractSqsPublisher' export type { SQSMessageOptions } from './lib/sqs/AbstractSqsPublisher' -export { assertQueue, deleteQueue, getQueueAttributes, getQueueUrl } from './lib/utils/sqsUtils' +export { + assertQueue, + deleteQueue, + getQueueAttributes, + getQueueUrl, + resolveQueueUrlFromLocatorConfig, +} from './lib/utils/sqsUtils' export { deleteSqs, updateQueueAttributes } from './lib/utils/sqsInitter' export { deserializeSQSMessage } from './lib/utils/sqsMessageDeserializer' export { diff --git a/packages/sqs/lib/sqs/AbstractSqsService.ts b/packages/sqs/lib/sqs/AbstractSqsService.ts index 59bd93d6..b8e70756 100644 --- a/packages/sqs/lib/sqs/AbstractSqsService.ts +++ b/packages/sqs/lib/sqs/AbstractSqsService.ts @@ -24,7 +24,8 @@ export type SQSCreationConfig = { } & ExtraSQSCreationParams export type SQSQueueLocatorType = { - queueUrl: string + queueUrl?: string + queueName?: string } export abstract class AbstractSqsService< diff --git a/packages/sqs/lib/utils/sqsInitter.ts b/packages/sqs/lib/utils/sqsInitter.ts index 425f425e..43e07c19 100644 --- a/packages/sqs/lib/utils/sqsInitter.ts +++ b/packages/sqs/lib/utils/sqsInitter.ts @@ -5,7 +5,12 @@ import { isProduction } from '@message-queue-toolkit/core' import type { SQSCreationConfig, SQSQueueLocatorType } from '../sqs/AbstractSqsService' -import { assertQueue, deleteQueue, getQueueAttributes } from './sqsUtils' +import { + assertQueue, + deleteQueue, + getQueueAttributes, + resolveQueueUrlFromLocatorConfig, +} from './sqsUtils' export async function deleteSqs( sqsClient: SQSClient, @@ -63,12 +68,11 @@ export async function initSqs( creationConfig?: SQSCreationConfig, ) { // reuse existing queue only - if (locatorConfig?.queueUrl) { - const checkResult = await getQueueAttributes( - sqsClient, - (locatorConfig as SQSQueueLocatorType).queueUrl, - ['QueueArn'], - ) + if (locatorConfig) { + const queueUrl = await resolveQueueUrlFromLocatorConfig(sqsClient, locatorConfig) + + const checkResult = await getQueueAttributes(sqsClient, queueUrl, ['QueueArn']) + if (checkResult.error === 'not_found') { throw new Error(`Queue with queueUrl ${locatorConfig.queueUrl} does not exist.`) } @@ -78,8 +82,6 @@ export async function initSqs( throw new Error('Queue ARN was not set') } - const queueUrl = locatorConfig.queueUrl - const splitUrl = queueUrl.split('/') const queueName = splitUrl[splitUrl.length - 1] return { queueArn, queueUrl, queueName } diff --git a/packages/sqs/lib/utils/sqsUtils.ts b/packages/sqs/lib/utils/sqsUtils.ts index d5740d94..2dfc2c60 100644 --- a/packages/sqs/lib/utils/sqsUtils.ts +++ b/packages/sqs/lib/utils/sqsUtils.ts @@ -16,7 +16,7 @@ import type { Either } from '@lokalise/node-core' import { globalLogger } from '@lokalise/node-core' import { isShallowSubset, waitAndRetry } from '@message-queue-toolkit/core' -import type { ExtraSQSCreationParams } from '../sqs/AbstractSqsService' +import type { ExtraSQSCreationParams, SQSQueueLocatorType } from '../sqs/AbstractSqsService' import { generateQueuePublishForTopicPolicy } from './sqsAttributeUtils' import { updateQueueAttributes, updateQueueTags } from './sqsInitter' @@ -87,6 +87,27 @@ export async function getQueueAttributes( } } +export async function resolveQueueUrlFromLocatorConfig( + sqsClient: SQSClient, + locatorConfig: Partial, +) { + if (locatorConfig.queueUrl) { + return locatorConfig.queueUrl + } + + if (!locatorConfig.queueName) { + throw new Error('Invalid locatorConfig setup - queueUrl or queueName must be provided') + } + + const queueUrlResult = await getQueueUrl(sqsClient, locatorConfig.queueName) + + if (queueUrlResult.error === 'not_found') { + throw new Error(`Queue with queueName ${locatorConfig.queueName} does not exist.`) + } + + return queueUrlResult.result +} + async function updateExistingQueue( sqsClient: SQSClient, queueUrl: string, diff --git a/packages/sqs/package.json b/packages/sqs/package.json index 5eeef039..57106c79 100644 --- a/packages/sqs/package.json +++ b/packages/sqs/package.json @@ -1,6 +1,6 @@ { "name": "@message-queue-toolkit/sqs", - "version": "20.0.0", + "version": "20.0.1", "private": false, "license": "MIT", "description": "SQS adapter for message-queue-toolkit", diff --git a/packages/sqs/test/consumers/SqsPermissionConsumer.spec.ts b/packages/sqs/test/consumers/SqsPermissionConsumer.spec.ts index 1a8059ad..a666808d 100644 --- a/packages/sqs/test/consumers/SqsPermissionConsumer.spec.ts +++ b/packages/sqs/test/consumers/SqsPermissionConsumer.spec.ts @@ -26,6 +26,7 @@ import type { PERMISSIONS_ADD_MESSAGE_TYPE } from './userConsumerSchemas' describe('SqsPermissionConsumer', () => { describe('init', () => { const queueName = 'myTestQueue' + const queueUrl = `http://sqs.eu-west-1.localstack:4566/000000000000/${queueName}` let diContainer: AwilixContainer let sqsClient: SQSClient @@ -44,7 +45,7 @@ describe('SqsPermissionConsumer', () => { it('throws an error when invalid queue locator is passed', async () => { const newConsumer = new SqsPermissionConsumer(diContainer.cradle, { locatorConfig: { - queueUrl: `http://s3.localhost.localstack.cloud:4566/000000000000/${queueName}`, + queueUrl, }, }) @@ -58,14 +59,27 @@ describe('SqsPermissionConsumer', () => { const newConsumer = new SqsPermissionConsumer(diContainer.cradle, { locatorConfig: { - queueUrl: `http://s3.localhost.localstack.cloud:4566/000000000000/${queueName}`, + queueUrl, }, }) await newConsumer.init() - expect(newConsumer.queueProps.url).toBe( - `http://s3.localhost.localstack.cloud:4566/000000000000/${queueName}`, - ) + expect(newConsumer.queueProps.url).toBe(queueUrl) + }) + + it('resolves existing queue by name', async () => { + await assertQueue(sqsClient, { + QueueName: queueName, + }) + + const newConsumer = new SqsPermissionConsumer(diContainer.cradle, { + locatorConfig: { + queueName, + }, + }) + + await newConsumer.init() + expect(newConsumer.queueProps.url).toBe(queueUrl) }) describe('attributes update', () => { @@ -97,9 +111,7 @@ describe('SqsPermissionConsumer', () => { const sqsSpy = vi.spyOn(sqsClient, 'send') await newConsumer.init() - expect(newConsumer.queueProps.url).toBe( - `http://sqs.eu-west-1.localstack:4566/000000000000/${queueName}`, - ) + expect(newConsumer.queueProps.url).toBe(queueUrl) const updateCall = sqsSpy.mock.calls.find((entry) => { return entry[0].constructor.name === 'SetQueueAttributesCommand' @@ -141,9 +153,7 @@ describe('SqsPermissionConsumer', () => { const sqsSpy = vi.spyOn(sqsClient, 'send') await newConsumer.init() - expect(newConsumer.queueProps.url).toBe( - `http://sqs.eu-west-1.localstack:4566/000000000000/${queueName}`, - ) + expect(newConsumer.queueProps.url).toBe(queueUrl) const updateCall = sqsSpy.mock.calls.find((entry) => { return entry[0].constructor.name === 'SetQueueAttributesCommand' @@ -196,9 +206,7 @@ describe('SqsPermissionConsumer', () => { const sqsSpy = vi.spyOn(sqsClient, 'send') await newConsumer.init() - expect(newConsumer.queueProps.url).toBe( - `http://sqs.eu-west-1.localstack:4566/000000000000/${queueName}`, - ) + expect(newConsumer.queueProps.url).toBe(queueUrl) const updateCall = sqsSpy.mock.calls.find((entry) => { return entry[0].constructor.name === 'TagQueueCommand' @@ -248,9 +256,7 @@ describe('SqsPermissionConsumer', () => { const sqsSpy = vi.spyOn(sqsClient, 'send') await newConsumer.init() - expect(newConsumer.queueProps.url).toBe( - `http://sqs.eu-west-1.localstack:4566/000000000000/${queueName}`, - ) + expect(newConsumer.queueProps.url).toBe(queueUrl) const updateCall = sqsSpy.mock.calls.find((entry) => { return entry[0].constructor.name === 'TagQueueCommand' diff --git a/packages/sqs/test/publishers/SqsPermissionPublisher.spec.ts b/packages/sqs/test/publishers/SqsPermissionPublisher.spec.ts index bd359101..7c2f389b 100644 --- a/packages/sqs/test/publishers/SqsPermissionPublisher.spec.ts +++ b/packages/sqs/test/publishers/SqsPermissionPublisher.spec.ts @@ -18,6 +18,7 @@ import { SqsPermissionPublisher } from './SqsPermissionPublisher' describe('SqsPermissionPublisher', () => { describe('init', () => { const queueName = 'someQueue' + const queueUrl = `http://sqs.eu-west-1.localstack:4566/000000000000/${queueName}` let diContainer: AwilixContainer let sqsClient: SQSClient @@ -35,7 +36,7 @@ describe('SqsPermissionPublisher', () => { it('throws an error when invalid queue locator is passed', async () => { const newPublisher = new SqsPermissionPublisher(diContainer.cradle, { locatorConfig: { - queueUrl: `http://s3.localhost.localstack.cloud:4566/000000000000/${queueName}`, + queueUrl, }, }) @@ -49,14 +50,27 @@ describe('SqsPermissionPublisher', () => { const newPublisher = new SqsPermissionPublisher(diContainer.cradle, { locatorConfig: { - queueUrl: `http://s3.localhost.localstack.cloud:4566/000000000000/${queueName}`, + queueUrl, }, }) await newPublisher.init() - expect(newPublisher.queueProps.url).toBe( - `http://s3.localhost.localstack.cloud:4566/000000000000/${queueName}`, - ) + expect(newPublisher.queueProps.url).toBe(queueUrl) + }) + + it('resolves existing queue by name', async () => { + await assertQueue(sqsClient, { + QueueName: queueName, + }) + + const newPublisher = new SqsPermissionPublisher(diContainer.cradle, { + locatorConfig: { + queueName, + }, + }) + + await newPublisher.init() + expect(newPublisher.queueProps.url).toBe(queueUrl) }) describe('attributes update', () => { @@ -87,9 +101,7 @@ describe('SqsPermissionPublisher', () => { const sqsSpy = vi.spyOn(sqsClient, 'send') await newPublisher.init() - expect(newPublisher.queueProps.url).toBe( - `http://sqs.eu-west-1.localstack:4566/000000000000/${queueName}`, - ) + expect(newPublisher.queueProps.url).toBe(queueUrl) const updateCall = sqsSpy.mock.calls.find((entry) => { return entry[0].constructor.name === 'SetQueueAttributesCommand' @@ -128,9 +140,7 @@ describe('SqsPermissionPublisher', () => { const sqsSpy = vi.spyOn(sqsClient, 'send') await newPublisher.init() - expect(newPublisher.queueProps.url).toBe( - `http://sqs.eu-west-1.localstack:4566/000000000000/${queueName}`, - ) + expect(newPublisher.queueProps.url).toBe(queueUrl) const updateCall = sqsSpy.mock.calls.find((entry) => { return entry[0].constructor.name === 'SetQueueAttributesCommand' From c3446b9cf4a82edeb336931707c3ef9d63f5a5d7 Mon Sep 17 00:00:00 2001 From: Krzysztof Jamrog Date: Tue, 22 Apr 2025 09:16:58 +0200 Subject: [PATCH 2/4] Adjusted locator config type --- packages/sns/lib/utils/snsInitter.ts | 2 +- packages/sqs/lib/sqs/AbstractSqsService.ts | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/sns/lib/utils/snsInitter.ts b/packages/sns/lib/utils/snsInitter.ts index 0f139b0a..806f1f1a 100644 --- a/packages/sns/lib/utils/snsInitter.ts +++ b/packages/sns/lib/utils/snsInitter.ts @@ -57,7 +57,7 @@ export async function initSnsSqs( } const topicResolutionOptions: TopicResolutionOptions = { - ...locatorConfig, + ...(locatorConfig as SNSSQSQueueLocatorType), ...creationConfig.topic, } diff --git a/packages/sqs/lib/sqs/AbstractSqsService.ts b/packages/sqs/lib/sqs/AbstractSqsService.ts index b8e70756..dd286cd8 100644 --- a/packages/sqs/lib/sqs/AbstractSqsService.ts +++ b/packages/sqs/lib/sqs/AbstractSqsService.ts @@ -23,10 +23,15 @@ export type SQSCreationConfig = { forceTagUpdate?: boolean } & ExtraSQSCreationParams -export type SQSQueueLocatorType = { - queueUrl?: string - queueName?: string -} +export type SQSQueueLocatorType = + | { + queueUrl: string + queueName?: never + } + | { + queueName: string + queueUrl?: never + } export abstract class AbstractSqsService< MessagePayloadType extends object, From d719c92d9d7919a692aef52e447a084f1c9502f4 Mon Sep 17 00:00:00 2001 From: Krzysztof Jamrog Date: Tue, 22 Apr 2025 09:17:13 +0200 Subject: [PATCH 3/4] Changed versions update to minor --- packages/sns/package.json | 2 +- packages/sqs/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sns/package.json b/packages/sns/package.json index 1384cc21..afc992ab 100644 --- a/packages/sns/package.json +++ b/packages/sns/package.json @@ -1,6 +1,6 @@ { "name": "@message-queue-toolkit/sns", - "version": "21.0.1", + "version": "21.1.0", "private": false, "license": "MIT", "description": "SNS adapter for message-queue-toolkit", diff --git a/packages/sqs/package.json b/packages/sqs/package.json index 57106c79..bd9aa0ec 100644 --- a/packages/sqs/package.json +++ b/packages/sqs/package.json @@ -1,6 +1,6 @@ { "name": "@message-queue-toolkit/sqs", - "version": "20.0.1", + "version": "20.1.0", "private": false, "license": "MIT", "description": "SQS adapter for message-queue-toolkit", From 339c7a04dd5cd3d199624c57c12524895419f2b3 Mon Sep 17 00:00:00 2001 From: Krzysztof Jamrog Date: Tue, 22 Apr 2025 09:37:24 +0200 Subject: [PATCH 4/4] Updated sqs dependency version --- packages/sns/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sns/package.json b/packages/sns/package.json index afc992ab..179a052b 100644 --- a/packages/sns/package.json +++ b/packages/sns/package.json @@ -35,7 +35,7 @@ "@aws-sdk/client-sts": "^3.632.0", "@message-queue-toolkit/core": ">=20.0.0", "@message-queue-toolkit/schemas": ">=2.0.0", - "@message-queue-toolkit/sqs": ">=20.0.1" + "@message-queue-toolkit/sqs": ">=20.1.0" }, "devDependencies": { "@aws-sdk/client-s3": "^3.670.0",