Skip to content

Commit

Permalink
module: replace magic numbers by constants
Browse files Browse the repository at this point in the history
- add new constants
- replace "magic" numbers in "module" by constants

PR-URL: #18785
Reviewed-By: Ruben Bridgewater <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Minwoo Jung <[email protected]>
Reviewed-By: Weijia Wang <[email protected]>
Reviewed-By: Benjamin Gruenbaum <[email protected]>
Reviewed-By: Matheus Marchini <[email protected]>
Reviewed-By: Jon Moss <[email protected]>
Reviewed-By: Tobias Nießen <[email protected]>
  • Loading branch information
daynin authored and BridgeAR committed Feb 16, 2018
1 parent 2960096 commit c86fe51
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 21 deletions.
23 changes: 14 additions & 9 deletions lib/internal/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,20 @@

module.exports = {
// Alphabet chars.
CHAR_UPPERCASE_A: 65, /*A*/
CHAR_LOWERCASE_A: 97, /*a*/
CHAR_UPPERCASE_Z: 90, /*Z*/
CHAR_LOWERCASE_Z: 122, /*z*/
CHAR_UPPERCASE_A: 65, /* A */
CHAR_LOWERCASE_A: 97, /* a */
CHAR_UPPERCASE_Z: 90, /* Z */
CHAR_LOWERCASE_Z: 122, /* z */

// Non-alphabetic chars.
CHAR_DOT: 46, /*.*/
CHAR_FORWARD_SLASH: 47, /*/*/
CHAR_BACKWARD_SLASH: 92, /*\*/
CHAR_COLON: 58, /*:*/
CHAR_QUESTION_MARK: 63, /*?*/
CHAR_DOT: 46, /* . */
CHAR_FORWARD_SLASH: 47, /* / */
CHAR_BACKWARD_SLASH: 92, /* \ */
CHAR_COLON: 58, /* : */
CHAR_QUESTION_MARK: 63, /* ? */
CHAR_UNDERSCORE: 95, /* _ */

// Digits
CHAR_0: 48, /* 0 */
CHAR_9: 57, /* 9 */
};
39 changes: 27 additions & 12 deletions lib/module.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,19 @@ module.exports = Module;
const internalESModule = require('internal/process/modules');
const ModuleJob = require('internal/loader/ModuleJob');
const createDynamicModule = require('internal/loader/CreateDynamicModule');
const {
CHAR_UPPERCASE_A,
CHAR_LOWERCASE_A,
CHAR_UPPERCASE_Z,
CHAR_LOWERCASE_Z,
CHAR_FORWARD_SLASH,
CHAR_BACKWARD_SLASH,
CHAR_COLON,
CHAR_DOT,
CHAR_UNDERSCORE,
CHAR_0,
CHAR_9,
} = require('internal/constants');

function stat(filename) {
filename = path.toNamespacedPath(filename);
Expand Down Expand Up @@ -201,7 +214,7 @@ Module._findPath = function(request, paths, isMain) {

var exts;
var trailingSlash = request.length > 0 &&
request.charCodeAt(request.length - 1) === 47/*/*/;
request.charCodeAt(request.length - 1) === CHAR_FORWARD_SLASH;

// For each path
for (var i = 0; i < paths.length; i++) {
Expand Down Expand Up @@ -276,8 +289,8 @@ if (process.platform === 'win32') {

// return root node_modules when path is 'D:\\'.
// path.resolve will make sure from.length >=3 in Windows.
if (from.charCodeAt(from.length - 1) === 92/*\*/ &&
from.charCodeAt(from.length - 2) === 58/*:*/)
if (from.charCodeAt(from.length - 1) === CHAR_BACKWARD_SLASH &&
from.charCodeAt(from.length - 2) === CHAR_COLON)
return [from + 'node_modules'];

const paths = [];
Expand All @@ -290,7 +303,9 @@ if (process.platform === 'win32') {
// Use colon as an extra condition since we can get node_modules
// path for drive root like 'C:\node_modules' and don't need to
// parse drive name.
if (code === 92/*\*/ || code === 47/*/*/ || code === 58/*:*/) {
if (code === CHAR_BACKWARD_SLASH ||
code === CHAR_FORWARD_SLASH ||
code === CHAR_COLON) {
if (p !== nmLen)
paths.push(from.slice(0, last) + '\\node_modules');
last = i;
Expand Down Expand Up @@ -324,7 +339,7 @@ if (process.platform === 'win32') {
var last = from.length;
for (var i = from.length - 1; i >= 0; --i) {
const code = from.charCodeAt(i);
if (code === 47/*/*/) {
if (code === CHAR_FORWARD_SLASH) {
if (p !== nmLen)
paths.push(from.slice(0, last) + '/node_modules');
last = i;
Expand Down Expand Up @@ -357,9 +372,9 @@ Module._resolveLookupPaths = function(request, parent, newReturn) {

// Check for relative path
if (request.length < 2 ||
request.charCodeAt(0) !== 46/*.*/ ||
(request.charCodeAt(1) !== 46/*.*/ &&
request.charCodeAt(1) !== 47/*/*/)) {
request.charCodeAt(0) !== CHAR_DOT ||
(request.charCodeAt(1) !== CHAR_DOT &&
request.charCodeAt(1) !== CHAR_FORWARD_SLASH)) {
var paths = modulePaths;
if (parent) {
if (!parent.paths)
Expand Down Expand Up @@ -407,10 +422,10 @@ Module._resolveLookupPaths = function(request, parent, newReturn) {
// We matched 'index.', let's validate the rest
for (; i < base.length; ++i) {
const code = base.charCodeAt(i);
if (code !== 95/*_*/ &&
(code < 48/*0*/ || code > 57/*9*/) &&
(code < 65/*A*/ || code > 90/*Z*/) &&
(code < 97/*a*/ || code > 122/*z*/))
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) {
Expand Down

0 comments on commit c86fe51

Please sign in to comment.