@hazae41/box
Version:
Rust-like Box and similar objects for TypeScript
51 lines (48 loc) • 1.46 kB
TypeScript
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 };