mirror of
https://github.com/element-hq/dendrite.git
synced 2025-07-01 08:16:27 +00:00
44 lines
1.3 KiB
JavaScript
Executable file
44 lines
1.3 KiB
JavaScript
Executable file
#!/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);
|
|
})();
|