
Security News
Axios Maintainer Confirms Social Engineering Attack Behind npm Compromise
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.
@wasmer/wasm-transformer
Advanced tools
Library to run transformations on WebAssembly binaries. 🦀♻️
Documentation for Wasmer-JS Stack can be found on the Wasmer Docs.
This README covers the instructions for installing, using, and contributing to the wasm-transformer Javascript package. The wasm_transformer Rust crate is available here.
This project depends on wasmparser, and the wasm-pack workflow. Huge shoutout to them! 🙏
Runs transformations on Wasm binaries to modify the actual code that gets run, and introduces new features (such as introducing trampoline functions for i64 WASI imports). ✨
Installable on both crates.io, and npm! 📦
The project builds with wasm-pack. Thus, you can use this library in a Javascript library, to modify WebAssembly Binaries, with WebAssembly. 🤯
Super fast! Can run the lower_i64_imports transformations on my 2018 MackBook Pro, with the Chrome Devtools 6x CPU slowdown in ~ 1 second. ⚡
npm install --save @wasmer/wasm-transformer
For a larger example, see the wasm-terminal package.
const wasmTransformer = require("@wasmer/wasm-transformer");
// Read in the input Wasm file
const wasmBuffer = fs.readFileSync("./my-wasm-file.wasm");
// Transform the binary
const wasmBinary = new Uint8Array(wasmBuffer);
const loweredBinary = wasmTransformer.lowerI64Imports(wasmBinary);
// Do something with loweredBinary
import { lowerI64Imports } from "@wasmer/wasm-transformer";
const fetchAndTransformWasmBinary = async () => {
// Get the original Wasm binary
const fetchedOriginalWasmBinary = await fetch("/original-wasm-module.wasm");
const originalWasmBinaryBuffer = await fetchedOriginalWasmBinary.arrayBuffer();
const originalWasmBinary = new Uint8Array(originalWasmBinaryBuffer);
// Transform the binary, by running the lower_i64_imports from the wasm-transformer
const transformedBinary = await lowerI64Imports(originalWasmBinary);
// Compile the transformed binary
const transformedWasmModule = await WebAssembly.compile(transformedBinary);
return transformedWasmModule;
};
The Reference API Documentation can be found on the @wasmer/wasm-transformer Reference API Wasmer Docs.
This project follows the all-contributors specification.
Contributions of any kind are welcome! 👍
To get started using the project:
Set up the wasm_transformer rust crate
Install the latest LTS version of Node.js (which includes npm and npx). An easy way to do so is with nvm. (Mac and Linux: here, Windows: here).
npm run build.
FAQs
Library to run transformations on WebAssembly binaries. 🦀♻️
The npm package @wasmer/wasm-transformer receives a total of 204 weekly downloads. As such, @wasmer/wasm-transformer popularity was classified as not popular.
We found that @wasmer/wasm-transformer demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.