@tai-kun/surrealdb
Version:
The SurrealDB SDK for JavaScript
56 lines • 2.53 kB
TypeScript
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