@utilify/core
Version:
Modern, strongly typed, and safe utility function library for JavaScript and TypeScript. Includes type checking, manipulation of arrays, objects, strings, dates, colors, numbers, regular expressions, and more. Compatible with Browser, Node.js, Deno, and B
24 lines • 923 B
TypeScript
/**
* @callback LockCallback
* @returns {Promise<any>} The async function to lock.
*/
/**
* Options for lock.
* @typedef {Object} LockOptions
* @property {boolean} [queue]
* @property {() => void|Promise<void>} [onLocked]
* @property {(error: unknown) => void|Promise<void>} [onError]
*/
/**
* Ensures only one async function runs at a time, with optional queueing.
* @template T
* @param {LockCallback} callback - The async function to lock.
* @param {LockOptions} [options] - Lock configuration.
* @returns {(...args: Parameters<T>) => Promise<ReturnType<T> | void>} The locked function.
*/
export default function lock<T extends (...args: any[]) => Promise<any>>(callback: T, options?: {
queue?: boolean;
onLocked?: () => void | Promise<void>;
onError?: (error: unknown) => void | Promise<void>;
}): (...args: Parameters<T>) => Promise<ReturnType<T> | void>;
//# sourceMappingURL=lock.d.ts.map