From 9845553d493400ba6120c3755564801d373bd4e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Kr=C3=BCger?= Date: Sun, 8 Mar 2026 14:12:01 +0100 Subject: [PATCH] fix: switch buttplug WASM to --target web for browser compatibility --target bundler generates static WASM ESM imports that only work through a bundler. --target web generates fetch-based WASM loading via import.meta.url which browsers handle natively. - Change wasm-pack build target from bundler to web - Call wasmModule.default() (init) after import in maybeLoadWasm - Add .gitignore to exclude dist/ and wasm/ build outputs Co-Authored-By: Claude Sonnet 4.6 --- packages/buttplug/.gitignore | 5 +++++ packages/buttplug/package.json | 2 +- packages/buttplug/src/index.ts | 4 +++- 3 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 packages/buttplug/.gitignore diff --git a/packages/buttplug/.gitignore b/packages/buttplug/.gitignore new file mode 100644 index 0000000..97e7eb1 --- /dev/null +++ b/packages/buttplug/.gitignore @@ -0,0 +1,5 @@ +node_modules/ +dist/ +wasm/ +target/ +pkg/ diff --git a/packages/buttplug/package.json b/packages/buttplug/package.json index bea7a5f..6dfde32 100644 --- a/packages/buttplug/package.json +++ b/packages/buttplug/package.json @@ -10,7 +10,7 @@ ], "scripts": { "build": "vite build", - "build:wasm": "wasm-pack build --out-dir wasm --out-name index --target bundler --release", + "build:wasm": "wasm-pack build --out-dir wasm --out-name index --target web --release", "serve": "node serve.mjs" }, "dependencies": { diff --git a/packages/buttplug/src/index.ts b/packages/buttplug/src/index.ts index 81e3f54..18a83bd 100644 --- a/packages/buttplug/src/index.ts +++ b/packages/buttplug/src/index.ts @@ -40,7 +40,9 @@ export class ButtplugWasmClientConnector extends EventEmitter implements IButtpl private static maybeLoadWasm = async () => { if (ButtplugWasmClientConnector.wasmInstance == undefined) { - ButtplugWasmClientConnector.wasmInstance = await import("../wasm/index.js"); + const wasmModule = await import("../wasm/index.js"); + await wasmModule.default(); // --target web requires calling init() before using exports + ButtplugWasmClientConnector.wasmInstance = wasmModule; } };