import type { ProxyFetchRequest, ProxyFetchResponse, } from "../../common/proxy_fetch.ts"; import { base64Decode } from "../../plugos/asset_bundle/base64.ts"; export function sandboxFetch( url: string, options?: ProxyFetchRequest, ): Promise { // @ts-ignore: monkey patching fetch return syscall("sandboxFetch.fetch", url, options); } export function monkeyPatchFetch() { // @ts-ignore: monkey patching fetch globalThis.fetch = async function ( url: string, init?: RequestInit, ): Promise { const r = await sandboxFetch( url, init && { method: init.method, headers: init.headers as Record, body: init.body as string, }, ); return new Response(r.base64Body ? base64Decode(r.base64Body) : null, { status: r.status, headers: r.headers, }); }; }