UNPKG

@tai-kun/surrealdb

Version:

The SurrealDB SDK for JavaScript

56 lines 2.53 kB
import StatefulPromise from "./stateful-promise"; import TaskQueue, { type TaskOptions, type TaskRunnerArgs } from "./task-queue"; interface TypedMap<T> { clear(): void; delete(key: keyof T): boolean; get<TEvent extends keyof T>(key: TEvent): T[TEvent] | undefined; set<TEvent extends keyof T>(key: TEvent, value: T[TEvent]): this; keys(): IterableIterator<keyof T>; } /** * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/task-emitter/) */ export type TaskListener<TArgs extends unknown[]> = (runnerArgs: TaskRunnerArgs, ...args: TArgs) => void | PromiseLike<void>; /** * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/task-emitter/#once) */ export interface TaskListenerOptions extends TaskOptions { } /** * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/task-emitter/) */ export default class TaskEmitter<TEventMap extends Record<string | number, unknown[]>> { protected readonly _queue: TaskQueue; protected readonly _listeners: TypedMap<{ [P in keyof TEventMap]: { original: TaskListener<TEventMap[P]>; dispatch: (args: TEventMap[P]) => StatefulPromise<unknown>; }[]; }>; /** * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/task-emitter/#on) */ on<TEvent extends keyof TEventMap>(this: this, event: TEvent, listener: TaskListener<TEventMap[TEvent]>): void; /** * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/task-emitter/#off) */ off<TEvent extends keyof TEventMap>(event: TEvent, listener?: TaskListener<TEventMap[TEvent]>): void; /** * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/task-emitter/#once) */ once<TEvent extends keyof TEventMap>(event: TEvent, options?: TaskListenerOptions | undefined): StatefulPromise<TEventMap[TEvent]> & { readonly cancel: () => StatefulPromise<void>; }; /** * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/task-emitter/#emit) */ emit<TEvent extends keyof TEventMap>(event: TEvent, ...args: TEventMap[TEvent]): undefined | StatefulPromise<unknown>[]; /** * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/task-emitter/#idle) */ idle(): StatefulPromise<void>; /** * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/task-emitter/#abort) */ abort(reason?: unknown): void; } export {}; //# sourceMappingURL=task-emitter.d.ts.map