diff options
Diffstat (limited to 'node_modules/commondir')
-rw-r--r-- | node_modules/commondir/LICENSE | 24 | ||||
-rw-r--r-- | node_modules/commondir/example/dir.js | 3 | ||||
-rw-r--r-- | node_modules/commondir/index.js | 29 | ||||
-rw-r--r-- | node_modules/commondir/package.json | 65 | ||||
-rw-r--r-- | node_modules/commondir/readme.markdown | 48 | ||||
-rw-r--r-- | node_modules/commondir/test/dirs.js | 55 |
6 files changed, 224 insertions, 0 deletions
diff --git a/node_modules/commondir/LICENSE b/node_modules/commondir/LICENSE new file mode 100644 index 0000000..3d59c73 --- /dev/null +++ b/node_modules/commondir/LICENSE @@ -0,0 +1,24 @@ +The MIT License + +Copyright (c) 2013 James Halliday (mail@substack.net) + +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.
\ No newline at end of file diff --git a/node_modules/commondir/example/dir.js b/node_modules/commondir/example/dir.js new file mode 100644 index 0000000..e86a346 --- /dev/null +++ b/node_modules/commondir/example/dir.js @@ -0,0 +1,3 @@ +var commondir = require('../'); +var dir = commondir(process.argv.slice(2)); +console.log(dir); diff --git a/node_modules/commondir/index.js b/node_modules/commondir/index.js new file mode 100644 index 0000000..fa77d04 --- /dev/null +++ b/node_modules/commondir/index.js @@ -0,0 +1,29 @@ +var path = require('path'); + +module.exports = function (basedir, relfiles) { + if (relfiles) { + var files = relfiles.map(function (r) { + return path.resolve(basedir, r); + }); + } + else { + var files = basedir; + } + + var res = files.slice(1).reduce(function (ps, file) { + if (!file.match(/^([A-Za-z]:)?\/|\\/)) { + throw new Error('relative path without a basedir'); + } + + var xs = file.split(/\/+|\\+/); + for ( + var i = 0; + ps[i] === xs[i] && i < Math.min(ps.length, xs.length); + i++ + ); + return ps.slice(0, i); + }, files[0].split(/\/+|\\+/)); + + // Windows correctly handles paths with forward-slashes + return res.length > 1 ? res.join('/') : '/' +}; diff --git a/node_modules/commondir/package.json b/node_modules/commondir/package.json new file mode 100644 index 0000000..a87c74d --- /dev/null +++ b/node_modules/commondir/package.json @@ -0,0 +1,65 @@ +{ + "_from": "commondir@^1.0.1", + "_id": "commondir@1.0.1", + "_inBundle": false, + "_integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "_location": "/commondir", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "commondir@^1.0.1", + "name": "commondir", + "escapedName": "commondir", + "rawSpec": "^1.0.1", + "saveSpec": null, + "fetchSpec": "^1.0.1" + }, + "_requiredBy": [ + "/copy-webpack-plugin/find-cache-dir", + "/find-cache-dir", + "/terser-webpack-plugin/find-cache-dir" + ], + "_resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "_shasum": "ddd800da0c66127393cca5950ea968a3aaf1253b", + "_spec": "commondir@^1.0.1", + "_where": "/home/pruss/Dev/3-minute-website/node_modules/find-cache-dir", + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "bugs": { + "url": "https://github.com/substack/node-commondir/issues" + }, + "bundleDependencies": false, + "dependencies": {}, + "deprecated": false, + "description": "compute the closest common parent for file paths", + "devDependencies": { + "tape": "^3.5.0" + }, + "engine": { + "node": ">=0.4" + }, + "homepage": "https://github.com/substack/node-commondir#readme", + "keywords": [ + "common", + "path", + "directory", + "file", + "parent", + "root" + ], + "license": "MIT", + "main": "index.js", + "name": "commondir", + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/substack/node-commondir.git" + }, + "scripts": { + "test": "tape test/*.js" + }, + "version": "1.0.1" +} diff --git a/node_modules/commondir/readme.markdown b/node_modules/commondir/readme.markdown new file mode 100644 index 0000000..6c20607 --- /dev/null +++ b/node_modules/commondir/readme.markdown @@ -0,0 +1,48 @@ +# commondir + +compute the closest common parent directory among an array of directories + +# example + +``` js +var commondir = require('commondir'); +var dir = commondir(process.argv.slice(2)) +console.log(dir); +``` + +output: + +``` +$ node dir.js /x/y/z /x/y /x/y/w/q +/x/y +$ node ../baz ../../foo/quux ./bizzy +/foo +``` + +# methods + +``` js +var commondir = require('commondir'); +``` + +## commondir(absolutePaths) + +Compute the closest common parent directory for an array `absolutePaths`. + +## commondir(basedir, relativePaths) + +Compute the closest common parent directory for an array `relativePaths` which +will be resolved for each `dir` in `relativePaths` according to: +`path.resolve(basedir, dir)`. + +# install + +With [npm](https://npmjs.org) do: + +``` +npm install commondir +``` + +# license + +MIT diff --git a/node_modules/commondir/test/dirs.js b/node_modules/commondir/test/dirs.js new file mode 100644 index 0000000..7e55c9b --- /dev/null +++ b/node_modules/commondir/test/dirs.js @@ -0,0 +1,55 @@ +var test = require('tape'); +var commondir = require('../'); + +test('common', function (t) { + t.equal( + commondir([ '/foo', '//foo/bar', '/foo//bar/baz' ]), + '/foo' + ); + t.equal( + commondir([ '/a/b/c', '/a/b', '/a/b/c/d/e' ]), + '/a/b' + ); + t.equal( + commondir([ '/x/y/z/w', '/xy/z', '/x/y/z' ]), + '/' + ); + t.equal( + commondir([ 'X:\\foo', 'X:\\\\foo\\bar', 'X://foo/bar/baz' ]), + 'X:/foo' + ); + t.equal( + commondir([ 'X:\\a\\b\\c', 'X:\\a\\b', 'X:\\a\\b\\c\\d\\e' ]), + 'X:/a/b' + ); + t.equal( + commondir([ 'X:\\x\\y\\z\\w', '\\\\xy\\z', '\\x\\y\\z' ]), + '/' + ); + t.throws(function () { + commondir([ '/x/y/z/w', 'qrs', '/x/y/z' ]); + }); + t.end(); +}); + +test('base', function (t) { + t.equal( + commondir('/foo/bar', [ 'baz', './quux', '../bar/bazzy' ]), + '/foo/bar' + ); + t.equal( + commondir('/a/b', [ 'c', '../b/.', '../../a/b/e' ]), + '/a/b' + ); + t.equal( + commondir('/a/b/c', [ '..', '../d', '../../a/z/e' ]), + '/a' + ); + t.equal( + commondir('/foo/bar', [ 'baz', '.\\quux', '..\\bar\\bazzy' ]), + '/foo/bar' + ); + // Tests including X:\ basedirs must wait until path.resolve supports + // Windows-style paths, starting in Node.js v0.5.X + t.end(); +}); |