wabt.js
wabt.js is a port of WABT to the Web, allowing you to manipulate WebAssembly modules using a JavaScript API.
Usage
$> npm install wabt
require("wabt")().then(wabt => {
  var wasm = ...; // a buffer holding the contents of a wasm file
  var myModule = wabt.readWasm(wasm, { readDebugNames: true });
  myModule.applyNames();
  var wast = myModule.toText({ foldExprs: false, inlineExport: false });
  console.log(wast);
});
The buildbot also publishes nightly versions once a day if there have been changes. The latest nightly can be installed through
$> npm install --save-exact wabt@nightly
or you can use one of the previous versions instead if necessary. Note the --save-exact when using a nightly.
Usage with a CDN
- From GitHub via jsDelivr:
 https://cdn.jsdelivr.net/gh/AssemblyScript/wabt.js@VERSION/index.js
- From npm via jsDelivr:
 https://cdn.jsdelivr.net/npm/wabt@VERSION/index.js
- From npm via UNPKG:
 https://unpkg.com/wabt@VERSION/index.js
Replace VERSION with a specific version or omit it (not recommended in production) to use main/latest.
API
- 
parseWat(filename: string, buffer:string | Uint8Array, options?:WasmFeatures):WasmModule
 Parses a WebAssembly text format source to a module.
- 
readWasm(buffer: Uint8Array, options:ReadWasmOptions & WasmFeatures):WasmModule
 Reads a WebAssembly binary to a module.
- 
WasmModule 
 A class representing a WebAssembly module.- validate(): void
 Validates the module. Throws if not valid.
- resolveNames(): void
 Resolves names to indexes.
- generateNames(): void
 Generates textual names for function types, globals, labels etc.
- applyNames(): void
 Applies textual names. Throws on error.
- toText(options: ToTextOptions):string
 Converts the module to wat text format.
- toBinary(options: ToBinaryOptions):ToBinaryResult
 Converts the module to a wasm binary.
- destroy(): void
 Disposes the module and frees its resources.
 
- validate(): 
- 
ReadWasmOptions 
 Options modifying the behavior ofreadWasm.- readDebugNames: boolean
 Reads textual names from the name section.
 
- readDebugNames: 
- 
ToTextOptions 
 Options modifying the behavior ofWasmModule#toText.- foldExprs: boolean
- inlineExport: boolean
 
- foldExprs: 
- 
ToBinaryOptions 
 Options modifying the behavior ofWasmModule#toBinary.- log: boolean
- canonicalize_lebs: boolean
- relocatable: boolean
- write_debug_names: boolean
 
- log: 
- 
ToBinaryResult 
 Result object ofWasmModule#toBinary.- buffer: Uint8Array
 The wasm binary buffer.
- log: string
 Generated log output.
 
- buffer: 
- 
WasmFeatures 
 WebAssembly features to legalize. Finished features are enabled by default.- exceptions: boolean
 Exception handling (proposal).
- mutable_globals: boolean
 Import/Export mutable globals (proposal).
- sat_float_to_int: boolean
 Non-trapping Float-to-int Conversions (proposal).
- sign_extension: boolean
 Sign-extension operators (proposal).
- simd: boolean
 128-bit packed SIMD (proposal).
- threads: boolean
 Threading (proposal).
- function_references: boolean
 Typed function references (proposal).
- multi_value: boolean
 Multi-value (proposal).
- tail_call: boolean
 Tail Call (proposal).
- bulk_memory: boolean
 Bulk Memory Operations and Conditional Segment Initialization (proposal).
- reference_types: boolean
 Reference Types (proposal).
- annotations: boolean
 Custom Annotation Syntax for the Wasm Text Format (proposal).
- code_metadata: boolean
 Code metadata (convention).
- gc: boolean
 Garbage collection (proposal).
- memory64: boolean
 64-bit memory (proposal).
- extended_const: boolean
 Extended constant expressions (proposal).
- relaxed_simd: boolean
 Relaxed SIMD (proposal).
 
- exceptions: 
CLI
Node.js ports of the following command line tools are included in the package as well:
- wasm2c converts a WebAssembly binary file to a C source and header.
- wasm2wat translates from WebAssembly binary format to text format.
- wat2wasm translates from WebAssembly text format to binary format.
- wasm-decompile decompiles a wasm binary into readable C-like syntax.
- wasm-interp decodes and runs a WebAssembly binary file using a stack-based interpreter.
- wasm-objdump prints information about a wasm binary. Similiar to objdump.
- wasm-opcodecnt counts opcode usage for instructions.
- wasm-strip removes sections of a WebAssembly binary file.
- wasm-validate validates a file in WebAssembly binary format.
The tools can also be run ad hoc (without explicitly installing the package), for example with:
$> npx -p wabt wasm2wat myModule.wasm -o myModule.wat
 projecs by owner
                                                                (
                                                                projecs by owner
                                                                (