blob: a3a0277a7192f8fe40c4af1cd002bca060e582f1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#!/usr/bin/env node
/*
Copyright 2024 New Vector Ltd.
Copyright 2021 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
Please see LICENSE files in the repository root for full details.
*/
const fs = require("fs");
const path = require("path");
const childProcess = require("child_process");
(async function () {
// sql.js
const initSqlJs = require("sql.js");
await initSqlJs().then((SQL) => {
global._go_sqlite = SQL;
console.log("Loaded sqlite");
});
// dendritejs expects to write to `/idb` so we create that here
// Since this is testing only, we use the default in-memory FS
global._go_sqlite.FS.mkdir("/idb");
// WebSocket
const WebSocket = require("isomorphic-ws");
global.WebSocket = WebSocket;
// Load the generic Go Wasm exec helper inline to trigger built-in run call
// This approach avoids copying `wasm_exec.js` into the repo, which is nice
// to aim for since it can differ between Go versions.
const goRoot = await new Promise((resolve, reject) => {
childProcess.execFile("go", ["env", "GOROOT"], (err, out) => {
if (err) {
reject("Can't find go");
}
resolve(out.trim());
});
});
const execPath = path.join(goRoot, "misc/wasm/wasm_exec.js");
const execCode = fs.readFileSync(execPath, "utf8");
eval(execCode);
})();
|