@message-queue-toolkit/sns
Version:
SNS adapter for message-queue-toolkit
28 lines (27 loc) • 3.03 kB
TypeScript
import type { EventRegistry, MessagePublishType, MessageSchemaType, MetadataFiller, PublisherBaseEventType } from '@message-queue-toolkit/core';
import { AbstractPublisherManager } from '@message-queue-toolkit/core';
import type { PublisherMessageMetadataType } from '@message-queue-toolkit/core/lib/messages/baseMessageSchemas';
import type { SnsAwareEventDefinition } from '@message-queue-toolkit/schemas';
import type z from 'zod';
import type { AbstractSnsPublisher, SNSMessageOptions, SNSPublisherOptions } from './AbstractSnsPublisher';
import type { SNSCreationConfig, SNSDependencies, SNSTopicLocatorType } from './AbstractSnsService';
import type { SnsPublisherFactory } from './CommonSnsPublisherFactory';
export type { SnsAwareEventDefinition };
export type SnsPublisherManagerDependencies<SupportedEvents extends SnsAwareEventDefinition[]> = {
eventRegistry: EventRegistry<SupportedEvents>;
} & SNSDependencies;
export type SnsPublisherManagerOptions<T extends AbstractSnsPublisher<EventType>, EventType extends PublisherBaseEventType, MetadataType> = {
metadataField?: string;
publisherFactory: SnsPublisherFactory<T, EventType>;
metadataFiller: MetadataFiller<EventType, MetadataType>;
newPublisherOptions: Omit<SNSPublisherOptions<EventType>, 'messageSchemas' | 'creationConfig' | 'locatorConfig'> & {
creationConfig?: Omit<SNSCreationConfig, 'topic'>;
};
};
export type SnsMessageSchemaType<T extends SnsAwareEventDefinition> = z.infer<T['publisherSchema']>;
export declare class SnsPublisherManager<T extends AbstractSnsPublisher<z.infer<SupportedEventDefinitions[number]['publisherSchema']>>, SupportedEventDefinitions extends SnsAwareEventDefinition[], MetadataType = PublisherMessageMetadataType> extends AbstractPublisherManager<SnsAwareEventDefinition, NonNullable<SupportedEventDefinitions[number]['snsTopic']>, AbstractSnsPublisher<z.infer<SupportedEventDefinitions[number]['publisherSchema']>>, SNSDependencies, SNSCreationConfig, SNSTopicLocatorType, SnsMessageSchemaType<SnsAwareEventDefinition>, Omit<SNSPublisherOptions<z.infer<SupportedEventDefinitions[number]['publisherSchema']>>, 'messageSchemas' | 'creationConfig' | 'locatorConfig'>, SupportedEventDefinitions, MetadataType, SNSMessageOptions> {
constructor(dependencies: SnsPublisherManagerDependencies<SupportedEventDefinitions>, options: SnsPublisherManagerOptions<T, z.infer<SupportedEventDefinitions[number]['publisherSchema']>, MetadataType>);
publish(topic: NonNullable<SupportedEventDefinitions[number]['snsTopic']>, message: MessagePublishType<SupportedEventDefinitions[number]>, precedingEventMetadata?: Partial<MetadataType>, messageOptions?: SNSMessageOptions): Promise<MessageSchemaType<SupportedEventDefinitions[number]>>;
protected resolveCreationConfig(eventTarget: NonNullable<SupportedEventDefinitions[number]['snsTopic']>): SNSCreationConfig;
protected resolveEventTarget(event: SnsAwareEventDefinition): NonNullable<SupportedEventDefinitions[number]['snsTopic']> | undefined;
}