Read WebAssembly

Read a file as WebAssembly.

Usage

var readWASM = require( '@stdlib/fs/read-wasm' );

readWASM( file, [options,] clbk )

Asynchronously reads a file as WebAssembly.

var join = require( 'path' ).join;

var fpath = join( __dirname, 'examples', 'fixtures', 'file.wasm' );
readWASM( fpath, onRead );

function onRead( error, buf ) {
    if ( error ) {
        throw error;
    }
    console.log( buf );
}

The function accepts the following options:

  • flag: file status flag.

readWASM.sync( file[, options] )

Synchronously reads a file as WebAssembly.

var join = require( 'path' ).join;
var instanceOf = require( '@stdlib/assert/instance-of' );

var fpath = join( __dirname, 'examples', 'fixtures', 'file.wasm' );
var out = readWASM.sync( fpath );
if ( instanceOf( out, Error ) ) {
    throw out;
}
console.log( out );

The function accepts the same options as readWASM() above.

Notes

  • In contrast to readFile(), neither function accepts an encoding option. As WebAssembly is a binary file format, if provided an encoding option, the function overrides the option, setting the option value to null.
  • Both functions return WebAssembly file content as a Uint8Array.

Examples

var join = require( 'path' ).join;
var hasWebAssemblySupport = require( '@stdlib/utils/detect-wasm-support' );
var readWASM = require( '@stdlib/fs/read-wasm' );

var fpath = join( __dirname, 'examples', 'fixtures', 'file.wasm' );
readWASM( fpath, onRead );

function onRead( error, wasm ) {
    var bool;
    if ( error ) {
        throw error;
    }
    bool = hasWebAssemblySupport();

    // If WebAssembly is supported, create a WebAssembly module instance...
    if ( bool ) {
        wasm = new WebAssembly.Module( wasm );
        wasm = new WebAssembly.Instance( wasm, {} );
        console.log( wasm.exports.stdlib_hypot( 5.0, 12.0 ) );
    } else {
        console.log( wasm );
    }
}