diff --git a/examples/assets/shim.mjs b/examples/assets/shim.mjs new file mode 100644 index 0000000..1fb5168 --- /dev/null +++ b/examples/assets/shim.mjs @@ -0,0 +1,24 @@ +import "./polyfill_performance.js"; +import "./wasm_exec.js"; + +const go = new Go(); + +let mod; + +export function init(m) { + mod = m; +} + +async function run() { + const readyPromise = new Promise((resolve) => { + globalThis.ready = resolve; + }); + const instance = new WebAssembly.Instance(mod, go.importObject); + go.run(instance); + await readyPromise; +} + +export async function fetch(req, env, ctx) { + await run(); + return handleRequest(req, { env, ctx }); +} \ No newline at end of file diff --git a/examples/basic-auth-proxy/worker.mjs b/examples/basic-auth-proxy/worker.mjs index 649ccf0..d1ba1b8 100644 --- a/examples/basic-auth-proxy/worker.mjs +++ b/examples/basic-auth-proxy/worker.mjs @@ -1,22 +1,6 @@ -import "../assets/polyfill_performance.js"; -import "../assets/wasm_exec.js"; +import * as imports from "../assets/shim.mjs"; import mod from "./dist/app.wasm"; -const go = new Go(); +imports.init(mod); -const readyPromise = new Promise((resolve) => { - globalThis.ready = resolve; -}); - -const load = WebAssembly.instantiate(mod, go.importObject).then((instance) => { - go.run(instance); - return instance; -}); - -export default { - async fetch(req, env, ctx) { - await load; - await readyPromise; - return handleRequest(req, { env, ctx }); - } -} +export default { fetch: imports.fetch } diff --git a/examples/cache/worker.mjs b/examples/cache/worker.mjs index 649ccf0..d1ba1b8 100644 --- a/examples/cache/worker.mjs +++ b/examples/cache/worker.mjs @@ -1,22 +1,6 @@ -import "../assets/polyfill_performance.js"; -import "../assets/wasm_exec.js"; +import * as imports from "../assets/shim.mjs"; import mod from "./dist/app.wasm"; -const go = new Go(); +imports.init(mod); -const readyPromise = new Promise((resolve) => { - globalThis.ready = resolve; -}); - -const load = WebAssembly.instantiate(mod, go.importObject).then((instance) => { - go.run(instance); - return instance; -}); - -export default { - async fetch(req, env, ctx) { - await load; - await readyPromise; - return handleRequest(req, { env, ctx }); - } -} +export default { fetch: imports.fetch } diff --git a/examples/d1-blog-server/worker.mjs b/examples/d1-blog-server/worker.mjs index 649ccf0..d1ba1b8 100644 --- a/examples/d1-blog-server/worker.mjs +++ b/examples/d1-blog-server/worker.mjs @@ -1,22 +1,6 @@ -import "../assets/polyfill_performance.js"; -import "../assets/wasm_exec.js"; +import * as imports from "../assets/shim.mjs"; import mod from "./dist/app.wasm"; -const go = new Go(); +imports.init(mod); -const readyPromise = new Promise((resolve) => { - globalThis.ready = resolve; -}); - -const load = WebAssembly.instantiate(mod, go.importObject).then((instance) => { - go.run(instance); - return instance; -}); - -export default { - async fetch(req, env, ctx) { - await load; - await readyPromise; - return handleRequest(req, { env, ctx }); - } -} +export default { fetch: imports.fetch } diff --git a/examples/durable-object-counter/worker.mjs b/examples/durable-object-counter/worker.mjs index bb96bc3..dfdd4b7 100644 --- a/examples/durable-object-counter/worker.mjs +++ b/examples/durable-object-counter/worker.mjs @@ -1,25 +1,9 @@ -import "../assets/polyfill_performance.js"; -import "../assets/wasm_exec.js"; +import * as imports from "../assets/shim.mjs"; import mod from "./dist/app.wasm"; -const go = new Go(); +imports.init(mod); -const readyPromise = new Promise((resolve) => { - globalThis.ready = resolve; -}); - -const load = WebAssembly.instantiate(mod, go.importObject).then((instance) => { - go.run(instance); - return instance; -}); - -export default { - async fetch(req, env, ctx) { - await load; - await readyPromise; - return handleRequest(req, { env, ctx }); - } -} +export default { fetch: imports.fetch } // Durable Object diff --git a/examples/env/worker.mjs b/examples/env/worker.mjs index 649ccf0..d1ba1b8 100644 --- a/examples/env/worker.mjs +++ b/examples/env/worker.mjs @@ -1,22 +1,6 @@ -import "../assets/polyfill_performance.js"; -import "../assets/wasm_exec.js"; +import * as imports from "../assets/shim.mjs"; import mod from "./dist/app.wasm"; -const go = new Go(); +imports.init(mod); -const readyPromise = new Promise((resolve) => { - globalThis.ready = resolve; -}); - -const load = WebAssembly.instantiate(mod, go.importObject).then((instance) => { - go.run(instance); - return instance; -}); - -export default { - async fetch(req, env, ctx) { - await load; - await readyPromise; - return handleRequest(req, { env, ctx }); - } -} +export default { fetch: imports.fetch } diff --git a/examples/fetch-event/worker.mjs b/examples/fetch-event/worker.mjs index 649ccf0..d1ba1b8 100644 --- a/examples/fetch-event/worker.mjs +++ b/examples/fetch-event/worker.mjs @@ -1,22 +1,6 @@ -import "../assets/polyfill_performance.js"; -import "../assets/wasm_exec.js"; +import * as imports from "../assets/shim.mjs"; import mod from "./dist/app.wasm"; -const go = new Go(); +imports.init(mod); -const readyPromise = new Promise((resolve) => { - globalThis.ready = resolve; -}); - -const load = WebAssembly.instantiate(mod, go.importObject).then((instance) => { - go.run(instance); - return instance; -}); - -export default { - async fetch(req, env, ctx) { - await load; - await readyPromise; - return handleRequest(req, { env, ctx }); - } -} +export default { fetch: imports.fetch } diff --git a/examples/fetch/worker.mjs b/examples/fetch/worker.mjs index 649ccf0..d1ba1b8 100644 --- a/examples/fetch/worker.mjs +++ b/examples/fetch/worker.mjs @@ -1,22 +1,6 @@ -import "../assets/polyfill_performance.js"; -import "../assets/wasm_exec.js"; +import * as imports from "../assets/shim.mjs"; import mod from "./dist/app.wasm"; -const go = new Go(); +imports.init(mod); -const readyPromise = new Promise((resolve) => { - globalThis.ready = resolve; -}); - -const load = WebAssembly.instantiate(mod, go.importObject).then((instance) => { - go.run(instance); - return instance; -}); - -export default { - async fetch(req, env, ctx) { - await load; - await readyPromise; - return handleRequest(req, { env, ctx }); - } -} +export default { fetch: imports.fetch } diff --git a/examples/r2-image-server/worker.mjs b/examples/r2-image-server/worker.mjs index 649ccf0..d1ba1b8 100644 --- a/examples/r2-image-server/worker.mjs +++ b/examples/r2-image-server/worker.mjs @@ -1,22 +1,6 @@ -import "../assets/polyfill_performance.js"; -import "../assets/wasm_exec.js"; +import * as imports from "../assets/shim.mjs"; import mod from "./dist/app.wasm"; -const go = new Go(); +imports.init(mod); -const readyPromise = new Promise((resolve) => { - globalThis.ready = resolve; -}); - -const load = WebAssembly.instantiate(mod, go.importObject).then((instance) => { - go.run(instance); - return instance; -}); - -export default { - async fetch(req, env, ctx) { - await load; - await readyPromise; - return handleRequest(req, { env, ctx }); - } -} +export default { fetch: imports.fetch } diff --git a/examples/r2-image-viewer/worker.mjs b/examples/r2-image-viewer/worker.mjs index 649ccf0..d1ba1b8 100644 --- a/examples/r2-image-viewer/worker.mjs +++ b/examples/r2-image-viewer/worker.mjs @@ -1,22 +1,6 @@ -import "../assets/polyfill_performance.js"; -import "../assets/wasm_exec.js"; +import * as imports from "../assets/shim.mjs"; import mod from "./dist/app.wasm"; -const go = new Go(); +imports.init(mod); -const readyPromise = new Promise((resolve) => { - globalThis.ready = resolve; -}); - -const load = WebAssembly.instantiate(mod, go.importObject).then((instance) => { - go.run(instance); - return instance; -}); - -export default { - async fetch(req, env, ctx) { - await load; - await readyPromise; - return handleRequest(req, { env, ctx }); - } -} +export default { fetch: imports.fetch } diff --git a/examples/service-bindings/worker.mjs b/examples/service-bindings/worker.mjs index 649ccf0..d1ba1b8 100644 --- a/examples/service-bindings/worker.mjs +++ b/examples/service-bindings/worker.mjs @@ -1,22 +1,6 @@ -import "../assets/polyfill_performance.js"; -import "../assets/wasm_exec.js"; +import * as imports from "../assets/shim.mjs"; import mod from "./dist/app.wasm"; -const go = new Go(); +imports.init(mod); -const readyPromise = new Promise((resolve) => { - globalThis.ready = resolve; -}); - -const load = WebAssembly.instantiate(mod, go.importObject).then((instance) => { - go.run(instance); - return instance; -}); - -export default { - async fetch(req, env, ctx) { - await load; - await readyPromise; - return handleRequest(req, { env, ctx }); - } -} +export default { fetch: imports.fetch } diff --git a/examples/simple-json-server/worker.mjs b/examples/simple-json-server/worker.mjs index 649ccf0..d1ba1b8 100644 --- a/examples/simple-json-server/worker.mjs +++ b/examples/simple-json-server/worker.mjs @@ -1,22 +1,6 @@ -import "../assets/polyfill_performance.js"; -import "../assets/wasm_exec.js"; +import * as imports from "../assets/shim.mjs"; import mod from "./dist/app.wasm"; -const go = new Go(); +imports.init(mod); -const readyPromise = new Promise((resolve) => { - globalThis.ready = resolve; -}); - -const load = WebAssembly.instantiate(mod, go.importObject).then((instance) => { - go.run(instance); - return instance; -}); - -export default { - async fetch(req, env, ctx) { - await load; - await readyPromise; - return handleRequest(req, { env, ctx }); - } -} +export default { fetch: imports.fetch }