# Read WebAssembly
> Read a file as [WebAssembly][webassembly].
## Usage
```javascript
var readWASM = require( '@stdlib/fs/read-wasm' );
```
#### readWASM( file\[, options], clbk )
Asynchronously reads a file as [WebAssembly][webassembly].
```javascript
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][webassembly].
```javascript
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()`](#read-wasm) above.
## Notes
- In contrast to [`readFile()`][@stdlib/fs/read-file], neither function accepts an `encoding` option. As [WebAssembly][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][webassembly] file content as a [`Uint8Array`][@stdlib/array/uint8].
## Examples
```javascript
var join = require( 'path' ).join;
var hasWebAssemblySupport = require( '@stdlib/assert/has-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 );
}
}
```
[webassembly]: https://webassembly.org/
[@stdlib/fs/read-file]: https://www.npmjs.com/package/@stdlib/fs/tree/main/read-file
[@stdlib/array/uint8]: https://www.npmjs.com/package/@stdlib/array-uint8