UNPKG

@sprucelabs/spruce-event-utils

Version:

Some helpful utilities to speed up working with Mercury! 🚅

39 lines (38 loc) • 1.58 kB
import { SpruceSchemas } from '@sprucelabs/mercury-types'; import { Schema, AreAnyFieldsRequired } from '@sprucelabs/schema'; export type EventTargetSchema = SpruceSchemas.SpruceEventUtils.v2021_09_13.EventTargetSchema; export type EventTarget = SpruceSchemas.SpruceEventUtils.v2021_09_13.EventTarget; export type EventSourceSchema = SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema; export type EventSource = SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource; export interface TargetAndPayload<TargetSchema extends Schema | undefined, PayloadSchema extends Schema | undefined> { id: string; fields: Omit<{ source: { type: 'schema'; isRequired: false; options: { schema: EventSourceSchema; }; }; target: { type: 'schema'; isRequired: AreAnyFieldsRequired<TargetSchema>; options: { schema: TargetSchema; }; }; payload: { type: 'schema'; isRequired: AreAnyFieldsRequired<PayloadSchema>; options: { schema: PayloadSchema; }; }; }, (TargetSchema extends undefined ? 'target' : '') | (PayloadSchema extends undefined ? 'payload' : '')>; } declare function buildEmitTargetAndPayloadSchema<Payload extends Schema, Target extends Schema>(options: { eventName: string; payloadSchema?: Payload; targetSchema?: Target; }): TargetAndPayload<Target, Payload>; export default buildEmitTargetAndPayloadSchema;