UNPKG

@novu/framework

Version:

The Code-First Notifications Workflow SDK.

94 lines (91 loc) 8.21 kB
import { S as Subscriber, C as ContextResolved, L as EmailOutputUnvalidated, f as Awaitable, p as providerSchemas, W as WithPassthrough, a1 as SmsOutputUnvalidated, k as ChatOutputUnvalidated, Z as PushOutputUnvalidated, O as InAppOutputUnvalidated } from './subscriber.types-CftO3aFY.cjs'; export { a9 as channelStepSchemas } from './subscriber.types-CftO3aFY.cjs'; import { S as Schema, a as FromSchema } from './base.schema.types-BApIn9jr.cjs'; import 'json-schema-to-ts'; import 'zod'; type StepResolverContext<TPayload extends Record<string, unknown> = Record<string, unknown>> = { payload: TPayload; subscriber: Subscriber; context: ContextResolved; steps: Record<string, unknown>; }; type ResolveControls<T extends Schema | undefined> = T extends Schema ? FromSchema<T> : Record<string, unknown>; type StepResolverProviders<T_StepType extends keyof typeof providerSchemas, T_Controls, T_Output, T_Payload extends Record<string, unknown> = Record<string, unknown>> = { [K in keyof (typeof providerSchemas)[T_StepType]]?: (step: { controls: T_Controls; outputs: T_Output; }, ctx: StepResolverContext<T_Payload>) => Awaitable<WithPassthrough<Record<string, unknown>>>; }; type BaseStepResolverOptions<TControlSchema extends Schema | undefined, TPayloadSchema extends Schema | undefined> = { controlSchema?: TControlSchema; payloadSchema?: TPayloadSchema; skip?: (controls: ResolveControls<TControlSchema>, ctx: StepResolverContext<ResolveControls<TPayloadSchema>>) => Awaitable<boolean>; }; type ChannelStepResolverOptions<T_StepType extends keyof typeof providerSchemas, TControlSchema extends Schema | undefined, TPayloadSchema extends Schema | undefined, T_Output extends Record<string, unknown>> = BaseStepResolverOptions<TControlSchema, TPayloadSchema> & { providers?: StepResolverProviders<T_StepType, ResolveControls<TControlSchema>, T_Output, ResolveControls<TPayloadSchema>>; disableOutputSanitization?: boolean; }; type EmailStepResolver<TControlSchema extends Schema | undefined = undefined, TPayloadSchema extends Schema | undefined = undefined> = { type: 'email'; stepId: string; resolve: (controls: ResolveControls<TControlSchema>, ctx: StepResolverContext<ResolveControls<TPayloadSchema>>) => Promise<EmailOutputUnvalidated>; controlSchema?: TControlSchema; payloadSchema?: TPayloadSchema; skip?: BaseStepResolverOptions<TControlSchema, TPayloadSchema>['skip']; providers?: StepResolverProviders<'email', ResolveControls<TControlSchema>, EmailOutputUnvalidated, ResolveControls<TPayloadSchema>>; disableOutputSanitization?: boolean; }; type SmsStepResolver<TControlSchema extends Schema | undefined = undefined, TPayloadSchema extends Schema | undefined = undefined> = { type: 'sms'; stepId: string; resolve: (controls: ResolveControls<TControlSchema>, ctx: StepResolverContext<ResolveControls<TPayloadSchema>>) => Promise<SmsOutputUnvalidated>; controlSchema?: TControlSchema; payloadSchema?: TPayloadSchema; skip?: BaseStepResolverOptions<TControlSchema, TPayloadSchema>['skip']; providers?: StepResolverProviders<'sms', ResolveControls<TControlSchema>, SmsOutputUnvalidated, ResolveControls<TPayloadSchema>>; disableOutputSanitization?: boolean; }; type ChatStepResolver<TControlSchema extends Schema | undefined = undefined, TPayloadSchema extends Schema | undefined = undefined> = { type: 'chat'; stepId: string; resolve: (controls: ResolveControls<TControlSchema>, ctx: StepResolverContext<ResolveControls<TPayloadSchema>>) => Promise<ChatOutputUnvalidated>; controlSchema?: TControlSchema; payloadSchema?: TPayloadSchema; skip?: BaseStepResolverOptions<TControlSchema, TPayloadSchema>['skip']; providers?: StepResolverProviders<'chat', ResolveControls<TControlSchema>, ChatOutputUnvalidated, ResolveControls<TPayloadSchema>>; disableOutputSanitization?: boolean; }; type PushStepResolver<TControlSchema extends Schema | undefined = undefined, TPayloadSchema extends Schema | undefined = undefined> = { type: 'push'; stepId: string; resolve: (controls: ResolveControls<TControlSchema>, ctx: StepResolverContext<ResolveControls<TPayloadSchema>>) => Promise<PushOutputUnvalidated>; controlSchema?: TControlSchema; payloadSchema?: TPayloadSchema; skip?: BaseStepResolverOptions<TControlSchema, TPayloadSchema>['skip']; providers?: StepResolverProviders<'push', ResolveControls<TControlSchema>, PushOutputUnvalidated, ResolveControls<TPayloadSchema>>; disableOutputSanitization?: boolean; }; type InAppStepResolver<TControlSchema extends Schema | undefined = undefined, TPayloadSchema extends Schema | undefined = undefined> = { type: 'in_app'; stepId: string; resolve: (controls: ResolveControls<TControlSchema>, ctx: StepResolverContext<ResolveControls<TPayloadSchema>>) => Promise<InAppOutputUnvalidated>; controlSchema?: TControlSchema; payloadSchema?: TPayloadSchema; skip?: BaseStepResolverOptions<TControlSchema, TPayloadSchema>['skip']; providers?: StepResolverProviders<'in_app', ResolveControls<TControlSchema>, InAppOutputUnvalidated, ResolveControls<TPayloadSchema>>; disableOutputSanitization?: boolean; }; type AnyStepResolver = EmailStepResolver<Schema | undefined, Schema | undefined> | SmsStepResolver<Schema | undefined, Schema | undefined> | ChatStepResolver<Schema | undefined, Schema | undefined> | PushStepResolver<Schema | undefined, Schema | undefined> | InAppStepResolver<Schema | undefined, Schema | undefined>; declare function email<TControlSchema extends Schema | undefined = undefined, TPayloadSchema extends Schema | undefined = undefined>(stepId: string, resolve: (controls: ResolveControls<TControlSchema>, ctx: StepResolverContext<ResolveControls<TPayloadSchema>>) => Promise<EmailOutputUnvalidated>, options?: ChannelStepResolverOptions<'email', TControlSchema, TPayloadSchema, EmailOutputUnvalidated>): EmailStepResolver<TControlSchema, TPayloadSchema>; declare function sms<TControlSchema extends Schema | undefined = undefined, TPayloadSchema extends Schema | undefined = undefined>(stepId: string, resolve: (controls: ResolveControls<TControlSchema>, ctx: StepResolverContext<ResolveControls<TPayloadSchema>>) => Promise<SmsOutputUnvalidated>, options?: ChannelStepResolverOptions<'sms', TControlSchema, TPayloadSchema, SmsOutputUnvalidated>): SmsStepResolver<TControlSchema, TPayloadSchema>; declare function chat<TControlSchema extends Schema | undefined = undefined, TPayloadSchema extends Schema | undefined = undefined>(stepId: string, resolve: (controls: ResolveControls<TControlSchema>, ctx: StepResolverContext<ResolveControls<TPayloadSchema>>) => Promise<ChatOutputUnvalidated>, options?: ChannelStepResolverOptions<'chat', TControlSchema, TPayloadSchema, ChatOutputUnvalidated>): ChatStepResolver<TControlSchema, TPayloadSchema>; declare function push<TControlSchema extends Schema | undefined = undefined, TPayloadSchema extends Schema | undefined = undefined>(stepId: string, resolve: (controls: ResolveControls<TControlSchema>, ctx: StepResolverContext<ResolveControls<TPayloadSchema>>) => Promise<PushOutputUnvalidated>, options?: ChannelStepResolverOptions<'push', TControlSchema, TPayloadSchema, PushOutputUnvalidated>): PushStepResolver<TControlSchema, TPayloadSchema>; declare function inApp<TControlSchema extends Schema | undefined = undefined, TPayloadSchema extends Schema | undefined = undefined>(stepId: string, resolve: (controls: ResolveControls<TControlSchema>, ctx: StepResolverContext<ResolveControls<TPayloadSchema>>) => Promise<InAppOutputUnvalidated>, options?: ChannelStepResolverOptions<'in_app', TControlSchema, TPayloadSchema, InAppOutputUnvalidated>): InAppStepResolver<TControlSchema, TPayloadSchema>; declare const step: { email: typeof email; sms: typeof sms; chat: typeof chat; push: typeof push; inApp: typeof inApp; }; export { type AnyStepResolver, type ChatStepResolver, ContextResolved, type EmailStepResolver, type InAppStepResolver, type PushStepResolver, type SmsStepResolver, type StepResolverContext, Subscriber, WithPassthrough, providerSchemas, step };