🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Book a DemoInstallSign in
Socket

require-at

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

require-at - npm Package Compare versions

Comparing version

to
1.0.2

2

package.json
{
"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",

@@ -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;