embark-area-51/lib/core/modules/coderunner/runCode.js

37 lines
920 B
JavaScript

const vm = require('vm');
class RunCode {
constructor({logger}) {
this.logger = logger;
this.context = Object.assign({}, {
global, console, exports, require, module, __filename, __dirname, process,
setTimeout, setInterval, clearTimeout, clearInterval
});
}
doEval(code) {
try {
return vm.runInNewContext(code, this.context);
} catch(e) {
this.logger.error(e.message);
}
}
registerVar(varName, code) {
// TODO: Update all the code being dependent of web3
// To identify, look at the top of the file for something like:
// /*global web3*/
if (varName === 'web3') {
global.web3 = code;
}
this.context["global"][varName] = code;
this.context[varName] = code;
}
getWeb3Config() {
return {defaultAccount: this.context.web3.eth.defaultAccount, provider: this.context.web3.currentProvider};
}
}
module.exports = RunCode;