Comparing version 1.14.2 to 1.15.0
@@ -6,3 +6,2 @@ var async = require('./lib/async'); | ||
exports = async; | ||
module.exports = async; |
@@ -39,2 +39,10 @@ var fs = require('fs'); | ||
var getPackageCandidates = function getPackageCandidates(x, start, opts) { | ||
var dirs = nodeModulesPaths(start, opts, x); | ||
for (var i = 0; i < dirs.length; i++) { | ||
dirs[i] = path.join(dirs[i], x); | ||
} | ||
return dirs; | ||
}; | ||
module.exports = function resolve(x, options, callback) { | ||
@@ -59,2 +67,3 @@ var cb = callback; | ||
var readFile = opts.readFile || fs.readFile; | ||
var packageIterator = opts.packageIterator; | ||
@@ -256,3 +265,3 @@ var extensions = opts.extensions || ['.js']; | ||
isDirectory(dir, isdir); | ||
isDirectory(path.dirname(dir), isdir); | ||
@@ -262,4 +271,3 @@ function isdir(err, isdir) { | ||
if (!isdir) return processDirs(cb, dirs.slice(1)); | ||
var file = path.join(dir, x); | ||
loadAsFile(file, opts.package, onfile); | ||
loadAsFile(dir, opts.package, onfile); | ||
} | ||
@@ -270,3 +278,3 @@ | ||
if (m) return cb(null, m, pkg); | ||
loadAsDirectory(path.join(dir, x), opts.package, ondir); | ||
loadAsDirectory(dir, opts.package, ondir); | ||
} | ||
@@ -281,4 +289,8 @@ | ||
function loadNodeModules(x, start, cb) { | ||
processDirs(cb, nodeModulesPaths(start, opts, x)); | ||
var thunk = function () { return getPackageCandidates(x, start, opts); }; | ||
processDirs( | ||
cb, | ||
packageIterator ? packageIterator(x, start, thunk, opts) : thunk() | ||
); | ||
} | ||
}; |
@@ -41,3 +41,11 @@ var isCore = require('./is-core'); | ||
module.exports = function (x, options) { | ||
var getPackageCandidates = function getPackageCandidates(x, start, opts) { | ||
var dirs = nodeModulesPaths(start, opts, x); | ||
for (var i = 0; i < dirs.length; i++) { | ||
dirs[i] = path.join(dirs[i], x); | ||
} | ||
return dirs; | ||
}; | ||
module.exports = function resolveSync(x, options) { | ||
if (typeof x !== 'string') { | ||
@@ -51,2 +59,3 @@ throw new TypeError('Path must be a string.'); | ||
var isDirectory = opts.isDirectory || defaultIsDir; | ||
var packageIterator = opts.packageIterator; | ||
@@ -163,9 +172,11 @@ var extensions = opts.extensions || ['.js']; | ||
function loadNodeModulesSync(x, start) { | ||
var dirs = nodeModulesPaths(start, opts, x); | ||
var thunk = function () { return getPackageCandidates(x, start, opts); }; | ||
var dirs = packageIterator ? packageIterator(x, start, thunk, opts) : thunk(); | ||
for (var i = 0; i < dirs.length; i++) { | ||
var dir = dirs[i]; | ||
if (isDirectory(dir)) { | ||
var m = loadAsFileSync(path.join(dir, '/', x)); | ||
if (isDirectory(path.dirname(dir))) { | ||
var m = loadAsFileSync(dir); | ||
if (m) return m; | ||
var n = loadAsDirectorySync(path.join(dir, '/', x)); | ||
var n = loadAsDirectorySync(dir); | ||
if (n) return n; | ||
@@ -172,0 +183,0 @@ } |
{ | ||
"name": "resolve", | ||
"description": "resolve like require.resolve() on behalf of files asynchronously and synchronously", | ||
"version": "1.14.2", | ||
"version": "1.15.0", | ||
"repository": { | ||
@@ -27,9 +27,9 @@ "type": "git", | ||
"devDependencies": { | ||
"@ljharb/eslint-config": "^15.0.2", | ||
"@ljharb/eslint-config": "^15.1.0", | ||
"array.prototype.map": "^1.0.2", | ||
"eslint": "^6.7.2", | ||
"eslint": "^6.8.0", | ||
"object-keys": "^1.1.1", | ||
"safe-publish-latest": "^1.1.4", | ||
"tap": "0.4.13", | ||
"tape": "^4.12.0" | ||
"tape": "^5.0.0-next.4" | ||
}, | ||
@@ -36,0 +36,0 @@ "license": "MIT", |
@@ -175,2 +175,17 @@ var path = require('path'); | ||
test('path iterator', function (t) { | ||
var resolverDir = path.join(__dirname, 'resolver'); | ||
var exactIterator = function (x, start, getPackageCandidates, opts) { | ||
return [path.join(resolverDir, x)]; | ||
}; | ||
t.equal( | ||
resolve.sync('baz', { packageIterator: exactIterator }), | ||
path.join(resolverDir, 'baz/quux.js') | ||
); | ||
t.end(); | ||
}); | ||
test('incorrect main', function (t) { | ||
@@ -177,0 +192,0 @@ var resolverDir = path.join(__dirname, 'resolver'); |
@@ -259,2 +259,18 @@ var path = require('path'); | ||
test('path iterator', function (t) { | ||
t.plan(2); | ||
var resolverDir = path.join(__dirname, 'resolver'); | ||
var exactIterator = function (x, start, getPackageCandidates, opts) { | ||
return [path.join(resolverDir, x)]; | ||
}; | ||
resolve('baz', { packageIterator: exactIterator }, function (err, res, pkg) { | ||
if (err) t.fail(err); | ||
t.equal(res, path.join(resolverDir, 'baz/quux.js')); | ||
t.equal(pkg && pkg.name, 'baz'); | ||
}); | ||
}); | ||
test('incorrect main', function (t) { | ||
@@ -261,0 +277,0 @@ t.plan(1); |
{ | ||
"name": "baz", | ||
"main": "quux.js" | ||
} |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
98121
2236
221