You can do that easily with binaryen already, and make use of parseText().
What I mean is that I would like something like this to work:
code = `(
func $add (param $a i32) (param $b i32) (result i32)
local.get $a
local.get $b
i32.add
)`;
module = WebAssembly.compile(code);
alert(module.add(3, 5)); // alerts "8". let wast = require("./wast.js");
let binary = wast.WebAssemblyText.encode("(module)");
[0] https://github.com/WebAssembly/spec/tree/main/interpreter#ja...