UNPKG

@hyper-fetch/core

Version:

Cache, Queue and Persist your requests no matter if you are online or offline!

43 lines (40 loc) 1.77 kB
import EventEmitter from "events"; import { QueueDataType, getDispatcherChangeEventKey, getDispatcherStatusEventKey, getDispatcherDrainedEventKey, } from "dispatcher"; import { RequestInstance } from "request"; export const getDispatcherEvents = (emitter: EventEmitter) => ({ setDrained: <Request extends RequestInstance>(queueKey: string, values: QueueDataType<Request>): void => { emitter.emit(getDispatcherDrainedEventKey(queueKey), values); }, setQueueStatus: <Request extends RequestInstance>(queueKey: string, values: QueueDataType<Request>): void => { emitter.emit(getDispatcherStatusEventKey(queueKey), values); }, setQueueChanged: <Request extends RequestInstance>(queueKey: string, values: QueueDataType<Request>): void => { emitter.emit(getDispatcherChangeEventKey(queueKey), values); }, onDrained: <Request extends RequestInstance>( queueKey: string, callback: (values: QueueDataType<Request>) => void, ): VoidFunction => { emitter.on(getDispatcherDrainedEventKey(queueKey), callback); return () => emitter.removeListener(getDispatcherDrainedEventKey(queueKey), callback); }, onQueueStatus: <Request extends RequestInstance>( queueKey: string, callback: (values: QueueDataType<Request>) => void, ): VoidFunction => { emitter.on(getDispatcherStatusEventKey(queueKey), callback); return () => emitter.removeListener(getDispatcherStatusEventKey(queueKey), callback); }, onQueueChange: <Request extends RequestInstance>( queueKey: string, callback: (values: QueueDataType<Request>) => void, ): VoidFunction => { emitter.on(getDispatcherChangeEventKey(queueKey), callback); return () => emitter.removeListener(getDispatcherChangeEventKey(queueKey), callback); }, });