From cf2a3ceefa9e6180860ad449d5c53edf81dd42dc Mon Sep 17 00:00:00 2001 From: Nicolas Lepage <19571875+nlepage@users.noreply.github.com> Date: Thu, 21 Jan 2021 23:59:35 +0100 Subject: [PATCH] :alembic: --- sw.js | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/sw.js b/sw.js index 3f7d525..e3c54e1 100644 --- a/sw.js +++ b/sw.js @@ -15,30 +15,26 @@ function registerWasmHTTPListener(wasm, base, args) { let path = new URL(registration.scope).pathname if (base && base !== '') path = `${trimEnd(path, '/')}/${trimStart(base, '/')}` + const wasmPromise = fetch(wasm) + addEventListener('fetch', e => { const { pathname } = new URL(e.request.url) if (!pathname.startsWith(path)) return - console.log(`FetchEvent ${pathname}`) - const handlerId = `${nextHandlerId++}` const handlerPromise = new Promise(resolve => handlerResolvers[handlerId] = resolve) - + + const go = new Go() + go.env = { WASMHTTP_HANDLER_ID: handlerId, WASMHTTP_PATH: path } + go.argv = [wasm, ...args] + const { instance } = await WebAssembly.instantiateStreaming(wasmPromise, go.importObject) // FIXME await ? catch ? - startWasm(wasm, { env: { WASMHTTP_HANDLER_ID: handlerId, WASMHTTP_PATH: path }, args }) - + go.run(instance) + e.respondWith(handlerPromise.then(handler => handler(e.request))) }) } -async function startWasm(wasm, { env, args = [] }) { - const go = new Go() - go.env = env - go.argv = [wasm, ...args] - const { instance } = await WebAssembly.instantiateStreaming(fetch(wasm), go.importObject) - return go.run(instance) -} - function trimStart(s, c) { let r = s while (r.startsWith(c)) r = r.slice(c.length)