Add web worker compatibility

This commit is contained in:
Sebastian Miasojed committed 2024-11-27 15:17:26 +01:00
1 parent 81915ddbcb
commit 6a4fd1e991
12 files changed
+222 -49

No files matched your search

-2
View File
@@ -14,6 +14,4 @@ artifacts
tmp
package-lock.json
/*.html
/js/src/resolc.*
/js/dist/
/build
+13 -3
View File
@@ -10,10 +10,20 @@ mergeInto(LibraryManager.library, {
},
resolc_compile: function(inputPtr, inputLen) {
const inputJson = UTF8ToString(inputPtr, inputLen);
const path = require('path');
const createRevive = require(path.resolve(__dirname, './resolc.js'));
const revive = createRevive();
// Check if running in a web worker or node.js
if (typeof importScripts === 'function') {
// Running in a web worker
importScripts('./resolc.js');
var revive = createRevive()
} else if (typeof require === 'function') {
// Running in Node.js
const path = require('path');
createRevive = require(path.resolve(__dirname, './resolc.js')); // `createRevive` is returned from the required module
var revive = createRevive();
} else {
throw new Error('Unknown environment: Unable to load resolc.js');
}
revive.setStdinData(inputJson);
let stdoutString = "";
+1
View File
@@ -0,0 +1 @@
../../../target/wasm32-unknown-emscripten/release/resolc.js
+1
View File
@@ -0,0 +1 @@
../../../target/wasm32-unknown-emscripten/release/resolc.wasm
@@ -1,5 +1,5 @@
const soljson = require('solc/soljson');
const createRevive = require('./dist/revive-cjs/resolc.js');
const createRevive = require('./resolc.js');
const compilerStandardJsonInput = {
language: 'Solidity',
@@ -52,8 +52,8 @@ async function runCompiler() {
// Compile the Solidity source code
let x = m.callMain(['--standard-json']);
console.log("Stdout: " + stdoutString)
console.error("Stderr: " + stderrString)
console.log("Stdout: " + stdoutString);
console.error("Stderr: " + stderrString);
}
runCompiler().catch(err => {
+35
View File
@@ -0,0 +1,35 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Web Worker Example</title>
<style>
/* Ensure the pre tag wraps long lines */
pre {
white-space: pre-wrap; /* Wrap long lines */
word-wrap: break-word; /* Break long words */
max-width: 100%; /* Optional: Ensures it doesn't overflow container */
overflow-wrap: break-word; /* Another method for wrapping */
}
</style>
</head>
<body>
<h1>Revive Compilation Output</h1>
<pre id="output"></pre>
<script>
var outputElement = document.getElementById('output');
var worker = new Worker('./worker.js');
worker.addEventListener('message', function (e) {
const output = e.data.output
outputElement.textContent = output;
}, false);
worker.postMessage({
contractCode: 'contract C { function f() public { } }',
})
</script>
</body>
</html>
+1
View File
@@ -0,0 +1 @@
../../../target/wasm32-unknown-emscripten/release/resolc.js
+1
View File
@@ -0,0 +1 @@
../../../target/wasm32-unknown-emscripten/release/resolc.wasm
+111
View File
@@ -0,0 +1,111 @@
var Module = Module || {}; Module["wasmBinary"] = (function(source, uncompressedSize) {function base64DecToArr (sBase64) {
function b64ToUint6 (nChr) {
return nChr > 64 && nChr < 91 ?
nChr - 65
: nChr > 96 && nChr < 123 ?
nChr - 71
: nChr > 47 && nChr < 58 ?
nChr + 4
: nChr === 43 ?
62
: nChr === 47 ?
63
:
0;
}
var
nInLen = sBase64.length,
nOutLen = nInLen * 3 + 1 >> 2, taBytes = new Uint8Array(nOutLen);
for (var nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {
nMod4 = nInIdx & 3;
nUint24 |= b64ToUint6(sBase64.charCodeAt(nInIdx)) << 6 * (3 - nMod4);
if (nMod4 === 3 || nInLen - nInIdx === 1) {
for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {
taBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;
}
nUint24 = 0;
}
}
return taBytes;
}
function uncompress(source, uncompressedSize) {
function uncompressBlock (input, output, sIdx, eIdx) {
sIdx = sIdx || 0
eIdx = eIdx || (input.length - sIdx)
for (var i = sIdx, n = eIdx, j = 0; i < n;) {
var token = input[i++]
var literals_length = (token >> 4)
if (literals_length > 0) {
var l = literals_length + 240
while (l === 255) {
l = input[i++]
literals_length += l
}
var end = i + literals_length
while (i < end) output[j++] = input[i++]
if (i === n) return j
}
var offset = input[i++] | (input[i++] << 8)
if (offset === 0) return j
if (offset > j) return -(i-2)
var match_length = (token & 0xf)
var l = match_length + 240
while (l === 255) {
l = input[i++]
match_length += l
}
var pos = j - offset
var end = j + match_length + 4
while (j < end) output[j++] = output[pos++]
}
return j
}
var result = new ArrayBuffer(uncompressedSize);
var sourceIndex = 0;
var destIndex = 0;
var blockSize;
while((blockSize = (source[sourceIndex] | (source[sourceIndex + 1] << 8) | (source[sourceIndex + 2] << 16) | (source[sourceIndex + 3] << 24))) > 0)
{
sourceIndex += 4;
if (blockSize & 0x80000000)
{
blockSize &= 0x7FFFFFFFF;
for (var i = 0; i < blockSize; i++) {
result[destIndex++] = source[sourceIndex++];
}
}
else
{
destIndex += uncompressBlock(source, new Uint8Array(result, destIndex, uncompressedSize - destIndex), sourceIndex, sourceIndex + blockSize);
sourceIndex += blockSize;
}
}
return new Uint8Array(result, 0, uncompressedSize);
}
return uncompress(base64DecToArr(source), uncompressedSize);})(
"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 truncated
21094643);var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}};read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath["normalize"](filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("unhandledRejection",function(reason){throw reason});quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]Line truncated
Module["wasmBinary"] = undefined;
+52
View File
@@ -0,0 +1,52 @@
importScripts('./soljson.js');
importScripts('./resolc.js');
// Handle messages from the main thread
onmessage = async function (e) {
const contractCode = e.data.contractCode
const sourceCode = {
language: 'Solidity',
sources: {
contract: {
content: contractCode,
}
},
settings: {
optimizer: {
enabled: true,
runs: 200,
},
outputSelection: {
'*': {
'*': ['abi'],
}
}
}
};
const m = createRevive();
m.soljson = Module;
// Set input data for stdin
m.setStdinData(JSON.stringify(sourceCode));
var stdoutString = "";
m.setStdoutCallback(function(char) {
if (char.charCodeAt(0) === '\n') {
console.log("new line")
exit
}
stdoutString += char;
});
var stderrString = "";
m.setStderrCallback(function(char) {
stderrString += char;
});
// Compile the Solidity source code
m.callMain(['--standard-json']);
postMessage({output: stdoutString || stderrString});
};
+4 -8
View File
@@ -2,19 +2,15 @@
"name": "revive",
"version": "1.0.0",
"description": "Revive compiler",
"main": "run_revive.js",
"main": "resolc.js",
"dependencies": {
"solc": "^0.8.28"
},
"scripts": {
"build": "mkdir -p src && cp ../target/wasm32-unknown-emscripten/release/resolc.js ../target/wasm32-unknown-emscripten/release/resolc.wasm ./src && npx rollup -c",
"test": "npm run build && node run_revive.js"
"start-web": "http-server ./examples/web/",
"start-node": "node ./examples//node/run_revive.js"
},
"devDependencies": {
"@babel/core": "^7.26.0",
"@babel/preset-env": "^7.26.0",
"@rollup/plugin-babel": "^6.0.4",
"rollup": "^4.27.3",
"rollup-plugin-copy": "^3.5.0"
"http-server": "^14.1.1"
}
}
-33
View File
@@ -1,33 +0,0 @@
const babel = require('@rollup/plugin-babel');
const copy = require('rollup-plugin-copy');
const outputDirCJS = 'dist/revive-cjs';
const outputDirESM = 'dist/revive-esm';
module.exports = {
input: ['src/resolc.js'],
output: [
{
dir: outputDirCJS,
format: 'cjs',
exports: 'auto',
},
{
dir: outputDirESM,
format: 'esm',
},
],
plugins: [
babel({
exclude: 'node_modules/**',
presets: ['@babel/preset-env'],
babelHelpers: 'inline',
}),
copy({
targets: [
{ src: 'src/resolc.wasm', dest: outputDirCJS },
{ src: 'src/resolc.wasm', dest: outputDirESM },
],
}),
],
};