From a27d5e3e2f3ea0dd6d0b9cd118f34f2cc425fcf1 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Wed, 14 Oct 2026 09:27:50 +0000 Subject: [PATCH 1/2] fix(p3-shim): compile browser imports with browser conditions Preview2 0.29.0 selects Node declarations under NodeNext, so compiling browser sources with that configuration reports missing browser APIs. Split browser compilation into a Bundler-resolution project and include both projects in build, watch, and type-check commands. Signed-off-by: Victor Adossi --- packages/preview3-shim/.gitignore | 1 + packages/preview3-shim/package.json | 6 +++--- packages/preview3-shim/tsconfig.browser.json | 8 ++++++++ packages/preview3-shim/tsconfig.build.browser.json | 10 ++++++++++ packages/preview3-shim/tsconfig.json | 2 +- 5 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 packages/preview3-shim/tsconfig.browser.json create mode 100644 packages/preview3-shim/tsconfig.build.browser.json diff --git a/packages/preview3-shim/.gitignore b/packages/preview3-shim/.gitignore index d2fcdb5a1..e0c7dfc7a 100644 --- a/packages/preview3-shim/.gitignore +++ b/packages/preview3-shim/.gitignore @@ -1,2 +1,3 @@ # TypeScript build outputs /dist/ +/*.tsbuildinfo diff --git a/packages/preview3-shim/package.json b/packages/preview3-shim/package.json index bd1a9d2dd..7e7e7154f 100644 --- a/packages/preview3-shim/package.json +++ b/packages/preview3-shim/package.json @@ -48,9 +48,9 @@ } }, "scripts": { - "build": "tsc --project tsconfig.build.json && node scripts/build-workers.mjs", - "build:watch": "tsc --watch", - "types:check": "tsc --noEmit", + "build": "tsc --project tsconfig.build.json && tsc --project tsconfig.build.browser.json && node scripts/build-workers.mjs", + "build:watch": "tsc --build --watch tsconfig.build.json tsconfig.build.browser.json", + "types:check": "tsc --noEmit && tsc --project tsconfig.browser.json --noEmit", "fmt": "oxfmt", "fmt:check": "oxfmt --check", "lint": "oxlint", diff --git a/packages/preview3-shim/tsconfig.browser.json b/packages/preview3-shim/tsconfig.browser.json new file mode 100644 index 000000000..30ba98f5f --- /dev/null +++ b/packages/preview3-shim/tsconfig.browser.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "include": ["src/browser/**/*"], + "compilerOptions": { + "module": "ESNext", + "moduleResolution": "Bundler" + } +} diff --git a/packages/preview3-shim/tsconfig.build.browser.json b/packages/preview3-shim/tsconfig.build.browser.json new file mode 100644 index 000000000..f5bf68898 --- /dev/null +++ b/packages/preview3-shim/tsconfig.build.browser.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.browser.json", + "compilerOptions": { + "rootDir": "src/", + "declaration": true, + "declarationMap": false, + "sourceMap": false, + "noEmit": false + } +} diff --git a/packages/preview3-shim/tsconfig.json b/packages/preview3-shim/tsconfig.json index 6caac5bee..aab91b2db 100644 --- a/packages/preview3-shim/tsconfig.json +++ b/packages/preview3-shim/tsconfig.json @@ -1,5 +1,5 @@ { - "include": ["src/**/*"], + "include": ["src/nodejs/**/*"], "compilerOptions": { "outDir": "dist", "target": "ES2022", From 52c75310a9d66d4d7ecb65e3aa3a0bc2cac15cef Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Wed, 14 Oct 2026 09:28:03 +0000 Subject: [PATCH 2/2] ci: build shims and match their test packages explicitly The previous packages/preview3-shim filter matched no workspace packages, allowing the shim job to pass without running tests. Use scoped package names with --fail-if-no-match and build both required shim outputs before testing. Signed-off-by: Victor Adossi --- .github/workflows/main.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e6937bc96..4ce7cbbbe 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -500,11 +500,18 @@ jobs: - name: Build jco run: pnpm run build + - name: Build preview2-shim + run: pnpm --filter '@bytecodealliance/preview2-shim' --fail-if-no-match run build + + - name: Build preview3-shim + if: ${{ matrix.workspace == 'preview3-shim' }} + run: pnpm --filter '@bytecodealliance/preview3-shim' --fail-if-no-match run build + - name: Test Workspaces env: TEST_PUPPETEER_LAUNCH_ARGS: | --no-sandbox - run: pnpm --filter 'packages/${{ matrix.workspace }}' run test + run: pnpm --filter '@bytecodealliance/${{ matrix.workspace }}' --fail-if-no-match run test test-jco-node-fs: name: Test jco-node-fs (${{ matrix.os }})