@message-queue-toolkit/sns
Version:
SNS adapter for message-queue-toolkit
47 lines (46 loc) • 2.04 kB
TypeScript
import type { CreateTopicCommandInput, SNSClient, Tag } from '@aws-sdk/client-sns';
import type { QueueDependencies, QueueOptions } from '@message-queue-toolkit/core';
import { AbstractQueueService } from '@message-queue-toolkit/core';
import type { STSClient } from '@aws-sdk/client-sts';
import type { SNS_MESSAGE_BODY_TYPE } from '../types/MessageTypes';
export declare const SNS_MESSAGE_MAX_SIZE: number;
export type SNSDependencies = QueueDependencies & {
snsClient: SNSClient;
stsClient: STSClient;
};
export type SNSTopicAWSConfig = CreateTopicCommandInput;
export type SNSTopicConfig = {
tags?: Tag[];
DataProtectionPolicy?: string;
Attributes?: {
DeliveryPolicy?: string;
DisplayName?: string;
Policy?: string;
SignatureVersion?: number;
TracingConfig?: string;
FifoTopic?: boolean;
ContentBasedDeduplication?: boolean;
};
};
export type ExtraSNSCreationParams = {
queueUrlsWithSubscribePermissionsPrefix?: string | readonly string[];
allowedSourceOwner?: string;
forceTagUpdate?: boolean;
};
export type SNSCreationConfig = {
topic?: SNSTopicAWSConfig;
updateAttributesIfExists?: boolean;
} & ExtraSNSCreationParams;
export type SNSTopicLocatorType = {
topicArn?: string;
topicName?: string;
};
export type SNSOptions = QueueOptions<SNSCreationConfig, SNSTopicLocatorType>;
export declare abstract class AbstractSnsService<MessagePayloadType extends object, MessageEnvelopeType extends object = SNS_MESSAGE_BODY_TYPE, SNSOptionsType extends SNSOptions = SNSOptions, DependenciesType extends SNSDependencies = SNSDependencies> extends AbstractQueueService<MessagePayloadType, MessageEnvelopeType, DependenciesType, SNSCreationConfig, SNSTopicLocatorType, SNSOptionsType> {
protected readonly snsClient: SNSClient;
protected readonly stsClient: STSClient;
protected topicArn: string;
constructor(dependencies: DependenciesType, options: SNSOptionsType);
init(): Promise<void>;
close(): Promise<void>;
}