UNPKG

@edirect/form-engine

Version:

Achieve form logic reusage with forms expressed in json format.

51 lines (50 loc) 2.32 kB
import { EEVents, TEventPublishPayload, TEventsKeys, TLoggingEvent } from './events.types.js'; type TObservable = (data: any, unsubscribe: () => void) => any; type TEvents = Record<string, TObservable[]>; interface IObservable { events: TEvents; } declare const EXTRACT_EVENT_NAMESPACE: (event: TEventsKeys) => EEVents; declare const BUILD_EVENT: (event: EEVents, namespace?: string, key?: string) => EEVents; declare const ALL_NAMESPACE_EVENTS: (event: TEventsKeys) => EEVents; declare class Observer implements IObservable { #private; regexBasedEvents: Record<string, { regex: RegExp; handlers: TObservable[]; }>; events: TEvents; history: { [key in EEVents]?: string; }; namespace: string; enableLogging: boolean; constructor(namespace: string, enableLogging?: boolean); runForRegexBasedEvent(eventName: any, cb: (event: TEventsKeys) => void): boolean; handleRegexSubscription(eventName: any, handler: TObservable): void; /** * This function lets you subscribe to a given event and register one callback to be called when someone published in it * * The callback you redister will, return you the published data and one function to unregister your callback from that event * */ subscribe(eventName: TEventsKeys, handler: TObservable): () => void; unsubscribe(eventName: TEventsKeys, handler: TObservable): void; isAsyncFunction(fn: (...data: any) => any): boolean; /** * Allows to publish data to a given event name * * Will iterate the subscriptions and call their handlers. * * When calling the handler, will also inject the unsubscribe function * * This methods also accepts one regex and will find the matchin events and * publish in them * */ publish(eventName: TEventsKeys, data?: TEventPublishPayload): Promise<{} | undefined>; publishForEvents(eventName: TEventsKeys, data: {} | undefined, events: TEvents): Promise<{} | undefined>; logError(flow: Pick<TLoggingEvent, 'flow'>['flow'], event: string, method: string, error: unknown): void; logInfo(flow: Pick<TLoggingEvent, 'flow'>['flow'], event: string, method: string, extraData?: any): void; } export { Observer, EXTRACT_EVENT_NAMESPACE, BUILD_EVENT, ALL_NAMESPACE_EVENTS };