UNPKG

sandstone-proxy

Version:

An experimental web proxy utilizing sandboxed iframes and no service worker.

32 lines (28 loc) 1.06 kB
import { ctx } from "../context.mjs"; import * as network from "../network.mjs"; export async function fetch(resource, params={}) { console.log("DEBUG fetch", resource, params); //parse resources and convert to a friendly form let url = resource; if (resource instanceof Request) { url = resource.url; params.body = params.body || await resource.blob(); params.headers = params.headers || Object.fromEntries(resource.headers); params.method = params.method || resource.method; if (params.body.size === 0) { delete params.body; } } url = (new URL(url, ctx.location.href)).href; if (params.body instanceof ReadableStream) { params.duplex = "half"; } if (params.signal) //abortsignal cant be cloned delete params.signal; //figure out the request body let request_obj = new Request("http://127.0.0.1/", params); let array_buffer = await request_obj.arrayBuffer(); params.body = array_buffer.byteLength ? array_buffer : undefined; //perform the request return await network.fetch(url, params); }