From 8a4703b610f8d2b334c90d163c9dfc92814467af Mon Sep 17 00:00:00 2001 From: Marzooqa Kather Date: Tue, 28 Apr 2026 09:35:55 +0000 Subject: [PATCH] feat(wasm-mps): add --target web build for browser-safe WASM init Add dist/web/js/wasm Makefile target using wasm-pack --target web, which generates an explicit async init() default export. Callers await init() before using any WASM function, eliminating the webpack asyncWebAssembly timing race that left wasm undefined. Export the build via the ./web subpath export so consumers can import directly from @bitgo/wasm-mps/web. Ticket: WCI-250 --- packages/wasm-mps/Makefile | 4 ++++ packages/wasm-mps/package.json | 9 +++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/wasm-mps/Makefile b/packages/wasm-mps/Makefile index 6b8f1f95965..406deb84fb4 100644 --- a/packages/wasm-mps/Makefile +++ b/packages/wasm-mps/Makefile @@ -64,6 +64,10 @@ dist/esm/js/wasm: dist/cjs/js/wasm: $(call BUILD,$@,nodejs) +.PHONY: dist/web/js/wasm +dist/web/js/wasm: + $(call BUILD,$@,web) + .PHONY: lint lint: cargo fmt --check diff --git a/packages/wasm-mps/package.json b/packages/wasm-mps/package.json index 9bf83cb5970..c9ae443cc51 100644 --- a/packages/wasm-mps/package.json +++ b/packages/wasm-mps/package.json @@ -11,7 +11,8 @@ "files": [ "dist/esm/js/**/*", "dist/cjs/js/**/*", - "dist/cjs/package.json" + "dist/cjs/package.json", + "dist/web/js/**/*" ], "exports": { ".": { @@ -23,6 +24,10 @@ "types": "./dist/cjs/js/index.d.ts", "default": "./dist/cjs/js/index.js" } + }, + "./web": { + "types": "./dist/web/js/wasm/wasm_mps.d.ts", + "default": "./dist/web/js/wasm/wasm_mps.js" } }, "main": "./dist/cjs/js/index.js", @@ -35,7 +40,7 @@ "scripts": { "test": "npm run test:mocha", "test:mocha": "mocha --recursive test", - "build:wasm": "make js/wasm && make dist/esm/js/wasm && make dist/cjs/js/wasm", + "build:wasm": "make js/wasm && make dist/esm/js/wasm && make dist/cjs/js/wasm && make dist/web/js/wasm", "build:ts-esm": "tsc", "build:ts-cjs": "tsc --project tsconfig.cjs.json", "build:ts": "npm run build:ts-esm && npm run build:ts-cjs",