+1
-1
| { | ||
| "name": "require-at", | ||
| "version": "1.0.1", | ||
| "version": "1.0.2", | ||
| "main": "require-at.js", | ||
@@ -5,0 +5,0 @@ "description": "Call require pretending your are at another directory", |
+32
-13
@@ -13,8 +13,9 @@ "use strict"; | ||
| Module._findPath = function (request, paths, isMain) { | ||
| return request.endsWith(contextFname) ? request : | ||
| orig_findPath.call(Module, request, paths, isMain); | ||
| Module._findPath = function(request, paths, isMain) { | ||
| return request.endsWith(contextFname) | ||
| ? request | ||
| : orig_findPath.call(Module, request, paths, isMain); | ||
| }; | ||
| Module._extensions[contextExt] = function (module, filename) { | ||
| Module._extensions[contextExt] = function(module, filename) { | ||
| module._compile("module.exports = require;", filename); | ||
@@ -30,15 +31,33 @@ }; | ||
| dir = Path.resolve(dir); | ||
| if (!contextMap.has(dir)) { | ||
| if (!Fs.existsSync(dir)) { | ||
| throw new Error(`require-at: dir '${dir}' doesn't exist`); | ||
| let dirChecked = false; | ||
| const makeIt = () => { | ||
| if (!contextMap.has(dir)) { | ||
| let stat; | ||
| try { | ||
| stat = Fs.statSync(dir); | ||
| } catch (e) { | ||
| throw new Error(`require-at: stat '${dir}' failed: ${e.message}`); | ||
| } | ||
| if (!dirChecked && !stat.isDirectory()) { | ||
| dirChecked = true; | ||
| dir = Path.dirname(dir); | ||
| return makeIt(); | ||
| } | ||
| xRequire = require(Path.join(dir, contextFname)); | ||
| contextMap.set(dir, xRequire); | ||
| } else { | ||
| xRequire = contextMap.get(dir); | ||
| } | ||
| xRequire = require(Path.join(dir, contextFname)); | ||
| contextMap.set(dir, xRequire); | ||
| } else { | ||
| xRequire = contextMap.get(dir); | ||
| } | ||
| return request ? xRequire(request) : xRequire; | ||
| return request ? xRequire(request) : xRequire; | ||
| }; | ||
| return makeIt(); | ||
| } | ||
| module.exports = requireAt; |
Debug access
Supply chain riskUses debug, reflection and dynamic code execution features.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Debug access
Supply chain riskUses debug, reflection and dynamic code execution features.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
4867
6.57%45
40.63%