UNPKG

badmfck-signal

Version:

An implementation of a signaling mechanism used to connect components and transfer data between them

56 lines (55 loc) 1.93 kB
/** * * Binder provide functionality to bind data to any component * T - request type * K - data type * * To use Binder you need to create instance of it and provide request and response types * Use request() to send request to data source via request pipeline, anyone can subscribe to request pipeline * Use subscribe() to request data from source via response pipeline, anyone can subscribe to response pipeline * Use execute() to request data from source and wait for response * Use use() to bind data to react component, before using it you need to setup react hooks, by calling Binder.setupReact(useState,useEffect) * */ export declare class Binder<T, K> { private static reactUseState; private static reactUseEffect; private static nextID; name: string; type: "signal" | "request" | "binder"; private readyListener; private requestListener; constructor(name?: string); /** * Setup react hook before using it * @param useState - reference to react useState * @param useEffect - reference to react useEffect */ static setupReact(useState: any, useEffect: any): void; /** subscribe to request pipeline */ onRequest(cb: (data: T | null) => void): void; /** subscribe to response pipeline */ subscribe(cb: (data: K | null) => void): void; /** invoke response pipeline */ invoke(data: K): void; request(req: T | null): void; /** Execute binder & wait for results */ execute(req: T | null): Promise<K | null>; /** * Binder hook * request - request object for data loading procedure * initial - initial data object * dependency - react dependency array * return - array [data,busy], where first element - Binded data, second element - Busy indicator */ use(request?: T, initial?: K, dependency?: any[]): [K | null, boolean]; clear(): void; }