UNPKG

@ndn/util

Version:
36 lines (35 loc) 1.47 kB
import "./polyfill_node.js"; import type { Promisable } from "type-fest"; import type { Semaphore } from "wait-your-turn"; export interface Closer { close: () => void; } export declare namespace Closer { /** Close or dispose an object. */ function close(c: any): Promisable<void>; /** Convert a closable object to AsyncDisposable. */ function asAsyncDisposable(c: Closer | Disposable | AsyncDisposable): AsyncDisposable; } /** A list of objects that can be closed or disposed. */ export declare class Closers extends Array<Closer | Disposable | AsyncDisposable> implements Disposable { /** * Close all objects and clear the list. * * @remarks * All objects added to this array are closed, in the reversed order as they appear in the array. * This is a synchronous function, so that any AsyncDisposable objects in the array would have its * asyncDispose method is called but not awaited. * This array is cleared and can be reused. */ readonly close: () => void; [Symbol.dispose](): void; /** Schedule a timeout or interval to be canceled upon close. */ addTimeout<T extends NodeJS.Timeout | number>(t: T): T; /** Wait for close. */ wait(): Promise<void>; } /** * Acquire a semaphore for unlocking via Disposable. * @param semaphore - Semaphore or Mutex from `wait-your-turn` package. */ export declare function lock(semaphore: Pick<Semaphore, "acquire">): Promise<Disposable>;