UNPKG

wat-instantiate

Version:
65 lines (54 loc) 1.77 kB
#wat-instantiate wat-instantiate is a simple helper function built on top of [WebAssembly Binary Toolkit](https://github.com/WebAssembly/wabt) (wabt) that allows you to compile WAT code from within a node module. ## Usage ``` npm install wat-instantiate --save ``` There is a single function exported by wat-instantiate. This function takes as parameters a string contining your WAT code, an import and export object, and a list of the names of the exported functions. ``` const wat_instantiate = require("wat-instantiate"); const exportObject = {}; const importObject = { js: { global_a: 99, global_b: 100 } }; const wat = ` (module (global (import "js" "global_a") i32) (global (import "js" "global_b") i32) (func (export "AddGlobals") (result i32) get_global 0 get_global 1 i32.add ) (func (export "IntAdd") (param $var1 i32) (param $var2 i32) (result i32) get_local $var1 get_local $var2 i32.add ) (func (export "IntSub") (param $var1 i32) (param $var2 i32) (result i32) get_local $var1 get_local $var2 i32.sub ) (func (export "IntMul") (param $var1 i32) (param $var2 i32) (result i32) get_local $var1 get_local $var2 i32.mul ) ) `; const callback = function() { let add_num = exportObject.IntAdd( 100, 10 ); let sub_num = exportObject.IntSub( 100, 10 ); let mul_num = exportObject.IntMul( 100, 10 ); let global_result = exportObject.AddGlobals(); console.log(`add_num: ${add_num}`); console.log(`sub_num: ${sub_num}`); console.log(`mul_num: ${mul_num}`); console.log(`global_result: ${global_result}`); } wat_instantiate(wat, callback, importObject, exportObject); ```