Socket
Book a DemoInstallSign in
Socket

@esmbly/transformer-wasm

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@esmbly/transformer-wasm

An Esmbly transformer that transforms TypeScript files to WebAssembly, Wat, Asm.js and AssemblyScript

0.0.6
latest
Source
npmnpm
Version published
Weekly downloads
12
-7.69%
Maintainers
1
Weekly downloads
 
Created
Source

@esmbly/transformer-wasm

Transform TypeScript programs to WebAssembly, Wat, Asm.js and AssemblyScript. The @esmbly/transformer-wasm can be used directly on TypeScript files, or chained together with other transformers that generates TypeScript output.

Installation

# Using Yarn:
yarn add @esmbly/transformer-wasm

# Or, using NPM:
npm install @esmbly/transformer-wasm --save

Getting Started

Check out Using the WebAssembly transformer for a step-by-step guide on how to get started with @esmbly/transformer-wasm and the command-line interface.

Try

Try it out in the Esmbly version of WebAssembly Studio!

Usage

The @esmbly/transformer-wasm transforms TypeScript programs to WebAssembly, Wat, Asm.js and AssemblyScript. In order to use it, make sure you have @esmbly/cli installed.

The following Esmbly configuration will transform the file add.js located in the src directory, first to TypeScript using @esmbly/transformer-jsdoc, and then to WebAssembly and Wat using @esmbly/transformer-wasm. Two output formats are specified, which will output add.wat and add.wasm to the dist directory.

// esmbly.config.js

const JSDoc = require('@esmbly/transformer-jsdoc');
const Wasm = require('@esmbly/transformer-wasm');

module.exports = {
  input: ['./src/add.js'],
  transformers: [
    JSDoc.createTransformer(),
    Wasm.createTransformer(),
  ],
  output: [
    {
      format: '.wat',
      outFile: path.join(__dirname, 'dist', 'add.wat'),
    },
    {
      format: '.wasm',
      outFile: path.join(__dirname, 'dist', 'add.wasm'),
    },
  ],
};

Configuration

The createTransformer() method accepts an optional configuration object (see the WasmTransformerOptions interface). Under the hood, @esmbly/transformer-wasm uses the AssemblyScript compiler to output WebAssembly, Wat and Asm.js. The following configuration options correspond to the specified asc flags.

OptionDescriptionTypeAsc flag
optimize (optional)Optimizes the module.string--optimize
optimizeLevel (optional)How much to focus on optimizing code. [0-3].number--optimizeLevel
shrinkLevel (optional)How much to focus on shrinking code size. [0-2, s=1, z=2].number--shrinkLevel
validate (optional)Validates the module using Binaryen. Exits if invalid.boolean-validate
use (optional)Aliases a global object under another name, e.g., to switch the default 'Math' implementation used: ['Math=JSMath'].string[]--use
memory (optional)See Memory options belowObject
customRules (optional)An object containing any custom rules which should be applied (existing rules can be overridden). Check out the custom-rule example for further details.CustomRules

Memory options

For further details about memory layout and management, have a look at the AssemblyScript Wiki.

{ 
  import: boolean;
  export: boolean;
  allocator: string;
}
OptionDescriptionType
import (optional)Imports the memory instance provided by the embedder. (asc flag: --importMemory)boolean
export (optional)Exports memory by injecting export { memory }; to the top of the TypeScript files before running asc.boolean
allocator (optional)Imports the specified allocator by injecting an import statement to the top of the TypeScript files before running asc. Ex: import "allocator/tlsf";string

Examples

Contributing

All types of contributions are very much welcome. Check out our Contributing Guide for instructions on how to get started.

Keywords

esmbly

FAQs

Package last updated on 24 May 2019

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.