Update compiler-worker.ts

pull/10/head
Aniket 4 years ago committed by GitHub
parent bb6d16b1bb
commit 5dbcffad83
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 50
      libs/remix-solidity/src/compiler/compiler-worker.ts

@ -1,40 +1,42 @@
'use strict' 'use strict'
import solc from 'solc/wrapper' import * as solc from 'solc/wrapper'
import { CompilerInput, MessageToWorker } from './types' import { CompilerInput, MessageToWorker } from './types'
var compileJSON: ((input: CompilerInput) => string) | null = (input) => { return '' } let compileJSON: ((input: CompilerInput) => string) | null = (input) => { return '' }
var missingInputs: string[] = [] const missingInputs: string[] = []
// 'DedicatedWorkerGlobalScope' object (the Worker global scope) is accessible through the self keyword // 'DedicatedWorkerGlobalScope' object (the Worker global scope) is accessible through the self keyword
// 'dom' and 'webworker' library files can't be included together https://github.com/microsoft/TypeScript/issues/20595 // 'dom' and 'webworker' library files can't be included together https://github.com/microsoft/TypeScript/issues/20595
export default (self) => { export default function (self) { // eslint-disable-line @typescript-eslint/explicit-module-boundary-types
self.addEventListener('message', (e) => { self.addEventListener('message', (e) => {
const data: MessageToWorker = e.data const data: MessageToWorker = e.data
switch (data.cmd) { switch (data.cmd) {
case 'loadVersion': case 'loadVersion':
delete self.Module {
// NOTE: workaround some browsers? delete self.Module
self.Module = undefined // NOTE: workaround some browsers?
compileJSON = null self.Module = undefined
//importScripts() method of synchronously imports one or more scripts into the worker's scope compileJSON = null
self.importScripts(data.data) //importScripts() method of synchronously imports one or more scripts into the worker's scope
let compiler: solc = solc(self.Module) self.importScripts(data.data)
compileJSON = (input) => { const compiler: solc = solc(self.Module)
try { compileJSON = (input) => {
let missingInputsCallback = (path) => { try {
missingInputs.push(path) const missingInputsCallback = (path) => {
return { 'error': 'Deferred import' } missingInputs.push(path)
return { 'error': 'Deferred import' }
}
return compiler.compile(input, { import: missingInputsCallback })
} catch (exception) {
return JSON.stringify({ error: 'Uncaught JavaScript exception:\n' + exception })
} }
return compiler.compile(input, { import: missingInputsCallback })
} catch (exception) {
return JSON.stringify({ error: 'Uncaught JavaScript exception:\n' + exception })
} }
self.postMessage({
cmd: 'versionLoaded',
data: compiler.version()
})
break
} }
self.postMessage({
cmd: 'versionLoaded',
data: compiler.version()
})
break
case 'compile': case 'compile':
missingInputs.length = 0 missingInputs.length = 0

Loading…
Cancel
Save