Fixes #97: SQLite is now async, optimized, tests
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
const [src, dest] = Deno.args;
|
||||
|
||||
const wasm = await Deno.readFile(src);
|
||||
|
||||
function encode(bytes) {
|
||||
let binary = "";
|
||||
for (let i = 0; i < bytes.length; i++) {
|
||||
binary += String.fromCharCode(bytes[i]);
|
||||
}
|
||||
return btoa(binary).replace(/\n/g, "");
|
||||
}
|
||||
|
||||
await Deno.writeFile(
|
||||
dest,
|
||||
new TextEncoder().encode(
|
||||
`/// <reference types="./sqlite.d.ts" />
|
||||
|
||||
/* This file is automatically generated. Do not edit directly. */
|
||||
import env from "./vfs.js";
|
||||
|
||||
const wasm =
|
||||
"${encode(wasm)}";
|
||||
|
||||
function decode(base64) {
|
||||
const bytesStr = atob(base64);
|
||||
const bytes = new Uint8Array(bytesStr.length);
|
||||
for (let i = 0, c = bytesStr.length; i < c; i++) {
|
||||
bytes[i] = bytesStr.charCodeAt(i);
|
||||
}
|
||||
return bytes;
|
||||
}
|
||||
|
||||
const moduleOrInstance = {
|
||||
module: null,
|
||||
instances: [],
|
||||
};
|
||||
|
||||
export async function compile() {
|
||||
moduleOrInstance.module = await WebAssembly.compile(decode(wasm));
|
||||
}
|
||||
|
||||
export async function instantiateBrowser() {
|
||||
const placeholder = { exports: null };
|
||||
const instance = await WebAssembly.instantiate(moduleOrInstance.module, env(placeholder));
|
||||
placeholder.exports = instance.exports;
|
||||
instance.exports.seed_rng(Date.now());
|
||||
moduleOrInstance.instances.push(instance);
|
||||
}
|
||||
|
||||
export function instantiate() {
|
||||
if (moduleOrInstance.instances.length) {
|
||||
return moduleOrInstance.instances.pop();
|
||||
} else {
|
||||
const placeholder = { exports: null };
|
||||
const instance = new WebAssembly.Instance(moduleOrInstance.module, env(placeholder));
|
||||
placeholder.exports = instance.exports;
|
||||
instance.exports.seed_rng(Date.now());
|
||||
return instance;
|
||||
}
|
||||
}`,
|
||||
),
|
||||
);
|
||||
Reference in New Issue
Block a user