@hazae41/box
Version:
Rust-like Box and similar objects for TypeScript
1 lines • 3.12 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../../../../../src/mods/auto/index.ts"],"sourcesContent":["/**\n * A reference that will be disposed when garbage collected\n */\nexport class Auto<T extends Disposable> {\n\n static readonly cleanup = (x: Disposable) => x[Symbol.dispose]()\n static readonly registry = new FinalizationRegistry(Auto.cleanup)\n\n /**\n * A reference that will be disposed when garbage collected\n * @param value \n */\n constructor(\n readonly value: T\n ) {\n Auto.registry.register(this, value, this)\n }\n\n [Symbol.dispose]() {\n Auto.registry.unregister(this)\n }\n\n async [Symbol.asyncDispose]() {\n this[Symbol.dispose]()\n }\n\n get() {\n return this.value\n }\n\n unwrap() {\n using _ = this\n return this.value\n }\n\n}\n\n/**\n * A reference that will be disposed when garbage collected\n */\nexport class AsyncAuto<T extends AsyncDisposable> {\n\n static readonly cleanup = (x: AsyncDisposable) => x[Symbol.asyncDispose]().then(undefined, console.error)\n static readonly registry = new FinalizationRegistry(AsyncAuto.cleanup)\n\n /**\n * A reference that will be disposed when garbage collected\n * @param value \n */\n constructor(\n readonly value: T\n ) {\n AsyncAuto.registry.register(this, value, this)\n }\n\n [Symbol.dispose]() {\n AsyncAuto.registry.unregister(this)\n }\n\n async [Symbol.asyncDispose]() {\n this[Symbol.dispose]()\n }\n\n get() {\n return this.value\n }\n\n unwrap() {\n using _ = this\n return this.value\n }\n\n}"],"names":["__addDisposableResource"],"mappings":";;;;AAAA;;AAEG;MACU,IAAI,CAAA;AAUJ,IAAA,KAAA,CAAA;AARX,IAAA,OAAgB,OAAO,GAAG,CAAC,CAAa,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;IAChE,OAAgB,QAAQ,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAEjE;;;AAGG;AACH,IAAA,WAAA,CACW,KAAQ,EAAA;QAAR,IAAK,CAAA,KAAA,GAAL,KAAK,CAAG;QAEjB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;KAC1C;IAED,CAAC,MAAM,CAAC,OAAO,CAAC,GAAA;AACd,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;KAC/B;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;IAED,MAAM,GAAA;;;AACJ,YAAA,MAAM,CAAC,GAAAA,iCAAA,CAAA,KAAA,EAAG,IAAI,EAAA,KAAA,CAAA,CAAA;YACd,OAAO,IAAI,CAAC,KAAK,CAAA;;;;;;;;;AAClB,KAAA;;AAIH;;AAEG;MACU,SAAS,CAAA;AAUT,IAAA,KAAA,CAAA;IARX,OAAgB,OAAO,GAAG,CAAC,CAAkB,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IACzG,OAAgB,QAAQ,GAAG,IAAI,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;AAEtE;;;AAGG;AACH,IAAA,WAAA,CACW,KAAQ,EAAA;QAAR,IAAK,CAAA,KAAA,GAAL,KAAK,CAAG;QAEjB,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;KAC/C;IAED,CAAC,MAAM,CAAC,OAAO,CAAC,GAAA;AACd,QAAA,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;KACpC;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;IAED,MAAM,GAAA;;;AACJ,YAAA,MAAM,CAAC,GAAAA,iCAAA,CAAA,KAAA,EAAG,IAAI,EAAA,KAAA,CAAA,CAAA;YACd,OAAO,IAAI,CAAC,KAAK,CAAA;;;;;;;;;AAClB,KAAA;;;;;;"}