Latest Results
feat(wasm): integrate wasm-bindgen build into package distribution (#445)
* feat(wasm): integrate wasm-bindgen build into package distribution (#442)
- Add build:wasm-bindgen script using wasm-pack bundler target
- Distribute wasm-bindgen JS glue files alongside npm package
- Replace browser.js WASI export with wasm-bindgen re-export
- Add CI job to build and cache wasm-bindgen artifact
- Update browser/bun/deno e2e tests to use wasm-bindgen output
- Remove COOP/COEP headers from Vite config (not needed without SharedArrayBuffer)
Closes #442
* fix(e2e): fix Bun/Deno wasm-bindgen test compatibility
- Bun 1.x does not implement TC39 WASM ESM integration; switch Bun test
to manually instantiate the WASM binary via WebAssembly API
- Fix Deno test type error: levenshteinBatch returns Uint32Array, not number[]
- Fix both tests: closest() returns undefined (not null) for empty items
* fix(e2e): fix browser WASM test - manual init to bypass Vite 8 WASM ESM restriction
Vite 8 explicitly rejects the TC39 WebAssembly ESM integration proposal
used by wasm-bindgen's bundler target, throwing:
"ESM integration proposal for Wasm is not supported currently."
Replace the direct import of rapid-fuzzy-wasm-bindgen.js with manual
instantiation: import the background bindings (_bg.js, which has no
.wasm imports) then call WebAssembly.instantiateStreaming to fetch and
instantiate the WASM binary, and finally call __wbg_set_wasm.
Also convert TypedArray results (Uint32Array, Float64Array) to plain
arrays via Array.from() before storing in window.__results to ensure
correct JSON serialization through Playwright's page.evaluate().
* fix(e2e): use WebAssembly.instantiate with ArrayBuffer to avoid MIME type issue
WebAssembly.instantiateStreaming requires the server to respond with
Content-Type: application/wasm. Vite dev server may not set this MIME
type for .wasm files, causing: "Incorrect response MIME type. Expected
application/wasm".
Switch to fetching the .wasm binary as an ArrayBuffer and passing it to
WebAssembly.instantiate, which accepts raw bytes without MIME validation.
* fix(e2e): use import with ?url to get Vite-resolved WASM path for browser test
fetch() resolves URLs relative to the browser page URL (http://localhost:4567/),
not the filesystem. When Vite root is e2e/, fetch('../rapid-fuzzy-wasm-bindgen_bg.wasm')
resolves to /rapid-fuzzy-wasm-bindgen_bg.wasm which Vite cannot find in e2e/.
Use import('...?url') instead - Vite intercepts this at the module level using
filesystem-aware resolution, returning the correct @fs/ URL for files outside
the Vite root. Then fetch(wasmUrl) with the resolved URL correctly retrieves
the binary content for WebAssembly.instantiate().
* fix(e2e): coerce closest() undefined to null for Playwright serialization
wasm-bindgen maps Rust Option::None to undefined in JavaScript, but the
browser test expects null (toBeNull). In Playwright 1.35+, undefined from
page.evaluate() is preserved as undefined rather than converted to null.
Use ?? null to coerce undefined to null when storing closest() results in
window.__results, making them JSON-serializable and matching the test
expectation. Latest Branches
0%
renovate/taiki-e-install-action-digest 0%
feat/issue-442-wasm-bindgen-dist 0%
feat/issue-441-wasm-bindgen © 2026 CodSpeed Technology