UNPKG

@hazae41/box

Version:

Rust-like Box and similar objects for TypeScript

51 lines (48 loc) 1.46 kB
import { Nullable } from '../../libs/nullable/index.js'; import { Wrap, AsyncWrap } from '../wrap/index.js'; declare class DisposedError extends Error { #private; readonly name: string; constructor(); } /** * A reference that can only be disposed once */ declare class Once<T> { #private; readonly value: T; readonly clean: Disposable; /** * A reference that can only be disposed once * @param value */ constructor(value: T, clean: Disposable); static wrap<T extends Disposable>(value: T): Once<T>; static from<T>(value: Wrap<T>): Once<T>; static with<T>(value: T, clean: (value: T) => void): Once<T>; [Symbol.dispose](): void; [Symbol.asyncDispose](): Promise<void>; get disposed(): boolean; get(): T; getOrNull(): Nullable<T>; getOrThrow(): T; } declare class AsyncOnce<T> { #private; readonly value: T; readonly clean: AsyncDisposable; /** * A reference that can only be disposed once * @param value */ constructor(value: T, clean: AsyncDisposable); static wrap<T extends AsyncDisposable>(value: T): AsyncOnce<T>; static from<T>(value: AsyncWrap<T>): AsyncOnce<T>; static with<T>(value: T, clean: (value: T) => void): AsyncOnce<T>; [Symbol.asyncDispose](): Promise<void>; get disposed(): boolean; get(): T; getOrNull(): Nullable<T>; getOrThrow(): Promise<T>; } export { AsyncOnce, DisposedError, Once };