@@ -65,16 +65,9 @@ let ModuleJob;
let createDynamicModule;
const {
CHAR_UPPERCASE_A ,
CHAR_LOWERCASE_A ,
CHAR_UPPERCASE_Z ,
CHAR_LOWERCASE_Z ,
CHAR_FORWARD_SLASH ,
CHAR_BACKWARD_SLASH ,
CHAR_COLON ,
CHAR_UNDERSCORE ,
CHAR_0 ,
CHAR_9 ,
CHAR_COLON
} = require (' internal/constants' );
const isWindows = process .platform === ' win32' ;
@@ -472,14 +465,10 @@ if (isWindows) {
};
}
// 'index.' character codes
const indexChars = [ 105 , 110 , 100 , 101 , 120 , 46 ];
const indexLen = indexChars .length ;
Module ._resolveLookupPaths = function (request , parent , newReturn ) {
Module ._resolveLookupPaths = function (request , parent ) {
if (NativeModule .canBeRequiredByUsers (request)) {
debug (' looking for %j in []' , request);
return (newReturn ? null : [request, []]) ;
return null ;
}
// Check for node modules paths.
@@ -495,71 +484,24 @@ Module._resolveLookupPaths = function(request, parent, newReturn) {
}
debug (' looking for %j in %j' , request, paths);
return (newReturn ? ( paths .length > 0 ? paths : null ) : [request, paths]) ;
return paths .length > 0 ? paths : null ;
}
// With --eval, parent.id is not set and parent.filename is null.
if (! parent || ! parent .id || ! parent .filename ) {
// Make require('./path/to/foo') work - normally the path is taken
// from realpath(__filename) but with eval there is no filename
var mainPaths = [' .' ].concat (Module ._nodeModulePaths (' .' ), modulePaths);
const mainPaths = [' .' ].concat (Module ._nodeModulePaths (' .' ), modulePaths);
debug (' looking for %j in %j' , request, mainPaths);
return (newReturn ? mainPaths : [request, mainPaths]);
}
// Is the parent an index module?
// We can assume the parent has a valid extension,
// as it already has been accepted as a module.
const base = path .basename (parent .filename );
var parentIdPath;
if (base .length > indexLen) {
var i = 0 ;
for (; i < indexLen; ++ i) {
if (indexChars[i] !== base .charCodeAt (i))
break ;
}
if (i === indexLen) {
// We matched 'index.', let's validate the rest
for (; i < base .length ; ++ i) {
const code = base .charCodeAt (i);
if (code !== CHAR_UNDERSCORE &&
(code < CHAR_0 || code > CHAR_9 ) &&
(code < CHAR_UPPERCASE_A || code > CHAR_UPPERCASE_Z ) &&
(code < CHAR_LOWERCASE_A || code > CHAR_LOWERCASE_Z ))
break ;
}
if (i === base .length ) {
// Is an index module
parentIdPath = parent .id ;
} else {
// Not an index module
parentIdPath = path .dirname (parent .id );
}
} else {
// Not an index module
parentIdPath = path .dirname (parent .id );
}
} else {
// Not an index module
parentIdPath = path .dirname (parent .id );
}
var id = path .resolve (parentIdPath, request);
// Make sure require('./path') and require('path') get distinct ids, even
// when called from the toplevel js file
if (parentIdPath === ' .' &&
id .indexOf (' /' ) === - 1 &&
(! isWindows || id .indexOf (' \\ ' ) === - 1 )) {
id = ' ./' + id;
return mainPaths;
}
debug (' RELATIVE: requested: %s set ID to: %s from %s' , request, id,
parent .id );
debug (' RELATIVE: requested: %s from parent.id %s' , request, parent .id );
const parentDir = [path .dirname (parent .filename )];
debug (' looking for %j in %j ' , id , parentDir);
return (newReturn ? parentDir : [id, parentDir]) ;
debug (' looking for %j' , parentDir);
return parentDir;
};
// Check the cache for the requested file.
@@ -647,15 +589,15 @@ Module._resolveFilename = function(request, parent, isMain, options) {
for (var i = 0 ; i < options .paths .length ; i++ ) {
const path = options .paths [i];
fakeParent .paths = Module ._nodeModulePaths (path);
const lookupPaths = Module ._resolveLookupPaths (request, fakeParent, true );
const lookupPaths = Module ._resolveLookupPaths (request, fakeParent);
for (var j = 0 ; j < lookupPaths .length ; j++ ) {
if (! paths .includes (lookupPaths[j]))
paths .push (lookupPaths[j]);
}
}
} else {
paths = Module ._resolveLookupPaths (request, parent, true );
paths = Module ._resolveLookupPaths (request, parent);
}
// Look up the filename first, since that's the cache key.
0 comments on commit
d11c4be