UNPKG

@hazae41/box

Version:

Rust-like Box and similar objects for TypeScript

1 lines 2.17 kB
{"version":3,"file":"index.cjs","sources":["../../../../../src/mods/once/index.ts"],"sourcesContent":["/**\n * A reference that can only be disposed once\n */\nexport class Once<T extends Disposable> {\n\n #disposed = false\n\n /**\n * A reference that can only be disposed once\n * @param value \n */\n constructor(\n readonly value: T\n ) { }\n\n [Symbol.dispose](this: Once<Disposable>) {\n if (this.#disposed)\n return\n this.#disposed = true\n\n this.value[Symbol.dispose]()\n }\n\n async [Symbol.asyncDispose]() {\n this[Symbol.dispose]()\n }\n\n get disposed() {\n return this.#disposed\n }\n\n get() {\n return this.value\n }\n\n}\n\nexport class AsyncOnce<T extends AsyncDisposable> {\n\n #disposed = false\n\n /**\n * A reference that can only be disposed once\n * @param value \n */\n constructor(\n readonly value: T\n ) { }\n\n async [Symbol.asyncDispose]() {\n if (this.#disposed)\n return\n this.#disposed = true\n\n await this.value[Symbol.asyncDispose]()\n }\n\n get disposed() {\n return this.#disposed\n }\n\n get() {\n return this.value\n }\n\n}"],"names":[],"mappings":";;AAAA;;AAEG;MACU,IAAI,CAAA;AASJ,IAAA,KAAA,CAAA;IAPX,SAAS,GAAG,KAAK,CAAA;AAEjB;;;AAGG;AACH,IAAA,WAAA,CACW,KAAQ,EAAA;QAAR,IAAK,CAAA,KAAA,GAAL,KAAK,CAAG;KACd;IAEL,CAAC,MAAM,CAAC,OAAO,CAAC,GAAA;QACd,IAAI,IAAI,CAAC,SAAS;YAChB,OAAM;AACR,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QAErB,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;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAA;KACtB;IAED,GAAG,GAAA;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;KAClB;AAEF,CAAA;MAEY,SAAS,CAAA;AAST,IAAA,KAAA,CAAA;IAPX,SAAS,GAAG,KAAK,CAAA;AAEjB;;;AAGG;AACH,IAAA,WAAA,CACW,KAAQ,EAAA;QAAR,IAAK,CAAA,KAAA,GAAL,KAAK,CAAG;KACd;AAEL,IAAA,OAAO,MAAM,CAAC,YAAY,CAAC,GAAA;QACzB,IAAI,IAAI,CAAC,SAAS;YAChB,OAAM;AACR,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QAErB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAA;KACxC;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAA;KACtB;IAED,GAAG,GAAA;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;KAClB;AAEF;;;;;"}