@hazae41/box
Version:
Rust-like Box and similar objects for TypeScript
1 lines • 2.25 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../../../../src/mods/clone/index.ts"],"sourcesContent":["import { Deferred } from \"mods/deferred/index.js\"\nimport { Void } from \"mods/void/index.js\"\nimport { Wrap } from \"mods/wrap/index.js\"\n\nexport class Clone<T> {\n\n #count = 1\n\n constructor(\n readonly value: T,\n readonly clean: Disposable\n ) { }\n\n static void() {\n return new Clone<void>(undefined, new Void())\n }\n\n static wrap<T extends Disposable>(value: T) {\n return new Clone(value, value)\n }\n\n static from<T>(value: Wrap<T>) {\n return new Clone(value.get(), value)\n }\n\n static with<T>(value: T, clean: (value: T) => void) {\n return new Clone(value, new Deferred(() => clean(value)))\n }\n\n [Symbol.dispose]() {\n this.#count--\n\n if (this.#count > 0)\n return\n\n this.clean[Symbol.dispose]()\n }\n\n async [Symbol.asyncDispose]() {\n this[Symbol.dispose]()\n }\n\n get count() {\n return this.#count\n }\n\n get() {\n return this.value\n }\n\n clone() {\n this.#count++\n return this\n }\n\n}\n"],"names":["Void","Deferred"],"mappings":";;;;;MAIa,KAAK,CAAA;AAKL,IAAA,KAAA,CAAA;AACA,IAAA,KAAA,CAAA;IAJX,MAAM,GAAG,CAAC,CAAA;IAEV,WACW,CAAA,KAAQ,EACR,KAAiB,EAAA;QADjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAG;QACR,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;KACvB;AAEL,IAAA,OAAO,IAAI,GAAA;QACT,OAAO,IAAI,KAAK,CAAO,SAAS,EAAE,IAAIA,UAAI,EAAE,CAAC,CAAA;KAC9C;IAED,OAAO,IAAI,CAAuB,KAAQ,EAAA;AACxC,QAAA,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;KAC/B;IAED,OAAO,IAAI,CAAI,KAAc,EAAA;QAC3B,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;KACrC;AAED,IAAA,OAAO,IAAI,CAAI,KAAQ,EAAE,KAAyB,EAAA;AAChD,QAAA,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,IAAIC,gBAAQ,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;KAC1D;IAED,CAAC,MAAM,CAAC,OAAO,CAAC,GAAA;QACd,IAAI,CAAC,MAAM,EAAE,CAAA;AAEb,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YACjB,OAAM;QAER,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,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;IAED,GAAG,GAAA;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;KAClB;IAED,KAAK,GAAA;QACH,IAAI,CAAC,MAAM,EAAE,CAAA;AACb,QAAA,OAAO,IAAI,CAAA;KACZ;AAEF;;;;"}