@nesvet/n
Version:
Various utilities
26 lines • 1.09 kB
TypeScript
import { StatefulPromise } from "./StatefulPromise.js";
type Callback = (...args: any[]) => unknown;
type FunctionOrBoolean = (() => unknown) | boolean;
type Options = {
leading?: FunctionOrBoolean;
maxWait?: number;
trailing?: FunctionOrBoolean;
};
type DebouncedFunction<C extends Callback> = {
(this: ThisParameterType<C>, ...args: Parameters<C>): Promise<Awaited<ReturnType<C>>>;
};
export type Debounced<C extends Callback, R extends ReturnType<C>> = DebouncedFunction<C> & {
callback: C;
promise: StatefulPromise<R>;
resolve: (value: R) => void;
reject: (reason?: unknown) => void;
run(): Promise<R>;
clear(shouldRun?: boolean): Promise<void>;
};
export declare function debounce<C extends Callback, R extends ReturnType<C>>(callback: C, limit?: number, options?: Options): Debounced<C, R>;
export declare namespace debounce {
var noop: Debounced<() => void, void>;
}
export declare function throttle(callback: Callback, limit?: number, options?: Options): Debounced<Callback, unknown>;
export {};
//# sourceMappingURL=debounce.d.ts.map