@message-queue-toolkit/sqs
Version:
SQS adapter for message-queue-toolkit
59 lines (58 loc) • 2.76 kB
TypeScript
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 {};