@sprucelabs/spruce-event-utils
Version:
Some helpful utilities to speed up working with Mercury! 🚅
39 lines (38 loc) • 1.58 kB
TypeScript
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;