parent
4c85873c09
commit
3525325c9a
@ -0,0 +1,43 @@ |
||||
const semver = require('semver') |
||||
/* global Worker */ |
||||
|
||||
/** |
||||
* Checks if the worker can be used to load a compiler. |
||||
* checks a compiler whitelist, browser support and OS. |
||||
*/ |
||||
export function canUseWorker (selectedVersion) { |
||||
// Following restrictions should be deleted when Solidity will release fixed versions of compilers.
|
||||
// See https://github.com/ethereum/remix-ide/issues/2461
|
||||
const isChrome = !!window.chrome |
||||
const os = retrieveOS() |
||||
// define a whitelist for Linux
|
||||
const linuxWL = ['0.4.26', '0.5.3', '0.5.4', '0.5.5'] |
||||
const version = semver.coerce(selectedVersion) |
||||
// defining whitelist for chrome
|
||||
let isFromWhiteList = false |
||||
switch (os) { |
||||
case 'Windows': |
||||
isFromWhiteList = semver.gt(version, '0.5.2') || version === '0.4.26' |
||||
break |
||||
case 'Linux': |
||||
isFromWhiteList = semver.gt(version, '0.5.13') || linuxWL.includes(version) |
||||
break |
||||
default : |
||||
isFromWhiteList = true |
||||
} |
||||
return browserSupportWorker() && (!isChrome || (isChrome && isFromWhiteList)) |
||||
} |
||||
|
||||
function browserSupportWorker () { |
||||
return document.location.protocol !== 'file:' && Worker !== undefined |
||||
} |
||||
|
||||
function retrieveOS () { |
||||
let osName = 'Unknown OS' |
||||
if (navigator.platform.indexOf('Win') !== -1) { |
||||
osName = 'Windows' |
||||
} else if (navigator.platform.indexOf('Linux') !== -1) { |
||||
osName = 'Linux' |
||||
} |
||||
return osName |
||||
} |
Loading…
Reference in new issue