28 lines
819 B
JavaScript

async function main() {
let wasm;
for (const buildType of ['release', 'debug']) {
try {
wasm = await import(`./target/wasm32-unknown-emscripten/${buildType}/example-library.js`);
break;
} catch (e) {
if (e.code !== 'ERR_MODULE_NOT_FOUND') throw e;
}
}
if (!wasm) {
throw new Error('Rust wasm binary not built');
}
const module = {
print: (str) => console.log(str),
printErr: (str) => console.error(str),
}
const exampleLibrary = await wasm.default(module);
const luaInstance = exampleLibrary.ccall('lua_new', 'number', [], []);
const luaExecute = exampleLibrary.cwrap('lua_execute', null, ['number', 'string']);
luaExecute(luaInstance, 'print("Hello from WebAssembly Lua!")');
}
main();