app: add mach CLI and integrate wasmserve (#738)

This commit is contained in:
Ali Chraghi 2023-04-02 23:07:05 +03:30 committed by GitHub
parent ee2ee13541
commit 60597f78d8
Failed to generate hash of commit
20 changed files with 731 additions and 813 deletions

View file

@ -0,0 +1,55 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>{[app_name]s}</title>
<link rel="icon" type="image/x-icon" href="favicon.ico" />
</head>
<body>
<script type="module">
import {{mach}} from "./mach.js";
import {{sysjs}} from "./mach-sysjs.js";
import setupWasmserve from "./wasmserve.js";
setupWasmserve();
let imports = {{
mach,
sysjs,
}};
fetch("{[wasm_path]s}")
.then(response => response.arrayBuffer())
.then(buffer => WebAssembly.instantiate(buffer, imports))
.then(results => results.instance)
.then(instance => {{
sysjs.init(instance);
mach.init(instance);
instance.exports.wasmInit();
let frame = true;
let last_update_time = performance.now();
let update = function () {{
if (!frame) {{
instance.exports.wasmDeinit();
return;
}}
if (mach.machHasEvent() ||
last_update_time + mach.wait_timeout * 1000 <= performance.now()) {{
if (instance.exports.wasmUpdate()) {{
instance.exports.wasmDeinit();
return;
}}
last_update_time = performance.now();
}}
window.requestAnimationFrame(update);
}};
window.requestAnimationFrame(update);
}})
.catch(err => console.error(err));
</script>
</body>
</html>