Note: This project is deprecated! The behavior is easily accessible inside of VITE using `esbuild.target: 'es2022' which will be a lot better than this dirty package anyway.
This plugin allows using the upcoming JS keyword using
in your code today! It transpiles using
and await using
to try/finally
blocks to get the same effect more easily!
pnpm add vite-plugin-using
Add to your vite.config.ts
import ViteUsing from 'vite-plugin-using';
export default defineConfig({
plugins: [ViteUsing()],
});
You will need to polyfill the new @@dispose
and @@asyncDispose
symbols as such somewhere in your runtime:
Symbol.dispose ??= Symbol('@@dispose');
Symbol.asyncDispose ??= Symbol('@@asyncDispose');
Just start using
!!
class disposable {
constructor() {}
[Symbol.dispose]() {
console.log('disposing')
}
[Symbol.asyncDispose]() {
console.log('async disposing')
}
}
{
using obj = new disposable();
console.log('made one obj');
await using obj2 = new disposable();
console.log('made two obj');
console.log(obj, obj2)
}