mirror of
https://github.com/pezkuwichain/revive.git
synced 2026-06-14 00:41:04 +00:00
Pack resolc with deps to one file
This commit is contained in:
+19
-29
@@ -1,46 +1,36 @@
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
const { execSync } = require("child_process");
|
||||
const { minify } = require("terser");
|
||||
|
||||
const SOLJSON_URI =
|
||||
"https://binaries.soliditylang.org/wasm/soljson-v0.8.28+commit.7893614a.js";
|
||||
const RESOLC_WASM_URI = "http://127.0.0.1:8080/resolc.wasm";
|
||||
const RESOLC_WASM_TARGET_DIR = path.join(
|
||||
__dirname,
|
||||
"../target/wasm32-unknown-emscripten/release",
|
||||
);
|
||||
const RESOLC_WASM = path.join(RESOLC_WASM_TARGET_DIR, "resolc.wasm");
|
||||
const RESOLC_JS = path.join(RESOLC_WASM_TARGET_DIR, "resolc.js");
|
||||
const RESOLC_JS_PACKED = path.join(RESOLC_WASM_TARGET_DIR, "resolc_packed.js");
|
||||
|
||||
const execShellCommand = (cmd) => {
|
||||
return execSync(cmd, {
|
||||
encoding: "utf-8",
|
||||
maxBuffer: 1024 * 1024 * 100,
|
||||
}).trim();
|
||||
};
|
||||
|
||||
const wasmBase64 = execShellCommand(
|
||||
`lz4c --no-frame-crc --best --favor-decSpeed "${RESOLC_WASM}" - | tail -c +8 | base64 -w 0`,
|
||||
);
|
||||
|
||||
const wasmSize = fs.statSync(RESOLC_WASM).size;
|
||||
|
||||
const miniLz4 = fs.readFileSync(
|
||||
path.join(__dirname, "utils/mini-lz4.js"),
|
||||
"utf-8",
|
||||
);
|
||||
const base64DecToArr = fs.readFileSync(
|
||||
path.join(__dirname, "utils/base64DecToArr.js"),
|
||||
"utf-8",
|
||||
);
|
||||
const resolcJs = fs.readFileSync(RESOLC_JS, "utf-8");
|
||||
|
||||
const packedJsContent = `
|
||||
let moduleArgs = { wasmBinary: (function(source, uncompressedSize) {
|
||||
${miniLz4}
|
||||
${base64DecToArr}
|
||||
return uncompress(base64DecToArr(source), uncompressedSize);
|
||||
})("${wasmBase64}", ${wasmSize}),
|
||||
};
|
||||
if (typeof importScripts === "function") {
|
||||
importScripts("${SOLJSON_URI}");
|
||||
|
||||
var moduleArgs = {
|
||||
wasmBinary: (function () {
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open("GET", "${RESOLC_WASM_URI}", false);
|
||||
xhr.responseType = "arraybuffer";
|
||||
xhr.send(null);
|
||||
return new Uint8Array(xhr.response);
|
||||
})(),
|
||||
soljson: Module
|
||||
};
|
||||
} else {
|
||||
console.log("Not a WebWorker, skipping Soljson and WASM loading.");
|
||||
}
|
||||
|
||||
${resolcJs}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user