UNPKG

@hazae41/box

Version:

Rust-like Box and similar objects for TypeScript

64 lines (60 loc) 1.32 kB
'use strict'; var index = require('../deferred/index.cjs'); /** * A simple reference */ class Ref { value; clean; constructor(value, clean) { this.value = value; this.clean = clean; } static wrap(value) { return new Ref(value, value); } static from(value) { return new Ref(value.get(), value); } static with(value, clean) { return new Ref(value, new index.Deferred(() => clean(value))); } [Symbol.dispose]() { this.clean[Symbol.dispose](); } async [Symbol.asyncDispose]() { this[Symbol.dispose](); } get() { return this.value; } } /** * A simple reference */ class AsyncRef { value; clean; constructor(value, clean) { this.value = value; this.clean = clean; } static wrap(value) { return new AsyncRef(value, value); } static from(value) { return new AsyncRef(value.get(), value); } static with(value, clean) { return new AsyncRef(value, new index.Deferred(() => clean(value))); } async [Symbol.asyncDispose]() { await this.clean[Symbol.asyncDispose](); } get() { return this.value; } } exports.AsyncRef = AsyncRef; exports.Ref = Ref; //# sourceMappingURL=index.cjs.map