// Install Deno's native Web APIs. No Node runtime is present. const core = Deno.core; const expose = (path, names) => { const exports = core.loadExtScript(path); for (const name of names) globalThis[name] = exports[name]; }; expose('ext:deno_web/01_dom_exception.js', ['DOMException']); expose('ext:deno_web/02_event.js', ['Event', 'EventTarget', 'MessageEvent']); expose('ext:deno_web/13_message_port.js', ['MessageChannel', 'MessagePort']); expose('ext:deno_web/00_url.js', ['URL', 'URLSearchParams']); expose('ext:deno_web/02_timers.js', ['setTimeout', 'clearTimeout', 'setInterval', 'clearInterval']); expose('ext:deno_web/03_abort_signal.js', ['AbortController', 'AbortSignal']); expose('ext:deno_web/06_streams.js', ['ReadableStream', 'WritableStream', 'TransformStream']); expose('ext:deno_web/08_text_encoding.js', ['TextEncoder', 'TextDecoder']); expose('ext:deno_web/09_file.js', ['Blob', 'File']); expose('ext:deno_web/15_performance.js', ['performance']); expose('ext:deno_web/02_structured_clone.js', ['structuredClone']); expose('ext:deno_web/05_base64.js', ['atob', 'btoa']); expose('ext:deno_crypto/00_crypto.js', ['crypto']); expose('ext:deno_fetch/20_headers.js', ['Headers']); expose('ext:deno_fetch/21_formdata.js', ['FormData']); expose('ext:deno_fetch/23_request.js', ['Request']); expose('ext:deno_fetch/23_response.js', ['Response']); expose('ext:deno_fetch/26_fetch.js', ['fetch']); const { Console } = core.loadExtScript('ext:deno_web/01_console.js'); globalThis.console = new Console((message, level) => core.print(message, level > 1)); globalThis.process = { env: {} };