JSPM

wabt

1.0.37
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 15413
  • Score
    100M100P100Q156831F
  • License Apache-2.0

JavaScript version of WABT, The WebAssembly Binary Toolkit.

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (wabt) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    wabt.js

    wabt.js is a port of WABT to the Web, allowing you to manipulate WebAssembly modules using a JavaScript API.

    Build status npm version npm nightly version

    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.
    • ReadWasmOptions
      Options modifying the behavior of readWasm.

      • readDebugNames: boolean
        Reads textual names from the name section.
    • ToTextOptions
      Options modifying the behavior of WasmModule#toText.

      • foldExprs: boolean
      • inlineExport: boolean
    • ToBinaryOptions
      Options modifying the behavior of WasmModule#toBinary.

      • log: boolean
      • canonicalize_lebs: boolean
      • relocatable: boolean
      • write_debug_names: boolean
    • ToBinaryResult
      Result object of WasmModule#toBinary.

      • buffer: Uint8Array
        The wasm binary buffer.
      • log: string
        Generated log output.
    • 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).

    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-stats shows stats for a WebAssembly module.
    • 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