UNPKG

@message-queue-toolkit/sns

Version:
28 lines (27 loc) 3.03 kB
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; }