UNPKG

@message-queue-toolkit/sqs

Version:
59 lines (58 loc) 2.76 kB
import type { CreateQueueRequest, SQSClient } from '@aws-sdk/client-sqs'; import type { QueueDependencies, QueueOptions } from '@message-queue-toolkit/core'; import { AbstractQueueService } from '@message-queue-toolkit/core'; import type { SQSMessage } from '../types/MessageTypes.ts'; export declare const SQS_MESSAGE_MAX_SIZE: number; export declare const SQS_RESOURCE_ANY: unique symbol; export declare const SQS_RESOURCE_CURRENT_QUEUE: unique symbol; export type SQSDependencies = QueueDependencies & { sqsClient: SQSClient; }; export type ExtraSQSCreationParams = { topicArnsWithPublishPermissionsPrefix?: string; updateAttributesIfExists?: boolean; forceTagUpdate?: boolean; policyConfig?: SQSPolicyConfig; }; type SQSPolicyStatement = { Effect?: string; Principal?: string; Action?: string[]; }; export type SQSPolicyConfig = { resource: string | typeof SQS_RESOURCE_ANY | typeof SQS_RESOURCE_CURRENT_QUEUE; statements?: SQSPolicyStatement | SQSPolicyStatement[]; }; export type SQSCreationConfig = { queue: CreateQueueRequest; updateAttributesIfExists?: boolean; forceTagUpdate?: boolean; policyConfig?: SQSPolicyConfig; } & ExtraSQSCreationParams; export type SQSQueueLocatorType = { queueUrl: string; queueName?: never; } | { queueName: string; queueUrl?: never; }; export type SQSQueueConfig = { /** * Indicates whether this is a FIFO queue. * FIFO queues must have names ending with .fifo suffix. * When true, MessageGroupId is required for all messages. */ fifoQueue?: boolean; }; export type SQSOptions<CreationConfigType extends SQSCreationConfig = SQSCreationConfig, QueueLocatorType extends object = SQSQueueLocatorType> = QueueOptions<CreationConfigType, QueueLocatorType> & SQSQueueConfig; export declare abstract class AbstractSqsService<MessagePayloadType extends object, QueueLocatorType extends object = SQSQueueLocatorType, CreationConfigType extends SQSCreationConfig = SQSCreationConfig, SQSOptionsType extends QueueOptions<CreationConfigType, QueueLocatorType> = QueueOptions<CreationConfigType, QueueLocatorType>, DependenciesType extends SQSDependencies = SQSDependencies, PrehandlerOutput = unknown, ExecutionContext = unknown> extends AbstractQueueService<MessagePayloadType, SQSMessage, DependenciesType, CreationConfigType, QueueLocatorType, SQSOptionsType, PrehandlerOutput, ExecutionContext> { protected readonly sqsClient: SQSClient; protected queueName: string; protected queueUrl: string; protected queueArn: string; protected readonly isFifoQueue: boolean; constructor(dependencies: DependenciesType, options: SQSOptionsType); init(): Promise<void>; close(): Promise<void>; } export {};