Latest Results
feat(wasm): add @swc/nodejs-support-wasm (#11975)
**Description:**
Adds an independent Rust/WebAssembly binding at
`bindings/binding_nodejs_support_wasm`, published as
`@swc/nodejs-support-wasm`.
The package has its own Rust crate, sources, build scripts, tests,
README, Cargo entry, and npm workspace entry. It does not build from
`binding_typescript_wasm` and does not add features or exports to the
existing `@swc/wasm-typescript` or `@swc/wasm-typescript-esm` packages.
The new CommonJS package embeds its wasm binary and exposes these APIs
at the top level:
- `transform`
- `transformSync`
- `transformModuleSyntax`
- `getFirstExpression`
- `isValidSyntax`
- `isRecoverableError`
It also exports the related `Options`, `TransformOutput`, and
`ModuleSyntaxTransformOutput` TypeScript types.
The npm publish matrix, wasm CI matrix, release versioning, Cargo
lockfile, and pnpm lockfile now reference the standalone
`binding_nodejs_support_wasm` crate.
Validation performed:
- `git submodule update --init --recursive`
- `cargo fmt --all -- --check`
- `cargo test -p binding_typescript_wasm -p binding_nodejs_support_wasm`
- `cargo clippy --all --all-targets -- -D warnings`
- `(cd bindings/binding_nodejs_support_wasm && ./scripts/test.sh)`
- `(cd bindings/binding_typescript_wasm && ./scripts/test.sh)`
- `(cd bindings/binding_core_wasm && ./scripts/test.sh)`
- `(cd bindings/binding_minifier_wasm && ./scripts/test.sh)`
- `(cd bindings/binding_es_ast_viewer && ./scripts/test.sh)`
- `(cd bindings/binding_nodejs_support_wasm/pkg && npm pack --dry-run
--json)`
- `pnpm install --frozen-lockfile --ignore-scripts`
- `go run github.com/rhysd/actionlint/cmd/actionlint@latest
.github/workflows/CI.yml .github/workflows/publish-npm-package.yml`
**BREAKING CHANGE:**
None. The existing TypeScript wasm packages and their public APIs are
unchanged.
**Related issue (if exists):**
- Supports nodejs/node#64034
- Follow-up context from swc-project/swc#11973 refactor(es/module): introduce source module lowering pipeline (#11999)
**Description:**
Refactor module transforms around a shared, target-neutral
`SourceModule` collection stage.
`SourceModule` only collects source-level module facts. CommonJS, AMD,
and UMD share syntax stripping and CommonJS-like module-entry reduction,
while SystemJS intentionally bypasses those stages and lowers the
collected source model into its own IR for dependency setters, live
bindings, and execution timing.
Key decisions:
- Import attributes are retained for SystemJS. CommonJS, AMD, and UMD
intentionally do not process them because those formats cannot express
import attributes; these lowering paths assume attributed module
requests are not provided.
- Module transforms now own TypeScript `import = require(...)` and
`export =` lowering.
- A non-exported `import x = require(...)` is modeled as the CTS form of
ES `import.sync`, outside the ES module linking stage. It therefore does
not mark the file as ESM, emit an `__esModule` marker, or introduce an
`exports` wrapper dependency. The exported form additionally registers
`x` as a local export in the linking model.
- AMD and UMD emit `import = require(...)` as wrapper dependencies. UMD
routes `export =` through the factory result, and SystemJS now supports
`export =`.
- Anonymous SystemJS default functions are initialized in the
`System.register` declaration callback to preserve their hoisting
semantics. Latest Branches
0%
claude/issue-12019-20260713-1159 0%
-3%
skku970412:fix-pure-annotation-parens-12019 © 2026 CodSpeed Technology