mirror of
https://github.com/fooflington/selfdefined.git
synced 2025-06-12 13:41:40 +00:00
update
This commit is contained in:
108
node_modules/app-module-path/lib/index.js
generated
vendored
Normal file
108
node_modules/app-module-path/lib/index.js
generated
vendored
Normal file
@ -0,0 +1,108 @@
|
||||
var Module = require('module').Module;
|
||||
var nodePath = require('path');
|
||||
|
||||
var appModulePaths = [];
|
||||
var old_nodeModulePaths = Module._nodeModulePaths;
|
||||
var allowedDirs = {};
|
||||
|
||||
function checkIfDirAllowed(from) {
|
||||
var currentDir = from;
|
||||
|
||||
while (currentDir) {
|
||||
if (allowedDirs[currentDir]) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var basename = nodePath.basename(currentDir);
|
||||
if (basename === 'node_modules') {
|
||||
return false;
|
||||
}
|
||||
|
||||
var parentDir = nodePath.dirname(currentDir);
|
||||
if (parentDir === currentDir) {
|
||||
break;
|
||||
}
|
||||
currentDir = parentDir;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Module._nodeModulePaths = function(from) {
|
||||
var paths = old_nodeModulePaths.call(this, from);
|
||||
|
||||
// Only include the app module path for top-level modules
|
||||
// that were not installed or that were explicitly allowed
|
||||
if (checkIfDirAllowed(from)) {
|
||||
paths = paths.concat(appModulePaths);
|
||||
}
|
||||
|
||||
return paths;
|
||||
};
|
||||
|
||||
function enableForDir(dir) {
|
||||
allowedDirs[dir] = true;
|
||||
}
|
||||
|
||||
function addPath(path, parent) {
|
||||
// Anable app-module-path to work under any directories that are explicitly added
|
||||
enableForDir(path);
|
||||
|
||||
function addPathHelper(targetArray) {
|
||||
path = nodePath.normalize(path);
|
||||
if (targetArray && targetArray.indexOf(path) === -1) {
|
||||
targetArray.push(path);
|
||||
}
|
||||
}
|
||||
|
||||
path = nodePath.normalize(path);
|
||||
|
||||
if (appModulePaths.indexOf(path) === -1) {
|
||||
appModulePaths.push(path);
|
||||
// Enable the search path for the current top-level module
|
||||
if (require.main) {
|
||||
addPathHelper(require.main.paths);
|
||||
}
|
||||
|
||||
parent = parent || module.parent;
|
||||
|
||||
// Also modify the paths of the module that was used to load the app-module-paths module
|
||||
// and all of it's parents
|
||||
while(parent && parent !== require.main) {
|
||||
addPathHelper(parent.paths);
|
||||
parent = parent.parent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function removePath(path) {
|
||||
function removePathHelper(targetArray) {
|
||||
path = nodePath.normalize(path);
|
||||
if (!targetArray) return;
|
||||
var index = targetArray.indexOf(path);
|
||||
if (index === -1) return;
|
||||
targetArray.splice(index, 1);
|
||||
}
|
||||
|
||||
var parent;
|
||||
path = nodePath.normalize(path);
|
||||
var index = appModulePaths.indexOf(path);
|
||||
|
||||
if (index > -1) {
|
||||
appModulePaths.splice(index, 1);
|
||||
// Enable the search path for the current top-level module
|
||||
if (require.main) removePathHelper(require.main.paths);
|
||||
parent = module.parent;
|
||||
|
||||
// Also modify the paths of the module that was used to load the app-module-paths module
|
||||
// and all of it's parents
|
||||
while(parent && parent !== require.main) {
|
||||
removePathHelper(parent.paths);
|
||||
parent = parent.parent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
exports.addPath = addPath;
|
||||
exports.removePath = removePath;
|
||||
exports.enableForDir = enableForDir;
|
Reference in New Issue
Block a user