aboutsummaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/glob
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/glob')
-rw-r--r--deps/npm/node_modules/glob/README.md365
-rw-r--r--deps/npm/node_modules/glob/glob.js4
-rw-r--r--deps/npm/node_modules/glob/node_modules/minimatch/README.md11
-rw-r--r--deps/npm/node_modules/glob/node_modules/minimatch/minimatch.js57
-rw-r--r--deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md2
-rw-r--r--deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js11
-rw-r--r--deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md4
-rw-r--r--deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js2
-rw-r--r--deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json30
-rw-r--r--deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json28
-rw-r--r--deps/npm/node_modules/glob/node_modules/minimatch/package.json111
-rw-r--r--deps/npm/node_modules/glob/package.json56
12 files changed, 556 insertions, 125 deletions
diff --git a/deps/npm/node_modules/glob/README.md b/deps/npm/node_modules/glob/README.md
new file mode 100644
index 0000000000..9dd9384fa1
--- /dev/null
+++ b/deps/npm/node_modules/glob/README.md
@@ -0,0 +1,365 @@
+# Glob
+
+Match files using the patterns the shell uses, like stars and stuff.
+
+[![Build Status](https://travis-ci.org/isaacs/node-glob.svg?branch=master)](https://travis-ci.org/isaacs/node-glob/) [![Build Status](https://ci.appveyor.com/api/projects/status/kd7f3yftf7unxlsx?svg=true)](https://ci.appveyor.com/project/isaacs/node-glob) [![Coverage Status](https://coveralls.io/repos/isaacs/node-glob/badge.svg?branch=master&service=github)](https://coveralls.io/github/isaacs/node-glob?branch=master)
+
+This is a glob implementation in JavaScript. It uses the `minimatch`
+library to do its matching.
+
+![](oh-my-glob.gif)
+
+## Usage
+
+Install with npm
+
+```
+npm i glob
+```
+
+```javascript
+var glob = require("glob")
+
+// options is optional
+glob("**/*.js", options, function (er, files) {
+ // files is an array of filenames.
+ // If the `nonull` option is set, and nothing
+ // was found, then files is ["**/*.js"]
+ // er is an error object or null.
+})
+```
+
+## Glob Primer
+
+"Globs" are the patterns you type when you do stuff like `ls *.js` on
+the command line, or put `build/*` in a `.gitignore` file.
+
+Before parsing the path part patterns, braced sections are expanded
+into a set. Braced sections start with `{` and end with `}`, with any
+number of comma-delimited sections within. Braced sections may contain
+slash characters, so `a{/b/c,bcd}` would expand into `a/b/c` and `abcd`.
+
+The following characters have special magic meaning when used in a
+path portion:
+
+* `*` Matches 0 or more characters in a single path portion
+* `?` Matches 1 character
+* `[...]` Matches a range of characters, similar to a RegExp range.
+ If the first character of the range is `!` or `^` then it matches
+ any character not in the range.
+* `!(pattern|pattern|pattern)` Matches anything that does not match
+ any of the patterns provided.
+* `?(pattern|pattern|pattern)` Matches zero or one occurrence of the
+ patterns provided.
+* `+(pattern|pattern|pattern)` Matches one or more occurrences of the
+ patterns provided.
+* `*(a|b|c)` Matches zero or more occurrences of the patterns provided
+* `@(pattern|pat*|pat?erN)` Matches exactly one of the patterns
+ provided
+* `**` If a "globstar" is alone in a path portion, then it matches
+ zero or more directories and subdirectories searching for matches.
+ It does not crawl symlinked directories.
+
+### Dots
+
+If a file or directory path portion has a `.` as the first character,
+then it will not match any glob pattern unless that pattern's
+corresponding path part also has a `.` as its first character.
+
+For example, the pattern `a/.*/c` would match the file at `a/.b/c`.
+However the pattern `a/*/c` would not, because `*` does not start with
+a dot character.
+
+You can make glob treat dots as normal characters by setting
+`dot:true` in the options.
+
+### Basename Matching
+
+If you set `matchBase:true` in the options, and the pattern has no
+slashes in it, then it will seek for any file anywhere in the tree
+with a matching basename. For example, `*.js` would match
+`test/simple/basic.js`.
+
+### Empty Sets
+
+If no matching files are found, then an empty array is returned. This
+differs from the shell, where the pattern itself is returned. For
+example:
+
+ $ echo a*s*d*f
+ a*s*d*f
+
+To get the bash-style behavior, set the `nonull:true` in the options.
+
+### See Also:
+
+* `man sh`
+* `man bash` (Search for "Pattern Matching")
+* `man 3 fnmatch`
+* `man 5 gitignore`
+* [minimatch documentation](https://github.com/isaacs/minimatch)
+
+## glob.hasMagic(pattern, [options])
+
+Returns `true` if there are any special characters in the pattern, and
+`false` otherwise.
+
+Note that the options affect the results. If `noext:true` is set in
+the options object, then `+(a|b)` will not be considered a magic
+pattern. If the pattern has a brace expansion, like `a/{b/c,x/y}`
+then that is considered magical, unless `nobrace:true` is set in the
+options.
+
+## glob(pattern, [options], cb)
+
+* `pattern` `{String}` Pattern to be matched
+* `options` `{Object}`
+* `cb` `{Function}`
+ * `err` `{Error | null}`
+ * `matches` `{Array<String>}` filenames found matching the pattern
+
+Perform an asynchronous glob search.
+
+## glob.sync(pattern, [options])
+
+* `pattern` `{String}` Pattern to be matched
+* `options` `{Object}`
+* return: `{Array<String>}` filenames found matching the pattern
+
+Perform a synchronous glob search.
+
+## Class: glob.Glob
+
+Create a Glob object by instantiating the `glob.Glob` class.
+
+```javascript
+var Glob = require("glob").Glob
+var mg = new Glob(pattern, options, cb)
+```
+
+It's an EventEmitter, and starts walking the filesystem to find matches
+immediately.
+
+### new glob.Glob(pattern, [options], [cb])
+
+* `pattern` `{String}` pattern to search for
+* `options` `{Object}`
+* `cb` `{Function}` Called when an error occurs, or matches are found
+ * `err` `{Error | null}`
+ * `matches` `{Array<String>}` filenames found matching the pattern
+
+Note that if the `sync` flag is set in the options, then matches will
+be immediately available on the `g.found` member.
+
+### Properties
+
+* `minimatch` The minimatch object that the glob uses.
+* `options` The options object passed in.
+* `aborted` Boolean which is set to true when calling `abort()`. There
+ is no way at this time to continue a glob search after aborting, but
+ you can re-use the statCache to avoid having to duplicate syscalls.
+* `cache` Convenience object. Each field has the following possible
+ values:
+ * `false` - Path does not exist
+ * `true` - Path exists
+ * `'FILE'` - Path exists, and is not a directory
+ * `'DIR'` - Path exists, and is a directory
+ * `[file, entries, ...]` - Path exists, is a directory, and the
+ array value is the results of `fs.readdir`
+* `statCache` Cache of `fs.stat` results, to prevent statting the same
+ path multiple times.
+* `symlinks` A record of which paths are symbolic links, which is
+ relevant in resolving `**` patterns.
+* `realpathCache` An optional object which is passed to `fs.realpath`
+ to minimize unnecessary syscalls. It is stored on the instantiated
+ Glob object, and may be re-used.
+
+### Events
+
+* `end` When the matching is finished, this is emitted with all the
+ matches found. If the `nonull` option is set, and no match was found,
+ then the `matches` list contains the original pattern. The matches
+ are sorted, unless the `nosort` flag is set.
+* `match` Every time a match is found, this is emitted with the specific
+ thing that matched. It is not deduplicated or resolved to a realpath.
+* `error` Emitted when an unexpected error is encountered, or whenever
+ any fs error occurs if `options.strict` is set.
+* `abort` When `abort()` is called, this event is raised.
+
+### Methods
+
+* `pause` Temporarily stop the search
+* `resume` Resume the search
+* `abort` Stop the search forever
+
+### Options
+
+All the options that can be passed to Minimatch can also be passed to
+Glob to change pattern matching behavior. Also, some have been added,
+or have glob-specific ramifications.
+
+All options are false by default, unless otherwise noted.
+
+All options are added to the Glob object, as well.
+
+If you are running many `glob` operations, you can pass a Glob object
+as the `options` argument to a subsequent operation to shortcut some
+`stat` and `readdir` calls. At the very least, you may pass in shared
+`symlinks`, `statCache`, `realpathCache`, and `cache` options, so that
+parallel glob operations will be sped up by sharing information about
+the filesystem.
+
+* `cwd` The current working directory in which to search. Defaults
+ to `process.cwd()`.
+* `root` The place where patterns starting with `/` will be mounted
+ onto. Defaults to `path.resolve(options.cwd, "/")` (`/` on Unix
+ systems, and `C:\` or some such on Windows.)
+* `dot` Include `.dot` files in normal matches and `globstar` matches.
+ Note that an explicit dot in a portion of the pattern will always
+ match dot files.
+* `nomount` By default, a pattern starting with a forward-slash will be
+ "mounted" onto the root setting, so that a valid filesystem path is
+ returned. Set this flag to disable that behavior.
+* `mark` Add a `/` character to directory matches. Note that this
+ requires additional stat calls.
+* `nosort` Don't sort the results.
+* `stat` Set to true to stat *all* results. This reduces performance
+ somewhat, and is completely unnecessary, unless `readdir` is presumed
+ to be an untrustworthy indicator of file existence.
+* `silent` When an unusual error is encountered when attempting to
+ read a directory, a warning will be printed to stderr. Set the
+ `silent` option to true to suppress these warnings.
+* `strict` When an unusual error is encountered when attempting to
+ read a directory, the process will just continue on in search of
+ other matches. Set the `strict` option to raise an error in these
+ cases.
+* `cache` See `cache` property above. Pass in a previously generated
+ cache object to save some fs calls.
+* `statCache` A cache of results of filesystem information, to prevent
+ unnecessary stat calls. While it should not normally be necessary
+ to set this, you may pass the statCache from one glob() call to the
+ options object of another, if you know that the filesystem will not
+ change between calls. (See "Race Conditions" below.)
+* `symlinks` A cache of known symbolic links. You may pass in a
+ previously generated `symlinks` object to save `lstat` calls when
+ resolving `**` matches.
+* `sync` DEPRECATED: use `glob.sync(pattern, opts)` instead.
+* `nounique` In some cases, brace-expanded patterns can result in the
+ same file showing up multiple times in the result set. By default,
+ this implementation prevents duplicates in the result set. Set this
+ flag to disable that behavior.
+* `nonull` Set to never return an empty set, instead returning a set
+ containing the pattern itself. This is the default in glob(3).
+* `debug` Set to enable debug logging in minimatch and glob.
+* `nobrace` Do not expand `{a,b}` and `{1..3}` brace sets.
+* `noglobstar` Do not match `**` against multiple filenames. (Ie,
+ treat it as a normal `*` instead.)
+* `noext` Do not match `+(a|b)` "extglob" patterns.
+* `nocase` Perform a case-insensitive match. Note: on
+ case-insensitive filesystems, non-magic patterns will match by
+ default, since `stat` and `readdir` will not raise errors.
+* `matchBase` Perform a basename-only match if the pattern does not
+ contain any slash characters. That is, `*.js` would be treated as
+ equivalent to `**/*.js`, matching all js files in all directories.
+* `nodir` Do not match directories, only files. (Note: to match
+ *only* directories, simply put a `/` at the end of the pattern.)
+* `ignore` Add a pattern or an array of glob patterns to exclude matches.
+ Note: `ignore` patterns are *always* in `dot:true` mode, regardless
+ of any other settings.
+* `follow` Follow symlinked directories when expanding `**` patterns.
+ Note that this can result in a lot of duplicate references in the
+ presence of cyclic links.
+* `realpath` Set to true to call `fs.realpath` on all of the results.
+ In the case of a symlink that cannot be resolved, the full absolute
+ path to the matched entry is returned (though it will usually be a
+ broken symlink)
+
+## Comparisons to other fnmatch/glob implementations
+
+While strict compliance with the existing standards is a worthwhile
+goal, some discrepancies exist between node-glob and other
+implementations, and are intentional.
+
+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.3, 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.
+
+Note that symlinked directories are not crawled as part of a `**`,
+though their contents may match against subsequent portions of the
+pattern. This prevents infinite loops and duplicates and the like.
+
+If an escaped pattern has no matches, and the `nonull` flag is set,
+then glob returns the pattern as-provided, rather than
+interpreting the character escapes. For example,
+`glob.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.
+
+### Comments and Negation
+
+Previously, this module let you mark a pattern as a "comment" if it
+started with a `#` character, or a "negated" pattern if it started
+with a `!` character.
+
+These options were deprecated in version 5, and removed in version 6.
+
+To specify things that should not match, use the `ignore` option.
+
+## Windows
+
+**Please only use forward-slashes in glob expressions.**
+
+Though windows uses either `/` or `\` as its path separator, only `/`
+characters are used by this glob implementation. You must use
+forward-slashes **only** in glob expressions. Back-slashes will always
+be interpreted as escape characters, not path separators.
+
+Results from absolute patterns such as `/foo/*` are mounted onto the
+root setting using `path.join`. On windows, this will by default result
+in `/foo/*` matching `C:\foo\bar.txt`.
+
+## Race Conditions
+
+Glob searching, by its very nature, is susceptible to race conditions,
+since it relies on directory walking and such.
+
+As a result, it is possible that a file that exists when glob looks for
+it may have been deleted or modified by the time it returns the result.
+
+As part of its internal implementation, this program caches all stat
+and readdir calls that it makes, in order to cut down on system
+overhead. However, this also makes it even more susceptible to races,
+especially if the cache or statCache objects are reused between glob
+calls.
+
+Users are thus advised not to use a glob result as a guarantee of
+filesystem state in the face of rapid changes. For the vast majority
+of operations, this is never a problem.
+
+## Contributing
+
+Any change to behavior (including bugfixes) must come with a test.
+
+Patches that fail tests or reduce performance will be rejected.
+
+```
+# to run tests
+npm test
+
+# to re-generate test fixtures
+npm run test-regen
+
+# to benchmark against bash/zsh
+npm run bench
+
+# to profile javascript
+npm run prof
+```
diff --git a/deps/npm/node_modules/glob/glob.js b/deps/npm/node_modules/glob/glob.js
index 02d15b755d..9eca910bb0 100644
--- a/deps/npm/node_modules/glob/glob.js
+++ b/deps/npm/node_modules/glob/glob.js
@@ -100,6 +100,10 @@ glob.hasMagic = function (pattern, options_) {
var g = new Glob(pattern, options)
var set = g.minimatch.set
+
+ if (!pattern)
+ return false
+
if (set.length > 1)
return true
diff --git a/deps/npm/node_modules/glob/node_modules/minimatch/README.md b/deps/npm/node_modules/glob/node_modules/minimatch/README.md
index d458bc2e0a..ad72b8133e 100644
--- a/deps/npm/node_modules/glob/node_modules/minimatch/README.md
+++ b/deps/npm/node_modules/glob/node_modules/minimatch/README.md
@@ -2,7 +2,7 @@
A minimal matching utility.
-[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch)
+[![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.
@@ -37,7 +37,7 @@ See:
## Minimatch Class
-Create a minimatch object by instanting the `minimatch.Minimatch` class.
+Create a minimatch object by instantiating the `minimatch.Minimatch` class.
```javascript
var Minimatch = require("minimatch").Minimatch
@@ -82,13 +82,6 @@ var mm = new Minimatch(pattern, options)
All other methods are internal, and will be called as necessary.
-## Functions
-
-The top-level exported function has a `cache` property, which is an LRU
-cache set to store 100 items. So, calling these methods repeatedly
-with the same pattern and options will use the same Minimatch object,
-saving the cost of parsing it multiple times.
-
### minimatch(path, pattern, options)
Main export. Tests a path against the pattern using the options.
diff --git a/deps/npm/node_modules/glob/node_modules/minimatch/minimatch.js b/deps/npm/node_modules/glob/node_modules/minimatch/minimatch.js
index ec4c05c570..5b5f8cf444 100644
--- a/deps/npm/node_modules/glob/node_modules/minimatch/minimatch.js
+++ b/deps/npm/node_modules/glob/node_modules/minimatch/minimatch.js
@@ -9,6 +9,14 @@ try {
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 = '[^/]'
@@ -235,7 +243,7 @@ function braceExpand (pattern, options) {
? this.pattern : pattern
if (typeof pattern === 'undefined') {
- throw new Error('undefined pattern')
+ throw new TypeError('undefined pattern')
}
if (options.nobrace ||
@@ -261,6 +269,10 @@ function braceExpand (pattern, options) {
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
@@ -273,7 +285,6 @@ function parse (pattern, isSub) {
// ? => one single character
var patternListStack = []
var negativeLists = []
- var plType
var stateChar
var inClass = false
var reClassStart = -1
@@ -372,11 +383,12 @@ function parse (pattern, isSub) {
continue
}
- plType = stateChar
patternListStack.push({
- type: plType,
+ type: stateChar,
start: i - 1,
- reStart: re.length
+ reStart: re.length,
+ open: plTypes[stateChar].open,
+ close: plTypes[stateChar].close
})
// negation is (?:(?!js)[^/]*)
re += stateChar === '!' ? '(?:(?!(?:' : '(?:'
@@ -392,24 +404,14 @@ function parse (pattern, isSub) {
clearStateChar()
hasMagic = true
- re += ')'
var pl = patternListStack.pop()
- plType = pl.type
// negation is (?:(?!js)[^/]*)
// The others are (?:<pattern>)<type>
- switch (plType) {
- case '!':
- negativeLists.push(pl)
- re += ')[^/]*?)'
- pl.reEnd = re.length
- break
- case '?':
- case '+':
- case '*':
- re += plType
- break
- case '@': break // the default anyway
+ re += pl.close
+ if (pl.type === '!') {
+ negativeLists.push(pl)
}
+ pl.reEnd = re.length
continue
case '|':
@@ -516,9 +518,10 @@ function parse (pattern, isSub) {
// 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 + 3)
+ 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})*)(\\?)\|/g, function (_, $1, $2) {
+ tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) {
if (!$2) {
// the | isn't already escaped, so escape it.
$2 = '\\'
@@ -533,7 +536,7 @@ function parse (pattern, isSub) {
return $1 + $1 + $2 + '|'
})
- this.debug('tail=%j\n %s', tail, tail)
+ this.debug('tail=%j\n %s', tail, tail, pl, re)
var t = pl.type === '*' ? star
: pl.type === '?' ? qmark
: '\\' + pl.type
@@ -615,7 +618,15 @@ function parse (pattern, isSub) {
}
var flags = options.nocase ? 'i' : ''
- var regExp = new RegExp('^' + re + '$', flags)
+ 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
diff --git a/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md b/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md
index b0d793ed5d..179392978d 100644
--- a/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md
+++ b/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md
@@ -1,6 +1,6 @@
# brace-expansion
-[Brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html),
+[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)
diff --git a/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js b/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js
index abe535df32..955f27c817 100644
--- a/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js
+++ b/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js
@@ -66,6 +66,16 @@ 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);
}
@@ -188,3 +198,4 @@ function expand(str, isTop) {
return expansions;
}
+
diff --git a/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md b/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md
index d6880b2f36..08e918c0db 100644
--- a/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md
+++ b/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md
@@ -47,7 +47,7 @@ object with those keys:
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', '']`.
+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)
@@ -56,7 +56,7 @@ 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 ]`.
+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
diff --git a/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js b/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js
index 4670f7f79f..e8d8587020 100644
--- a/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js
+++ b/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js
@@ -30,7 +30,7 @@ function range(a, b, str) {
begs = [];
left = str.length;
- while (i < str.length && i >= 0 && ! result) {
+ while (i >= 0 && !result) {
if (i == ai) {
begs.push(i);
ai = str.indexOf(a, i + 1);
diff --git a/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json b/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json
index 208e61972b..737524518e 100644
--- a/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json
+++ b/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json
@@ -4,6 +4,7 @@
{
"raw": "balanced-match@^0.4.1",
"scope": null,
+ "escapedName": "balanced-match",
"name": "balanced-match",
"rawSpec": "^0.4.1",
"spec": ">=0.4.1 <0.5.0",
@@ -13,34 +14,35 @@
]
],
"_from": "balanced-match@>=0.4.1 <0.5.0",
- "_id": "balanced-match@0.4.1",
+ "_id": "balanced-match@0.4.2",
"_inCache": true,
"_installable": true,
- "_location": "/glob/minimatch/brace-expansion/balanced-match",
- "_nodeVersion": "6.0.0",
+ "_location": "/minimatch/brace-expansion/balanced-match",
+ "_nodeVersion": "4.4.7",
"_npmOperationalInternal": {
- "host": "packages-12-west.internal.npmjs.com",
- "tmp": "tmp/balanced-match-0.4.1.tgz_1462129663650_0.39764496590942144"
+ "host": "packages-16-east.internal.npmjs.com",
+ "tmp": "tmp/balanced-match-0.4.2.tgz_1468834991581_0.6590619895141572"
},
"_npmUser": {
"name": "juliangruber",
"email": "julian@juliangruber.com"
},
- "_npmVersion": "3.8.6",
+ "_npmVersion": "2.15.8",
"_phantomChildren": {},
"_requested": {
"raw": "balanced-match@^0.4.1",
"scope": null,
+ "escapedName": "balanced-match",
"name": "balanced-match",
"rawSpec": "^0.4.1",
"spec": ">=0.4.1 <0.5.0",
"type": "range"
},
"_requiredBy": [
- "/glob/minimatch/brace-expansion"
+ "/minimatch/brace-expansion"
],
- "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz",
- "_shasum": "19053e2e0748eadb379da6c09d455cf5e1039335",
+ "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
+ "_shasum": "cb3f3e3c732dc0f01ee70b403f302e61d7709838",
"_shrinkwrap": null,
"_spec": "balanced-match@^0.4.1",
"_where": "/Users/rebecca/code/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion",
@@ -55,14 +57,14 @@
"dependencies": {},
"description": "Match balanced character pairs, like \"{\" and \"}\"",
"devDependencies": {
- "tape": "~4.5.0"
+ "tape": "^4.6.0"
},
"directories": {},
"dist": {
- "shasum": "19053e2e0748eadb379da6c09d455cf5e1039335",
- "tarball": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz"
+ "shasum": "cb3f3e3c732dc0f01ee70b403f302e61d7709838",
+ "tarball": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz"
},
- "gitHead": "7004b289baaaab6a832f4901735e29d37cc2a863",
+ "gitHead": "57c2ea29d89a2844ae3bdcc637c6e2cbb73725e2",
"homepage": "https://github.com/juliangruber/balanced-match",
"keywords": [
"match",
@@ -105,5 +107,5 @@
"android-browser/4.2..latest"
]
},
- "version": "0.4.1"
+ "version": "0.4.2"
}
diff --git a/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json b/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json
index 3ffc8da5c0..6621b37b07 100644
--- a/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json
+++ b/deps/npm/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json
@@ -4,6 +4,7 @@
{
"raw": "brace-expansion@^1.0.0",
"scope": null,
+ "escapedName": "brace-expansion",
"name": "brace-expansion",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
@@ -13,34 +14,35 @@
]
],
"_from": "brace-expansion@>=1.0.0 <2.0.0",
- "_id": "brace-expansion@1.1.5",
+ "_id": "brace-expansion@1.1.6",
"_inCache": true,
"_installable": true,
- "_location": "/glob/minimatch/brace-expansion",
- "_nodeVersion": "4.4.5",
+ "_location": "/minimatch/brace-expansion",
+ "_nodeVersion": "4.4.7",
"_npmOperationalInternal": {
"host": "packages-16-east.internal.npmjs.com",
- "tmp": "tmp/brace-expansion-1.1.5.tgz_1465989660138_0.34528115345165133"
+ "tmp": "tmp/brace-expansion-1.1.6.tgz_1469047715600_0.9362958471756428"
},
"_npmUser": {
"name": "juliangruber",
"email": "julian@juliangruber.com"
},
- "_npmVersion": "2.15.5",
+ "_npmVersion": "2.15.8",
"_phantomChildren": {},
"_requested": {
"raw": "brace-expansion@^1.0.0",
"scope": null,
+ "escapedName": "brace-expansion",
"name": "brace-expansion",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"_requiredBy": [
- "/glob/minimatch"
+ "/minimatch"
],
- "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.5.tgz",
- "_shasum": "f5b4ad574e2cb7ccc1eb83e6fe79b8ecadf7a526",
+ "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz",
+ "_shasum": "7197d7eaa9b87e648390ea61fc66c84427420df9",
"_shrinkwrap": null,
"_spec": "brace-expansion@^1.0.0",
"_where": "/Users/rebecca/code/npm/node_modules/glob/node_modules/minimatch",
@@ -58,14 +60,14 @@
},
"description": "Brace expansion as known from sh/bash",
"devDependencies": {
- "tape": "4.5.1"
+ "tape": "^4.6.0"
},
"directories": {},
"dist": {
- "shasum": "f5b4ad574e2cb7ccc1eb83e6fe79b8ecadf7a526",
- "tarball": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.5.tgz"
+ "shasum": "7197d7eaa9b87e648390ea61fc66c84427420df9",
+ "tarball": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz"
},
- "gitHead": "ff31acab078f1bb696ac4c55ca56ea24e6495fb6",
+ "gitHead": "791262fa06625e9c5594cde529a21d82086af5f2",
"homepage": "https://github.com/juliangruber/brace-expansion",
"keywords": [],
"license": "MIT",
@@ -107,5 +109,5 @@
"android-browser/4.2..latest"
]
},
- "version": "1.1.5"
+ "version": "1.1.6"
}
diff --git a/deps/npm/node_modules/glob/node_modules/minimatch/package.json b/deps/npm/node_modules/glob/node_modules/minimatch/package.json
index 4944eb0bcc..eddb36b48e 100644
--- a/deps/npm/node_modules/glob/node_modules/minimatch/package.json
+++ b/deps/npm/node_modules/glob/node_modules/minimatch/package.json
@@ -1,60 +1,99 @@
{
+ "_args": [
+ [
+ {
+ "raw": "minimatch@^3.0.2",
+ "scope": null,
+ "escapedName": "minimatch",
+ "name": "minimatch",
+ "rawSpec": "^3.0.2",
+ "spec": ">=3.0.2 <4.0.0",
+ "type": "range"
+ },
+ "/Users/rebecca/code/npm/node_modules/glob"
+ ]
+ ],
+ "_from": "minimatch@>=3.0.2 <4.0.0",
+ "_id": "minimatch@3.0.3",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/minimatch",
+ "_nodeVersion": "4.4.4",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/minimatch-3.0.3.tgz_1470678322731_0.1892083385027945"
+ },
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "_npmVersion": "3.10.6",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "minimatch@^3.0.2",
+ "scope": null,
+ "escapedName": "minimatch",
+ "name": "minimatch",
+ "rawSpec": "^3.0.2",
+ "spec": ">=3.0.2 <4.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "#USER",
+ "/"
+ ],
+ "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz",
+ "_shasum": "2a4e4090b96b2db06a9d7df01055a62a77c9b774",
+ "_shrinkwrap": null,
+ "_spec": "minimatch@^3.0.2",
+ "_where": "/Users/rebecca/code/npm/node_modules/glob",
"author": {
"name": "Isaac Z. Schlueter",
"email": "i@izs.me",
"url": "http://blog.izs.me"
},
- "name": "minimatch",
- "description": "a glob matcher in javascript",
- "version": "3.0.0",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/minimatch.git"
- },
- "main": "minimatch.js",
- "scripts": {
- "posttest": "standard minimatch.js test/*.js",
- "test": "tap test/*.js"
- },
- "engines": {
- "node": "*"
+ "bugs": {
+ "url": "https://github.com/isaacs/minimatch/issues"
},
"dependencies": {
"brace-expansion": "^1.0.0"
},
+ "description": "a glob matcher in javascript",
"devDependencies": {
"standard": "^3.7.2",
- "tap": "^1.2.0"
+ "tap": "^5.6.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "2a4e4090b96b2db06a9d7df01055a62a77c9b774",
+ "tarball": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz"
+ },
+ "engines": {
+ "node": "*"
},
- "license": "ISC",
"files": [
"minimatch.js"
],
- "gitHead": "270dbea567f0af6918cb18103e98c612aa717a20",
- "bugs": {
- "url": "https://github.com/isaacs/minimatch/issues"
- },
+ "gitHead": "eed89491bd4a4e6bc463aac0dfb5c29ef0d1dc13",
"homepage": "https://github.com/isaacs/minimatch#readme",
- "_id": "minimatch@3.0.0",
- "_shasum": "5236157a51e4f004c177fb3c527ff7dd78f0ef83",
- "_from": "minimatch@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0",
- "_npmVersion": "3.3.2",
- "_nodeVersion": "4.0.0",
- "_npmUser": {
- "name": "isaacs",
- "email": "isaacs@npmjs.com"
- },
- "dist": {
- "shasum": "5236157a51e4f004c177fb3c527ff7dd78f0ef83",
- "tarball": "http://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz"
- },
+ "license": "ISC",
+ "main": "minimatch.js",
"maintainers": [
{
"name": "isaacs",
"email": "i@izs.me"
}
],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz",
- "readme": "ERROR: No README data found!"
+ "name": "minimatch",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/isaacs/minimatch.git"
+ },
+ "scripts": {
+ "posttest": "standard minimatch.js test/*.js",
+ "test": "tap test/*.js"
+ },
+ "version": "3.0.3"
}
diff --git a/deps/npm/node_modules/glob/package.json b/deps/npm/node_modules/glob/package.json
index 253686f9b4..66ce2c9246 100644
--- a/deps/npm/node_modules/glob/package.json
+++ b/deps/npm/node_modules/glob/package.json
@@ -2,51 +2,55 @@
"_args": [
[
{
- "raw": "glob@~7.0.3",
+ "raw": "glob@7.0.6",
"scope": null,
+ "escapedName": "glob",
"name": "glob",
- "rawSpec": "~7.0.3",
- "spec": ">=7.0.3 <7.1.0",
- "type": "range"
+ "rawSpec": "7.0.6",
+ "spec": "7.0.6",
+ "type": "version"
},
- "/Users/rebecca/code/npm"
+ "/Users/zkat/Documents/code/npm"
]
],
- "_from": "glob@>=7.0.3 <7.1.0",
- "_id": "glob@7.0.4",
+ "_from": "glob@7.0.6",
+ "_id": "glob@7.0.6",
"_inCache": true,
- "_installable": true,
"_location": "/glob",
- "_nodeVersion": "6.2.1",
+ "_nodeVersion": "4.5.0",
"_npmOperationalInternal": {
- "host": "packages-12-west.internal.npmjs.com",
- "tmp": "tmp/glob-7.0.4.tgz_1466098181857_0.6043217403348535"
+ "host": "packages-16-east.internal.npmjs.com",
+ "tmp": "tmp/glob-7.0.6.tgz_1472074762911_0.47247025789693"
},
"_npmUser": {
"name": "isaacs",
"email": "i@izs.me"
},
- "_npmVersion": "3.9.3",
+ "_npmVersion": "3.10.7",
"_phantomChildren": {},
"_requested": {
- "raw": "glob@~7.0.3",
+ "raw": "glob@7.0.6",
"scope": null,
+ "escapedName": "glob",
"name": "glob",
- "rawSpec": "~7.0.3",
- "spec": ">=7.0.3 <7.1.0",
- "type": "range"
+ "rawSpec": "7.0.6",
+ "spec": "7.0.6",
+ "type": "version"
},
"_requiredBy": [
"#USER",
"/",
+ "/node-gyp",
"/rimraf",
- "/tap"
+ "/standard/standard-engine/deglob",
+ "/tap",
+ "/tap/tap-mocha-reporter"
],
- "_resolved": "https://registry.npmjs.org/glob/-/glob-7.0.4.tgz",
- "_shasum": "3b44afa0943bdc31b2037b934791e2e084bcb7f6",
+ "_resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
+ "_shasum": "211bafaf49e525b8cd93260d14ab136152b3f57a",
"_shrinkwrap": null,
- "_spec": "glob@~7.0.3",
- "_where": "/Users/rebecca/code/npm",
+ "_spec": "glob@7.0.6",
+ "_where": "/Users/zkat/Documents/code/npm",
"author": {
"name": "Isaac Z. Schlueter",
"email": "i@izs.me",
@@ -59,7 +63,7 @@
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
- "minimatch": "2 || 3",
+ "minimatch": "^3.0.2",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
},
@@ -72,8 +76,8 @@
},
"directories": {},
"dist": {
- "shasum": "3b44afa0943bdc31b2037b934791e2e084bcb7f6",
- "tarball": "https://registry.npmjs.org/glob/-/glob-7.0.4.tgz"
+ "shasum": "211bafaf49e525b8cd93260d14ab136152b3f57a",
+ "tarball": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz"
},
"engines": {
"node": "*"
@@ -83,7 +87,7 @@
"sync.js",
"common.js"
],
- "gitHead": "3f883c43fec4f8046cbea9497add3b8ba4ef0a37",
+ "gitHead": "98327d8def195b1ba200217952df8ea829426038",
"homepage": "https://github.com/isaacs/node-glob#readme",
"license": "ISC",
"main": "glob.js",
@@ -109,5 +113,5 @@
"test": "tap test/*.js --cov",
"test-regen": "npm run profclean && TEST_REGEN=1 node test/00-setup.js"
},
- "version": "7.0.4"
+ "version": "7.0.6"
}