diff options
| author | Luca Casonato <hello@lcas.dev> | 2023-11-01 20:26:12 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-11-01 20:26:12 +0100 |
| commit | d42f1543121e7245789a96a485d1ef7645cb5fba (patch) | |
| tree | d57a10ac527fe5b6796a3a8866af95f0f1a5d7bd /runtime/js/99_main.js | |
| parent | 1d19b1011bd7df50598f5981408c2d78c35b76d2 (diff) | |
feat: disposable Deno resources (#20845)
This commit implements Symbol.dispose and Symbol.asyncDispose for
the relevant resources.
Closes #20839
---------
Signed-off-by: Bartek Iwańczuk <biwanczuk@gmail.com>
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
Diffstat (limited to 'runtime/js/99_main.js')
| -rw-r--r-- | runtime/js/99_main.js | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js index ccc61036a..ac1f52e74 100644 --- a/runtime/js/99_main.js +++ b/runtime/js/99_main.js @@ -70,11 +70,24 @@ import { windowOrWorkerGlobalScope, workerRuntimeGlobalProperties, } from "ext:runtime/98_global_scope.js"; +import { SymbolAsyncDispose, SymbolDispose } from "ext:deno_web/00_infra.js"; // deno-lint-ignore prefer-primordials -Symbol.dispose ??= Symbol("Symbol.dispose"); -// deno-lint-ignore prefer-primordials -Symbol.asyncDispose ??= Symbol("Symbol.asyncDispose"); +if (Symbol.dispose) throw "V8 supports Symbol.dispose now, no need to shim it!"; +ObjectDefineProperties(Symbol, { + dispose: { + value: SymbolDispose, + enumerable: false, + writable: false, + configurable: false, + }, + asyncDispose: { + value: SymbolAsyncDispose, + enumerable: false, + writable: false, + configurable: false, + }, +}); let windowIsClosing = false; let globalThis_; |
