UNPKG

@message-queue-toolkit/sqs

Version:
64 lines (63 loc) 3.92 kB
import type { Either } from '@lokalise/node-core'; import { type AsyncPublisher, type BarrierResult, type MessageInvalidFormatError, type MessageValidationError, type OffloadedPayloadPointerPayload, type QueuePublisherOptions, type ResolvedMessage } from '@message-queue-toolkit/core'; import type { ZodSchema } from 'zod/v4'; import type { SQSMessage } from '../types/MessageTypes.ts'; import type { SQSCreationConfig, SQSDependencies, SQSOptions, SQSQueueLocatorType } from './AbstractSqsService.ts'; import { AbstractSqsService } from './AbstractSqsService.ts'; export type SQSMessageOptions = { MessageGroupId?: string; MessageDeduplicationId?: string; }; type BaseSQSPublisherOptions<MessagePayloadType extends object, CreationConfigType extends SQSCreationConfig = SQSCreationConfig, QueueLocatorType extends SQSQueueLocatorType = SQSQueueLocatorType> = QueuePublisherOptions<CreationConfigType, QueueLocatorType, MessagePayloadType> & Omit<SQSOptions<CreationConfigType, QueueLocatorType>, 'fifoQueue'>; /** * SQS Publisher options with type-safe FIFO queue configuration. * When fifoQueue is true, messageGroupIdField and defaultMessageGroupId are available. * When fifoQueue is false or omitted, these fields are not allowed. */ export type SQSPublisherOptions<MessagePayloadType extends object, CreationConfigType extends SQSCreationConfig = SQSCreationConfig, QueueLocatorType extends SQSQueueLocatorType = SQSQueueLocatorType> = BaseSQSPublisherOptions<MessagePayloadType, CreationConfigType, QueueLocatorType> & ({ /** * Set to true for FIFO queues. Enables messageGroupIdField and defaultMessageGroupId options. */ fifoQueue: true; /** * Field name in the message payload to use as MessageGroupId for FIFO queues. * If not provided, MessageGroupId must be specified in publish options. */ messageGroupIdField?: string; /** * Default MessageGroupId to use when messageGroupIdField is not present in the message. * If not provided and messageGroupIdField is not found, MessageGroupId must be specified in publish options. */ defaultMessageGroupId?: string; } | { /** * Set to false or omit for standard (non-FIFO) queues. */ fifoQueue?: false; messageGroupIdField?: never; defaultMessageGroupId?: never; }); export declare const PAYLOAD_OFFLOADING_ATTRIBUTE_PREFIX = "payloadOffloading."; export declare const OFFLOADED_PAYLOAD_SIZE_ATTRIBUTE = "payloadOffloading.size"; export declare abstract class AbstractSqsPublisher<MessagePayloadType extends object> extends AbstractSqsService<MessagePayloadType> implements AsyncPublisher<MessagePayloadType, SQSMessageOptions> { private readonly messageSchemaContainer; private readonly isDeduplicationEnabled; private readonly messageGroupIdField?; private readonly defaultMessageGroupId?; private initPromise?; constructor(dependencies: SQSDependencies, options: SQSPublisherOptions<MessagePayloadType>); publish(message: MessagePayloadType, options?: SQSMessageOptions): Promise<void>; protected resolveNextFunction(): () => void; protected resolveMessage(_message: SQSMessage): Either<MessageInvalidFormatError | MessageValidationError, ResolvedMessage>; protected processPrehandlers(): Promise<unknown>; protected preHandlerBarrier<BarrierOutput>(): Promise<BarrierResult<BarrierOutput>>; processMessage(): Promise<Either<'retryLater', 'success'>>; protected isDeduplicationEnabledForMessage(message: MessagePayloadType): boolean; protected resolveSchema(message: MessagePayloadType): Either<Error, ZodSchema<MessagePayloadType>>; protected sendMessage(payload: MessagePayloadType | OffloadedPayloadPointerPayload, options: SQSMessageOptions): Promise<void>; /** * Resolves FIFO-specific options (MessageGroupId, MessageDeduplicationId) */ private resolveFifoOptions; } export {};