(id: string, filename = id, code?: string)
| 11 | this.context = vm.createContext(context); |
| 12 | } |
| 13 | load(id: string, filename = id, code?: string): any { |
| 14 | let module = this.cache.get(id); |
| 15 | if (module) return module.exports; |
| 16 | module = { |
| 17 | id, |
| 18 | filename, |
| 19 | exports: {}, |
| 20 | require: undefined, |
| 21 | loaded: false, |
| 22 | paths: undefined!, |
| 23 | children: undefined!, |
| 24 | parent: undefined! |
| 25 | }; |
| 26 | this.cache.set(id, module); |
| 27 | if (mod.builtinModules.indexOf(id) >= 0) { |
| 28 | module.exports = require(id); |
| 29 | module.loaded = true; |
| 30 | } |
| 31 | else { |
| 32 | module.require = this.createRequire(filename); |
| 33 | if (code === undefined) { |
| 34 | code = fs.readFileSync(filename, { encoding: "utf8" }); |
| 35 | } |
| 36 | code = `(function(module, exports, require, __filename, __dirname) {${code}\n})`; |
| 37 | const func = vm.runInContext(code, this.context, { filename }); |
| 38 | func(module, module.exports, module.require, filename, path.dirname(filename)); |
| 39 | module.loaded = true; |
| 40 | } |
| 41 | return module.exports; |
| 42 | } |
| 43 | createRequire(filename: string) { |
| 44 | const req = mod.createRequireFromPath(filename) as NodeRequire; |
| 45 | const require = ((id: string) => this.load(mod.builtinModules.indexOf(id) >= 0 ? id : req.resolve(id))) as NodeRequire; |
no test coverage detected