Socket
Socket
Sign inDemoInstall

assemblyscript-loader

Package Overview
Dependencies
3
Maintainers
2
Versions
4
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    assemblyscript-loader

AssemblyScript's loader component as a stand-alone module.


Version published
Weekly downloads
8
increased by700%
Maintainers
2
Install size
257 kB
Created
Weekly downloads
 

Readme

Source

AssemblyScript Loader

AssemblyScript's loader component to run and work with compiled WebAssembly modules, as a stand-alone module.

npm Build Status

Usage

$> npm install assemblyscript-loader
import load from "assemblyscript-loader"; // JS: var load = require("assemblyscript-loader").load;

load("path/to/myModule.wasm", {
  imports: {
    ...
  }
}).then(module => {
  ...
  // i.e. call module.exports.main()
});

Alternatively, when LoadOptions#exports is specified, the respective object is pre-initialized with the (always present) ready promise that is resolved when loading is complete:

// myModule.js (CommonJS)
require("assemblyscript-loader").load("path/to/myModule.wasm", { exports: module.exports });
// otherModule.js (CommonJS)
var myModule = require("./myModule.js");
myModule.ready.then(() => {
  ...
});

API

  • load(file: string | Uint8Array | ArrayBuffer, options: LoadOptions): Promise<Module>
    Loads a WebAssembly module either from a file or a buffer and returns a promise for the loaded Module.

  • LoadOptions
    Options to set up the environment created by load.

    • memory: WebAssembly.Memory
      Memory instance to import, if applicable.
    • imports: { [key: string]: any }
      Import elements. Usually functions.
    • exports: { [key: string]: any }
      Object to populate with exports. Creates a new object if omitted.
  • Module
    Common module interface as returned by load.

    • imports: Imports
      Imported elements. Usually functions.
    • exports: Exports
      Exported elements. Usually functions.
    • memory: Memory
      A reference to the underlying memory instance.
    • log(type: LogType, message: string): void
      An overridable method receiving console outputs.
  • Imports
    An object of imported functions.

  • Exports
    An object of exported functions (plus the ready promise).

  • LogType
    An enum of log types:

    KeyValue
    LOG0
    INFO1
    WARN2
    ERROR3
  • Memory extends WebAssembly.Memory
    The WebAssembly Memory instance populated with additional accessors for more convenient memory access.

    • sbyte / s8: NumberAccessor
      Signed 8-bit integer accessors.
    • byte / u8: NumberAccessor
      Unsigned 8-bit integer accessors.
    • short / s16: NumberAccessor
      Signed 16-bit integer accessors.
    • ushort / u16: NumberAccessor
      Unsigned 16-bit integer accessors.
    • int / s32: NumberAccessor
      Signed 32-bit integer accessors.
    • uint / u32: NumberAccessor
      Unsigned 32-bit integer accessors.
    • long / s64: LongAccessor
      Signed 64-bit integer accessors.
    • ulong / u64: LongAccessor
      Unsigned 64-bit integer accessors.
    • float / f32: NumberAccessor
      32-bit float accessors.
    • double / f64: NumberAccessor
      64-bit float accessors.
    • array: ArrayAccessor
      Array accessors.
    • string: StringAccessor
      String accessors.
  • NumberAccessor
    Number memory accessor.

    • get(ptr: number): number
      Gets a value of the underlying type from memory at the specified pointer.
    • set(ptr: number, value: number): void
      Sets a value of the underlying type in memory at the specified pointer.
  • LongAccessor
    Long memory accessor. See also: long.js

    • get(ptr: number): Long
      Gets a Long from memory at the specified pointer.
    • set(ptr: number, value: Long): void
      Sets a Long in memory at the specified pointer.
  • ArrayAccessor
    Array memory accessor.

    • get(ptr: number): { length: number, base: number }
      Gets an array from memory at the specified pointer and returns its length and element base pointer.
    • create(length: number, elementByteSize: number): { ptr: number, base: number }
      Creates an array in memory and returns its pointer and element base pointer.
  • StringAccessor
    String memory accessor.

    • get(ptr: number): string
      Gets a string from memory at the specified pointer.
    • create(value: string): number
      Creates a string in memory and returns its pointer.
  • initializeMemory(memoryInstance: WebAssembly.Memory, malloc: Function, memset: Function): Memory
    Just populates a WebAssembly Memory instance with the AssemblyScript-typical accessors.

  • xfetch(file: string): Promise<Response>
    Underlying fetch implementation that also works under node.js.

Note that the create methods of array and string accessors require an exported or imported implementation of malloc, memset, free etc. to be present. Also remember that memory is unmanaged here and that free must be called manually to clean up memory, just like in C. Once WebAssembly exposes the garbage collector natively, there will be other options as well.

The long.js dependency can be safely excluded if working with long/ulong values isn't needed. In this case, the implementation will still accept and produce Long-like objects having a low and a high property representing the respective low and high 32-bits.

Building

Clone the GitHub repository and install the development dependencies:

$> git clone https://github.com/AssemblyScript/loader.git
$> cd loader
$> npm install

Afterwards, to build the distribution files to dist/, run:

$> npm run build

Keywords

FAQs

Last updated on 11 Sep 2017

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc