From fb6e3ca7a4d7e7fde8d05d167ee8c136e7dfa6f2 Mon Sep 17 00:00:00 2001 From: syumai Date: Thu, 4 Jan 2024 22:59:05 +0900 Subject: [PATCH] use go:wasmimport for ready func --- cmd/workers-assets-gen/assets/common/shim.mjs | 14 ++++++++++---- handler.go | 5 ++++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/cmd/workers-assets-gen/assets/common/shim.mjs b/cmd/workers-assets-gen/assets/common/shim.mjs index 6a1054b..2f33e6b 100644 --- a/cmd/workers-assets-gen/assets/common/shim.mjs +++ b/cmd/workers-assets-gen/assets/common/shim.mjs @@ -13,7 +13,7 @@ globalThis.tryCatch = (fn) => { } catch(e) { return { error: e, - } + }; } } @@ -22,10 +22,16 @@ export function init(m) { } async function run() { + let ready; const readyPromise = new Promise((resolve) => { - globalThis.ready = resolve; + ready = resolve; + }); + const instance = new WebAssembly.Instance(mod, { + ...go.importObject, + workers: { + ready: () => { ready() } + }, }); - const instance = new WebAssembly.Instance(mod, go.importObject); go.run(instance); await readyPromise; } @@ -35,7 +41,7 @@ function createRuntimeContext(env, ctx) { env, ctx, connect, - } + }; } export async function fetch(req, env, ctx) { diff --git a/handler.go b/handler.go index 313ba47..e6e54ad 100644 --- a/handler.go +++ b/handler.go @@ -71,6 +71,9 @@ func handleRequest(reqObj js.Value, runtimeCtxObj js.Value) (js.Value, error) { return w.ToJSResponse(), nil } +//go:wasmimport workers ready +func ready() + // Server serves http.Handler on Cloudflare Workers. // if the given handler is nil, http.DefaultServeMux will be used. func Serve(handler http.Handler) { @@ -78,6 +81,6 @@ func Serve(handler http.Handler) { handler = http.DefaultServeMux } httpHandler = handler - js.Global().Call("ready") + ready() select {} }