UNPKG

@hazae41/box

Version:

Rust-like Box and similar objects for TypeScript

91 lines (87 loc) 2.19 kB
'use strict'; var tslib_es6 = require('../../../node_modules/tslib/tslib.es6.cjs'); /** * 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; } unwrap() { const env_1 = { stack: [], error: void 0, hasError: false }; try { const _ = tslib_es6.__addDisposableResource(env_1, this, false); return this.value; } catch (e_1) { env_1.error = e_1; env_1.hasError = true; } finally { tslib_es6.__disposeResources(env_1); } } } /** * 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; } unwrap() { const env_2 = { stack: [], error: void 0, hasError: false }; try { const _ = tslib_es6.__addDisposableResource(env_2, this, false); return this.value; } catch (e_2) { env_2.error = e_2; env_2.hasError = true; } finally { tslib_es6.__disposeResources(env_2); } } } exports.AsyncTick = AsyncTick; exports.Tick = Tick; //# sourceMappingURL=index.cjs.map