1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
x5 x30 x30 x30 x669 x30 x30 x52 x30 x30 x55 x270 x270 x55 x30 x30 |
// Copyright 2018-2025 the Deno authors. MIT license.
// partial `DisposableStack` polyfill
// https://github.com/tc39/proposal-explicit-resource-management
export function disposableStack() {
return {
disposables: [] as Disposable[],
defer(fn: () => void) {
this.disposables.push({ [Symbol.dispose]: fn });
},
use(val: Disposable) {
this.disposables.push(val);
},
[Symbol.dispose]() {
for (let i = this.disposables.length - 1; i >= 0; --i) {
this.disposables[i]![Symbol.dispose]();
}
},
};
}
|