UNPKG

@hazae41/box

Version:

Rust-like Box and similar objects for TypeScript

1 lines 2.98 kB
{"version":3,"file":"index.mjs","sources":["../../../../src/mods/ref/index.ts"],"sourcesContent":["import { Deferred } from \"mods/deferred/index.js\"\nimport { AsyncWrap, Wrap } from \"mods/wrap/index.js\"\n\n/**\n * A simple reference\n */\nexport class Ref<T> implements Disposable {\n\n constructor(\n readonly value: T,\n readonly clean: Disposable\n ) { }\n\n static wrap<T extends Disposable>(value: T) {\n return new Ref(value, value)\n }\n\n static from<T>(value: Wrap<T>) {\n return new Ref(value.get(), value)\n }\n\n static with<T>(value: T, clean: (value: T) => void) {\n return new Ref(value, new Deferred(() => clean(value)))\n }\n\n [Symbol.dispose]() {\n this.clean[Symbol.dispose]()\n }\n\n async [Symbol.asyncDispose]() {\n this[Symbol.dispose]()\n }\n\n get() {\n return this.value\n }\n\n}\n\n/**\n * A simple reference\n */\nexport class AsyncRef<T> implements AsyncDisposable {\n\n constructor(\n readonly value: T,\n readonly clean: AsyncDisposable\n ) { }\n\n static wrap<T extends AsyncDisposable>(value: T) {\n return new AsyncRef(value, value)\n }\n\n static from<T>(value: AsyncWrap<T>) {\n return new AsyncRef(value.get(), value)\n }\n\n static with<T>(value: T, clean: (value: T) => void) {\n return new AsyncRef(value, new Deferred(() => clean(value)))\n }\n\n async [Symbol.asyncDispose]() {\n await this.clean[Symbol.asyncDispose]()\n }\n\n get() {\n return this.value\n }\n\n}\n"],"names":[],"mappings":";;AAGA;;AAEG;MACU,GAAG,CAAA;AAGH,IAAA,KAAA,CAAA;AACA,IAAA,KAAA,CAAA;IAFX,WACW,CAAA,KAAQ,EACR,KAAiB,EAAA;QADjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAG;QACR,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;KACvB;IAEL,OAAO,IAAI,CAAuB,KAAQ,EAAA;AACxC,QAAA,OAAO,IAAI,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;KAC7B;IAED,OAAO,IAAI,CAAI,KAAc,EAAA;QAC3B,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;KACnC;AAED,IAAA,OAAO,IAAI,CAAI,KAAQ,EAAE,KAAyB,EAAA;AAChD,QAAA,OAAO,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;KACxD;IAED,CAAC,MAAM,CAAC,OAAO,CAAC,GAAA;QACd,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;KAC7B;AAED,IAAA,OAAO,MAAM,CAAC,YAAY,CAAC,GAAA;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;KACvB;IAED,GAAG,GAAA;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;KAClB;AAEF,CAAA;AAED;;AAEG;MACU,QAAQ,CAAA;AAGR,IAAA,KAAA,CAAA;AACA,IAAA,KAAA,CAAA;IAFX,WACW,CAAA,KAAQ,EACR,KAAsB,EAAA;QADtB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAG;QACR,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;KAC5B;IAEL,OAAO,IAAI,CAA4B,KAAQ,EAAA;AAC7C,QAAA,OAAO,IAAI,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;KAClC;IAED,OAAO,IAAI,CAAI,KAAmB,EAAA;QAChC,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;KACxC;AAED,IAAA,OAAO,IAAI,CAAI,KAAQ,EAAE,KAAyB,EAAA;AAChD,QAAA,OAAO,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;KAC7D;AAED,IAAA,OAAO,MAAM,CAAC,YAAY,CAAC,GAAA;QACzB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAA;KACxC;IAED,GAAG,GAAA;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;KAClB;AAEF;;;;"}