solive-solc
Version:
Solidity Contract Compiler Tool - Browser Supported
49 lines (44 loc) • 1.23 kB
text/typescript
export * from './types';
const workerMap = new Map();
export const solidityCompiler = async (
{
version,
input,
}: {
version: string;
input: any;
},
) => {
// eslint-disable-next-line prefer-const
let oldWorkerInfo = workerMap.get(version);
let worker: Worker = {} as Worker;
if (oldWorkerInfo) {
// const { timestamp } = oldWorkerInfo;
worker = oldWorkerInfo.worker;
} else {
worker = new Worker(new URL('./worker.js', import.meta.url), { type: 'module' });
worker.postMessage({ type: 'init-solc', version });
workerMap.set(version, {
worker,
version,
timestamp: Date.now(),
});
}
return new Promise((resolve, reject) => {
worker.postMessage({ input: JSON.stringify(input), version });
worker.onmessage = function ({ data }: any) {
resolve(data);
};
worker.onerror = reject;
});
};
export const getCompilerVersions = async () => {
const worker = new Worker(new URL('./worker.js', import.meta.url), { type: 'module' });
return new Promise((resolve, reject) => {
worker.postMessage('fetch-compiler-versions');
worker.onmessage = function ({ data }) {
resolve(data);
};
worker.onerror = reject;
});
};