diff options
author | Rebecca Turner <me@re-becca.org> | 2017-08-19 04:21:29 +0300 |
---|---|---|
committer | Rebecca Turner <me@re-becca.org> | 2017-08-23 02:17:29 +0300 |
commit | 7ef0d282018cb82c8d4ebd5eeafd2a2be289d6f7 (patch) | |
tree | e8968b9523574caf0749d25b7cd1e45d4a0b820a | |
parent | c7e10f28c0438923d35407ae7c011dd5b6af788a (diff) |
fstream@REMOVE
Credit: @isaacs
Reviewed-By: @iarna
PR-URL: https://github.com/npm/npm/pull/16804
64 files changed, 20 insertions, 3398 deletions
diff --git a/lib/utils/error-handler.js b/lib/utils/error-handler.js index 52a675bea..b2fd45a5f 100644 --- a/lib/utils/error-handler.js +++ b/lib/utils/error-handler.js @@ -170,20 +170,12 @@ function errorHandler (er) { ;[ 'type', - 'fstream_path', - 'fstream_unc_path', - 'fstream_type', - 'fstream_class', - 'fstream_finish_call', - 'fstream_linkpath', 'stack', - 'fstream_stack', 'statusCode', 'pkgid' ].forEach(function (k) { var v = er[k] if (!v) return - if (k === 'fstream_stack') v = v.join('\n') log.verbose(k, v) }) diff --git a/node_modules/fstream-npm/.npmignore b/node_modules/fstream-npm/.npmignore deleted file mode 100644 index c02f40cee..000000000 --- a/node_modules/fstream-npm/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -# ignore the output junk from the example scripts -example/output -node_modules/ diff --git a/node_modules/fstream-npm/.travis.yml b/node_modules/fstream-npm/.travis.yml deleted file mode 100644 index 905e270bc..000000000 --- a/node_modules/fstream-npm/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: node_js -sudo: false -node_js: - - "6" - - "4" - - "7" -before_install: - - "npm config set spin false" - - "npm install -g npm" -script: "npm test" -notifications: - slack: npm-inc:kRqQjto7YbINqHPb1X6nS3g8 diff --git a/node_modules/fstream-npm/README.md b/node_modules/fstream-npm/README.md deleted file mode 100644 index 2c01e9073..000000000 --- a/node_modules/fstream-npm/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# fstream-npm - -This is an fstream DirReader class that will read a directory and filter -things according to the semantics of what goes in an npm package. - -For example: - -```javascript -// This will print out all the files that would be included -// by 'npm publish' or 'npm install' of this directory. - -var FN = require("fstream-npm") -FN({ path: "./" }) - .on("child", function (e) { - console.error(e.path.substr(e.root.path.length + 1)) - }) -``` - diff --git a/node_modules/fstream-npm/example/bundle.js b/node_modules/fstream-npm/example/bundle.js deleted file mode 100644 index 159e4f7b6..000000000 --- a/node_modules/fstream-npm/example/bundle.js +++ /dev/null @@ -1,13 +0,0 @@ -// this example will bundle every dependency -var P = require("../") -P({ path: "./" }) - .on("package", bundleIt) - .on("entry", function (e) { - console.error(e.constructor.name, e.path.substr(e.root.dirname.length + 1)) - e.on("package", bundleIt) - }) - -function bundleIt (p) { - p.bundleDependencies = Object.keys(p.dependencies || {}) -} - diff --git a/node_modules/fstream-npm/example/dir-tar.js b/node_modules/fstream-npm/example/dir-tar.js deleted file mode 100644 index 393c796b2..000000000 --- a/node_modules/fstream-npm/example/dir-tar.js +++ /dev/null @@ -1,19 +0,0 @@ -// this will show what ends up in the fstream-npm package -var P = require('fstream').DirReader -var tar = require('tar') -function f (entry) { - return entry.basename !== '.git' -} - -new P({ path: './', type: 'Directory', Directory: true, filter: f }) - .on('package', function (p) { - console.error('package', p) - }) - .on('ignoreFile', function (e) { - console.error('ignoreFile', e) - }) - .on('entry', function (e) { - console.error(e.constructor.name, e.path.substr(e.root.path.length + 1)) - }) - .pipe(tar.Pack()) - .pipe(process.stdout) diff --git a/node_modules/fstream-npm/example/dir.js b/node_modules/fstream-npm/example/dir.js deleted file mode 100644 index e524a3bfd..000000000 --- a/node_modules/fstream-npm/example/dir.js +++ /dev/null @@ -1,25 +0,0 @@ -// this will show what ends up in the fstream-npm package -var P = require('../') -var DW = require('fstream').DirWriter - -var target = new DW({ Directory: true, type: 'Directory', - path: __dirname + '/output'}) - -function f (entry) { - return entry.basename !== '.git' -} - -P({ path: './', type: 'Directory', isDirectory: true, filter: f }) - .on('package', function (p) { - console.error('package', p) - }) - .on('ignoreFile', function (e) { - console.error('ignoreFile', e) - }) - .on('entry', function (e) { - console.error(e.constructor.name, e.path) - }) - .pipe(target) - .on('end', function () { - console.error('ended') - }) diff --git a/node_modules/fstream-npm/example/example.js b/node_modules/fstream-npm/example/example.js deleted file mode 100644 index 2c933c440..000000000 --- a/node_modules/fstream-npm/example/example.js +++ /dev/null @@ -1,12 +0,0 @@ -// this will show what ends up in the fstream-npm package -var P = require('../') -P({ path: './' }) - .on('package', function (p) { - console.error('package', p) - }) - .on('ignoreFile', function (e) { - console.error('ignoreFile', e) - }) - .on('entry', function (e) { - console.error(e.constructor.name, e.path.substr(e.root.dirname.length + 1)) - }) diff --git a/node_modules/fstream-npm/example/ig-tar.js b/node_modules/fstream-npm/example/ig-tar.js deleted file mode 100644 index 7a5b61fba..000000000 --- a/node_modules/fstream-npm/example/ig-tar.js +++ /dev/null @@ -1,19 +0,0 @@ -// this will show what ends up in the fstream-npm package -var P = require('fstream-ignore') -var tar = require('tar') -function f (entry) { - return entry.basename !== '.git' -} - -new P({ path: './', type: 'Directory', Directory: true, filter: f }) - .on('package', function (p) { - console.error('package', p) - }) - .on('ignoreFile', function (e) { - console.error('ignoreFile', e) - }) - .on('entry', function (e) { - console.error(e.constructor.name, e.path.substr(e.root.path.length + 1)) - }) - .pipe(tar.Pack()) - .pipe(process.stdout) diff --git a/node_modules/fstream-npm/example/tar.js b/node_modules/fstream-npm/example/tar.js deleted file mode 100644 index b7f7e5f04..000000000 --- a/node_modules/fstream-npm/example/tar.js +++ /dev/null @@ -1,25 +0,0 @@ -// this will show what ends up in the fstream-npm package -var P = require('../') -var tar = require('tar') -function f () { - return true -} -// function f (entry) { -// return entry.basename !== ".git" -// } - -new P({ path: './', type: 'Directory', isDirectory: true, filter: f }) - .on('package', function (p) { - console.error('package', p) - }) - .on('ignoreFile', function (e) { - console.error('ignoreFile', e) - }) - .on('entry', function (e) { - console.error(e.constructor.name, e.path) - }) - .on('end', function () { - console.error('ended') - }) - .pipe(tar.Pack()) - .pipe(process.stdout) diff --git a/node_modules/fstream-npm/fstream-npm.js b/node_modules/fstream-npm/fstream-npm.js deleted file mode 100644 index a2deda173..000000000 --- a/node_modules/fstream-npm/fstream-npm.js +++ /dev/null @@ -1,380 +0,0 @@ -var Ignore = require('fstream-ignore') -var inherits = require('inherits') -var path = require('path') -var fs = require('fs') - -module.exports = Packer - -inherits(Packer, Ignore) - -function Packer (props) { - if (!(this instanceof Packer)) { - return new Packer(props) - } - - if (typeof props === 'string') { - props = { path: props } - } - - props.ignoreFiles = props.ignoreFiles || [ '.npmignore', - '.gitignore', - 'package.json' ] - - Ignore.call(this, props) - - this.bundled = props.bundled - this.bundleLinks = props.bundleLinks - this.package = props.package - - // only do the magic bundling stuff for the node_modules folder that - // lives right next to a package.json file. - this.bundleMagic = this.parent && - this.parent.packageRoot && - this.basename === 'node_modules' - - // in a node_modules folder, resolve symbolic links to - // bundled dependencies when creating the package. - props.follow = this.follow = this.bundleMagic - // console.error("follow?", this.path, props.follow) - - if (this === this.root || - this.parent && - this.parent.bundleMagic && - this.basename.charAt(0) !== '.') { - this.readBundledLinks() - } - - this.on('entryStat', function (entry, props) { - // files should *always* get into tarballs - // in a user-writable state, even if they're - // being installed from some wackey vm-mounted - // read-only filesystem. - entry.mode = props.mode = props.mode | parseInt('0200', 8) - }) -} - -Packer.prototype.readBundledLinks = function () { - if (this._paused) { - this.once('resume', this.addIgnoreFiles) - return - } - - this.pause() - fs.readdir(this.path + '/node_modules', function (er, list) { - // no harm if there's no bundle - var l = list && list.length - if (er || l === 0) return this.resume() - - var errState = null - var then = function then (er) { - if (errState) return - if (er) { - errState = er - return this.resume() - } - if (--l === 0) return this.resume() - }.bind(this) - - list.forEach(function (pkg) { - if (pkg.charAt(0) === '.') return then() - var pd = this.path + '/node_modules/' + pkg - - // scoped packages - if (pkg.charAt(0) === '@') { - fs.readdir(pd, function (er, slist) { - var sl = slist && slist.length - if (er || sl === 0) return then(er) - - l += sl - slist.forEach(function (spkg) { - if (spkg.charAt(0) === '.') return then() - var spd = pd + '/' + spkg - fs.realpath(spd, function (er, rp) { - if (er) return then() - this.bundleLinks = this.bundleLinks || {} - this.bundleLinks[pkg + '/' + spkg] = rp - then() - }.bind(this)) - }, this) - then() - }.bind(this)) - return - } - - fs.realpath(pd, function (er, rp) { - if (er) return then() - this.bundleLinks = this.bundleLinks || {} - this.bundleLinks[pkg] = rp - then() - }.bind(this)) - }, this) - }.bind(this)) -} - -Packer.prototype.applyIgnores = function (entry, partial, entryObj) { - if (!entryObj || entryObj.type !== 'Directory') { - // package.json files can never be ignored. - if (entry === 'package.json') return true - - // readme files should never be ignored. - if (entry.match(/^readme(\.[^\.]*)$/i)) return true - - // license files should never be ignored. - if (entry.match(/^(license|licence)(\.[^\.]*)?$/i)) return true - - // copyright notice files should never be ignored. - if (entry.match(/^(notice)(\.[^\.]*)?$/i)) return true - - // changelogs should never be ignored. - if (entry.match(/^(changes|changelog|history)(\.[^\.]*)?$/i)) return true - } - - // special rules. see below. - if (entry === 'node_modules' && this.packageRoot) return true - - // package.json main file should never be ignored. - var mainFile = this.package && this.package.main - if (mainFile && path.resolve(this.path, entry) === path.resolve(this.path, mainFile)) return true - - // some files are *never* allowed under any circumstances - // (VCS folders, native build cruft, npm cruft, regular cruft) - if (entry === '.git' || - entry === 'CVS' || - entry === '.svn' || - entry === '.hg' || - entry === '.lock-wscript' || - entry.match(/^\.wafpickle-[0-9]+$/) || - (this.parent && this.parent.packageRoot && this.basename === 'build' && - entry === 'config.gypi') || - entry === 'npm-debug.log' || - entry === '.npmrc' || - entry.match(/^\..*\.swp$/) || - entry === '.DS_Store' || - entry.match(/^\._/) || - entry.match(/^.*\.orig$/) || - // Package locks are never allowed in tarballs -- use shrinkwrap instead - entry === 'package-lock.json' - ) { - return false - } - - // in a node_modules folder, we only include bundled dependencies - // also, prevent packages in node_modules from being affected - // by rules set in the containing package, so that - // bundles don't get busted. - // Also, once in a bundle, everything is installed as-is - // To prevent infinite cycles in the case of cyclic deps that are - // linked with npm link, even in a bundle, deps are only bundled - // if they're not already present at a higher level. - if (this.bundleMagic) { - if (entry.charAt(0) === '@') { - var firstSlash = entry.indexOf('/') - // continue to list the packages in this scope - if (firstSlash === -1) return true - - // bubbling up. stop here and allow anything the bundled pkg allows - if (entry.indexOf('/', firstSlash + 1) !== -1) return true - } - // bubbling up. stop here and allow anything the bundled pkg allows - else if (entry.indexOf('/') !== -1) return true - - // never include the .bin. It's typically full of platform-specific - // stuff like symlinks and .cmd files anyway. - if (entry === '.bin') return false - - // the package root. - var p = this.parent - // the package before this one. - var pp = p && p.parent - - // if this entry has already been bundled, and is a symlink, - // and it is the *same* symlink as this one, then exclude it. - if (pp && pp.bundleLinks && this.bundleLinks && - pp.bundleLinks[entry] && - pp.bundleLinks[entry] === this.bundleLinks[entry]) { - return false - } - - // since it's *not* a symbolic link, if we're *already* in a bundle, - // then we should include everything. - if (pp && pp.package && pp.basename === 'node_modules') { - return true - } - - // only include it at this point if it's a bundleDependency - var bd = this.package && this.package.bundleDependencies - - if (bd && !Array.isArray(bd)) { - throw new Error(this.package.name + '\'s `bundledDependencies` should ' + - 'be an array') - } - - var shouldBundle = bd && bd.indexOf(entry) !== -1 - // if we're not going to bundle it, then it doesn't count as a bundleLink - // if (this.bundleLinks && !shouldBundle) delete this.bundleLinks[entry] - return shouldBundle - } - // if (this.bundled) return true - - return Ignore.prototype.applyIgnores.call(this, entry, partial, entryObj) -} - -Packer.prototype.addIgnoreFiles = function () { - var entries = this.entries - // if there's a .npmignore, then we do *not* want to - // read the .gitignore. - if (entries.indexOf('.npmignore') !== -1) { - var i = entries.indexOf('.gitignore') - if (i !== -1) { - entries.splice(i, 1) - } - } - - this.entries = entries - - Ignore.prototype.addIgnoreFiles.call(this) -} - -Packer.prototype.readRules = function (buf, e) { - if (e !== 'package.json') { - return Ignore.prototype.readRules.call(this, buf, e) - } - - buf = buf.toString().trim() - - if (buf.length === 0) return [] - - try { - var p = this.package = JSON.parse(buf) - } catch (er) { - // just pretend it's a normal old file, not magic at all. - return [] - } - - if (this === this.root) { - this.bundleLinks = this.bundleLinks || {} - this.bundleLinks[p.name] = this._path - } - - this.packageRoot = true - this.emit('package', p) - - // make bundle deps predictable - if (p.bundledDependencies && !p.bundleDependencies) { - p.bundleDependencies = p.bundledDependencies - delete p.bundledDependencies - } - - if (!p.files || !Array.isArray(p.files)) return [] - - // ignore everything except what's in the files array. - return ['*'].concat(p.files.map(function (f) { - return '!' + f - })).concat(p.files.map(function (f) { - return '!' + f.replace(/\/+$/, '') + '/**' - })) -} - -Packer.prototype.getChildProps = function (stat) { - var props = Ignore.prototype.getChildProps.call(this, stat) - - props.package = this.package - - props.bundled = this.bundled && this.bundled.slice(0) - props.bundleLinks = this.bundleLinks && - Object.create(this.bundleLinks) - - // Directories have to be read as Packers - // otherwise fstream.Reader will create a DirReader instead. - if (stat.isDirectory()) { - props.type = this.constructor - } - - // only follow symbolic links directly in the node_modules folder. - props.follow = false - return props -} - -var order = [ - 'package.json', - '.npmignore', - '.gitignore', - /^README(\.md)?$/, - 'LICENCE', - 'LICENSE', - /\.js$/ -] - -Packer.prototype.sort = function (a, b) { - for (var i = 0, l = order.length; i < l; i++) { - var o = order[i] - if (typeof o === 'string') { - if (a === o) return -1 - if (b === o) return 1 - } else { - if (a.match(o)) return -1 - if (b.match(o)) return 1 - } - } - - // deps go in the back - if (a === 'node_modules') return 1 - if (b === 'node_modules') return -1 - - return Ignore.prototype.sort.call(this, a, b) -} - -Packer.prototype.emitEntry = function (entry) { - if (this._paused) { - this.once('resume', this.emitEntry.bind(this, entry)) - return - } - - // if there is a .gitignore, then we're going to - // rename it to .npmignore in the output. - if (entry.basename === '.gitignore') { - entry.basename = '.npmignore' - entry.path = path.resolve(entry.dirname, entry.basename) - } - - // all *.gyp files are renamed to binding.gyp for node-gyp - // but only when they are in the same folder as a package.json file. - if (entry.basename.match(/\.gyp$/) && - this.entries.indexOf('package.json') !== -1) { - entry.basename = 'binding.gyp' - entry.path = path.resolve(entry.dirname, entry.basename) - } - - // skip over symbolic links - if (entry.type === 'SymbolicLink') { - entry.abort() - return - } - - if (entry.type !== 'Directory') { - // make it so that the folder in the tarball is named "package" - var h = path.dirname((entry.root || entry).path) - var t = entry.path.substr(h.length + 1).replace(/^[^\/\\]+/, 'package') - var p = h + '/' + t - - entry.path = p - entry.dirname = path.dirname(p) - return Ignore.prototype.emitEntry.call(this, entry) - } - - // we don't want empty directories to show up in package - // tarballs. - // don't emit entry events for dirs, but still walk through - // and read them. This means that we need to proxy up their - // entry events so that those entries won't be missed, since - // .pipe() doesn't do anythign special with "child" events, on - // with "entry" events. - var me = this - entry.on('entry', function (e) { - if (e.parent === entry) { - e.parent = me - me.emit('entry', e) - } - }) - entry.on('package', this.emit.bind(this, 'package')) -} diff --git a/node_modules/fstream-npm/node_modules/fstream-ignore/LICENSE b/node_modules/fstream-npm/node_modules/fstream-ignore/LICENSE deleted file mode 100644 index 19129e315..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/fstream-npm/node_modules/fstream-ignore/README.md b/node_modules/fstream-npm/node_modules/fstream-ignore/README.md deleted file mode 100644 index 31170feae..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# fstream-ignore - -A fstream DirReader that filters out files that match globs in `.ignore` -files throughout the tree, like how git ignores files based on a -`.gitignore` file. - -Here's an example: - -```javascript -var Ignore = require("fstream-ignore") -Ignore({ path: __dirname - , ignoreFiles: [".ignore", ".gitignore"] - }) - .on("child", function (c) { - console.error(c.path.substr(c.root.path.length + 1)) - }) - .pipe(tar.Pack()) - .pipe(fs.createWriteStream("foo.tar")) -``` - -This will tar up the files in __dirname into `foo.tar`, ignoring -anything matched by the globs in any .iginore or .gitignore file. diff --git a/node_modules/fstream-npm/node_modules/fstream-ignore/ignore.js b/node_modules/fstream-npm/node_modules/fstream-ignore/ignore.js deleted file mode 100644 index 212fc7bde..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/ignore.js +++ /dev/null @@ -1,275 +0,0 @@ -// Essentially, this is a fstream.DirReader class, but with a -// bit of special logic to read the specified sort of ignore files, -// and a filter that prevents it from picking up anything excluded -// by those files. - -var Minimatch = require("minimatch").Minimatch -, fstream = require("fstream") -, DirReader = fstream.DirReader -, inherits = require("inherits") -, path = require("path") -, fs = require("fs") - -module.exports = IgnoreReader - -inherits(IgnoreReader, DirReader) - -function IgnoreReader (props) { - if (!(this instanceof IgnoreReader)) { - return new IgnoreReader(props) - } - - // must be a Directory type - if (typeof props === "string") { - props = { path: path.resolve(props) } - } - - props.type = "Directory" - props.Directory = true - - if (!props.ignoreFiles) props.ignoreFiles = [".ignore"] - this.ignoreFiles = props.ignoreFiles - - this.ignoreRules = null - - // ensure that .ignore files always show up at the top of the list - // that way, they can be read before proceeding to handle other - // entries in that same folder - if (props.sort) { - this._sort = props.sort === "alpha" ? alphasort : props.sort - props.sort = null - } - - this.on("entries", function () { - // if there are any ignore files in the list, then - // pause and add them. - // then, filter the list based on our ignoreRules - - var hasIg = this.entries.some(this.isIgnoreFile, this) - - if (!hasIg) return this.filterEntries() - - this.addIgnoreFiles() - }) - - // we filter entries before we know what they are. - // however, directories have to be re-tested against - // rules with a "/" appended, because "a/b/" will only - // match if "a/b" is a dir, and not otherwise. - this.on("_entryStat", function (entry, props) { - var t = entry.basename - if (!this.applyIgnores(entry.basename, - entry.type === "Directory", - entry)) { - entry.abort() - } - }.bind(this)) - - DirReader.call(this, props) -} - - -IgnoreReader.prototype.addIgnoreFiles = function () { - if (this._paused) { - this.once("resume", this.addIgnoreFiles) - return - } - if (this._ignoreFilesAdded) return - this._ignoreFilesAdded = true - - var newIg = this.entries.filter(this.isIgnoreFile, this) - , count = newIg.length - , errState = null - - if (!count) return - - this.pause() - - var then = function (er) { - if (errState) return - if (er) return this.emit("error", errState = er) - if (-- count === 0) { - this.filterEntries() - this.resume() - } else { - this.addIgnoreFile(newIg[newIg.length - count], then) - } - }.bind(this) - - this.addIgnoreFile(newIg[0], then) -} - - -IgnoreReader.prototype.isIgnoreFile = function (e) { - return e !== "." && - e !== ".." && - -1 !== this.ignoreFiles.indexOf(e) -} - - -IgnoreReader.prototype.getChildProps = function (stat) { - var props = DirReader.prototype.getChildProps.call(this, stat) - props.ignoreFiles = this.ignoreFiles - - // Directories have to be read as IgnoreReaders - // otherwise fstream.Reader will create a DirReader instead. - if (stat.isDirectory()) { - props.type = this.constructor - } - return props -} - - -IgnoreReader.prototype.addIgnoreFile = function (e, cb) { - // read the file, and then call addIgnoreRules - // if there's an error, then tell the cb about it. - - var ig = path.resolve(this.path, e) - fs.readFile(ig, function (er, data) { - if (er) return cb(er) - - this.emit("ignoreFile", e, data) - var rules = this.readRules(data, e) - this.addIgnoreRules(rules, e) - cb() - }.bind(this)) -} - - -IgnoreReader.prototype.readRules = function (buf, e) { - return buf.toString().split(/\r?\n/) -} - - -// Override this to do fancier things, like read the -// "files" array from a package.json file or something. -IgnoreReader.prototype.addIgnoreRules = function (set, e) { - // filter out anything obvious - set = set.filter(function (s) { - s = s.trim() - return s && !s.match(/^#/) - }) - - // no rules to add! - if (!set.length) return - - // now get a minimatch object for each one of these. - // Note that we need to allow dot files by default, and - // not switch the meaning of their exclusion - var mmopt = { matchBase: true, dot: true, flipNegate: true } - , mm = set.map(function (s) { - var m = new Minimatch(s, mmopt) - m.ignoreFile = e - return m - }) - - if (!this.ignoreRules) this.ignoreRules = [] - this.ignoreRules.push.apply(this.ignoreRules, mm) -} - - -IgnoreReader.prototype.filterEntries = function () { - // this exclusion is at the point where we know the list of - // entries in the dir, but don't know what they are. since - // some of them *might* be directories, we have to run the - // match in dir-mode as well, so that we'll pick up partials - // of files that will be included later. Anything included - // at this point will be checked again later once we know - // what it is. - this.entries = this.entries.filter(function (entry) { - // at this point, we don't know if it's a dir or not. - return this.applyIgnores(entry) || this.applyIgnores(entry, true) - }, this) -} - - -IgnoreReader.prototype.applyIgnores = function (entry, partial, obj) { - var included = true - - // this = /a/b/c - // entry = d - // parent /a/b sees c/d - if (this.parent && this.parent.applyIgnores) { - var pt = this.basename + "/" + entry - included = this.parent.applyIgnores(pt, partial) - } - - // Negated Rules - // Since we're *ignoring* things here, negating means that a file - // is re-included, if it would have been excluded by a previous - // rule. So, negated rules are only relevant if the file - // has been excluded. - // - // Similarly, if a file has been excluded, then there's no point - // trying it against rules that have already been applied - // - // We're using the "flipnegate" flag here, which tells minimatch - // to set the "negate" for our information, but still report - // whether the core pattern was a hit or a miss. - - if (!this.ignoreRules) { - return included - } - - this.ignoreRules.forEach(function (rule) { - // negation means inclusion - if (rule.negate && included || - !rule.negate && !included) { - // unnecessary - return - } - - // first, match against /foo/bar - var match = rule.match("/" + entry) - - if (!match) { - // try with the leading / trimmed off the test - // eg: foo/bar instead of /foo/bar - match = rule.match(entry) - } - - // if the entry is a directory, then it will match - // with a trailing slash. eg: /foo/bar/ or foo/bar/ - if (!match && partial) { - match = rule.match("/" + entry + "/") || - rule.match(entry + "/") - } - - // When including a file with a negated rule, it's - // relevant if a directory partially matches, since - // it may then match a file within it. - // Eg, if you ignore /a, but !/a/b/c - if (!match && rule.negate && partial) { - match = rule.match("/" + entry, true) || - rule.match(entry, true) - } - - if (match) { - included = rule.negate - } - }, this) - - return included -} - - -IgnoreReader.prototype.sort = function (a, b) { - var aig = this.ignoreFiles.indexOf(a) !== -1 - , big = this.ignoreFiles.indexOf(b) !== -1 - - if (aig && !big) return -1 - if (big && !aig) return 1 - return this._sort(a, b) -} - -IgnoreReader.prototype._sort = function (a, b) { - return 0 -} - -function alphasort (a, b) { - return a === b ? 0 - : a.toLowerCase() > b.toLowerCase() ? 1 - : a.toLowerCase() < b.toLowerCase() ? -1 - : a > b ? 1 - : -1 -} diff --git a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/LICENSE b/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/LICENSE deleted file mode 100644 index 19129e315..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/README.md b/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/README.md deleted file mode 100644 index ad72b8133..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/README.md +++ /dev/null @@ -1,209 +0,0 @@ -# minimatch - -A minimal matching utility. - -[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.svg)](http://travis-ci.org/isaacs/minimatch) - - -This is the matching library used internally by npm. - -It works by converting glob expressions into JavaScript `RegExp` -objects. - -## Usage - -```javascript -var minimatch = require("minimatch") - -minimatch("bar.foo", "*.foo") // true! -minimatch("bar.foo", "*.bar") // false! -minimatch("bar.foo", "*.+(bar|foo)", { debug: true }) // true, and noisy! -``` - -## Features - -Supports these glob features: - -* Brace Expansion -* Extended glob matching -* "Globstar" `**` matching - -See: - -* `man sh` -* `man bash` -* `man 3 fnmatch` -* `man 5 gitignore` - -## Minimatch Class - -Create a minimatch object by instantiating the `minimatch.Minimatch` class. - -```javascript -var Minimatch = require("minimatch").Minimatch -var mm = new Minimatch(pattern, options) -``` - -### Properties - -* `pattern` The original pattern the minimatch object represents. -* `options` The options supplied to the constructor. -* `set` A 2-dimensional array of regexp or string expressions. - Each row in the - array corresponds to a brace-expanded pattern. Each item in the row - corresponds to a single path-part. For example, the pattern - `{a,b/c}/d` would expand to a set of patterns like: - - [ [ a, d ] - , [ b, c, d ] ] - - If a portion of the pattern doesn't have any "magic" in it - (that is, it's something like `"foo"` rather than `fo*o?`), then it - will be left as a string rather than converted to a regular - expression. - -* `regexp` Created by the `makeRe` method. A single regular expression - expressing the entire pattern. This is useful in cases where you wish - to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled. -* `negate` True if the pattern is negated. -* `comment` True if the pattern is a comment. -* `empty` True if the pattern is `""`. - -### Methods - -* `makeRe` Generate the `regexp` member if necessary, and return it. - Will return `false` if the pattern is invalid. -* `match(fname)` Return true if the filename matches the pattern, or - false otherwise. -* `matchOne(fileArray, patternArray, partial)` Take a `/`-split - filename, and match it against a single row in the `regExpSet`. This - method is mainly for internal use, but is exposed so that it can be - used by a glob-walker that needs to avoid excessive filesystem calls. - -All other methods are internal, and will be called as necessary. - -### minimatch(path, pattern, options) - -Main export. Tests a path against the pattern using the options. - -```javascript -var isJS = minimatch(file, "*.js", { matchBase: true }) -``` - -### minimatch.filter(pattern, options) - -Returns a function that tests its -supplied argument, suitable for use with `Array.filter`. Example: - -```javascript -var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true})) -``` - -### minimatch.match(list, pattern, options) - -Match against the list of -files, in the style of fnmatch or glob. If nothing is matched, and -options.nonull is set, then return a list containing the pattern itself. - -```javascript -var javascripts = minimatch.match(fileList, "*.js", {matchBase: true})) -``` - -### minimatch.makeRe(pattern, options) - -Make a regular expression object from the pattern. - -## Options - -All options are `false` by default. - -### debug - -Dump a ton of stuff to stderr. - -### nobrace - -Do not expand `{a,b}` and `{1..3}` brace sets. - -### noglobstar - -Disable `**` matching against multiple folder names. - -### dot - -Allow patterns to match filenames starting with a period, even if -the pattern does not explicitly have a period in that spot. - -Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot` -is set. - -### noext - -Disable "extglob" style patterns like `+(a|b)`. - -### nocase - -Perform a case-insensitive match. - -### nonull - -When a match is not found by `minimatch.match`, return a list containing -the pattern itself if this option is set. When not set, an empty list -is returned if there are no matches. - -### matchBase - -If set, then patterns without slashes will be matched -against the basename of the path if it contains slashes. For example, -`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. - -### nocomment - -Suppress the behavior of treating `#` at the start of a pattern as a -comment. - -### nonegate - -Suppress the behavior of treating a leading `!` character as negation. - -### flipNegate - -Returns from negate expressions the same as if they were not negated. -(Ie, true on a hit, false on a miss.) - - -## Comparisons to other fnmatch/glob implementations - -While strict compliance with the existing standards is a worthwhile -goal, some discrepancies exist between minimatch and other -implementations, and are intentional. - -If the pattern starts with a `!` character, then it is negated. Set the -`nonegate` flag to suppress this behavior, and treat leading `!` -characters normally. This is perhaps relevant if you wish to start the -pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` -characters at the start of a pattern will negate the pattern multiple -times. - -If a pattern starts with `#`, then it is treated as a comment, and -will not match anything. Use `\#` to match a literal `#` at the -start of a line, or set the `nocomment` flag to suppress this behavior. - -The double-star character `**` is supported by default, unless the -`noglobstar` flag is set. This is supported in the manner of bsdglob -and bash 4.1, where `**` only has special significance if it is the only -thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but -`a/**b` will not. - -If an escaped pattern has no matches, and the `nonull` flag is set, -then minimatch.match returns the pattern as-provided, rather than -interpreting the character escapes. For example, -`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than -`"*a?"`. This is akin to setting the `nullglob` option in bash, except -that it does not resolve escaped pattern characters. - -If brace expansion is not disabled, then it is performed before any -other interpretation of the glob pattern. Thus, a pattern like -`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded -**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are -checked for validity. Since those two are valid, matching proceeds. diff --git a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/minimatch.js b/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/minimatch.js deleted file mode 100644 index 5b5f8cf44..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/minimatch.js +++ /dev/null @@ -1,923 +0,0 @@ -module.exports = minimatch -minimatch.Minimatch = Minimatch - -var path = { sep: '/' } -try { - path = require('path') -} catch (er) {} - -var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} -var expand = require('brace-expansion') - -var plTypes = { - '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, - '?': { open: '(?:', close: ')?' }, - '+': { open: '(?:', close: ')+' }, - '*': { open: '(?:', close: ')*' }, - '@': { open: '(?:', close: ')' } -} - -// any single thing other than / -// don't need to escape / when using new RegExp() -var qmark = '[^/]' - -// * => any number of characters -var star = qmark + '*?' - -// ** when dots are allowed. Anything goes, except .. and . -// not (^ or / followed by one or two dots followed by $ or /), -// followed by anything, any number of times. -var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' - -// not a ^ or / followed by a dot, -// followed by anything, any number of times. -var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' - -// characters that need to be escaped in RegExp. -var reSpecials = charSet('().*{}+?[]^$\\!') - -// "abc" -> { a:true, b:true, c:true } -function charSet (s) { - return s.split('').reduce(function (set, c) { - set[c] = true - return set - }, {}) -} - -// normalizes slashes. -var slashSplit = /\/+/ - -minimatch.filter = filter -function filter (pattern, options) { - options = options || {} - return function (p, i, list) { - return minimatch(p, pattern, options) - } -} - -function ext (a, b) { - a = a || {} - b = b || {} - var t = {} - Object.keys(b).forEach(function (k) { - t[k] = b[k] - }) - Object.keys(a).forEach(function (k) { - t[k] = a[k] - }) - return t -} - -minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return minimatch - - var orig = minimatch - - var m = function minimatch (p, pattern, options) { - return orig.minimatch(p, pattern, ext(def, options)) - } - - m.Minimatch = function Minimatch (pattern, options) { - return new orig.Minimatch(pattern, ext(def, options)) - } - - return m -} - -Minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return Minimatch - return minimatch.defaults(def).Minimatch -} - -function minimatch (p, pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('glob pattern string required') - } - - if (!options) options = {} - - // shortcut: comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - return false - } - - // "" only matches "" - if (pattern.trim() === '') return p === '' - - return new Minimatch(pattern, options).match(p) -} - -function Minimatch (pattern, options) { - if (!(this instanceof Minimatch)) { - return new Minimatch(pattern, options) - } - - if (typeof pattern !== 'string') { - throw new TypeError('glob pattern string required') - } - - if (!options) options = {} - pattern = pattern.trim() - - // windows support: need to use /, not \ - if (path.sep !== '/') { - pattern = pattern.split(path.sep).join('/') - } - - this.options = options - this.set = [] - this.pattern = pattern - this.regexp = null - this.negate = false - this.comment = false - this.empty = false - - // make the set of regexps etc. - this.make() -} - -Minimatch.prototype.debug = function () {} - -Minimatch.prototype.make = make -function make () { - // don't do it more than once. - if (this._made) return - - var pattern = this.pattern - var options = this.options - - // empty patterns and comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - this.comment = true - return - } - if (!pattern) { - this.empty = true - return - } - - // step 1: figure out negation, etc. - this.parseNegate() - - // step 2: expand braces - var set = this.globSet = this.braceExpand() - - if (options.debug) this.debug = console.error - - this.debug(this.pattern, set) - - // step 3: now we have a set, so turn each one into a series of path-portion - // matching patterns. - // These will be regexps, except in the case of "**", which is - // set to the GLOBSTAR object for globstar behavior, - // and will not contain any / characters - set = this.globParts = set.map(function (s) { - return s.split(slashSplit) - }) - - this.debug(this.pattern, set) - - // glob --> regexps - set = set.map(function (s, si, set) { - return s.map(this.parse, this) - }, this) - - this.debug(this.pattern, set) - - // filter out everything that didn't compile properly. - set = set.filter(function (s) { - return s.indexOf(false) === -1 - }) - - this.debug(this.pattern, set) - - this.set = set -} - -Minimatch.prototype.parseNegate = parseNegate -function parseNegate () { - var pattern = this.pattern - var negate = false - var options = this.options - var negateOffset = 0 - - if (options.nonegate) return - - for (var i = 0, l = pattern.length - ; i < l && pattern.charAt(i) === '!' - ; i++) { - negate = !negate - negateOffset++ - } - - if (negateOffset) this.pattern = pattern.substr(negateOffset) - this.negate = negate -} - -// Brace expansion: -// a{b,c}d -> abd acd -// a{b,}c -> abc ac -// a{0..3}d -> a0d a1d a2d a3d -// a{b,c{d,e}f}g -> abg acdfg acefg -// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg -// -// Invalid sets are not expanded. -// a{2..}b -> a{2..}b -// a{b}c -> a{b}c -minimatch.braceExpand = function (pattern, options) { - return braceExpand(pattern, options) -} - -Minimatch.prototype.braceExpand = braceExpand - -function braceExpand (pattern, options) { - if (!options) { - if (this instanceof Minimatch) { - options = this.options - } else { - options = {} - } - } - - pattern = typeof pattern === 'undefined' - ? this.pattern : pattern - - if (typeof pattern === 'undefined') { - throw new TypeError('undefined pattern') - } - - if (options.nobrace || - !pattern.match(/\{.*\}/)) { - // shortcut. no need to expand. - return [pattern] - } - - return expand(pattern) -} - -// parse a component of the expanded set. -// At this point, no pattern may contain "/" in it -// so we're going to return a 2d array, where each entry is the full -// pattern, split on '/', and then turned into a regular expression. -// A regexp is made at the end which joins each array with an -// escaped /, and another full one which joins each regexp with |. -// -// Following the lead of Bash 4.1, note that "**" only has special meaning -// when it is the *only* thing in a path portion. Otherwise, any series -// of * is equivalent to a single *. Globstar behavior is enabled by -// default, and can be disabled by setting options.noglobstar. -Minimatch.prototype.parse = parse -var SUBPARSE = {} -function parse (pattern, isSub) { - if (pattern.length > 1024 * 64) { - throw new TypeError('pattern is too long') - } - - var options = this.options - - // shortcuts - if (!options.noglobstar && pattern === '**') return GLOBSTAR - if (pattern === '') return '' - - var re = '' - var hasMagic = !!options.nocase - var escaping = false - // ? => one single character - var patternListStack = [] - var negativeLists = [] - var stateChar - var inClass = false - var reClassStart = -1 - var classStart = -1 - // . and .. never match anything that doesn't start with ., - // even when options.dot is set. - var patternStart = pattern.charAt(0) === '.' ? '' // anything - // not (start or / followed by . or .. followed by / or end) - : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' - : '(?!\\.)' - var self = this - - function clearStateChar () { - if (stateChar) { - // we had some state-tracking character - // that wasn't consumed by this pass. - switch (stateChar) { - case '*': - re += star - hasMagic = true - break - case '?': - re += qmark - hasMagic = true - break - default: - re += '\\' + stateChar - break - } - self.debug('clearStateChar %j %j', stateChar, re) - stateChar = false - } - } - - for (var i = 0, len = pattern.length, c - ; (i < len) && (c = pattern.charAt(i)) - ; i++) { - this.debug('%s\t%s %s %j', pattern, i, re, c) - - // skip over any that are escaped. - if (escaping && reSpecials[c]) { - re += '\\' + c - escaping = false - continue - } - - switch (c) { - case '/': - // completely not allowed, even escaped. - // Should already be path-split by now. - return false - - case '\\': - clearStateChar() - escaping = true - continue - - // the various stateChar values - // for the "extglob" stuff. - case '?': - case '*': - case '+': - case '@': - case '!': - this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) - - // all of those are literals inside a class, except that - // the glob [!a] means [^a] in regexp - if (inClass) { - this.debug(' in class') - if (c === '!' && i === classStart + 1) c = '^' - re += c - continue - } - - // if we already have a stateChar, then it means - // that there was something like ** or +? in there. - // Handle the stateChar, then proceed with this one. - self.debug('call clearStateChar %j', stateChar) - clearStateChar() - stateChar = c - // if extglob is disabled, then +(asdf|foo) isn't a thing. - // just clear the statechar *now*, rather than even diving into - // the patternList stuff. - if (options.noext) clearStateChar() - continue - - case '(': - if (inClass) { - re += '(' - continue - } - - if (!stateChar) { - re += '\\(' - continue - } - - patternListStack.push({ - type: stateChar, - start: i - 1, - reStart: re.length, - open: plTypes[stateChar].open, - close: plTypes[stateChar].close - }) - // negation is (?:(?!js)[^/]*) - re += stateChar === '!' ? '(?:(?!(?:' : '(?:' - this.debug('plType %j %j', stateChar, re) - stateChar = false - continue - - case ')': - if (inClass || !patternListStack.length) { - re += '\\)' - continue - } - - clearStateChar() - hasMagic = true - var pl = patternListStack.pop() - // negation is (?:(?!js)[^/]*) - // The others are (?:<pattern>)<type> - re += pl.close - if (pl.type === '!') { - negativeLists.push(pl) - } - pl.reEnd = re.length - continue - - case '|': - if (inClass || !patternListStack.length || escaping) { - re += '\\|' - escaping = false - continue - } - - clearStateChar() - re += '|' - continue - - // these are mostly the same in regexp and glob - case '[': - // swallow any state-tracking char before the [ - clearStateChar() - - if (inClass) { - re += '\\' + c - continue - } - - inClass = true - classStart = i - reClassStart = re.length - re += c - continue - - case ']': - // a right bracket shall lose its special - // meaning and represent itself in - // a bracket expression if it occurs - // first in the list. -- POSIX.2 2.8.3.2 - if (i === classStart + 1 || !inClass) { - re += '\\' + c - escaping = false - continue - } - - // handle the case where we left a class open. - // "[z-a]" is valid, equivalent to "\[z-a\]" - if (inClass) { - // split where the last [ was, make sure we don't have - // an invalid re. if so, re-walk the contents of the - // would-be class to re-translate any characters that - // were passed through as-is - // TODO: It would probably be faster to determine this - // without a try/catch and a new RegExp, but it's tricky - // to do safely. For now, this is safe and works. - var cs = pattern.substring(classStart + 1, i) - try { - RegExp('[' + cs + ']') - } catch (er) { - // not a valid class! - var sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' - hasMagic = hasMagic || sp[1] - inClass = false - continue - } - } - - // finish up the class. - hasMagic = true - inClass = false - re += c - continue - - default: - // swallow any state char that wasn't consumed - clearStateChar() - - if (escaping) { - // no need - escaping = false - } else if (reSpecials[c] - && !(c === '^' && inClass)) { - re += '\\' - } - - re += c - - } // switch - } // for - - // handle the case where we left a class open. - // "[abc" is valid, equivalent to "\[abc" - if (inClass) { - // split where the last [ was, and escape it - // this is a huge pita. We now have to re-walk - // the contents of the would-be class to re-translate - // any characters that were passed through as-is - cs = pattern.substr(classStart + 1) - sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + '\\[' + sp[0] - hasMagic = hasMagic || sp[1] - } - - // handle the case where we had a +( thing at the *end* - // of the pattern. - // each pattern list stack adds 3 chars, and we need to go through - // and escape any | chars that were passed through as-is for the regexp. - // Go through and escape them, taking care not to double-escape any - // | chars that were already escaped. - for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { - var tail = re.slice(pl.reStart + pl.open.length) - this.debug('setting tail', re, pl) - // maybe some even number of \, then maybe 1 \, followed by a | - tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) { - if (!$2) { - // the | isn't already escaped, so escape it. - $2 = '\\' - } - - // need to escape all those slashes *again*, without escaping the - // one that we need for escaping the | character. As it works out, - // escaping an even number of slashes can be done by simply repeating - // it exactly after itself. That's why this trick works. - // - // I am sorry that you have to see this. - return $1 + $1 + $2 + '|' - }) - - this.debug('tail=%j\n %s', tail, tail, pl, re) - var t = pl.type === '*' ? star - : pl.type === '?' ? qmark - : '\\' + pl.type - - hasMagic = true - re = re.slice(0, pl.reStart) + t + '\\(' + tail - } - - // handle trailing things that only matter at the very end. - clearStateChar() - if (escaping) { - // trailing \\ - re += '\\\\' - } - - // only need to apply the nodot start if the re starts with - // something that could conceivably capture a dot - var addPatternStart = false - switch (re.charAt(0)) { - case '.': - case '[': - case '(': addPatternStart = true - } - - // Hack to work around lack of negative lookbehind in JS - // A pattern like: *.!(x).!(y|z) needs to ensure that a name - // like 'a.xyz.yz' doesn't match. So, the first negative - // lookahead, has to look ALL the way ahead, to the end of - // the pattern. - for (var n = negativeLists.length - 1; n > -1; n--) { - var nl = negativeLists[n] - - var nlBefore = re.slice(0, nl.reStart) - var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) - var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) - var nlAfter = re.slice(nl.reEnd) - - nlLast += nlAfter - - // Handle nested stuff like *(*.js|!(*.json)), where open parens - // mean that we should *not* include the ) in the bit that is considered - // "after" the negated section. - var openParensBefore = nlBefore.split('(').length - 1 - var cleanAfter = nlAfter - for (i = 0; i < openParensBefore; i++) { - cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') - } - nlAfter = cleanAfter - - var dollar = '' - if (nlAfter === '' && isSub !== SUBPARSE) { - dollar = '$' - } - var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast - re = newRe - } - - // if the re is not "" at this point, then we need to make sure - // it doesn't match against an empty path part. - // Otherwise a/* will match a/, which it should not. - if (re !== '' && hasMagic) { - re = '(?=.)' + re - } - - if (addPatternStart) { - re = patternStart + re - } - - // parsing just a piece of a larger pattern. - if (isSub === SUBPARSE) { - return [re, hasMagic] - } - - // skip the regexp for non-magical patterns - // unescape anything in it, though, so that it'll be - // an exact match against a file etc. - if (!hasMagic) { - return globUnescape(pattern) - } - - var flags = options.nocase ? 'i' : '' - try { - var regExp = new RegExp('^' + re + '$', flags) - } catch (er) { - // If it was an invalid regular expression, then it can't match - // anything. This trick looks for a character after the end of - // the string, which is of course impossible, except in multi-line - // mode, but it's not a /m regex. - return new RegExp('$.') - } - - regExp._glob = pattern - regExp._src = re - - return regExp -} - -minimatch.makeRe = function (pattern, options) { - return new Minimatch(pattern, options || {}).makeRe() -} - -Minimatch.prototype.makeRe = makeRe -function makeRe () { - if (this.regexp || this.regexp === false) return this.regexp - - // at this point, this.set is a 2d array of partial - // pattern strings, or "**". - // - // It's better to use .match(). This function shouldn't - // be used, really, but it's pretty convenient sometimes, - // when you just want to work with a regex. - var set = this.set - - if (!set.length) { - this.regexp = false - return this.regexp - } - var options = this.options - - var twoStar = options.noglobstar ? star - : options.dot ? twoStarDot - : twoStarNoDot - var flags = options.nocase ? 'i' : '' - - var re = set.map(function (pattern) { - return pattern.map(function (p) { - return (p === GLOBSTAR) ? twoStar - : (typeof p === 'string') ? regExpEscape(p) - : p._src - }).join('\\\/') - }).join('|') - - // must match entire pattern - // ending in a * or ** will make it less strict. - re = '^(?:' + re + ')$' - - // can match anything, as long as it's not this. - if (this.negate) re = '^(?!' + re + ').*$' - - try { - this.regexp = new RegExp(re, flags) - } catch (ex) { - this.regexp = false - } - return this.regexp -} - -minimatch.match = function (list, pattern, options) { - options = options || {} - var mm = new Minimatch(pattern, options) - list = list.filter(function (f) { - return mm.match(f) - }) - if (mm.options.nonull && !list.length) { - list.push(pattern) - } - return list -} - -Minimatch.prototype.match = match -function match (f, partial) { - this.debug('match', f, this.pattern) - // short-circuit in the case of busted things. - // comments, etc. - if (this.comment) return false - if (this.empty) return f === '' - - if (f === '/' && partial) return true - - var options = this.options - - // windows: need to use /, not \ - if (path.sep !== '/') { - f = f.split(path.sep).join('/') - } - - // treat the test path as a set of pathparts. - f = f.split(slashSplit) - this.debug(this.pattern, 'split', f) - - // just ONE of the pattern sets in this.set needs to match - // in order for it to be valid. If negating, then just one - // match means that we have failed. - // Either way, return on the first hit. - - var set = this.set - this.debug(this.pattern, 'set', set) - - // Find the basename of the path by looking for the last non-empty segment - var filename - var i - for (i = f.length - 1; i >= 0; i--) { - filename = f[i] - if (filename) break - } - - for (i = 0; i < set.length; i++) { - var pattern = set[i] - var file = f - if (options.matchBase && pattern.length === 1) { - file = [filename] - } - var hit = this.matchOne(file, pattern, partial) - if (hit) { - if (options.flipNegate) return true - return !this.negate - } - } - - // didn't get any hits. this is success if it's a negative - // pattern, failure otherwise. - if (options.flipNegate) return false - return this.negate -} - -// set partial to true to test if, for example, -// "/a/b" matches the start of "/*/b/*/d" -// Partial means, if you run out of file before you run -// out of pattern, then that's fine, as long as all -// the parts match. -Minimatch.prototype.matchOne = function (file, pattern, partial) { - var options = this.options - - this.debug('matchOne', - { 'this': this, file: file, pattern: pattern }) - - this.debug('matchOne', file.length, pattern.length) - - for (var fi = 0, - pi = 0, - fl = file.length, - pl = pattern.length - ; (fi < fl) && (pi < pl) - ; fi++, pi++) { - this.debug('matchOne loop') - var p = pattern[pi] - var f = file[fi] - - this.debug(pattern, p, f) - - // should be impossible. - // some invalid regexp stuff in the set. - if (p === false) return false - - if (p === GLOBSTAR) { - this.debug('GLOBSTAR', [pattern, p, f]) - - // "**" - // a/**/b/**/c would match the following: - // a/b/x/y/z/c - // a/x/y/z/b/c - // a/b/x/b/x/c - // a/b/c - // To do this, take the rest of the pattern after - // the **, and see if it would match the file remainder. - // If so, return success. - // If not, the ** "swallows" a segment, and try again. - // This is recursively awful. - // - // a/**/b/**/c matching a/b/x/y/z/c - // - a matches a - // - doublestar - // - matchOne(b/x/y/z/c, b/**/c) - // - b matches b - // - doublestar - // - matchOne(x/y/z/c, c) -> no - // - matchOne(y/z/c, c) -> no - // - matchOne(z/c, c) -> no - // - matchOne(c, c) yes, hit - var fr = fi - var pr = pi + 1 - if (pr === pl) { - this.debug('** at the end') - // a ** at the end will just swallow the rest. - // We have found a match. - // however, it will not swallow /.x, unless - // options.dot is set. - // . and .. are *never* matched by **, for explosively - // exponential reasons. - for (; fi < fl; fi++) { - if (file[fi] === '.' || file[fi] === '..' || - (!options.dot && file[fi].charAt(0) === '.')) return false - } - return true - } - - // ok, let's see if we can swallow whatever we can. - while (fr < fl) { - var swallowee = file[fr] - - this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) - - // XXX remove this slice. Just pass the start index. - if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { - this.debug('globstar found match!', fr, fl, swallowee) - // found a match. - return true - } else { - // can't swallow "." or ".." ever. - // can only swallow ".foo" when explicitly asked. - if (swallowee === '.' || swallowee === '..' || - (!options.dot && swallowee.charAt(0) === '.')) { - this.debug('dot detected!', file, fr, pattern, pr) - break - } - - // ** swallows a segment, and continue. - this.debug('globstar swallow a segment, and continue') - fr++ - } - } - - // no match was found. - // However, in partial mode, we can't say this is necessarily over. - // If there's more *pattern* left, then - if (partial) { - // ran out of file - this.debug('\n>>> no match, partial?', file, fr, pattern, pr) - if (fr === fl) return true - } - return false - } - - // something other than ** - // non-magic patterns just have to match exactly - // patterns with magic have been turned into regexps. - var hit - if (typeof p === 'string') { - if (options.nocase) { - hit = f.toLowerCase() === p.toLowerCase() - } else { - hit = f === p - } - this.debug('string match', p, f, hit) - } else { - hit = f.match(p) - this.debug('pattern match', p, f, hit) - } - - if (!hit) return false - } - - // Note: ending in / means that we'll get a final "" - // at the end of the pattern. This can only match a - // corresponding "" at the end of the file. - // If the file ends in /, then it can only match a - // a pattern that ends in /, unless the pattern just - // doesn't have any more for it. But, a/b/ should *not* - // match "a/b/*", even though "" matches against the - // [^/]*? pattern, except in partial mode, where it might - // simply not be reached yet. - // However, a/b/ should still satisfy a/* - - // now either we fell off the end of the pattern, or we're done. - if (fi === fl && pi === pl) { - // ran out of pattern and filename at the same time. - // an exact hit! - return true - } else if (fi === fl) { - // ran out of file, but still had pattern left. - // this is ok if we're doing the match as part of - // a glob fs traversal. - return partial - } else if (pi === pl) { - // ran out of pattern, still have file left. - // this is only acceptable if we're on the very last - // empty segment of a file with a trailing slash. - // a/* should match a/b/ - var emptyFileEnd = (fi === fl - 1) && (file[fi] === '') - return emptyFileEnd - } - - // should be unreachable. - throw new Error('wtf?') -} - -// replace stuff like \* with * -function globUnescape (s) { - return s.replace(/\\(.)/g, '$1') -} - -function regExpEscape (s) { - return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') -} diff --git a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/README.md b/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/README.md deleted file mode 100644 index ed2ec1fdd..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/README.md +++ /dev/null @@ -1,123 +0,0 @@ -# brace-expansion - -[Brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html), -as known from sh/bash, in JavaScript. - -[![build status](https://secure.travis-ci.org/juliangruber/brace-expansion.svg)](http://travis-ci.org/juliangruber/brace-expansion) -[![downloads](https://img.shields.io/npm/dm/brace-expansion.svg)](https://www.npmjs.org/package/brace-expansion) -[![Greenkeeper badge](https://badges.greenkeeper.io/juliangruber/brace-expansion.svg)](https://greenkeeper.io/) - -[![testling badge](https://ci.testling.com/juliangruber/brace-expansion.png)](https://ci.testling.com/juliangruber/brace-expansion) - -## Example - -```js -var expand = require('brace-expansion'); - -expand('file-{a,b,c}.jpg') -// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg'] - -expand('-v{,,}') -// => ['-v', '-v', '-v'] - -expand('file{0..2}.jpg') -// => ['file0.jpg', 'file1.jpg', 'file2.jpg'] - -expand('file-{a..c}.jpg') -// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg'] - -expand('file{2..0}.jpg') -// => ['file2.jpg', 'file1.jpg', 'file0.jpg'] - -expand('file{0..4..2}.jpg') -// => ['file0.jpg', 'file2.jpg', 'file4.jpg'] - -expand('file-{a..e..2}.jpg') -// => ['file-a.jpg', 'file-c.jpg', 'file-e.jpg'] - -expand('file{00..10..5}.jpg') -// => ['file00.jpg', 'file05.jpg', 'file10.jpg'] - -expand('{{A..C},{a..c}}') -// => ['A', 'B', 'C', 'a', 'b', 'c'] - -expand('ppp{,config,oe{,conf}}') -// => ['ppp', 'pppconfig', 'pppoe', 'pppoeconf'] -``` - -## API - -```js -var expand = require('brace-expansion'); -``` - -### var expanded = expand(str) - -Return an array of all possible and valid expansions of `str`. If none are -found, `[str]` is returned. - -Valid expansions are: - -```js -/^(.*,)+(.+)?$/ -// {a,b,...} -``` - -A comma seperated list of options, like `{a,b}` or `{a,{b,c}}` or `{,a,}`. - -```js -/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/ -// {x..y[..incr]} -``` - -A numeric sequence from `x` to `y` inclusive, with optional increment. -If `x` or `y` start with a leading `0`, all the numbers will be padded -to have equal length. Negative numbers and backwards iteration work too. - -```js -/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/ -// {x..y[..incr]} -``` - -An alphabetic sequence from `x` to `y` inclusive, with optional increment. -`x` and `y` must be exactly one character, and if given, `incr` must be a -number. - -For compatibility reasons, the string `${` is not eligible for brace expansion. - -## Installation - -With [npm](https://npmjs.org) do: - -```bash -npm install brace-expansion -``` - -## Contributors - -- [Julian Gruber](https://github.com/juliangruber) -- [Isaac Z. Schlueter](https://github.com/isaacs) - -## License - -(MIT) - -Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> - -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/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/index.js b/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/index.js deleted file mode 100644 index 0478be81e..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/index.js +++ /dev/null @@ -1,201 +0,0 @@ -var concatMap = require('concat-map'); -var balanced = require('balanced-match'); - -module.exports = expandTop; - -var escSlash = '\0SLASH'+Math.random()+'\0'; -var escOpen = '\0OPEN'+Math.random()+'\0'; -var escClose = '\0CLOSE'+Math.random()+'\0'; -var escComma = '\0COMMA'+Math.random()+'\0'; -var escPeriod = '\0PERIOD'+Math.random()+'\0'; - -function numeric(str) { - return parseInt(str, 10) == str - ? parseInt(str, 10) - : str.charCodeAt(0); -} - -function escapeBraces(str) { - return str.split('\\\\').join(escSlash) - .split('\\{').join(escOpen) - .split('\\}').join(escClose) - .split('\\,').join(escComma) - .split('\\.').join(escPeriod); -} - -function unescapeBraces(str) { - return str.split(escSlash).join('\\') - .split(escOpen).join('{') - .split(escClose).join('}') - .split(escComma).join(',') - .split(escPeriod).join('.'); -} - - -// Basically just str.split(","), but handling cases -// where we have nested braced sections, which should be -// treated as individual members, like {a,{b,c},d} -function parseCommaParts(str) { - if (!str) - return ['']; - - var parts = []; - var m = balanced('{', '}', str); - - if (!m) - return str.split(','); - - var pre = m.pre; - var body = m.body; - var post = m.post; - var p = pre.split(','); - - p[p.length-1] += '{' + body + '}'; - var postParts = parseCommaParts(post); - if (post.length) { - p[p.length-1] += postParts.shift(); - p.push.apply(p, postParts); - } - - parts.push.apply(parts, p); - - return parts; -} - -function expandTop(str) { - if (!str) - return []; - - // I don't know why Bash 4.3 does this, but it does. - // Anything starting with {} will have the first two bytes preserved - // but *only* at the top level, so {},a}b will not expand to anything, - // but a{},b}c will be expanded to [a}c,abc]. - // One could argue that this is a bug in Bash, but since the goal of - // this module is to match Bash's rules, we escape a leading {} - if (str.substr(0, 2) === '{}') { - str = '\\{\\}' + str.substr(2); - } - - return expand(escapeBraces(str), true).map(unescapeBraces); -} - -function identity(e) { - return e; -} - -function embrace(str) { - return '{' + str + '}'; -} -function isPadded(el) { - return /^-?0\d/.test(el); -} - -function lte(i, y) { - return i <= y; -} -function gte(i, y) { - return i >= y; -} - -function expand(str, isTop) { - var expansions = []; - - var m = balanced('{', '}', str); - if (!m || /\$$/.test(m.pre)) return [str]; - - var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); - var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); - var isSequence = isNumericSequence || isAlphaSequence; - var isOptions = m.body.indexOf(',') >= 0; - if (!isSequence && !isOptions) { - // {a},b} - if (m.post.match(/,.*\}/)) { - str = m.pre + '{' + m.body + escClose + m.post; - return expand(str); - } - return [str]; - } - - var n; - if (isSequence) { - n = m.body.split(/\.\./); - } else { - n = parseCommaParts(m.body); - if (n.length === 1) { - // x{{a,b}}y ==> x{a}y x{b}y - n = expand(n[0], false).map(embrace); - if (n.length === 1) { - var post = m.post.length - ? expand(m.post, false) - : ['']; - return post.map(function(p) { - return m.pre + n[0] + p; - }); - } - } - } - - // at this point, n is the parts, and we know it's not a comma set - // with a single entry. - - // no need to expand pre, since it is guaranteed to be free of brace-sets - var pre = m.pre; - var post = m.post.length - ? expand(m.post, false) - : ['']; - - var N; - - if (isSequence) { - var x = numeric(n[0]); - var y = numeric(n[1]); - var width = Math.max(n[0].length, n[1].length) - var incr = n.length == 3 - ? Math.abs(numeric(n[2])) - : 1; - var test = lte; - var reverse = y < x; - if (reverse) { - incr *= -1; - test = gte; - } - var pad = n.some(isPadded); - - N = []; - - for (var i = x; test(i, y); i += incr) { - var c; - if (isAlphaSequence) { - c = String.fromCharCode(i); - if (c === '\\') - c = ''; - } else { - c = String(i); - if (pad) { - var need = width - c.length; - if (need > 0) { - var z = new Array(need + 1).join('0'); - if (i < 0) - c = '-' + z + c.slice(1); - else - c = z + c; - } - } - } - N.push(c); - } - } else { - N = concatMap(n, function(el) { return expand(el, false) }); - } - - for (var j = 0; j < N.length; j++) { - for (var k = 0; k < post.length; k++) { - var expansion = pre + N[j] + post[k]; - if (!isTop || isSequence || expansion) - expansions.push(expansion); - } - } - - return expansions; -} - diff --git a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore b/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore deleted file mode 100644 index ae5d8c36a..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -test -.gitignore -.travis.yml -Makefile -example.js diff --git a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md b/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md deleted file mode 100644 index 2cdc8e414..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -(MIT) - -Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> - -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/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md b/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md deleted file mode 100644 index 08e918c0d..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md +++ /dev/null @@ -1,91 +0,0 @@ -# balanced-match - -Match balanced string pairs, like `{` and `}` or `<b>` and `</b>`. Supports regular expressions as well! - -[![build status](https://secure.travis-ci.org/juliangruber/balanced-match.svg)](http://travis-ci.org/juliangruber/balanced-match) -[![downloads](https://img.shields.io/npm/dm/balanced-match.svg)](https://www.npmjs.org/package/balanced-match) - -[![testling badge](https://ci.testling.com/juliangruber/balanced-match.png)](https://ci.testling.com/juliangruber/balanced-match) - -## Example - -Get the first matching pair of braces: - -```js -var balanced = require('balanced-match'); - -console.log(balanced('{', '}', 'pre{in{nested}}post')); -console.log(balanced('{', '}', 'pre{first}between{second}post')); -console.log(balanced(/\s+\{\s+/, /\s+\}\s+/, 'pre { in{nest} } post')); -``` - -The matches are: - -```bash -$ node example.js -{ start: 3, end: 14, pre: 'pre', body: 'in{nested}', post: 'post' } -{ start: 3, - end: 9, - pre: 'pre', - body: 'first', - post: 'between{second}post' } -{ start: 3, end: 17, pre: 'pre', body: 'in{nest}', post: 'post' } -``` - -## API - -### var m = balanced(a, b, str) - -For the first non-nested matching pair of `a` and `b` in `str`, return an -object with those keys: - -* **start** the index of the first match of `a` -* **end** the index of the matching `b` -* **pre** the preamble, `a` and `b` not included -* **body** the match, `a` and `b` not included -* **post** the postscript, `a` and `b` not included - -If there's no match, `undefined` will be returned. - -If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']` and `{a}}` will match `['', 'a', '}']`. - -### var r = balanced.range(a, b, str) - -For the first non-nested matching pair of `a` and `b` in `str`, return an -array with indexes: `[ <a index>, <b index> ]`. - -If there's no match, `undefined` will be returned. - -If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `[ 1, 3 ]` and `{a}}` will match `[0, 2]`. - -## Installation - -With [npm](https://npmjs.org) do: - -```bash -npm install balanced-match -``` - -## License - -(MIT) - -Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> - -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/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js b/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js deleted file mode 100644 index 1685a7629..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +++ /dev/null @@ -1,59 +0,0 @@ -'use strict'; -module.exports = balanced; -function balanced(a, b, str) { - if (a instanceof RegExp) a = maybeMatch(a, str); - if (b instanceof RegExp) b = maybeMatch(b, str); - - var r = range(a, b, str); - - return r && { - start: r[0], - end: r[1], - pre: str.slice(0, r[0]), - body: str.slice(r[0] + a.length, r[1]), - post: str.slice(r[1] + b.length) - }; -} - -function maybeMatch(reg, str) { - var m = str.match(reg); - return m ? m[0] : null; -} - -balanced.range = range; -function range(a, b, str) { - var begs, beg, left, right, result; - var ai = str.indexOf(a); - var bi = str.indexOf(b, ai + 1); - var i = ai; - - if (ai >= 0 && bi > 0) { - begs = []; - left = str.length; - - while (i >= 0 && !result) { - if (i == ai) { - begs.push(i); - ai = str.indexOf(a, i + 1); - } else if (begs.length == 1) { - result = [ begs.pop(), bi ]; - } else { - beg = begs.pop(); - if (beg < left) { - left = beg; - right = bi; - } - - bi = str.indexOf(b, i + 1); - } - - i = ai < bi && ai >= 0 ? ai : bi; - } - - if (begs.length) { - result = [ left, right ]; - } - } - - return result; -} diff --git a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json b/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json deleted file mode 100644 index 4702c7d9a..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "_from": "balanced-match@^1.0.0", - "_id": "balanced-match@1.0.0", - "_inBundle": false, - "_integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "_location": "/fstream-npm/fstream-ignore/minimatch/brace-expansion/balanced-match", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "balanced-match@^1.0.0", - "name": "balanced-match", - "escapedName": "balanced-match", - "rawSpec": "^1.0.0", - "saveSpec": null, - "fetchSpec": "^1.0.0" - }, - "_requiredBy": [ - "/fstream-npm/fstream-ignore/minimatch/brace-expansion" - ], - "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "_shasum": "89b4d199ab2bee49de164ea02b89ce462d71b767", - "_spec": "balanced-match@^1.0.0", - "_where": "/Users/rebecca/code/npm/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion", - "author": { - "name": "Julian Gruber", - "email": "mail@juliangruber.com", - "url": "http://juliangruber.com" - }, - "bugs": { - "url": "https://github.com/juliangruber/balanced-match/issues" - }, - "bundleDependencies": false, - "dependencies": {}, - "deprecated": false, - "description": "Match balanced character pairs, like \"{\" and \"}\"", - "devDependencies": { - "matcha": "^0.7.0", - "tape": "^4.6.0" - }, - "homepage": "https://github.com/juliangruber/balanced-match", - "keywords": [ - "match", - "regexp", - "test", - "balanced", - "parse" - ], - "license": "MIT", - "main": "index.js", - "name": "balanced-match", - "repository": { - "type": "git", - "url": "git://github.com/juliangruber/balanced-match.git" - }, - "scripts": { - "bench": "make bench", - "test": "make test" - }, - "testling": { - "files": "test/*.js", - "browsers": [ - "ie/8..latest", - "firefox/20..latest", - "firefox/nightly", - "chrome/25..latest", - "chrome/canary", - "opera/12..latest", - "opera/next", - "safari/5.1..latest", - "ipad/6.0..latest", - "iphone/6.0..latest", - "android-browser/4.2..latest" - ] - }, - "version": "1.0.0" -} diff --git a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml b/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml deleted file mode 100644 index f1d0f13c8..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE b/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE deleted file mode 100644 index ee27ba4b4..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -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/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown b/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown deleted file mode 100644 index 408f70a1b..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown +++ /dev/null @@ -1,62 +0,0 @@ -concat-map -========== - -Concatenative mapdashery. - -[![browser support](http://ci.testling.com/substack/node-concat-map.png)](http://ci.testling.com/substack/node-concat-map) - -[![build status](https://secure.travis-ci.org/substack/node-concat-map.png)](http://travis-ci.org/substack/node-concat-map) - -example -======= - -``` js -var concatMap = require('concat-map'); -var xs = [ 1, 2, 3, 4, 5, 6 ]; -var ys = concatMap(xs, function (x) { - return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; -}); -console.dir(ys); -``` - -*** - -``` -[ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ] -``` - -methods -======= - -``` js -var concatMap = require('concat-map') -``` - -concatMap(xs, fn) ------------------ - -Return an array of concatenated elements by calling `fn(x, i)` for each element -`x` and each index `i` in the array `xs`. - -When `fn(x, i)` returns an array, its result will be concatenated with the -result array. If `fn(x, i)` returns anything else, that value will be pushed -onto the end of the result array. - -install -======= - -With [npm](http://npmjs.org) do: - -``` -npm install concat-map -``` - -license -======= - -MIT - -notes -===== - -This module was written while sitting high above the ground in a tree. diff --git a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js b/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js deleted file mode 100644 index 33656217b..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js +++ /dev/null @@ -1,6 +0,0 @@ -var concatMap = require('../'); -var xs = [ 1, 2, 3, 4, 5, 6 ]; -var ys = concatMap(xs, function (x) { - return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; -}); -console.dir(ys); diff --git a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js b/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js deleted file mode 100644 index b29a7812e..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = function (xs, fn) { - var res = []; - for (var i = 0; i < xs.length; i++) { - var x = fn(xs[i], i); - if (isArray(x)) res.push.apply(res, x); - else res.push(x); - } - return res; -}; - -var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; diff --git a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json b/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json deleted file mode 100644 index 439d78a33..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "_from": "concat-map@0.0.1", - "_id": "concat-map@0.0.1", - "_integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "_location": "/fstream-npm/fstream-ignore/minimatch/brace-expansion/concat-map", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "concat-map@0.0.1", - "name": "concat-map", - "escapedName": "concat-map", - "rawSpec": "0.0.1", - "saveSpec": null, - "fetchSpec": "0.0.1" - }, - "_requiredBy": [ - "/fstream-npm/fstream-ignore/minimatch/brace-expansion" - ], - "_resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "_shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b", - "_shrinkwrap": null, - "_spec": "concat-map@0.0.1", - "_where": "/Users/zkat/Documents/code/npm/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion", - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "bin": null, - "bugs": { - "url": "https://github.com/substack/node-concat-map/issues" - }, - "bundleDependencies": false, - "dependencies": {}, - "deprecated": false, - "description": "concatenative mapdashery", - "devDependencies": { - "tape": "~2.4.0" - }, - "directories": { - "example": "example", - "test": "test" - }, - "homepage": "https://github.com/substack/node-concat-map#readme", - "keywords": [ - "concat", - "concatMap", - "map", - "functional", - "higher-order" - ], - "license": "MIT", - "main": "index.js", - "name": "concat-map", - "optionalDependencies": {}, - "peerDependencies": {}, - "repository": { - "type": "git", - "url": "git://github.com/substack/node-concat-map.git" - }, - "scripts": { - "test": "tape test/*.js" - }, - "testling": { - "files": "test/*.js", - "browsers": { - "ie": [ - 6, - 7, - 8, - 9 - ], - "ff": [ - 3.5, - 10, - 15 - ], - "chrome": [ - 10, - 22 - ], - "safari": [ - 5.1 - ], - "opera": [ - 12 - ] - } - }, - "version": "0.0.1" -} diff --git a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js b/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js deleted file mode 100644 index fdbd7022f..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js +++ /dev/null @@ -1,39 +0,0 @@ -var concatMap = require('../'); -var test = require('tape'); - -test('empty or not', function (t) { - var xs = [ 1, 2, 3, 4, 5, 6 ]; - var ixes = []; - var ys = concatMap(xs, function (x, ix) { - ixes.push(ix); - return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; - }); - t.same(ys, [ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ]); - t.same(ixes, [ 0, 1, 2, 3, 4, 5 ]); - t.end(); -}); - -test('always something', function (t) { - var xs = [ 'a', 'b', 'c', 'd' ]; - var ys = concatMap(xs, function (x) { - return x === 'b' ? [ 'B', 'B', 'B' ] : [ x ]; - }); - t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]); - t.end(); -}); - -test('scalars', function (t) { - var xs = [ 'a', 'b', 'c', 'd' ]; - var ys = concatMap(xs, function (x) { - return x === 'b' ? [ 'B', 'B', 'B' ] : x; - }); - t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]); - t.end(); -}); - -test('undefs', function (t) { - var xs = [ 'a', 'b', 'c', 'd' ]; - var ys = concatMap(xs, function () {}); - t.same(ys, [ undefined, undefined, undefined, undefined ]); - t.end(); -}); diff --git a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/package.json b/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/package.json deleted file mode 100644 index 7d38d063e..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/package.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "_from": "brace-expansion@^1.1.7", - "_id": "brace-expansion@1.1.8", - "_inBundle": false, - "_integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "_location": "/fstream-npm/fstream-ignore/minimatch/brace-expansion", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "brace-expansion@^1.1.7", - "name": "brace-expansion", - "escapedName": "brace-expansion", - "rawSpec": "^1.1.7", - "saveSpec": null, - "fetchSpec": "^1.1.7" - }, - "_requiredBy": [ - "/fstream-npm/fstream-ignore/minimatch" - ], - "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "_shasum": "c07b211c7c952ec1f8efd51a77ef0d1d3990a292", - "_spec": "brace-expansion@^1.1.7", - "_where": "/Users/rebecca/code/npm/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch", - "author": { - "name": "Julian Gruber", - "email": "mail@juliangruber.com", - "url": "http://juliangruber.com" - }, - "bugs": { - "url": "https://github.com/juliangruber/brace-expansion/issues" - }, - "bundleDependencies": false, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - }, - "deprecated": false, - "description": "Brace expansion as known from sh/bash", - "devDependencies": { - "matcha": "^0.7.0", - "tape": "^4.6.0" - }, - "homepage": "https://github.com/juliangruber/brace-expansion", - "keywords": [], - "license": "MIT", - "main": "index.js", - "name": "brace-expansion", - "repository": { - "type": "git", - "url": "git://github.com/juliangruber/brace-expansion.git" - }, - "scripts": { - "bench": "matcha test/perf/bench.js", - "gentest": "bash test/generate.sh", - "test": "tape test/*.js" - }, - "testling": { - "files": "test/*.js", - "browsers": [ - "ie/8..latest", - "firefox/20..latest", - "firefox/nightly", - "chrome/25..latest", - "chrome/canary", - "opera/12..latest", - "opera/next", - "safari/5.1..latest", - "ipad/6.0..latest", - "iphone/6.0..latest", - "android-browser/4.2..latest" - ] - }, - "version": "1.1.8" -} diff --git a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/package.json b/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/package.json deleted file mode 100644 index e4bdaeffc..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/node_modules/minimatch/package.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "_from": "minimatch@^3.0.0", - "_id": "minimatch@3.0.4", - "_inBundle": false, - "_integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "_location": "/fstream-npm/fstream-ignore/minimatch", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "minimatch@^3.0.0", - "name": "minimatch", - "escapedName": "minimatch", - "rawSpec": "^3.0.0", - "saveSpec": null, - "fetchSpec": "^3.0.0" - }, - "_requiredBy": [ - "/fstream-npm/fstream-ignore" - ], - "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "_shasum": "5166e286457f03306064be5497e8dbb0c3d32083", - "_spec": "minimatch@^3.0.0", - "_where": "/Users/zkat/Documents/code/npm/node_modules/fstream-npm/node_modules/fstream-ignore", - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "bugs": { - "url": "https://github.com/isaacs/minimatch/issues" - }, - "bundleDependencies": false, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "deprecated": false, - "description": "a glob matcher in javascript", - "devDependencies": { - "tap": "^10.3.2" - }, - "engines": { - "node": "*" - }, - "files": [ - "minimatch.js" - ], - "homepage": "https://github.com/isaacs/minimatch#readme", - "license": "ISC", - "main": "minimatch.js", - "name": "minimatch", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/minimatch.git" - }, - "scripts": { - "postpublish": "git push origin --all; git push origin --tags", - "postversion": "npm publish", - "preversion": "npm test", - "test": "tap test/*.js --cov" - }, - "version": "3.0.4" -} diff --git a/node_modules/fstream-npm/node_modules/fstream-ignore/package.json b/node_modules/fstream-npm/node_modules/fstream-ignore/package.json deleted file mode 100644 index ee66985a5..000000000 --- a/node_modules/fstream-npm/node_modules/fstream-ignore/package.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "_from": "fstream-ignore@^1.0.0", - "_id": "fstream-ignore@1.0.5", - "_integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", - "_location": "/fstream-npm/fstream-ignore", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "fstream-ignore@^1.0.0", - "name": "fstream-ignore", - "escapedName": "fstream-ignore", - "rawSpec": "^1.0.0", - "saveSpec": null, - "fetchSpec": "^1.0.0" - }, - "_requiredBy": [ - "/fstream-npm" - ], - "_resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "_shasum": "9c31dae34767018fe1d249b24dada67d092da105", - "_shrinkwrap": null, - "_spec": "fstream-ignore@^1.0.0", - "_where": "/Users/zkat/Documents/code/npm/node_modules/fstream-npm", - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "bin": null, - "bugs": { - "url": "https://github.com/isaacs/fstream-ignore/issues" - }, - "bundleDependencies": false, - "dependencies": { - "fstream": "^1.0.0", - "inherits": "2", - "minimatch": "^3.0.0" - }, - "deprecated": false, - "description": "A thing for ignoring files based on globs", - "devDependencies": { - "mkdirp": "", - "rimraf": "", - "tap": "^5.7.1" - }, - "files": [ - "ignore.js" - ], - "homepage": "https://github.com/isaacs/fstream-ignore#readme", - "license": "ISC", - "main": "ignore.js", - "name": "fstream-ignore", - "optionalDependencies": {}, - "peerDependencies": {}, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/fstream-ignore.git" - }, - "scripts": { - "test": "tap test/*.js --cov" - }, - "version": "1.0.5" -} diff --git a/node_modules/fstream-npm/package.json b/node_modules/fstream-npm/package.json deleted file mode 100644 index 671695018..000000000 --- a/node_modules/fstream-npm/package.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "_from": "fstream-npm@~1.2.1", - "_id": "fstream-npm@1.2.1", - "_inBundle": false, - "_integrity": "sha512-iBHpm/LmD1qw0TlHMAqVd9rwdU6M+EHRUnPkXpRi5G/Hf0FIFH+oZFryodAU2MFNfGRh/CzhUFlMKV3pdeOTDw==", - "_location": "/fstream-npm", - "_phantomChildren": { - "fstream": "1.0.11", - "inherits": "2.0.3" - }, - "_requested": { - "type": "range", - "registry": true, - "raw": "fstream-npm@~1.2.1", - "name": "fstream-npm", - "escapedName": "fstream-npm", - "rawSpec": "~1.2.1", - "saveSpec": null, - "fetchSpec": "~1.2.1" - }, - "_requiredBy": [ - "#USER", - "/" - ], - "_resolved": "https://registry.npmjs.org/fstream-npm/-/fstream-npm-1.2.1.tgz", - "_shasum": "08c4a452f789dcbac4c89a4563c902b2c862fd5b", - "_spec": "fstream-npm@~1.2.1", - "_where": "/Users/rebecca/code/npm", - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "bugs": { - "url": "https://github.com/npm/fstream-npm/issues" - }, - "bundleDependencies": false, - "dependencies": { - "fstream-ignore": "^1.0.0", - "inherits": "2" - }, - "deprecated": false, - "description": "fstream class for creating npm packages", - "devDependencies": { - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.1", - "rimraf": "^2.4.2", - "standard": "^4.3.1", - "tap": "^1.3.2" - }, - "homepage": "https://github.com/npm/fstream-npm#readme", - "license": "ISC", - "main": "./fstream-npm.js", - "name": "fstream-npm", - "repository": { - "type": "git", - "url": "git+https://github.com/npm/fstream-npm.git" - }, - "scripts": { - "test": "standard && tap test/*.js" - }, - "version": "1.2.1" -} diff --git a/node_modules/fstream-npm/test/ignores.js b/node_modules/fstream-npm/test/ignores.js deleted file mode 100644 index ac94251f7..000000000 --- a/node_modules/fstream-npm/test/ignores.js +++ /dev/null @@ -1,132 +0,0 @@ -var fs = require('graceful-fs') -var join = require('path').join - -var mkdirp = require('mkdirp') -var rimraf = require('rimraf') -var test = require('tap').test - -var Packer = require('..') - -var pkg = join(__dirname, 'test-package') - -var elfJS = function () {/* -module.exports = function () { - console.log("i'm a elf") -} -*/}.toString().split('\n').slice(1, -1).join() - -var json = { - 'name': 'test-package', - 'version': '3.1.4', - 'main': 'elf.js' -} - -test('setup', function (t) { - setup() - t.end() -}) - -var included = [ - 'package.json', - 'elf.js', - join('deps', 'foo', 'config', 'config.gypi') -] - -test('follows npm package ignoring rules', function (t) { - var subject = new Packer({ path: pkg, type: 'Directory', isDirectory: true }) - var filenames = [] - subject.on('entry', function (entry) { - t.equal(entry.type, 'File', 'only files in this package') - - // include relative path in filename - var filename = entry._path.slice(entry.root._path.length + 1) - - filenames.push(filename) - }) - // need to do this so fstream doesn't explode when files are removed from - // under it - subject.on('end', function () { - // ensure we get *exactly* the results we expect by comparing in both - // directions - filenames.forEach(function (filename) { - t.ok( - included.indexOf(filename) > -1, - filename + ' is included' - ) - }) - included.forEach(function (filename) { - t.ok( - filenames.indexOf(filename) > -1, - filename + ' is not included' - ) - }) - t.end() - }) -}) - -test('cleanup', function (t) { - // rimraf.sync chokes here for some reason - rimraf(pkg, function () { t.end() }) -}) - -function setup () { - rimraf.sync(pkg) - mkdirp.sync(pkg) - fs.writeFileSync( - join(pkg, 'package.json'), - JSON.stringify(json, null, 2) - ) - - fs.writeFileSync( - join(pkg, 'elf.js'), - elfJS - ) - - fs.writeFileSync( - join(pkg, '.npmrc'), - 'packaged=false' - ) - - fs.writeFileSync( - join(pkg, '.npmignore'), - '.npmignore\ndummy\npackage.json' - ) - - fs.writeFileSync( - join(pkg, 'dummy'), - 'foo' - ) - - var buildDir = join(pkg, 'build') - mkdirp.sync(buildDir) - fs.writeFileSync( - join(buildDir, 'config.gypi'), - "i_wont_be_included_by_fstream='with any luck'" - ) - - var depscfg = join(pkg, 'deps', 'foo', 'config') - mkdirp.sync(depscfg) - fs.writeFileSync( - join(depscfg, 'config.gypi'), - "i_will_be_included_by_fstream='with any luck'" - ) - - fs.writeFileSync( - join(buildDir, 'npm-debug.log'), - '0 lol\n' - ) - - var gitDir = join(pkg, '.git') - mkdirp.sync(gitDir) - fs.writeFileSync( - join(gitDir, 'gitstub'), - "won't fool git, also won't be included by fstream" - ) - - var historyDir = join(pkg, 'node_modules/history') - mkdirp.sync(historyDir) - fs.writeFileSync( - join(historyDir, 'README.md'), - "please don't include me" - ) -} diff --git a/node_modules/fstream-npm/test/scoped.js b/node_modules/fstream-npm/test/scoped.js deleted file mode 100644 index db0c3d4c0..000000000 --- a/node_modules/fstream-npm/test/scoped.js +++ /dev/null @@ -1,99 +0,0 @@ -var fs = require('graceful-fs') -var join = require('path').join - -var mkdirp = require('mkdirp') -var rimraf = require('rimraf') -var test = require('tap').test - -var Packer = require('..') - -var pkg = join(__dirname, 'test-package-scoped') - -var elfJS = function () {/* -module.exports = function () { - console.log("i'm a elf") -} -*/}.toString().split('\n').slice(1, -1).join() - -var json = { - 'name': 'test-package-scoped', - 'version': '3.1.4', - 'main': 'elf.js', - 'bundledDependencies': [ - '@npmwombat/scoped' - ] -} - -test('setup', function (t) { - setup() - t.end() -}) - -var expected = [ - 'package.json', - 'elf.js', - join('node_modules', '@npmwombat', 'scoped', 'index.js'), - join('node_modules', '@npmwombat', 'scoped', 'node_modules', 'example', 'index.js') -] - -test('includes bundledDependencies', function (t) { - var subject = new Packer({ path: pkg, type: 'Directory', isDirectory: true }) - var actual = [] - subject.on('entry', function (entry) { - t.equal(entry.type, 'File', 'only files in this package') - // include relative path in filename - var filename = entry._path.slice(entry.root._path.length + 1) - actual.push(filename) - }) - // need to do this so fstream doesn't explode when files are removed from - // under it - subject.on('end', function () { - // ensure we get *exactly* the results we expect by comparing in both - // directions - actual.forEach(function (filename) { - t.ok( - expected.indexOf(filename) > -1, - filename + ' is included' - ) - }) - expected.forEach(function (filename) { - t.ok( - actual.indexOf(filename) > -1, - filename + ' is not included' - ) - }) - t.end() - }) -}) - -test('cleanup', function (t) { - // rimraf.sync chokes here for some reason - rimraf(pkg, function () { t.end() }) -}) - -function setup () { - rimraf.sync(pkg) - mkdirp.sync(pkg) - fs.writeFileSync( - join(pkg, 'package.json'), - JSON.stringify(json, null, 2) - ) - - fs.writeFileSync( - join(pkg, 'elf.js'), - elfJS - ) - - var scopedDir = join(pkg, 'node_modules', '@npmwombat', 'scoped') - mkdirp.sync(scopedDir) - fs.writeFileSync( - join(scopedDir, 'index.js'), - "console.log('hello wombat')" - ) - var scopedContent = join(scopedDir, 'node_modules', 'example') - mkdirp.sync(scopedContent) - fs.writeFileSync( - join(scopedContent, 'index.js'), - "console.log('hello example')" - ) -} diff --git a/node_modules/fstream/LICENSE b/node_modules/fstream/LICENSE deleted file mode 100644 index 19129e315..000000000 --- a/node_modules/fstream/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/fstream/.npmignore b/node_modules/node-gyp/node_modules/fstream/.npmignore index 494272a81..494272a81 100644 --- a/node_modules/fstream/.npmignore +++ b/node_modules/node-gyp/node_modules/fstream/.npmignore diff --git a/node_modules/fstream/.travis.yml b/node_modules/node-gyp/node_modules/fstream/.travis.yml index 9f5972ab5..9f5972ab5 100644 --- a/node_modules/fstream/.travis.yml +++ b/node_modules/node-gyp/node_modules/fstream/.travis.yml diff --git a/node_modules/fstream-npm/LICENSE b/node_modules/node-gyp/node_modules/fstream/LICENSE index 19129e315..19129e315 100644 --- a/node_modules/fstream-npm/LICENSE +++ b/node_modules/node-gyp/node_modules/fstream/LICENSE diff --git a/node_modules/fstream/README.md b/node_modules/node-gyp/node_modules/fstream/README.md index 9d8cb77e5..9d8cb77e5 100644 --- a/node_modules/fstream/README.md +++ b/node_modules/node-gyp/node_modules/fstream/README.md diff --git a/node_modules/fstream/examples/filter-pipe.js b/node_modules/node-gyp/node_modules/fstream/examples/filter-pipe.js index 83dadef8a..83dadef8a 100644 --- a/node_modules/fstream/examples/filter-pipe.js +++ b/node_modules/node-gyp/node_modules/fstream/examples/filter-pipe.js diff --git a/node_modules/fstream/examples/pipe.js b/node_modules/node-gyp/node_modules/fstream/examples/pipe.js index 3de42ef32..3de42ef32 100644 --- a/node_modules/fstream/examples/pipe.js +++ b/node_modules/node-gyp/node_modules/fstream/examples/pipe.js diff --git a/node_modules/fstream/examples/reader.js b/node_modules/node-gyp/node_modules/fstream/examples/reader.js index 19affbe7e..19affbe7e 100644 --- a/node_modules/fstream/examples/reader.js +++ b/node_modules/node-gyp/node_modules/fstream/examples/reader.js diff --git a/node_modules/fstream/examples/symlink-write.js b/node_modules/node-gyp/node_modules/fstream/examples/symlink-write.js index 19e81eea9..19e81eea9 100644 --- a/node_modules/fstream/examples/symlink-write.js +++ b/node_modules/node-gyp/node_modules/fstream/examples/symlink-write.js diff --git a/node_modules/fstream/fstream.js b/node_modules/node-gyp/node_modules/fstream/fstream.js index c0eb3bea7..c0eb3bea7 100644 --- a/node_modules/fstream/fstream.js +++ b/node_modules/node-gyp/node_modules/fstream/fstream.js diff --git a/node_modules/fstream/lib/abstract.js b/node_modules/node-gyp/node_modules/fstream/lib/abstract.js index 97c120e1d..97c120e1d 100644 --- a/node_modules/fstream/lib/abstract.js +++ b/node_modules/node-gyp/node_modules/fstream/lib/abstract.js diff --git a/node_modules/fstream/lib/collect.js b/node_modules/node-gyp/node_modules/fstream/lib/collect.js index e5d4f3583..e5d4f3583 100644 --- a/node_modules/fstream/lib/collect.js +++ b/node_modules/node-gyp/node_modules/fstream/lib/collect.js diff --git a/node_modules/fstream/lib/dir-reader.js b/node_modules/node-gyp/node_modules/fstream/lib/dir-reader.js index 820cdc85a..820cdc85a 100644 --- a/node_modules/fstream/lib/dir-reader.js +++ b/node_modules/node-gyp/node_modules/fstream/lib/dir-reader.js diff --git a/node_modules/fstream/lib/dir-writer.js b/node_modules/node-gyp/node_modules/fstream/lib/dir-writer.js index ec50dca90..ec50dca90 100644 --- a/node_modules/fstream/lib/dir-writer.js +++ b/node_modules/node-gyp/node_modules/fstream/lib/dir-writer.js diff --git a/node_modules/fstream/lib/file-reader.js b/node_modules/node-gyp/node_modules/fstream/lib/file-reader.js index baa01f4b3..baa01f4b3 100644 --- a/node_modules/fstream/lib/file-reader.js +++ b/node_modules/node-gyp/node_modules/fstream/lib/file-reader.js diff --git a/node_modules/fstream/lib/file-writer.js b/node_modules/node-gyp/node_modules/fstream/lib/file-writer.js index 4c803d8d6..4c803d8d6 100644 --- a/node_modules/fstream/lib/file-writer.js +++ b/node_modules/node-gyp/node_modules/fstream/lib/file-writer.js diff --git a/node_modules/fstream/lib/get-type.js b/node_modules/node-gyp/node_modules/fstream/lib/get-type.js index 19f6a657d..19f6a657d 100644 --- a/node_modules/fstream/lib/get-type.js +++ b/node_modules/node-gyp/node_modules/fstream/lib/get-type.js diff --git a/node_modules/fstream/lib/link-reader.js b/node_modules/node-gyp/node_modules/fstream/lib/link-reader.js index fb4cc67a9..fb4cc67a9 100644 --- a/node_modules/fstream/lib/link-reader.js +++ b/node_modules/node-gyp/node_modules/fstream/lib/link-reader.js diff --git a/node_modules/fstream/lib/link-writer.js b/node_modules/node-gyp/node_modules/fstream/lib/link-writer.js index af5428400..af5428400 100644 --- a/node_modules/fstream/lib/link-writer.js +++ b/node_modules/node-gyp/node_modules/fstream/lib/link-writer.js diff --git a/node_modules/fstream/lib/proxy-reader.js b/node_modules/node-gyp/node_modules/fstream/lib/proxy-reader.js index 4f431c9d9..4f431c9d9 100644 --- a/node_modules/fstream/lib/proxy-reader.js +++ b/node_modules/node-gyp/node_modules/fstream/lib/proxy-reader.js diff --git a/node_modules/fstream/lib/proxy-writer.js b/node_modules/node-gyp/node_modules/fstream/lib/proxy-writer.js index a6544621b..a6544621b 100644 --- a/node_modules/fstream/lib/proxy-writer.js +++ b/node_modules/node-gyp/node_modules/fstream/lib/proxy-writer.js diff --git a/node_modules/fstream/lib/reader.js b/node_modules/node-gyp/node_modules/fstream/lib/reader.js index be4f570ee..be4f570ee 100644 --- a/node_modules/fstream/lib/reader.js +++ b/node_modules/node-gyp/node_modules/fstream/lib/reader.js diff --git a/node_modules/fstream/lib/socket-reader.js b/node_modules/node-gyp/node_modules/fstream/lib/socket-reader.js index e0456ba89..e0456ba89 100644 --- a/node_modules/fstream/lib/socket-reader.js +++ b/node_modules/node-gyp/node_modules/fstream/lib/socket-reader.js diff --git a/node_modules/fstream/lib/writer.js b/node_modules/node-gyp/node_modules/fstream/lib/writer.js index 140e449e0..140e449e0 100644 --- a/node_modules/fstream/lib/writer.js +++ b/node_modules/node-gyp/node_modules/fstream/lib/writer.js diff --git a/node_modules/fstream/package.json b/node_modules/node-gyp/node_modules/fstream/package.json index 9a08117fe..5ac16f546 100644 --- a/node_modules/fstream/package.json +++ b/node_modules/node-gyp/node_modules/fstream/package.json @@ -1,36 +1,33 @@ { - "_from": "fstream@~1.0.11", + "_from": "fstream@^1.0.0", "_id": "fstream@1.0.11", + "_inBundle": false, "_integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "_location": "/fstream", + "_location": "/node-gyp/fstream", "_phantomChildren": {}, "_requested": { "type": "range", "registry": true, - "raw": "fstream@~1.0.11", + "raw": "fstream@^1.0.0", "name": "fstream", "escapedName": "fstream", - "rawSpec": "~1.0.11", + "rawSpec": "^1.0.0", "saveSpec": null, - "fetchSpec": "~1.0.11" + "fetchSpec": "^1.0.0" }, "_requiredBy": [ - "/", - "/fstream-npm/fstream-ignore", "/node-gyp", - "/tar" + "/node-gyp/tar" ], "_resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", "_shasum": "5c1fb1f117477114f0632a0eb4b71b3cb0fd3171", - "_shrinkwrap": null, - "_spec": "fstream@~1.0.11", - "_where": "/Users/zkat/Documents/code/npm", + "_spec": "fstream@^1.0.0", + "_where": "/Users/rebecca/code/npm/node_modules/node-gyp", "author": { "name": "Isaac Z. Schlueter", "email": "i@izs.me", "url": "http://blog.izs.me/" }, - "bin": null, "bugs": { "url": "https://github.com/npm/fstream/issues" }, @@ -54,8 +51,6 @@ "license": "ISC", "main": "fstream.js", "name": "fstream", - "optionalDependencies": {}, - "peerDependencies": {}, "repository": { "type": "git", "url": "git+https://github.com/npm/fstream.git" diff --git a/package-lock.json b/package-lock.json index c846f6fef..15654c9ae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -252,71 +252,6 @@ "readable-stream": "2.3.3" } }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-npm": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/fstream-npm/-/fstream-npm-1.2.1.tgz", - "integrity": "sha512-iBHpm/LmD1qw0TlHMAqVd9rwdU6M+EHRUnPkXpRi5G/Hf0FIFH+oZFryodAU2MFNfGRh/CzhUFlMKV3pdeOTDw==", - "requires": { - "fstream-ignore": "1.0.5", - "inherits": "2.0.3" - }, - "dependencies": { - "fstream-ignore": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - }, - "dependencies": { - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "1.1.8" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - } - } - } - } - } - } - } - } - }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", @@ -1232,6 +1167,17 @@ "which": "1.3.0" }, "dependencies": { + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", diff --git a/package.json b/package.json index ac5ab9a9e..63a8d99aa 100644 --- a/package.json +++ b/package.json @@ -52,8 +52,6 @@ "editor": "~1.0.0", "fs-vacuum": "~1.2.10", "fs-write-stream-atomic": "~1.0.10", - "fstream": "~1.0.11", - "fstream-npm": "~1.2.1", "glob": "~7.1.2", "graceful-fs": "~4.1.11", "has-unicode": "~2.0.1", @@ -144,8 +142,6 @@ "editor", "fs-vacuum", "fs-write-stream-atomic", - "fstream", - "fstream-npm", "glob", "graceful-fs", "has-unicode", |