aboutsummaryrefslogtreecommitdiff
path: root/node_modules/resolve
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2016-10-10 03:43:44 +0200
committerFlorian Dold <florian.dold@gmail.com>2016-10-10 03:43:44 +0200
commitabd94a7f5a50f43c797a11b53549ae48fff667c3 (patch)
treeab8ed457f65cdd72e13e0571d2975729428f1551 /node_modules/resolve
parenta0247c6a3fd6a09a41a7e35a3441324c4dcb58be (diff)
downloadwallet-core-abd94a7f5a50f43c797a11b53549ae48fff667c3.tar.xz
add node_modules to address #4364
Diffstat (limited to 'node_modules/resolve')
-rw-r--r--node_modules/resolve/.travis.yml4
-rw-r--r--node_modules/resolve/LICENSE18
-rw-r--r--node_modules/resolve/example/async.js5
-rw-r--r--node_modules/resolve/example/sync.js3
-rw-r--r--node_modules/resolve/index.js5
-rw-r--r--node_modules/resolve/lib/async.js192
-rw-r--r--node_modules/resolve/lib/caller.js8
-rw-r--r--node_modules/resolve/lib/core.js4
-rw-r--r--node_modules/resolve/lib/core.json38
-rw-r--r--node_modules/resolve/lib/node-modules-paths.js38
-rw-r--r--node_modules/resolve/lib/sync.js81
-rw-r--r--node_modules/resolve/package.json91
-rw-r--r--node_modules/resolve/readme.markdown148
-rw-r--r--node_modules/resolve/test/core.js12
-rw-r--r--node_modules/resolve/test/dotdot.js29
-rw-r--r--node_modules/resolve/test/dotdot/abc/index.js2
-rw-r--r--node_modules/resolve/test/dotdot/index.js1
-rw-r--r--node_modules/resolve/test/faulty_basedir.js17
-rw-r--r--node_modules/resolve/test/filter.js18
-rw-r--r--node_modules/resolve/test/filter_sync.js15
-rw-r--r--node_modules/resolve/test/mock.js142
-rw-r--r--node_modules/resolve/test/mock_sync.js68
-rw-r--r--node_modules/resolve/test/module_dir.js56
-rw-r--r--node_modules/resolve/test/module_dir/xmodules/aaa/index.js1
-rw-r--r--node_modules/resolve/test/module_dir/ymodules/aaa/index.js1
-rw-r--r--node_modules/resolve/test/module_dir/zmodules/bbb/main.js1
-rw-r--r--node_modules/resolve/test/module_dir/zmodules/bbb/package.json3
-rw-r--r--node_modules/resolve/test/node_path.js48
-rw-r--r--node_modules/resolve/test/node_path/x/aaa/index.js1
-rw-r--r--node_modules/resolve/test/node_path/x/ccc/index.js1
-rw-r--r--node_modules/resolve/test/node_path/y/bbb/index.js1
-rw-r--r--node_modules/resolve/test/node_path/y/ccc/index.js1
-rw-r--r--node_modules/resolve/test/nonstring.js9
-rw-r--r--node_modules/resolve/test/pathfilter.js35
-rw-r--r--node_modules/resolve/test/pathfilter/deep_ref/main.js0
-rw-r--r--node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/alt.js0
-rw-r--r--node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/deeper/ref.js0
-rw-r--r--node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/package.json4
-rw-r--r--node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/ref.js0
-rw-r--r--node_modules/resolve/test/precedence.js23
-rw-r--r--node_modules/resolve/test/precedence/aaa.js1
-rw-r--r--node_modules/resolve/test/precedence/aaa/index.js1
-rw-r--r--node_modules/resolve/test/precedence/aaa/main.js1
-rw-r--r--node_modules/resolve/test/precedence/bbb.js1
-rw-r--r--node_modules/resolve/test/precedence/bbb/main.js1
-rw-r--r--node_modules/resolve/test/resolver.js281
-rw-r--r--node_modules/resolve/test/resolver/bar/node_modules/foo/index.js1
-rw-r--r--node_modules/resolve/test/resolver/baz/doom.js0
-rw-r--r--node_modules/resolve/test/resolver/baz/package.json3
-rw-r--r--node_modules/resolve/test/resolver/baz/quux.js1
-rw-r--r--node_modules/resolve/test/resolver/biz/node_modules/garply/lib/index.js1
-rw-r--r--node_modules/resolve/test/resolver/biz/node_modules/garply/package.json3
-rw-r--r--node_modules/resolve/test/resolver/biz/node_modules/grux/index.js1
-rw-r--r--node_modules/resolve/test/resolver/biz/node_modules/tiv/index.js1
-rw-r--r--node_modules/resolve/test/resolver/cup.coffee1
-rw-r--r--node_modules/resolve/test/resolver/foo.js1
-rw-r--r--node_modules/resolve/test/resolver/incorrect_main/index.js2
-rw-r--r--node_modules/resolve/test/resolver/incorrect_main/package.json3
-rw-r--r--node_modules/resolve/test/resolver/mug.coffee0
-rw-r--r--node_modules/resolve/test/resolver/mug.js0
-rw-r--r--node_modules/resolve/test/resolver/other_path/lib/other-lib.js0
-rw-r--r--node_modules/resolve/test/resolver/other_path/root.js0
-rw-r--r--node_modules/resolve/test/resolver/punycode/node_modules/punycode/index.js0
-rw-r--r--node_modules/resolve/test/resolver/quux/foo/index.js1
-rw-r--r--node_modules/resolve/test/resolver/without_basedir/main.js6
-rw-r--r--node_modules/resolve/test/resolver/without_basedir/node_modules/mymodule.js1
-rw-r--r--node_modules/resolve/test/resolver_sync.js180
-rw-r--r--node_modules/resolve/test/subdirs.js13
-rw-r--r--node_modules/resolve/test/subdirs/node_modules/a/b/c/x.json1
-rw-r--r--node_modules/resolve/test/subdirs/node_modules/a/package.json1
70 files changed, 1631 insertions, 0 deletions
diff --git a/node_modules/resolve/.travis.yml b/node_modules/resolve/.travis.yml
new file mode 100644
index 000000000..895dbd362
--- /dev/null
+++ b/node_modules/resolve/.travis.yml
@@ -0,0 +1,4 @@
+language: node_js
+node_js:
+ - 0.6
+ - 0.8
diff --git a/node_modules/resolve/LICENSE b/node_modules/resolve/LICENSE
new file mode 100644
index 000000000..ee27ba4b4
--- /dev/null
+++ b/node_modules/resolve/LICENSE
@@ -0,0 +1,18 @@
+This software is released under the MIT license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/resolve/example/async.js b/node_modules/resolve/example/async.js
new file mode 100644
index 000000000..6624ff726
--- /dev/null
+++ b/node_modules/resolve/example/async.js
@@ -0,0 +1,5 @@
+var resolve = require('../');
+resolve('tap', { basedir: __dirname }, function (err, res) {
+ if (err) console.error(err)
+ else console.log(res)
+});
diff --git a/node_modules/resolve/example/sync.js b/node_modules/resolve/example/sync.js
new file mode 100644
index 000000000..54b2cc100
--- /dev/null
+++ b/node_modules/resolve/example/sync.js
@@ -0,0 +1,3 @@
+var resolve = require('../');
+var res = resolve.sync('tap', { basedir: __dirname });
+console.log(res);
diff --git a/node_modules/resolve/index.js b/node_modules/resolve/index.js
new file mode 100644
index 000000000..51f194b4c
--- /dev/null
+++ b/node_modules/resolve/index.js
@@ -0,0 +1,5 @@
+var core = require('./lib/core');
+exports = module.exports = require('./lib/async');
+exports.core = core;
+exports.isCore = function (x) { return core[x] };
+exports.sync = require('./lib/sync');
diff --git a/node_modules/resolve/lib/async.js b/node_modules/resolve/lib/async.js
new file mode 100644
index 000000000..0f0eeca56
--- /dev/null
+++ b/node_modules/resolve/lib/async.js
@@ -0,0 +1,192 @@
+var core = require('./core');
+var fs = require('fs');
+var path = require('path');
+var caller = require('./caller.js');
+var nodeModulesPaths = require('./node-modules-paths.js');
+var splitRe = process.platform === 'win32' ? /[\/\\]/ : /\//;
+
+module.exports = function resolve (x, opts, cb) {
+ if (typeof opts === 'function') {
+ cb = opts;
+ opts = {};
+ }
+ if (!opts) opts = {};
+ if (typeof x !== 'string') {
+ return process.nextTick(function () {
+ cb(new Error('path must be a string'));
+ });
+ }
+
+ var isFile = opts.isFile || function (file, cb) {
+ fs.stat(file, function (err, stat) {
+ if (err && err.code === 'ENOENT') cb(null, false)
+ else if (err) cb(err)
+ else cb(null, stat.isFile() || stat.isFIFO())
+ });
+ };
+ var readFile = opts.readFile || fs.readFile;
+
+ var extensions = opts.extensions || [ '.js' ];
+ var y = opts.basedir || path.dirname(caller());
+
+ opts.paths = opts.paths || [];
+
+ if (/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[\\\/])/.test(x)) {
+ var res = path.resolve(y, x);
+ if (x === '..') res += '/';
+ if (/\/$/.test(x) && res === y) {
+ loadAsDirectory(res, opts.package, onfile);
+ }
+ else loadAsFile(res, opts.package, onfile);
+ }
+ else loadNodeModules(x, y, function (err, n, pkg) {
+ if (err) cb(err)
+ else if (n) cb(null, n, pkg)
+ else if (core[x]) return cb(null, x);
+ else cb(new Error("Cannot find module '" + x + "' from '" + y + "'"))
+ });
+
+ function onfile (err, m, pkg) {
+ if (err) cb(err)
+ else if (m) cb(null, m, pkg)
+ else loadAsDirectory(res, function (err, d, pkg) {
+ if (err) cb(err)
+ else if (d) cb(null, d, pkg)
+ else cb(new Error("Cannot find module '" + x + "' from '" + y + "'"))
+ })
+ }
+
+ function loadAsFile (x, pkg, cb) {
+ if (typeof pkg === 'function') {
+ cb = pkg;
+ pkg = undefined;
+ }
+
+ var exts = [''].concat(extensions);
+ load(exts, x, pkg)
+
+ function load (exts, x, pkg) {
+ if (exts.length === 0) return cb(null, undefined, pkg);
+ var file = x + exts[0];
+
+ if (pkg) onpkg(null, pkg)
+ else loadpkg(path.dirname(file), onpkg);
+
+ function onpkg (err, pkg_, dir) {
+ pkg = pkg_;
+ if (err) return cb(err)
+ if (dir && pkg && opts.pathFilter) {
+ var rfile = path.relative(dir, file);
+ var rel = rfile.slice(0, rfile.length - exts[0].length);
+ var r = opts.pathFilter(pkg, x, rel);
+ if (r) return load(
+ [''].concat(extensions.slice()),
+ path.resolve(dir, r),
+ pkg
+ );
+ }
+ isFile(file, onex);
+ }
+ function onex (err, ex) {
+ if (err) cb(err)
+ else if (!ex) load(exts.slice(1), x, pkg)
+ else cb(null, file, pkg)
+ }
+ }
+ }
+
+ function loadpkg (dir, cb) {
+ if (dir === '' || dir === '/') return cb(null);
+ if (process.platform === 'win32' && /^\w:[\\\/]*$/.test(dir)) {
+ return cb(null);
+ }
+ if (/[\\\/]node_modules[\\\/]*$/.test(dir)) return cb(null);
+
+ var pkgfile = path.join(dir, 'package.json');
+ isFile(pkgfile, function (err, ex) {
+ // on err, ex is false
+ if (!ex) return loadpkg(
+ path.dirname(dir), cb
+ );
+
+ readFile(pkgfile, function (err, body) {
+ if (err) cb(err);
+ try { var pkg = JSON.parse(body) }
+ catch (err) {}
+
+ if (pkg && opts.packageFilter) {
+ pkg = opts.packageFilter(pkg, pkgfile);
+ }
+ cb(null, pkg, dir);
+ });
+ });
+ }
+
+ function loadAsDirectory (x, fpkg, cb) {
+ if (typeof fpkg === 'function') {
+ cb = fpkg;
+ fpkg = opts.package;
+ }
+
+ var pkgfile = path.join(x, '/package.json');
+ isFile(pkgfile, function (err, ex) {
+ if (err) return cb(err);
+ if (!ex) return loadAsFile(path.join(x, '/index'), fpkg, cb);
+
+ readFile(pkgfile, function (err, body) {
+ if (err) return cb(err);
+ try {
+ var pkg = JSON.parse(body);
+ }
+ catch (err) {}
+
+ if (opts.packageFilter) {
+ pkg = opts.packageFilter(pkg, pkgfile);
+ }
+
+ if (pkg.main) {
+ if (pkg.main === '.' || pkg.main === './'){
+ pkg.main = 'index'
+ }
+ loadAsFile(path.resolve(x, pkg.main), pkg, function (err, m, pkg) {
+ if (err) return cb(err);
+ if (m) return cb(null, m, pkg);
+ if (!pkg) return loadAsFile(path.join(x, '/index'), pkg, cb);
+
+ var dir = path.resolve(x, pkg.main);
+ loadAsDirectory(dir, pkg, function (err, n, pkg) {
+ if (err) return cb(err);
+ if (n) return cb(null, n, pkg);
+ loadAsFile(path.join(x, '/index'), pkg, cb);
+ });
+ });
+ return;
+ }
+
+ loadAsFile(path.join(x, '/index'), pkg, cb);
+ });
+ });
+ }
+
+ function loadNodeModules (x, start, cb) {
+ (function process (dirs) {
+ if (dirs.length === 0) return cb(null, undefined);
+ var dir = dirs[0];
+
+ var file = path.join(dir, '/', x);
+ loadAsFile(file, undefined, onfile);
+
+ function onfile (err, m, pkg) {
+ if (err) return cb(err);
+ if (m) return cb(null, m, pkg);
+ loadAsDirectory(path.join(dir, '/', x), undefined, ondir);
+ }
+
+ function ondir (err, n, pkg) {
+ if (err) return cb(err);
+ if (n) return cb(null, n, pkg);
+ process(dirs.slice(1));
+ }
+ })(nodeModulesPaths(start, opts));
+ }
+};
diff --git a/node_modules/resolve/lib/caller.js b/node_modules/resolve/lib/caller.js
new file mode 100644
index 000000000..5536549b0
--- /dev/null
+++ b/node_modules/resolve/lib/caller.js
@@ -0,0 +1,8 @@
+module.exports = function () {
+ // see https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi
+ var origPrepareStackTrace = Error.prepareStackTrace;
+ Error.prepareStackTrace = function (_, stack) { return stack };
+ var stack = (new Error()).stack;
+ Error.prepareStackTrace = origPrepareStackTrace;
+ return stack[2].getFileName();
+};
diff --git a/node_modules/resolve/lib/core.js b/node_modules/resolve/lib/core.js
new file mode 100644
index 000000000..ea4a6c87e
--- /dev/null
+++ b/node_modules/resolve/lib/core.js
@@ -0,0 +1,4 @@
+module.exports = require('./core.json').reduce(function (acc, x) {
+ acc[x] = true;
+ return acc;
+}, {});
diff --git a/node_modules/resolve/lib/core.json b/node_modules/resolve/lib/core.json
new file mode 100644
index 000000000..28560f7ef
--- /dev/null
+++ b/node_modules/resolve/lib/core.json
@@ -0,0 +1,38 @@
+[
+ "assert",
+ "buffer_ieee754",
+ "buffer",
+ "child_process",
+ "cluster",
+ "console",
+ "constants",
+ "crypto",
+ "_debugger",
+ "dgram",
+ "dns",
+ "domain",
+ "events",
+ "freelist",
+ "fs",
+ "http",
+ "https",
+ "_linklist",
+ "module",
+ "net",
+ "os",
+ "path",
+ "punycode",
+ "querystring",
+ "readline",
+ "repl",
+ "stream",
+ "string_decoder",
+ "sys",
+ "timers",
+ "tls",
+ "tty",
+ "url",
+ "util",
+ "vm",
+ "zlib"
+]
diff --git a/node_modules/resolve/lib/node-modules-paths.js b/node_modules/resolve/lib/node-modules-paths.js
new file mode 100644
index 000000000..ce0a0d9f2
--- /dev/null
+++ b/node_modules/resolve/lib/node-modules-paths.js
@@ -0,0 +1,38 @@
+var path = require('path');
+
+module.exports = function (start, opts) {
+ var modules = opts.moduleDirectory
+ ? [].concat(opts.moduleDirectory)
+ : ['node_modules']
+ ;
+
+ // ensure that `start` is an absolute path at this point,
+ // resolving against the process' current working directory
+ start = path.resolve(start);
+
+ var prefix = '/';
+ if (/^([A-Za-z]:)/.test(start)) {
+ prefix = '';
+ } else if (/^\\\\/.test(start)) {
+ prefix = '\\\\';
+ }
+
+ var splitRe = process.platform === 'win32' ? /[\/\\]/ : /\/+/;
+
+ var parts = start.split(splitRe);
+
+ var dirs = [];
+ for (var i = parts.length - 1; i >= 0; i--) {
+ if (modules.indexOf(parts[i]) !== -1) continue;
+ dirs = dirs.concat(modules.map(function(module_dir) {
+ return prefix + path.join(
+ path.join.apply(path, parts.slice(0, i + 1)),
+ module_dir
+ );
+ }));
+ }
+ if (process.platform === 'win32'){
+ dirs[dirs.length-1] = dirs[dirs.length-1].replace(":", ":\\");
+ }
+ return dirs.concat(opts.paths);
+}
diff --git a/node_modules/resolve/lib/sync.js b/node_modules/resolve/lib/sync.js
new file mode 100644
index 000000000..ef91eddbb
--- /dev/null
+++ b/node_modules/resolve/lib/sync.js
@@ -0,0 +1,81 @@
+var core = require('./core');
+var fs = require('fs');
+var path = require('path');
+var caller = require('./caller.js');
+var nodeModulesPaths = require('./node-modules-paths.js');
+
+module.exports = function (x, opts) {
+ if (!opts) opts = {};
+ var isFile = opts.isFile || function (file) {
+ try { var stat = fs.statSync(file) }
+ catch (err) { if (err && err.code === 'ENOENT') return false }
+ return stat.isFile() || stat.isFIFO();
+ };
+ var readFileSync = opts.readFileSync || fs.readFileSync;
+
+ var extensions = opts.extensions || [ '.js' ];
+ var y = opts.basedir || path.dirname(caller());
+
+ opts.paths = opts.paths || [];
+
+ if (/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[\\\/])/.test(x)) {
+ var res = path.resolve(y, x);
+ if (x === '..') res += '/';
+ var m = loadAsFileSync(res) || loadAsDirectorySync(res);
+ if (m) return m;
+ } else {
+ var n = loadNodeModulesSync(x, y);
+ if (n) return n;
+ }
+
+ if (core[x]) return x;
+
+ throw new Error("Cannot find module '" + x + "' from '" + y + "'");
+
+ function loadAsFileSync (x) {
+ if (isFile(x)) {
+ return x;
+ }
+
+ for (var i = 0; i < extensions.length; i++) {
+ var file = x + extensions[i];
+ if (isFile(file)) {
+ return file;
+ }
+ }
+ }
+
+ function loadAsDirectorySync (x) {
+ var pkgfile = path.join(x, '/package.json');
+ if (isFile(pkgfile)) {
+ var body = readFileSync(pkgfile, 'utf8');
+ try {
+ var pkg = JSON.parse(body);
+ if (opts.packageFilter) {
+ pkg = opts.packageFilter(pkg, x);
+ }
+
+ if (pkg.main) {
+ var m = loadAsFileSync(path.resolve(x, pkg.main));
+ if (m) return m;
+ var n = loadAsDirectorySync(path.resolve(x, pkg.main));
+ if (n) return n;
+ }
+ }
+ catch (err) {}
+ }
+
+ return loadAsFileSync(path.join( x, '/index'));
+ }
+
+ function loadNodeModulesSync (x, start) {
+ var dirs = nodeModulesPaths(start, opts);
+ for (var i = 0; i < dirs.length; i++) {
+ var dir = dirs[i];
+ var m = loadAsFileSync(path.join( dir, '/', x));
+ if (m) return m;
+ var n = loadAsDirectorySync(path.join( dir, '/', x ));
+ if (n) return n;
+ }
+ }
+};
diff --git a/node_modules/resolve/package.json b/node_modules/resolve/package.json
new file mode 100644
index 000000000..009063a64
--- /dev/null
+++ b/node_modules/resolve/package.json
@@ -0,0 +1,91 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "resolve@^1.1.7",
+ "scope": null,
+ "escapedName": "resolve",
+ "name": "resolve",
+ "rawSpec": "^1.1.7",
+ "spec": ">=1.1.7 <2.0.0",
+ "type": "range"
+ },
+ "/home/dold/repos/taler/wallet-webex/node_modules/liftoff"
+ ]
+ ],
+ "_from": "resolve@>=1.1.7 <2.0.0",
+ "_id": "resolve@1.1.7",
+ "_inCache": true,
+ "_location": "/resolve",
+ "_nodeVersion": "4.2.1",
+ "_npmUser": {
+ "name": "substack",
+ "email": "substack@gmail.com"
+ },
+ "_npmVersion": "3.4.1",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "resolve@^1.1.7",
+ "scope": null,
+ "escapedName": "resolve",
+ "name": "resolve",
+ "rawSpec": "^1.1.7",
+ "spec": ">=1.1.7 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/liftoff",
+ "/rechoir"
+ ],
+ "_resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+ "_shasum": "203114d82ad2c5ed9e8e0411b3932875e889e97b",
+ "_shrinkwrap": null,
+ "_spec": "resolve@^1.1.7",
+ "_where": "/home/dold/repos/taler/wallet-webex/node_modules/liftoff",
+ "author": {
+ "name": "James Halliday",
+ "email": "mail@substack.net",
+ "url": "http://substack.net"
+ },
+ "bugs": {
+ "url": "https://github.com/substack/node-resolve/issues"
+ },
+ "dependencies": {},
+ "description": "resolve like require.resolve() on behalf of files asynchronously and synchronously",
+ "devDependencies": {
+ "tap": "0.4.13",
+ "tape": "^3.5.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "203114d82ad2c5ed9e8e0411b3932875e889e97b",
+ "tarball": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz"
+ },
+ "gitHead": "bb37f0d4400e4d7835375be4bd3ad1264bac3689",
+ "homepage": "https://github.com/substack/node-resolve#readme",
+ "keywords": [
+ "resolve",
+ "require",
+ "node",
+ "module"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "maintainers": [
+ {
+ "name": "substack",
+ "email": "mail@substack.net"
+ }
+ ],
+ "name": "resolve",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/substack/node-resolve.git"
+ },
+ "scripts": {
+ "test": "tape test/*.js"
+ },
+ "version": "1.1.7"
+}
diff --git a/node_modules/resolve/readme.markdown b/node_modules/resolve/readme.markdown
new file mode 100644
index 000000000..4fab9b043
--- /dev/null
+++ b/node_modules/resolve/readme.markdown
@@ -0,0 +1,148 @@
+# resolve
+
+implements the [node `require.resolve()`
+algorithm](http://nodejs.org/docs/v0.4.8/api/all.html#all_Together...)
+such that you can `require.resolve()` on behalf of a file asynchronously and
+synchronously
+
+[![build status](https://secure.travis-ci.org/substack/node-resolve.png)](http://travis-ci.org/substack/node-resolve)
+
+# example
+
+asynchronously resolve:
+
+``` js
+var resolve = require('resolve');
+resolve('tap', { basedir: __dirname }, function (err, res) {
+ if (err) console.error(err)
+ else console.log(res)
+});
+```
+
+```
+$ node example/async.js
+/home/substack/projects/node-resolve/node_modules/tap/lib/main.js
+```
+
+synchronously resolve:
+
+``` js
+var resolve = require('resolve');
+var res = resolve.sync('tap', { basedir: __dirname });
+console.log(res);
+```
+
+```
+$ node example/sync.js
+/home/substack/projects/node-resolve/node_modules/tap/lib/main.js
+```
+
+# methods
+
+``` js
+var resolve = require('resolve')
+```
+
+## resolve(id, opts={}, cb)
+
+Asynchronously resolve the module path string `id` into `cb(err, res [, pkg])`, where `pkg` (if defined) is the data from `package.json`.
+
+options are:
+
+* opts.basedir - directory to begin resolving from
+
+* opts.package - `package.json` data applicable to the module being loaded
+
+* opts.extensions - array of file extensions to search in order
+
+* opts.readFile - how to read files asynchronously
+
+* opts.isFile - function to asynchronously test whether a file exists
+
+* opts.packageFilter - transform the parsed package.json contents before looking
+at the "main" field
+
+* opts.pathFilter(pkg, path, relativePath) - transform a path within a package
+ * pkg - package data
+ * path - the path being resolved
+ * relativePath - the path relative from the package.json location
+ * returns - a relative path that will be joined from the package.json location
+
+* opts.paths - require.paths array to use if nothing is found on the normal
+node_modules recursive walk (probably don't use this)
+
+* opts.moduleDirectory - directory (or directories) in which to recursively look for modules. default: `"node_modules"`
+
+default `opts` values:
+
+``` javascript
+{
+ paths: [],
+ basedir: __dirname,
+ extensions: [ '.js' ],
+ readFile: fs.readFile,
+ isFile: function (file, cb) {
+ fs.stat(file, function (err, stat) {
+ if (err && err.code === 'ENOENT') cb(null, false)
+ else if (err) cb(err)
+ else cb(null, stat.isFile())
+ });
+ },
+ moduleDirectory: 'node_modules'
+}
+```
+
+## resolve.sync(id, opts)
+
+Synchronously resolve the module path string `id`, returning the result and
+throwing an error when `id` can't be resolved.
+
+options are:
+
+* opts.basedir - directory to begin resolving from
+
+* opts.extensions - array of file extensions to search in order
+
+* opts.readFile - how to read files synchronously
+
+* opts.isFile - function to synchronously test whether a file exists
+
+* `opts.packageFilter(pkg, pkgfile)` - transform the parsed package.json
+* contents before looking at the "main" field
+
+* opts.paths - require.paths array to use if nothing is found on the normal
+node_modules recursive walk (probably don't use this)
+
+* opts.moduleDirectory - directory (or directories) in which to recursively look for modules. default: `"node_modules"`
+
+default `opts` values:
+
+``` javascript
+{
+ paths: [],
+ basedir: __dirname,
+ extensions: [ '.js' ],
+ readFileSync: fs.readFileSync,
+ isFile: function (file) {
+ try { return fs.statSync(file).isFile() }
+ catch (e) { return false }
+ },
+ moduleDirectory: 'node_modules'
+}
+````
+
+## resolve.isCore(pkg)
+
+Return whether a package is in core.
+
+# install
+
+With [npm](https://npmjs.org) do:
+
+```
+npm install resolve
+```
+
+# license
+
+MIT
diff --git a/node_modules/resolve/test/core.js b/node_modules/resolve/test/core.js
new file mode 100644
index 000000000..4a5668207
--- /dev/null
+++ b/node_modules/resolve/test/core.js
@@ -0,0 +1,12 @@
+var test = require('tape');
+var resolve = require('../');
+
+test('core modules', function (t) {
+ t.ok(resolve.isCore('fs'));
+ t.ok(resolve.isCore('net'));
+ t.ok(resolve.isCore('http'));
+
+ t.ok(!resolve.isCore('seq'));
+ t.ok(!resolve.isCore('../'));
+ t.end();
+});
diff --git a/node_modules/resolve/test/dotdot.js b/node_modules/resolve/test/dotdot.js
new file mode 100644
index 000000000..b87677278
--- /dev/null
+++ b/node_modules/resolve/test/dotdot.js
@@ -0,0 +1,29 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('dotdot', function (t) {
+ t.plan(4);
+ var dir = __dirname + '/dotdot/abc';
+
+ resolve('..', { basedir : dir }, function (err, res, pkg) {
+ t.ifError(err);
+ t.equal(res, __dirname + '/dotdot/index.js');
+ });
+
+ resolve('.', { basedir : dir }, function (err, res, pkg) {
+ t.ifError(err);
+ t.equal(res, dir + '/index.js');
+ });
+});
+
+test('dotdot sync', function (t) {
+ t.plan(2);
+ var dir = __dirname + '/dotdot/abc';
+
+ var a = resolve.sync('..', { basedir : dir });
+ t.equal(a, __dirname + '/dotdot/index.js');
+
+ var b = resolve.sync('.', { basedir : dir });
+ t.equal(b, dir + '/index.js');
+});
diff --git a/node_modules/resolve/test/dotdot/abc/index.js b/node_modules/resolve/test/dotdot/abc/index.js
new file mode 100644
index 000000000..67f2534eb
--- /dev/null
+++ b/node_modules/resolve/test/dotdot/abc/index.js
@@ -0,0 +1,2 @@
+var x = require('..');
+console.log(x);
diff --git a/node_modules/resolve/test/dotdot/index.js b/node_modules/resolve/test/dotdot/index.js
new file mode 100644
index 000000000..afec73603
--- /dev/null
+++ b/node_modules/resolve/test/dotdot/index.js
@@ -0,0 +1 @@
+module.exports = 'whatever'
diff --git a/node_modules/resolve/test/faulty_basedir.js b/node_modules/resolve/test/faulty_basedir.js
new file mode 100644
index 000000000..244081882
--- /dev/null
+++ b/node_modules/resolve/test/faulty_basedir.js
@@ -0,0 +1,17 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+// not sure what's up with this test anymore
+if (process.platform !== 'win32') return;
+
+test('faulty basedir must produce error in windows', function (t) {
+ t.plan(1);
+
+ var resolverDir = 'C:\\a\\b\\c\\d';
+
+ resolve('tape/lib/test.js', { basedir : resolverDir }, function (err, res, pkg) {
+ t.equal(true, !!err);
+ });
+
+});
diff --git a/node_modules/resolve/test/filter.js b/node_modules/resolve/test/filter.js
new file mode 100644
index 000000000..07c38f349
--- /dev/null
+++ b/node_modules/resolve/test/filter.js
@@ -0,0 +1,18 @@
+var test = require('tape');
+var resolve = require('../');
+
+test('filter', function (t) {
+ t.plan(2);
+ var dir = __dirname + '/resolver';
+ resolve('./baz', {
+ basedir : dir,
+ packageFilter : function (pkg) {
+ pkg.main = 'doom';
+ return pkg;
+ }
+ }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/baz/doom.js');
+ t.equal(pkg.main, 'doom');
+ });
+});
diff --git a/node_modules/resolve/test/filter_sync.js b/node_modules/resolve/test/filter_sync.js
new file mode 100644
index 000000000..3f89b7942
--- /dev/null
+++ b/node_modules/resolve/test/filter_sync.js
@@ -0,0 +1,15 @@
+var test = require('tape');
+var resolve = require('../');
+
+test('filter', function (t) {
+ var dir = __dirname + '/resolver';
+ var res = resolve.sync('./baz', {
+ basedir : dir,
+ packageFilter : function (pkg) {
+ pkg.main = 'doom'
+ return pkg;
+ }
+ });
+ t.equal(res, dir + '/baz/doom.js');
+ t.end();
+});
diff --git a/node_modules/resolve/test/mock.js b/node_modules/resolve/test/mock.js
new file mode 100644
index 000000000..1cf3b1247
--- /dev/null
+++ b/node_modules/resolve/test/mock.js
@@ -0,0 +1,142 @@
+var test = require('tape');
+var resolve = require('../');
+
+test('mock', function (t) {
+ t.plan(6);
+
+ var files = {
+ '/foo/bar/baz.js' : 'beep'
+ };
+
+ function opts (basedir) {
+ return {
+ basedir : basedir,
+ isFile : function (file, cb) {
+ cb(null, files.hasOwnProperty(file));
+ },
+ readFile : function (file, cb) {
+ cb(null, files[file]);
+ }
+ }
+ }
+
+ resolve('./baz', opts('/foo/bar'), function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, '/foo/bar/baz.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, '/foo/bar/baz.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('baz', opts('/foo/bar'), function (err, res) {
+ t.equal(err.message, "Cannot find module 'baz' from '/foo/bar'");
+ });
+
+ resolve('../baz', opts('/foo/bar'), function (err, res) {
+ t.equal(err.message, "Cannot find module '../baz' from '/foo/bar'");
+ });
+});
+
+test('mock from package', function (t) {
+ t.plan(6);
+
+ var files = {
+ '/foo/bar/baz.js' : 'beep'
+ };
+
+ function opts (basedir) {
+ return {
+ basedir : basedir,
+ package : { main: 'bar' },
+ isFile : function (file, cb) {
+ cb(null, files.hasOwnProperty(file));
+ },
+ readFile : function (file, cb) {
+ cb(null, files[file]);
+ }
+ }
+ }
+
+ resolve('./baz', opts('/foo/bar'), function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, '/foo/bar/baz.js');
+ t.equal(pkg.main, 'bar');
+ });
+
+ resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, '/foo/bar/baz.js');
+ t.equal(pkg.main, 'bar');
+ });
+
+ resolve('baz', opts('/foo/bar'), function (err, res) {
+ t.equal(err.message, "Cannot find module 'baz' from '/foo/bar'");
+ });
+
+ resolve('../baz', opts('/foo/bar'), function (err, res) {
+ t.equal(err.message, "Cannot find module '../baz' from '/foo/bar'");
+ });
+});
+
+test('mock package', function (t) {
+ t.plan(2);
+
+ var files = {
+ '/foo/node_modules/bar/baz.js' : 'beep',
+ '/foo/node_modules/bar/package.json' : JSON.stringify({
+ main : './baz.js'
+ })
+ };
+
+ function opts (basedir) {
+ return {
+ basedir : basedir,
+ isFile : function (file, cb) {
+ cb(null, files.hasOwnProperty(file));
+ },
+ readFile : function (file, cb) {
+ cb(null, files[file]);
+ }
+ }
+ }
+
+ resolve('bar', opts('/foo'), function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, '/foo/node_modules/bar/baz.js');
+ t.equal(pkg.main, './baz.js');
+ });
+});
+
+test('mock package from package', function (t) {
+ t.plan(2);
+
+ var files = {
+ '/foo/node_modules/bar/baz.js' : 'beep',
+ '/foo/node_modules/bar/package.json' : JSON.stringify({
+ main : './baz.js'
+ })
+ };
+
+ function opts (basedir) {
+ return {
+ basedir : basedir,
+ package : { main: 'bar' },
+ isFile : function (file, cb) {
+ cb(null, files.hasOwnProperty(file));
+ },
+ readFile : function (file, cb) {
+ cb(null, files[file]);
+ }
+ }
+ }
+
+ resolve('bar', opts('/foo'), function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, '/foo/node_modules/bar/baz.js');
+ t.equal(pkg.main, './baz.js');
+ });
+});
diff --git a/node_modules/resolve/test/mock_sync.js b/node_modules/resolve/test/mock_sync.js
new file mode 100644
index 000000000..abfd28935
--- /dev/null
+++ b/node_modules/resolve/test/mock_sync.js
@@ -0,0 +1,68 @@
+var test = require('tape');
+var resolve = require('../');
+
+test('mock', function (t) {
+ t.plan(4);
+
+ var files = {
+ '/foo/bar/baz.js' : 'beep'
+ };
+
+ function opts (basedir) {
+ return {
+ basedir : basedir,
+ isFile : function (file) {
+ return files.hasOwnProperty(file)
+ },
+ readFileSync : function (file) {
+ return files[file]
+ }
+ }
+ }
+
+ t.equal(
+ resolve.sync('./baz', opts('/foo/bar')),
+ '/foo/bar/baz.js'
+ );
+
+ t.equal(
+ resolve.sync('./baz.js', opts('/foo/bar')),
+ '/foo/bar/baz.js'
+ );
+
+ t.throws(function () {
+ resolve.sync('baz', opts('/foo/bar'));
+ });
+
+ t.throws(function () {
+ resolve.sync('../baz', opts('/foo/bar'));
+ });
+});
+
+test('mock package', function (t) {
+ t.plan(1);
+
+ var files = {
+ '/foo/node_modules/bar/baz.js' : 'beep',
+ '/foo/node_modules/bar/package.json' : JSON.stringify({
+ main : './baz.js'
+ })
+ };
+
+ function opts (basedir) {
+ return {
+ basedir : basedir,
+ isFile : function (file) {
+ return files.hasOwnProperty(file)
+ },
+ readFileSync : function (file) {
+ return files[file]
+ }
+ }
+ }
+
+ t.equal(
+ resolve.sync('bar', opts('/foo')),
+ '/foo/node_modules/bar/baz.js'
+ );
+});
diff --git a/node_modules/resolve/test/module_dir.js b/node_modules/resolve/test/module_dir.js
new file mode 100644
index 000000000..06395d8cb
--- /dev/null
+++ b/node_modules/resolve/test/module_dir.js
@@ -0,0 +1,56 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('moduleDirectory strings', function (t) {
+ t.plan(4);
+ var dir = __dirname + '/module_dir';
+ var xopts = {
+ basedir : dir,
+ moduleDirectory: 'xmodules'
+ };
+ resolve('aaa', xopts, function (err, res, pkg) {
+ t.ifError(err);
+ t.equal(res, dir + '/xmodules/aaa/index.js');
+ });
+
+ var yopts = {
+ basedir : dir,
+ moduleDirectory: 'ymodules'
+ };
+ resolve('aaa', yopts, function (err, res, pkg) {
+ t.ifError(err);
+ t.equal(res, dir + '/ymodules/aaa/index.js');
+ });
+});
+
+test('moduleDirectory array', function (t) {
+ t.plan(6);
+ var dir = __dirname + '/module_dir';
+ var aopts = {
+ basedir : dir,
+ moduleDirectory: [ 'xmodules', 'ymodules', 'zmodules' ]
+ };
+ resolve('aaa', aopts, function (err, res, pkg) {
+ t.ifError(err);
+ t.equal(res, dir + '/xmodules/aaa/index.js');
+ });
+
+ var bopts = {
+ basedir : dir,
+ moduleDirectory: [ 'zmodules', 'ymodules', 'xmodules' ]
+ };
+ resolve('aaa', bopts, function (err, res, pkg) {
+ t.ifError(err);
+ t.equal(res, dir + '/ymodules/aaa/index.js');
+ });
+
+ var copts = {
+ basedir : dir,
+ moduleDirectory: [ 'xmodules', 'ymodules', 'zmodules' ]
+ };
+ resolve('bbb', copts, function (err, res, pkg) {
+ t.ifError(err);
+ t.equal(res, dir + '/zmodules/bbb/main.js');
+ });
+});
diff --git a/node_modules/resolve/test/module_dir/xmodules/aaa/index.js b/node_modules/resolve/test/module_dir/xmodules/aaa/index.js
new file mode 100644
index 000000000..55cd18ca7
--- /dev/null
+++ b/node_modules/resolve/test/module_dir/xmodules/aaa/index.js
@@ -0,0 +1 @@
+module.exports = function (x) { return x * 100 }
diff --git a/node_modules/resolve/test/module_dir/ymodules/aaa/index.js b/node_modules/resolve/test/module_dir/ymodules/aaa/index.js
new file mode 100644
index 000000000..651aca860
--- /dev/null
+++ b/node_modules/resolve/test/module_dir/ymodules/aaa/index.js
@@ -0,0 +1 @@
+module.exports = function (x) { return x + 100 }
diff --git a/node_modules/resolve/test/module_dir/zmodules/bbb/main.js b/node_modules/resolve/test/module_dir/zmodules/bbb/main.js
new file mode 100644
index 000000000..4325a0bd5
--- /dev/null
+++ b/node_modules/resolve/test/module_dir/zmodules/bbb/main.js
@@ -0,0 +1 @@
+module.exports = function (n) { return n * 111 }
diff --git a/node_modules/resolve/test/module_dir/zmodules/bbb/package.json b/node_modules/resolve/test/module_dir/zmodules/bbb/package.json
new file mode 100644
index 000000000..c13b8cf6a
--- /dev/null
+++ b/node_modules/resolve/test/module_dir/zmodules/bbb/package.json
@@ -0,0 +1,3 @@
+{
+ "main": "main.js"
+}
diff --git a/node_modules/resolve/test/node_path.js b/node_modules/resolve/test/node_path.js
new file mode 100644
index 000000000..2407189b8
--- /dev/null
+++ b/node_modules/resolve/test/node_path.js
@@ -0,0 +1,48 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('$NODE_PATH', function (t) {
+ t.plan(4);
+
+ resolve('aaa', {
+ paths: [
+ __dirname + '/node_path/x',
+ __dirname + '/node_path/y'
+ ],
+ basedir: __dirname,
+ }, function (err, res) {
+ t.equal(res, __dirname + '/node_path/x/aaa/index.js');
+ });
+
+ resolve('bbb', {
+ paths: [
+ __dirname + '/node_path/x',
+ __dirname + '/node_path/y'
+ ],
+ basedir: __dirname,
+ }, function (err, res) {
+ t.equal(res, __dirname + '/node_path/y/bbb/index.js');
+ });
+
+ resolve('ccc', {
+ paths: [
+ __dirname + '/node_path/x',
+ __dirname + '/node_path/y'
+ ],
+ basedir: __dirname,
+ }, function (err, res) {
+ t.equal(res, __dirname + '/node_path/x/ccc/index.js');
+ });
+
+ // ensure that relative paths still resolve against the
+ // regular `node_modules` correctly
+ resolve('tap', {
+ paths: [
+ 'node_path',
+ ],
+ basedir: 'node_path/x',
+ }, function (err, res) {
+ t.equal(res, path.resolve(__dirname, '..', 'node_modules/tap/lib/main.js'));
+ });
+});
diff --git a/node_modules/resolve/test/node_path/x/aaa/index.js b/node_modules/resolve/test/node_path/x/aaa/index.js
new file mode 100644
index 000000000..1ea591380
--- /dev/null
+++ b/node_modules/resolve/test/node_path/x/aaa/index.js
@@ -0,0 +1 @@
+module.exports = 'A'
diff --git a/node_modules/resolve/test/node_path/x/ccc/index.js b/node_modules/resolve/test/node_path/x/ccc/index.js
new file mode 100644
index 000000000..f186fa757
--- /dev/null
+++ b/node_modules/resolve/test/node_path/x/ccc/index.js
@@ -0,0 +1 @@
+module.exports = 'C'
diff --git a/node_modules/resolve/test/node_path/y/bbb/index.js b/node_modules/resolve/test/node_path/y/bbb/index.js
new file mode 100644
index 000000000..e22dd83c0
--- /dev/null
+++ b/node_modules/resolve/test/node_path/y/bbb/index.js
@@ -0,0 +1 @@
+module.exports = 'B'
diff --git a/node_modules/resolve/test/node_path/y/ccc/index.js b/node_modules/resolve/test/node_path/y/ccc/index.js
new file mode 100644
index 000000000..d0043d1ec
--- /dev/null
+++ b/node_modules/resolve/test/node_path/y/ccc/index.js
@@ -0,0 +1 @@
+module.exports = 'CY'
diff --git a/node_modules/resolve/test/nonstring.js b/node_modules/resolve/test/nonstring.js
new file mode 100644
index 000000000..ef63c40f9
--- /dev/null
+++ b/node_modules/resolve/test/nonstring.js
@@ -0,0 +1,9 @@
+var test = require('tape');
+var resolve = require('../');
+
+test('nonstring', function (t) {
+ t.plan(1);
+ resolve(555, function (err, res, pkg) {
+ t.ok(err);
+ });
+});
diff --git a/node_modules/resolve/test/pathfilter.js b/node_modules/resolve/test/pathfilter.js
new file mode 100644
index 000000000..142f94d65
--- /dev/null
+++ b/node_modules/resolve/test/pathfilter.js
@@ -0,0 +1,35 @@
+var test = require('tape');
+var resolve = require('../');
+
+test('#62: deep module references and the pathFilter', function(t){
+ t.plan(9);
+
+ var resolverDir = __dirname + '/pathfilter/deep_ref';
+ var pathFilter = function(pkg, x, remainder){
+ t.equal(pkg.version, "1.2.3");
+ t.equal(x, resolverDir + '/node_modules/deep/ref');
+ t.equal(remainder, "ref");
+ return "alt";
+ };
+
+ resolve('deep/ref', { basedir : resolverDir }, function (err, res, pkg) {
+ if (err) t.fail(err);
+
+ t.equal(pkg.version, "1.2.3");
+ t.equal(res, resolverDir + '/node_modules/deep/ref.js');
+ });
+
+ resolve('deep/deeper/ref', { basedir: resolverDir },
+ function(err, res, pkg) {
+ if(err) t.fail(err);
+ t.notEqual(pkg, undefined);
+ t.equal(pkg.version, "1.2.3");
+ t.equal(res, resolverDir + '/node_modules/deep/deeper/ref.js');
+ });
+
+ resolve('deep/ref', { basedir : resolverDir, pathFilter : pathFilter },
+ function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, resolverDir + '/node_modules/deep/alt.js');
+ });
+});
diff --git a/node_modules/resolve/test/pathfilter/deep_ref/main.js b/node_modules/resolve/test/pathfilter/deep_ref/main.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/resolve/test/pathfilter/deep_ref/main.js
diff --git a/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/alt.js b/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/alt.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/alt.js
diff --git a/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/deeper/ref.js b/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/deeper/ref.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/deeper/ref.js
diff --git a/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/package.json b/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/package.json
new file mode 100644
index 000000000..fe4b408a0
--- /dev/null
+++ b/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "deep",
+ "version": "1.2.3"
+}
diff --git a/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/ref.js b/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/ref.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/ref.js
diff --git a/node_modules/resolve/test/precedence.js b/node_modules/resolve/test/precedence.js
new file mode 100644
index 000000000..c716f0e9f
--- /dev/null
+++ b/node_modules/resolve/test/precedence.js
@@ -0,0 +1,23 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('precedence', function (t) {
+ t.plan(3);
+ var dir = path.join(__dirname, 'precedence/aaa');
+
+ resolve('./', { basedir : dir }, function (err, res, pkg) {
+ t.ifError(err);
+ t.equal(res, path.join(dir, 'index.js'));
+ t.equal(pkg.name, 'resolve');
+ });
+});
+
+test('./ should not load ${dir}.js', function (t) {
+ t.plan(1);
+ var dir = path.join(__dirname, 'precedence/bbb');
+
+ resolve('./', { basedir : dir }, function (err, res, pkg) {
+ t.ok(err);
+ });
+});
diff --git a/node_modules/resolve/test/precedence/aaa.js b/node_modules/resolve/test/precedence/aaa.js
new file mode 100644
index 000000000..a182397c5
--- /dev/null
+++ b/node_modules/resolve/test/precedence/aaa.js
@@ -0,0 +1 @@
+module.exports = 'wtf'
diff --git a/node_modules/resolve/test/precedence/aaa/index.js b/node_modules/resolve/test/precedence/aaa/index.js
new file mode 100644
index 000000000..993b03c2c
--- /dev/null
+++ b/node_modules/resolve/test/precedence/aaa/index.js
@@ -0,0 +1 @@
+module.exports = 'okok'
diff --git a/node_modules/resolve/test/precedence/aaa/main.js b/node_modules/resolve/test/precedence/aaa/main.js
new file mode 100644
index 000000000..db38959d7
--- /dev/null
+++ b/node_modules/resolve/test/precedence/aaa/main.js
@@ -0,0 +1 @@
+console.log(require('./'))
diff --git a/node_modules/resolve/test/precedence/bbb.js b/node_modules/resolve/test/precedence/bbb.js
new file mode 100644
index 000000000..c8a9996b3
--- /dev/null
+++ b/node_modules/resolve/test/precedence/bbb.js
@@ -0,0 +1 @@
+module.exports '>_<'
diff --git a/node_modules/resolve/test/precedence/bbb/main.js b/node_modules/resolve/test/precedence/bbb/main.js
new file mode 100644
index 000000000..716b81d4b
--- /dev/null
+++ b/node_modules/resolve/test/precedence/bbb/main.js
@@ -0,0 +1 @@
+console.log(require('./')); // should throw
diff --git a/node_modules/resolve/test/resolver.js b/node_modules/resolve/test/resolver.js
new file mode 100644
index 000000000..5bbb05f90
--- /dev/null
+++ b/node_modules/resolve/test/resolver.js
@@ -0,0 +1,281 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('async foo', function (t) {
+ t.plan(9);
+ var dir = __dirname + '/resolver';
+
+ resolve('./foo', { basedir : dir }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/foo.js');
+ t.equal(pkg.name, 'resolve');
+ });
+
+ resolve('./foo.js', { basedir : dir }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/foo.js');
+ t.equal(pkg.name, 'resolve');
+ });
+
+ resolve('./foo', { basedir : dir, package: { main: 'resolver' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/foo.js');
+ t.equal(pkg.main, 'resolver');
+ });
+
+ resolve('./foo.js', { basedir : dir, package: { main: 'resolver' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/foo.js');
+ t.equal(pkg.main, 'resolver');
+ });
+
+ resolve('foo', { basedir : dir }, function (err) {
+ t.equal(err.message, "Cannot find module 'foo' from '" + path.resolve(dir) + "'");
+ });
+});
+
+test('bar', function (t) {
+ t.plan(6);
+ var dir = __dirname + '/resolver';
+
+ resolve('foo', { basedir : dir + '/bar' }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/bar/node_modules/foo/index.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('foo', { basedir : dir + '/bar' }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/bar/node_modules/foo/index.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('foo', { basedir : dir + '/bar', package: { main: 'bar' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/bar/node_modules/foo/index.js');
+ t.equal(pkg, undefined);
+ });
+});
+
+test('baz', function (t) {
+ t.plan(4);
+ var dir = __dirname + '/resolver';
+
+ resolve('./baz', { basedir : dir }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/baz/quux.js');
+ t.equal(pkg.main, 'quux.js');
+ });
+
+ resolve('./baz', { basedir : dir, package: { main: 'resolver' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/baz/quux.js');
+ t.equal(pkg.main, 'quux.js');
+ });
+});
+
+test('biz', function (t) {
+ t.plan(24);
+ var dir = __dirname + '/resolver/biz/node_modules';
+
+ resolve('./grux', { basedir : dir }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/grux/index.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('./grux', { basedir : dir, package: { main: 'biz' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/grux/index.js');
+ t.equal(pkg.main, 'biz');
+ });
+
+ resolve('./garply', { basedir : dir }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/garply/lib/index.js');
+ t.equal(pkg.main, './lib');
+ });
+
+ resolve('./garply', { basedir : dir, package: { main: 'biz' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/garply/lib/index.js');
+ t.equal(pkg.main, './lib');
+ });
+
+ resolve('tiv', { basedir : dir + '/grux' }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/tiv/index.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('tiv', { basedir : dir + '/grux', package: { main: 'grux' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/tiv/index.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('tiv', { basedir : dir + '/garply' }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/tiv/index.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('tiv', { basedir : dir + '/garply', package: { main: './lib' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/tiv/index.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('grux', { basedir : dir + '/tiv' }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/grux/index.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('grux', { basedir : dir + '/tiv', package: { main: 'tiv' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/grux/index.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('garply', { basedir : dir + '/tiv' }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/garply/lib/index.js');
+ t.equal(pkg.main, './lib');
+ });
+
+ resolve('garply', { basedir : dir + '/tiv', package: { main: 'tiv' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/garply/lib/index.js');
+ t.equal(pkg.main, './lib');
+ });
+});
+
+test('quux', function (t) {
+ t.plan(2);
+ var dir = __dirname + '/resolver/quux';
+
+ resolve('./foo', { basedir : dir, package: { main: 'quux' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/foo/index.js');
+ t.equal(pkg.main, 'quux');
+ });
+});
+
+test('normalize', function (t) {
+ t.plan(2);
+ var dir = __dirname + '/resolver/biz/node_modules/grux';
+
+ resolve('../grux', { basedir : dir }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/index.js');
+ t.equal(pkg, undefined);
+ });
+});
+
+test('cup', function (t) {
+ t.plan(3);
+ var dir = __dirname + '/resolver';
+
+ resolve('./cup', { basedir : dir, extensions : [ '.js', '.coffee' ] },
+ function (err, res) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/cup.coffee');
+ });
+
+ resolve('./cup.coffee', { basedir : dir }, function (err, res) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/cup.coffee');
+ });
+
+ resolve('./cup', { basedir : dir, extensions : [ '.js' ] },
+ function (err, res) {
+ t.equal(err.message, "Cannot find module './cup' from '" + path.resolve(dir) + "'");
+ });
+});
+
+test('mug', function (t) {
+ t.plan(3);
+ var dir = __dirname + '/resolver';
+
+ resolve('./mug', { basedir : dir }, function (err, res) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/mug.js');
+ });
+
+ resolve('./mug', { basedir : dir, extensions : [ '.coffee', '.js' ] },
+ function (err, res) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/mug.coffee');
+ });
+
+ resolve('./mug', { basedir : dir, extensions : [ '.js', '.coffee' ] },
+ function (err, res) {
+ t.equal(res, dir + '/mug.js');
+ });
+});
+
+test('other path', function (t) {
+ t.plan(4);
+ var resolverDir = __dirname + '/resolver';
+ var dir = resolverDir + '/bar';
+ var otherDir = resolverDir + '/other_path';
+
+ resolve('root', { basedir : dir, paths: [otherDir] }, function (err, res) {
+ if (err) t.fail(err);
+ t.equal(res, resolverDir + '/other_path/root.js');
+ });
+
+ resolve('lib/other-lib', { basedir : dir, paths: [otherDir] },
+ function (err, res) {
+ if (err) t.fail(err);
+ t.equal(res, resolverDir + '/other_path/lib/other-lib.js');
+ });
+
+ resolve('root', { basedir : dir, }, function (err, res) {
+ t.equal(err.message, "Cannot find module 'root' from '" + path.resolve(dir) + "'");
+ });
+
+ resolve('zzz', { basedir : dir, paths: [otherDir] }, function (err, res) {
+ t.equal(err.message, "Cannot find module 'zzz' from '" + path.resolve(dir) + "'");
+ });
+});
+
+test('incorrect main', function (t) {
+ t.plan(1)
+
+ var resolverDir = __dirname + '/resolver';
+ var dir = resolverDir + '/incorrect_main';
+
+ resolve('./incorrect_main', { basedir : resolverDir }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/index.js');
+ });
+});
+
+test('without basedir', function (t) {
+ t.plan(1);
+
+ var dir = __dirname + '/resolver/without_basedir';
+ var tester = require(dir + '/main.js');
+
+ tester(t, function (err, res, pkg){
+ if (err) {
+ t.fail(err);
+ } else {
+ t.equal(res, dir + '/node_modules/mymodule.js');
+ }
+ });
+});
+
+test('#25: node modules with the same name as node stdlib modules', function (t) {
+ t.plan(1);
+
+ var resolverDir = __dirname + '/resolver/punycode';
+
+ resolve('punycode', { basedir : resolverDir }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, resolverDir + '/node_modules/punycode/index.js');
+ });
+});
diff --git a/node_modules/resolve/test/resolver/bar/node_modules/foo/index.js b/node_modules/resolve/test/resolver/bar/node_modules/foo/index.js
new file mode 100644
index 000000000..bd816eaba
--- /dev/null
+++ b/node_modules/resolve/test/resolver/bar/node_modules/foo/index.js
@@ -0,0 +1 @@
+module.exports = 1;
diff --git a/node_modules/resolve/test/resolver/baz/doom.js b/node_modules/resolve/test/resolver/baz/doom.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/resolve/test/resolver/baz/doom.js
diff --git a/node_modules/resolve/test/resolver/baz/package.json b/node_modules/resolve/test/resolver/baz/package.json
new file mode 100644
index 000000000..6b81dcddf
--- /dev/null
+++ b/node_modules/resolve/test/resolver/baz/package.json
@@ -0,0 +1,3 @@
+{
+ "main" : "quux.js"
+}
diff --git a/node_modules/resolve/test/resolver/baz/quux.js b/node_modules/resolve/test/resolver/baz/quux.js
new file mode 100644
index 000000000..bd816eaba
--- /dev/null
+++ b/node_modules/resolve/test/resolver/baz/quux.js
@@ -0,0 +1 @@
+module.exports = 1;
diff --git a/node_modules/resolve/test/resolver/biz/node_modules/garply/lib/index.js b/node_modules/resolve/test/resolver/biz/node_modules/garply/lib/index.js
new file mode 100644
index 000000000..0379e29f7
--- /dev/null
+++ b/node_modules/resolve/test/resolver/biz/node_modules/garply/lib/index.js
@@ -0,0 +1 @@
+module.exports = 'hello garply';
diff --git a/node_modules/resolve/test/resolver/biz/node_modules/garply/package.json b/node_modules/resolve/test/resolver/biz/node_modules/garply/package.json
new file mode 100644
index 000000000..babaac58f
--- /dev/null
+++ b/node_modules/resolve/test/resolver/biz/node_modules/garply/package.json
@@ -0,0 +1,3 @@
+{
+ "main" : "./lib"
+}
diff --git a/node_modules/resolve/test/resolver/biz/node_modules/grux/index.js b/node_modules/resolve/test/resolver/biz/node_modules/grux/index.js
new file mode 100644
index 000000000..49960555a
--- /dev/null
+++ b/node_modules/resolve/test/resolver/biz/node_modules/grux/index.js
@@ -0,0 +1 @@
+module.exports = require('tiv') * 100;
diff --git a/node_modules/resolve/test/resolver/biz/node_modules/tiv/index.js b/node_modules/resolve/test/resolver/biz/node_modules/tiv/index.js
new file mode 100644
index 000000000..690aad34a
--- /dev/null
+++ b/node_modules/resolve/test/resolver/biz/node_modules/tiv/index.js
@@ -0,0 +1 @@
+module.exports = 3;
diff --git a/node_modules/resolve/test/resolver/cup.coffee b/node_modules/resolve/test/resolver/cup.coffee
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/node_modules/resolve/test/resolver/cup.coffee
@@ -0,0 +1 @@
+
diff --git a/node_modules/resolve/test/resolver/foo.js b/node_modules/resolve/test/resolver/foo.js
new file mode 100644
index 000000000..bd816eaba
--- /dev/null
+++ b/node_modules/resolve/test/resolver/foo.js
@@ -0,0 +1 @@
+module.exports = 1;
diff --git a/node_modules/resolve/test/resolver/incorrect_main/index.js b/node_modules/resolve/test/resolver/incorrect_main/index.js
new file mode 100644
index 000000000..bc1fb0a6f
--- /dev/null
+++ b/node_modules/resolve/test/resolver/incorrect_main/index.js
@@ -0,0 +1,2 @@
+// this is the actual main file 'index.js', not 'wrong.js' like the package.json would indicate
+module.exports = 1;
diff --git a/node_modules/resolve/test/resolver/incorrect_main/package.json b/node_modules/resolve/test/resolver/incorrect_main/package.json
new file mode 100644
index 000000000..1592ed393
--- /dev/null
+++ b/node_modules/resolve/test/resolver/incorrect_main/package.json
@@ -0,0 +1,3 @@
+{
+ "main" : "wrong.js"
+}
diff --git a/node_modules/resolve/test/resolver/mug.coffee b/node_modules/resolve/test/resolver/mug.coffee
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/resolve/test/resolver/mug.coffee
diff --git a/node_modules/resolve/test/resolver/mug.js b/node_modules/resolve/test/resolver/mug.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/resolve/test/resolver/mug.js
diff --git a/node_modules/resolve/test/resolver/other_path/lib/other-lib.js b/node_modules/resolve/test/resolver/other_path/lib/other-lib.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/resolve/test/resolver/other_path/lib/other-lib.js
diff --git a/node_modules/resolve/test/resolver/other_path/root.js b/node_modules/resolve/test/resolver/other_path/root.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/resolve/test/resolver/other_path/root.js
diff --git a/node_modules/resolve/test/resolver/punycode/node_modules/punycode/index.js b/node_modules/resolve/test/resolver/punycode/node_modules/punycode/index.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/resolve/test/resolver/punycode/node_modules/punycode/index.js
diff --git a/node_modules/resolve/test/resolver/quux/foo/index.js b/node_modules/resolve/test/resolver/quux/foo/index.js
new file mode 100644
index 000000000..bd816eaba
--- /dev/null
+++ b/node_modules/resolve/test/resolver/quux/foo/index.js
@@ -0,0 +1 @@
+module.exports = 1;
diff --git a/node_modules/resolve/test/resolver/without_basedir/main.js b/node_modules/resolve/test/resolver/without_basedir/main.js
new file mode 100644
index 000000000..5f211e9ca
--- /dev/null
+++ b/node_modules/resolve/test/resolver/without_basedir/main.js
@@ -0,0 +1,6 @@
+resolve = require('../../../');
+
+module.exports = function(t, cb) {
+ resolve('mymodule', null, cb);
+}
+
diff --git a/node_modules/resolve/test/resolver/without_basedir/node_modules/mymodule.js b/node_modules/resolve/test/resolver/without_basedir/node_modules/mymodule.js
new file mode 100644
index 000000000..2b58aa408
--- /dev/null
+++ b/node_modules/resolve/test/resolver/without_basedir/node_modules/mymodule.js
@@ -0,0 +1 @@
+module.exports = "The tools we use have a profound (and devious!) influence on our thinking habits, and, therefore, on our thinking abilities.- E. Dijkstra"
diff --git a/node_modules/resolve/test/resolver_sync.js b/node_modules/resolve/test/resolver_sync.js
new file mode 100644
index 000000000..598253171
--- /dev/null
+++ b/node_modules/resolve/test/resolver_sync.js
@@ -0,0 +1,180 @@
+var test = require('tape');
+var resolve = require('../');
+
+test('foo', function (t) {
+ var dir = __dirname + '/resolver';
+
+ t.equal(
+ resolve.sync('./foo', { basedir : dir }),
+ dir + '/foo.js'
+ );
+
+ t.equal(
+ resolve.sync('./foo.js', { basedir : dir }),
+ dir + '/foo.js'
+ );
+
+ t.throws(function () {
+ resolve.sync('foo', { basedir : dir });
+ });
+
+ t.end();
+});
+
+test('bar', function (t) {
+ var dir = __dirname + '/resolver';
+
+ t.equal(
+ resolve.sync('foo', { basedir : dir + '/bar' }),
+ dir + '/bar/node_modules/foo/index.js'
+ );
+ t.end();
+});
+
+test('baz', function (t) {
+ var dir = __dirname + '/resolver';
+
+ t.equal(
+ resolve.sync('./baz', { basedir : dir }),
+ dir + '/baz/quux.js'
+ );
+ t.end();
+});
+
+test('biz', function (t) {
+ var dir = __dirname + '/resolver/biz/node_modules';
+ t.equal(
+ resolve.sync('./grux', { basedir : dir }),
+ dir + '/grux/index.js'
+ );
+
+ t.equal(
+ resolve.sync('tiv', { basedir : dir + '/grux' }),
+ dir + '/tiv/index.js'
+ );
+
+ t.equal(
+ resolve.sync('grux', { basedir : dir + '/tiv' }),
+ dir + '/grux/index.js'
+ );
+ t.end();
+});
+
+test('normalize', function (t) {
+ var dir = __dirname + '/resolver/biz/node_modules/grux';
+ t.equal(
+ resolve.sync('../grux', { basedir : dir }),
+ dir + '/index.js'
+ );
+ t.end();
+});
+
+test('cup', function (t) {
+ var dir = __dirname + '/resolver';
+ t.equal(
+ resolve.sync('./cup', {
+ basedir : dir,
+ extensions : [ '.js', '.coffee' ]
+ }),
+ dir + '/cup.coffee'
+ );
+
+ t.equal(
+ resolve.sync('./cup.coffee', {
+ basedir : dir
+ }),
+ dir + '/cup.coffee'
+ );
+
+ t.throws(function () {
+ resolve.sync('./cup', {
+ basedir : dir,
+ extensions : [ '.js' ]
+ })
+ });
+
+ t.end();
+});
+
+test('mug', function (t) {
+ var dir = __dirname + '/resolver';
+ t.equal(
+ resolve.sync('./mug', { basedir : dir }),
+ dir + '/mug.js'
+ );
+
+ t.equal(
+ resolve.sync('./mug', {
+ basedir : dir,
+ extensions : [ '.coffee', '.js' ]
+ }),
+ dir + '/mug.coffee'
+ );
+
+ t.equal(
+ resolve.sync('./mug', {
+ basedir : dir,
+ extensions : [ '.js', '.coffee' ]
+ }),
+ dir + '/mug.js'
+ );
+
+ t.end();
+});
+
+test('other path', function (t) {
+ var resolverDir = __dirname + '/resolver';
+ var dir = resolverDir + '/bar';
+ var otherDir = resolverDir + '/other_path';
+
+ var path = require('path');
+
+ t.equal(
+ resolve.sync('root', {
+ basedir : dir,
+ paths: [otherDir] }),
+ resolverDir + '/other_path/root.js'
+ );
+
+ t.equal(
+ resolve.sync('lib/other-lib', {
+ basedir : dir,
+ paths: [otherDir] }),
+ resolverDir + '/other_path/lib/other-lib.js'
+ );
+
+ t.throws(function () {
+ resolve.sync('root', { basedir : dir, });
+ });
+
+ t.throws(function () {
+ resolve.sync('zzz', {
+ basedir : dir,
+ paths: [otherDir] });
+ });
+
+ t.end();
+});
+
+test('incorrect main', function (t) {
+ var resolverDir = __dirname + '/resolver';
+ var dir = resolverDir + '/incorrect_main';
+
+ t.equal(
+ resolve.sync('./incorrect_main', { basedir : resolverDir }),
+ dir + '/index.js'
+ )
+
+ t.end()
+});
+
+test('#25: node modules with the same name as node stdlib modules', function (t) {
+ var resolverDir = __dirname + '/resolver/punycode';
+
+ t.equal(
+ resolve.sync('punycode', { basedir : resolverDir }),
+ resolverDir + '/node_modules/punycode/index.js'
+ )
+
+ t.end()
+});
diff --git a/node_modules/resolve/test/subdirs.js b/node_modules/resolve/test/subdirs.js
new file mode 100644
index 000000000..957abfe0c
--- /dev/null
+++ b/node_modules/resolve/test/subdirs.js
@@ -0,0 +1,13 @@
+var test = require('tape');
+var resolve = require('../');
+var path = require('path');
+
+test('subdirs', function (t) {
+ t.plan(2);
+
+ var dir = path.join(__dirname, '/subdirs');
+ resolve('a/b/c/x.json', { basedir: dir }, function (err, res) {
+ t.ifError(err);
+ t.equal(res, path.join(dir, 'node_modules/a/b/c/x.json'));
+ });
+});
diff --git a/node_modules/resolve/test/subdirs/node_modules/a/b/c/x.json b/node_modules/resolve/test/subdirs/node_modules/a/b/c/x.json
new file mode 100644
index 000000000..3cc0ecbed
--- /dev/null
+++ b/node_modules/resolve/test/subdirs/node_modules/a/b/c/x.json
@@ -0,0 +1 @@
+[1,2,3]
diff --git a/node_modules/resolve/test/subdirs/node_modules/a/package.json b/node_modules/resolve/test/subdirs/node_modules/a/package.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/node_modules/resolve/test/subdirs/node_modules/a/package.json
@@ -0,0 +1 @@
+{}