UNPKG

event-driven

Version:

makes building event-driven-architecture easy

75 lines (74 loc) 2 kB
/// <reference types="mongoose/types/pipelinestage" /> /// <reference types="mongoose/types/error" /> /// <reference types="mongoose/types/connection" /> import { Document, Types } from 'mongoose'; export declare enum LogType { Event = "Event", Batch = "Batch", Trigger = "Trigger" } export interface EventDoc extends Document { _id: Types.ObjectId; type: LogType.Event; parentId: Types.ObjectId; durableName?: string; clientGroup: string; subject: string; data: any; republish: { targetClientGroup: string; createdAt: Date; }[]; createdAt: Date; } export interface BatchDoc extends Document { _id: Types.ObjectId; type: LogType.Batch; parentEventIds: Types.ObjectId[]; durableName: string; clientGroup: string; subject: string; processTime?: number; createdAt: Date; } export interface TriggerDoc extends Document { _id: Types.ObjectId; type: LogType.Trigger; name: string; variables?: any; query?: string; userId?: Types.ObjectId; createdAt: Date; } export declare const Log: import("mongoose").Model<EventDoc | BatchDoc | TriggerDoc, {}, {}, {}>; export interface Event<Subjects> { subject: Subjects; data: any; } export declare const createEvent: <T extends Event<string>>(data: { parentId: Types.ObjectId; durableName?: string | undefined; clientGroup: string; subject: T["subject"]; data: T["data"]; }) => EventDoc; export interface BatchInput { parentEventIds: Types.ObjectId[]; durableName: string; clientGroup: string; subject: string; } export declare const createBatch: (data: BatchInput) => { batch: BatchDoc; catchError: (error: Error) => void; }; export interface TriggerInput { name: string; variables?: any; query?: string; userId?: Types.ObjectId; } export declare const createTrigger: (data: TriggerInput) => { trigger: TriggerDoc; catchTriggerError: (error: Error) => void; };