UNPKG

@hazae41/box

Version:

Rust-like Box and similar objects for TypeScript

61 lines (58 loc) 1.33 kB
'use strict'; /** * A reference that will be disposed after some delay */ class Tick { value; delay; #timeout; /** * A reference that will be disposed after some delay * @param value * @param delay */ constructor(value, delay = 0) { this.value = value; this.delay = delay; this.#timeout = setTimeout(() => this.value[Symbol.dispose](), delay); } [Symbol.dispose]() { clearTimeout(this.#timeout); } async [Symbol.asyncDispose]() { this[Symbol.dispose](); } get() { return this.value; } } /** * A reference that will be disposed after some delay */ class AsyncTick { value; delay; #timeout; /** * A reference that will be disposed after some delay * @param value * @param delay */ constructor(value, delay = 0) { this.value = value; this.delay = delay; this.#timeout = setTimeout(() => this.value[Symbol.asyncDispose]().then(undefined, console.error), delay); } [Symbol.dispose]() { clearTimeout(this.#timeout); } async [Symbol.asyncDispose]() { this[Symbol.dispose](); } get() { return this.value; } } exports.AsyncTick = AsyncTick; exports.Tick = Tick; //# sourceMappingURL=index.cjs.map