UNPKG

tronbox

Version:

TronBox - Simple development framework for Tron

1 lines 1.55 kB
"use strict";var fs=require("fs");var path=require("path");var Module=require("module");var vm=require("vm");var originalrequire=require("original-require");var expect=require("@truffle/expect");var Config=require("./Config");var Require={file:function file(options,config){var file=options.file;expect.options(options,["file"]);options=Config["default"]()["with"](options);var source=fs.readFileSync(options.file,{encoding:"utf8"});var m=new Module(file);global.config=config;var context={Buffer:Buffer,__dirname:path.dirname(file),__filename:file,clearImmediate:clearImmediate,clearInterval:clearInterval,clearTimeout:clearTimeout,console:console,exports:exports,global:global,module:m,process:process,require:function require(pkgPath){pkgPath=pkgPath.trim();if(path.isAbsolute(pkgPath))return originalrequire(pkgPath);if(pkgPath[0]==="."){return originalrequire(path.join(path.dirname(file),pkgPath))}else{var moduleDir=path.dirname(file);while(true){try{return originalrequire(path.join(moduleDir,"node_modules",pkgPath))}catch(e){}var oldModuleDir=moduleDir;moduleDir=path.join(moduleDir,"..");if(moduleDir===oldModuleDir)break}return originalrequire(pkgPath)}},artifacts:options.resolver,setImmediate:setImmediate,setInterval:setInterval,setTimeout:setTimeout};Object.keys(options.context||{}).forEach(function(key){context[key]=options.context[key]});var old_cwd=process.cwd();process.chdir(path.dirname(file));var script=vm.createScript(source,file);script.runInNewContext(context);process.chdir(old_cwd);return m.exports}};module.exports=Require;