Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorForrest L Norvell <forrest@npmjs.com>2015-04-03 04:22:45 +0300
committerForrest L Norvell <forrest@npmjs.com>2015-04-03 04:22:45 +0300
commitda015eee45f6daf384598151d06a9b57ffce136e (patch)
treeecf20bb3e2749c75e8e49caceb958e94ee115d2b /node_modules/read-package-json
parent1349e27c936a8b0fc9f6440a6d6404ef3b19c587 (diff)
read-package-json@1.3.3
Eliminates caching of package.json files, which in turn eliminates a class of liveness problems / incomplete cache invalidation bugs / race conditions. Also took this opportunity to standardize the file. Closes #7074.
Diffstat (limited to 'node_modules/read-package-json')
-rw-r--r--node_modules/read-package-json/node_modules/glob/LICENSE15
-rw-r--r--node_modules/read-package-json/node_modules/glob/README.md369
-rw-r--r--node_modules/read-package-json/node_modules/glob/common.js237
-rw-r--r--node_modules/read-package-json/node_modules/glob/glob.js740
-rw-r--r--node_modules/read-package-json/node_modules/glob/package.json72
-rw-r--r--node_modules/read-package-json/node_modules/glob/sync.js457
-rw-r--r--node_modules/read-package-json/package.json43
-rw-r--r--node_modules/read-package-json/read-json.js615
-rw-r--r--node_modules/read-package-json/test/basic.js75
-rw-r--r--node_modules/read-package-json/test/bin.js68
-rw-r--r--node_modules/read-package-json/test/bom.js31
-rw-r--r--node_modules/read-package-json/test/helpful.js25
-rw-r--r--node_modules/read-package-json/test/non-json.js74
-rw-r--r--node_modules/read-package-json/test/readmes.js41
14 files changed, 459 insertions, 2403 deletions
diff --git a/node_modules/read-package-json/node_modules/glob/LICENSE b/node_modules/read-package-json/node_modules/glob/LICENSE
deleted file mode 100644
index 19129e315..000000000
--- a/node_modules/read-package-json/node_modules/glob/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/read-package-json/node_modules/glob/README.md b/node_modules/read-package-json/node_modules/glob/README.md
deleted file mode 100644
index 258257ecb..000000000
--- a/node_modules/read-package-json/node_modules/glob/README.md
+++ /dev/null
@@ -1,369 +0,0 @@
-[![Build Status](https://travis-ci.org/isaacs/node-glob.svg?branch=master)](https://travis-ci.org/isaacs/node-glob/) [![Dependency Status](https://david-dm.org/isaacs/node-glob.svg)](https://david-dm.org/isaacs/node-glob) [![devDependency Status](https://david-dm.org/isaacs/node-glob/dev-status.svg)](https://david-dm.org/isaacs/node-glob#info=devDependencies) [![optionalDependency Status](https://david-dm.org/isaacs/node-glob/optional-status.svg)](https://david-dm.org/isaacs/node-glob#info=optionalDependencies)
-
-# Glob
-
-Match files using the patterns the shell uses, like stars and stuff.
-
-This is a glob implementation in JavaScript. It uses the `minimatch`
-library to do its matching.
-
-![](oh-my-glob.gif)
-
-## Usage
-
-```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`.
-
-### Negation
-
-The intent for negation would be for a pattern starting with `!` to
-match everything that *doesn't* match the supplied pattern. However,
-the implementation is weird, and for the time being, this should be
-avoided. The behavior will change or be deprecated in version 5.
-
-### 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.
-* `statCache` Collection of all the stat results the glob search
- performed.
-* `cache` Convenience object. Each field has the following possible
- values:
- * `false` - Path does not exist
- * `true` - Path exists
- * `'DIR'` - Path exists, and is not a directory
- * `'FILE'` - 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 matched.
-* `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.
-* `nonegate` Suppress `negate` behavior. (See below.)
-* `nocomment` Suppress `comment` behavior. (See below.)
-* `nonull` Return the pattern when no matches are found.
-* `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 patterns to exclude matches.
-* `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.
-
-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.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.
-
-## 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/node_modules/read-package-json/node_modules/glob/common.js b/node_modules/read-package-json/node_modules/glob/common.js
deleted file mode 100644
index cd7c82448..000000000
--- a/node_modules/read-package-json/node_modules/glob/common.js
+++ /dev/null
@@ -1,237 +0,0 @@
-exports.alphasort = alphasort
-exports.alphasorti = alphasorti
-exports.isAbsolute = process.platform === "win32" ? absWin : absUnix
-exports.setopts = setopts
-exports.ownProp = ownProp
-exports.makeAbs = makeAbs
-exports.finish = finish
-exports.mark = mark
-exports.isIgnored = isIgnored
-exports.childrenIgnored = childrenIgnored
-
-function ownProp (obj, field) {
- return Object.prototype.hasOwnProperty.call(obj, field)
-}
-
-var path = require("path")
-var minimatch = require("minimatch")
-var Minimatch = minimatch.Minimatch
-
-function absWin (p) {
- if (absUnix(p)) return true
- // pull off the device/UNC bit from a windows path.
- // from node's lib/path.js
- var splitDeviceRe =
- /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/
- var result = splitDeviceRe.exec(p)
- var device = result[1] || ''
- var isUnc = device && device.charAt(1) !== ':'
- var isAbsolute = !!result[2] || isUnc // UNC paths are always absolute
-
- return isAbsolute
-}
-
-function absUnix (p) {
- return p.charAt(0) === "/" || p === ""
-}
-
-function alphasorti (a, b) {
- return a.toLowerCase().localeCompare(b.toLowerCase())
-}
-
-function alphasort (a, b) {
- return a.localeCompare(b)
-}
-
-function setupIgnores (self, options) {
- self.ignore = options.ignore || []
-
- if (!Array.isArray(self.ignore))
- self.ignore = [self.ignore]
-
- if (self.ignore.length) {
- self.ignore = self.ignore.map(ignoreMap)
- }
-}
-
-function ignoreMap (pattern) {
- var gmatcher = null
- if (pattern.slice(-3) === '/**') {
- var gpattern = pattern.replace(/(\/\*\*)+$/, '')
- gmatcher = new Minimatch(gpattern, { nonegate: true })
- }
-
- return {
- matcher: new Minimatch(pattern, { nonegate: true }),
- gmatcher: gmatcher
- }
-}
-
-function setopts (self, pattern, options) {
- if (!options)
- options = {}
-
- // base-matching: just use globstar for that.
- if (options.matchBase && -1 === pattern.indexOf("/")) {
- if (options.noglobstar) {
- throw new Error("base matching requires globstar")
- }
- pattern = "**/" + pattern
- }
-
- self.pattern = pattern
- self.strict = options.strict !== false
- self.realpath = !!options.realpath
- self.realpathCache = options.realpathCache || Object.create(null)
- self.follow = !!options.follow
- self.dot = !!options.dot
- self.mark = !!options.mark
- self.nodir = !!options.nodir
- if (self.nodir)
- self.mark = true
- self.sync = !!options.sync
- self.nounique = !!options.nounique
- self.nonull = !!options.nonull
- self.nosort = !!options.nosort
- self.nocase = !!options.nocase
- self.stat = !!options.stat
- self.noprocess = !!options.noprocess
-
- self.maxLength = options.maxLength || Infinity
- self.cache = options.cache || Object.create(null)
- self.statCache = options.statCache || Object.create(null)
- self.symlinks = options.symlinks || Object.create(null)
-
- setupIgnores(self, options)
-
- self.changedCwd = false
- var cwd = process.cwd()
- if (!ownProp(options, "cwd"))
- self.cwd = cwd
- else {
- self.cwd = options.cwd
- self.changedCwd = path.resolve(options.cwd) !== cwd
- }
-
- self.root = options.root || path.resolve(self.cwd, "/")
- self.root = path.resolve(self.root)
- if (process.platform === "win32")
- self.root = self.root.replace(/\\/g, "/")
-
- self.nomount = !!options.nomount
-
- self.minimatch = new Minimatch(pattern, options)
- self.options = self.minimatch.options
-}
-
-function finish (self) {
- var nou = self.nounique
- var all = nou ? [] : Object.create(null)
-
- for (var i = 0, l = self.matches.length; i < l; i ++) {
- var matches = self.matches[i]
- if (!matches || Object.keys(matches).length === 0) {
- if (self.nonull) {
- // do like the shell, and spit out the literal glob
- var literal = self.minimatch.globSet[i]
- if (nou)
- all.push(literal)
- else
- all[literal] = true
- }
- } else {
- // had matches
- var m = Object.keys(matches)
- if (nou)
- all.push.apply(all, m)
- else
- m.forEach(function (m) {
- all[m] = true
- })
- }
- }
-
- if (!nou)
- all = Object.keys(all)
-
- if (!self.nosort)
- all = all.sort(self.nocase ? alphasorti : alphasort)
-
- // at *some* point we statted all of these
- if (self.mark) {
- for (var i = 0; i < all.length; i++) {
- all[i] = self._mark(all[i])
- }
- if (self.nodir) {
- all = all.filter(function (e) {
- return !(/\/$/.test(e))
- })
- }
- }
-
- if (self.ignore.length)
- all = all.filter(function(m) {
- return !isIgnored(self, m)
- })
-
- self.found = all
-}
-
-function mark (self, p) {
- var abs = makeAbs(self, p)
- var c = self.cache[abs]
- var m = p
- if (c) {
- var isDir = c === 'DIR' || Array.isArray(c)
- var slash = p.slice(-1) === '/'
-
- if (isDir && !slash)
- m += '/'
- else if (!isDir && slash)
- m = m.slice(0, -1)
-
- if (m !== p) {
- var mabs = makeAbs(self, m)
- self.statCache[mabs] = self.statCache[abs]
- self.cache[mabs] = self.cache[abs]
- }
- }
-
- return m
-}
-
-// lotta situps...
-function makeAbs (self, f) {
- var abs = f
- if (f.charAt(0) === '/') {
- abs = path.join(self.root, f)
- } else if (exports.isAbsolute(f)) {
- abs = f
- } else if (self.changedCwd) {
- abs = path.resolve(self.cwd, f)
- } else if (self.realpath) {
- abs = path.resolve(f)
- }
- return abs
-}
-
-
-// Return true, if pattern ends with globstar '**', for the accompanying parent directory.
-// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents
-function isIgnored (self, path) {
- if (!self.ignore.length)
- return false
-
- return self.ignore.some(function(item) {
- return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))
- })
-}
-
-function childrenIgnored (self, path) {
- if (!self.ignore.length)
- return false
-
- return self.ignore.some(function(item) {
- return !!(item.gmatcher && item.gmatcher.match(path))
- })
-}
diff --git a/node_modules/read-package-json/node_modules/glob/glob.js b/node_modules/read-package-json/node_modules/glob/glob.js
deleted file mode 100644
index eac0693cc..000000000
--- a/node_modules/read-package-json/node_modules/glob/glob.js
+++ /dev/null
@@ -1,740 +0,0 @@
-// Approach:
-//
-// 1. Get the minimatch set
-// 2. For each pattern in the set, PROCESS(pattern, false)
-// 3. Store matches per-set, then uniq them
-//
-// PROCESS(pattern, inGlobStar)
-// Get the first [n] items from pattern that are all strings
-// Join these together. This is PREFIX.
-// If there is no more remaining, then stat(PREFIX) and
-// add to matches if it succeeds. END.
-//
-// If inGlobStar and PREFIX is symlink and points to dir
-// set ENTRIES = []
-// else readdir(PREFIX) as ENTRIES
-// If fail, END
-//
-// with ENTRIES
-// If pattern[n] is GLOBSTAR
-// // handle the case where the globstar match is empty
-// // by pruning it out, and testing the resulting pattern
-// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)
-// // handle other cases.
-// for ENTRY in ENTRIES (not dotfiles)
-// // attach globstar + tail onto the entry
-// // Mark that this entry is a globstar match
-// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)
-//
-// else // not globstar
-// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)
-// Test ENTRY against pattern[n]
-// If fails, continue
-// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])
-//
-// Caveat:
-// Cache all stats and readdirs results to minimize syscall. Since all
-// we ever care about is existence and directory-ness, we can just keep
-// `true` for files, and [children,...] for directories, or `false` for
-// things that don't exist.
-
-module.exports = glob
-
-var fs = require('fs')
-var minimatch = require('minimatch')
-var Minimatch = minimatch.Minimatch
-var inherits = require('inherits')
-var EE = require('events').EventEmitter
-var path = require('path')
-var assert = require('assert')
-var globSync = require('./sync.js')
-var common = require('./common.js')
-var alphasort = common.alphasort
-var alphasorti = common.alphasorti
-var isAbsolute = common.isAbsolute
-var setopts = common.setopts
-var ownProp = common.ownProp
-var inflight = require('inflight')
-var util = require('util')
-var childrenIgnored = common.childrenIgnored
-
-var once = require('once')
-
-function glob (pattern, options, cb) {
- if (typeof options === 'function') cb = options, options = {}
- if (!options) options = {}
-
- if (options.sync) {
- if (cb)
- throw new TypeError('callback provided to sync glob')
- return globSync(pattern, options)
- }
-
- return new Glob(pattern, options, cb)
-}
-
-glob.sync = globSync
-var GlobSync = glob.GlobSync = globSync.GlobSync
-
-// old api surface
-glob.glob = glob
-
-glob.hasMagic = function (pattern, options_) {
- var options = util._extend({}, options_)
- options.noprocess = true
-
- var g = new Glob(pattern, options)
- var set = g.minimatch.set
- if (set.length > 1)
- return true
-
- for (var j = 0; j < set[0].length; j++) {
- if (typeof set[0][j] !== 'string')
- return true
- }
-
- return false
-}
-
-glob.Glob = Glob
-inherits(Glob, EE)
-function Glob (pattern, options, cb) {
- if (typeof options === 'function') {
- cb = options
- options = null
- }
-
- if (options && options.sync) {
- if (cb)
- throw new TypeError('callback provided to sync glob')
- return new GlobSync(pattern, options)
- }
-
- if (!(this instanceof Glob))
- return new Glob(pattern, options, cb)
-
- setopts(this, pattern, options)
- this._didRealPath = false
-
- // process each pattern in the minimatch set
- var n = this.minimatch.set.length
-
- // The matches are stored as {<filename>: true,...} so that
- // duplicates are automagically pruned.
- // Later, we do an Object.keys() on these.
- // Keep them as a list so we can fill in when nonull is set.
- this.matches = new Array(n)
-
- if (typeof cb === 'function') {
- cb = once(cb)
- this.on('error', cb)
- this.on('end', function (matches) {
- cb(null, matches)
- })
- }
-
- var self = this
- var n = this.minimatch.set.length
- this._processing = 0
- this.matches = new Array(n)
-
- this._emitQueue = []
- this._processQueue = []
- this.paused = false
-
- if (this.noprocess)
- return this
-
- if (n === 0)
- return done()
-
- for (var i = 0; i < n; i ++) {
- this._process(this.minimatch.set[i], i, false, done)
- }
-
- function done () {
- --self._processing
- if (self._processing <= 0)
- self._finish()
- }
-}
-
-Glob.prototype._finish = function () {
- assert(this instanceof Glob)
- if (this.aborted)
- return
-
- if (this.realpath && !this._didRealpath)
- return this._realpath()
-
- common.finish(this)
- this.emit('end', this.found)
-}
-
-Glob.prototype._realpath = function () {
- if (this._didRealpath)
- return
-
- this._didRealpath = true
-
- var n = this.matches.length
- if (n === 0)
- return this._finish()
-
- var self = this
- for (var i = 0; i < this.matches.length; i++)
- this._realpathSet(i, next)
-
- function next () {
- if (--n === 0)
- self._finish()
- }
-}
-
-Glob.prototype._realpathSet = function (index, cb) {
- var matchset = this.matches[index]
- if (!matchset)
- return cb()
-
- var found = Object.keys(matchset)
- var self = this
- var n = found.length
-
- if (n === 0)
- return cb()
-
- var set = this.matches[index] = Object.create(null)
- found.forEach(function (p, i) {
- // If there's a problem with the stat, then it means that
- // one or more of the links in the realpath couldn't be
- // resolved. just return the abs value in that case.
- p = self._makeAbs(p)
- fs.realpath(p, self.realpathCache, function (er, real) {
- if (!er)
- set[real] = true
- else if (er.syscall === 'stat')
- set[p] = true
- else
- self.emit('error', er) // srsly wtf right here
-
- if (--n === 0) {
- self.matches[index] = set
- cb()
- }
- })
- })
-}
-
-Glob.prototype._mark = function (p) {
- return common.mark(this, p)
-}
-
-Glob.prototype._makeAbs = function (f) {
- return common.makeAbs(this, f)
-}
-
-Glob.prototype.abort = function () {
- this.aborted = true
- this.emit('abort')
-}
-
-Glob.prototype.pause = function () {
- if (!this.paused) {
- this.paused = true
- this.emit('pause')
- }
-}
-
-Glob.prototype.resume = function () {
- if (this.paused) {
- this.emit('resume')
- this.paused = false
- if (this._emitQueue.length) {
- var eq = this._emitQueue.slice(0)
- this._emitQueue.length = 0
- for (var i = 0; i < eq.length; i ++) {
- var e = eq[i]
- this._emitMatch(e[0], e[1])
- }
- }
- if (this._processQueue.length) {
- var pq = this._processQueue.slice(0)
- this._processQueue.length = 0
- for (var i = 0; i < pq.length; i ++) {
- var p = pq[i]
- this._processing--
- this._process(p[0], p[1], p[2], p[3])
- }
- }
- }
-}
-
-Glob.prototype._process = function (pattern, index, inGlobStar, cb) {
- assert(this instanceof Glob)
- assert(typeof cb === 'function')
-
- if (this.aborted)
- return
-
- this._processing++
- if (this.paused) {
- this._processQueue.push([pattern, index, inGlobStar, cb])
- return
- }
-
- //console.error('PROCESS %d', this._processing, pattern)
-
- // Get the first [n] parts of pattern that are all strings.
- var n = 0
- while (typeof pattern[n] === 'string') {
- n ++
- }
- // now n is the index of the first one that is *not* a string.
-
- // see if there's anything else
- var prefix
- switch (n) {
- // if not, then this is rather simple
- case pattern.length:
- this._processSimple(pattern.join('/'), index, cb)
- return
-
- case 0:
- // pattern *starts* with some non-trivial item.
- // going to readdir(cwd), but not include the prefix in matches.
- prefix = null
- break
-
- default:
- // pattern has some string bits in the front.
- // whatever it starts with, whether that's 'absolute' like /foo/bar,
- // or 'relative' like '../baz'
- prefix = pattern.slice(0, n).join('/')
- break
- }
-
- var remain = pattern.slice(n)
-
- // get the list of entries.
- var read
- if (prefix === null)
- read = '.'
- else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {
- if (!prefix || !isAbsolute(prefix))
- prefix = '/' + prefix
- read = prefix
- } else
- read = prefix
-
- var abs = this._makeAbs(read)
-
- //if ignored, skip _processing
- if (childrenIgnored(this, read))
- return cb()
-
- var isGlobStar = remain[0] === minimatch.GLOBSTAR
- if (isGlobStar)
- this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)
- else
- this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)
-}
-
-Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {
- var self = this
- this._readdir(abs, inGlobStar, function (er, entries) {
- return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)
- })
-}
-
-Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
-
- // if the abs isn't a dir, then nothing can match!
- if (!entries)
- return cb()
-
- // It will only match dot entries if it starts with a dot, or if
- // dot is set. Stuff like @(.foo|.bar) isn't allowed.
- var pn = remain[0]
- var negate = !!this.minimatch.negate
- var rawGlob = pn._glob
- var dotOk = this.dot || rawGlob.charAt(0) === '.'
-
- var matchedEntries = []
- for (var i = 0; i < entries.length; i++) {
- var e = entries[i]
- if (e.charAt(0) !== '.' || dotOk) {
- var m
- if (negate && !prefix) {
- m = !e.match(pn)
- } else {
- m = e.match(pn)
- }
- if (m)
- matchedEntries.push(e)
- }
- }
-
- //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)
-
- var len = matchedEntries.length
- // If there are no matched entries, then nothing matches.
- if (len === 0)
- return cb()
-
- // if this is the last remaining pattern bit, then no need for
- // an additional stat *unless* the user has specified mark or
- // stat explicitly. We know they exist, since readdir returned
- // them.
-
- if (remain.length === 1 && !this.mark && !this.stat) {
- if (!this.matches[index])
- this.matches[index] = Object.create(null)
-
- for (var i = 0; i < len; i ++) {
- var e = matchedEntries[i]
- if (prefix) {
- if (prefix !== '/')
- e = prefix + '/' + e
- else
- e = prefix + e
- }
-
- if (e.charAt(0) === '/' && !this.nomount) {
- e = path.join(this.root, e)
- }
- this._emitMatch(index, e)
- }
- // This was the last one, and no stats were needed
- return cb()
- }
-
- // now test all matched entries as stand-ins for that part
- // of the pattern.
- remain.shift()
- for (var i = 0; i < len; i ++) {
- var e = matchedEntries[i]
- var newPattern
- if (prefix) {
- if (prefix !== '/')
- e = prefix + '/' + e
- else
- e = prefix + e
- }
- this._process([e].concat(remain), index, inGlobStar, cb)
- }
- cb()
-}
-
-Glob.prototype._emitMatch = function (index, e) {
- if (this.aborted)
- return
-
- if (this.matches[index][e])
- return
-
- if (this.paused) {
- this._emitQueue.push([index, e])
- return
- }
-
- var abs = this._makeAbs(e)
-
- if (this.nodir) {
- var c = this.cache[abs]
- if (c === 'DIR' || Array.isArray(c))
- return
- }
-
- if (this.mark)
- e = this._mark(e)
-
- this.matches[index][e] = true
-
- var st = this.statCache[abs]
- if (st)
- this.emit('stat', e, st)
-
- this.emit('match', e)
-}
-
-Glob.prototype._readdirInGlobStar = function (abs, cb) {
- if (this.aborted)
- return
-
- // follow all symlinked directories forever
- // just proceed as if this is a non-globstar situation
- if (this.follow)
- return this._readdir(abs, false, cb)
-
- var lstatkey = 'lstat\0' + abs
- var self = this
- var lstatcb = inflight(lstatkey, lstatcb_)
-
- if (lstatcb)
- fs.lstat(abs, lstatcb)
-
- function lstatcb_ (er, lstat) {
- if (er)
- return cb()
-
- var isSym = lstat.isSymbolicLink()
- self.symlinks[abs] = isSym
-
- // If it's not a symlink or a dir, then it's definitely a regular file.
- // don't bother doing a readdir in that case.
- if (!isSym && !lstat.isDirectory()) {
- self.cache[abs] = 'FILE'
- cb()
- } else
- self._readdir(abs, false, cb)
- }
-}
-
-Glob.prototype._readdir = function (abs, inGlobStar, cb) {
- if (this.aborted)
- return
-
- cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb)
- if (!cb)
- return
-
- //console.error('RD %j %j', +inGlobStar, abs)
- if (inGlobStar && !ownProp(this.symlinks, abs))
- return this._readdirInGlobStar(abs, cb)
-
- if (ownProp(this.cache, abs)) {
- var c = this.cache[abs]
- if (!c || c === 'FILE')
- return cb()
-
- if (Array.isArray(c))
- return cb(null, c)
- }
-
- var self = this
- fs.readdir(abs, readdirCb(this, abs, cb))
-}
-
-function readdirCb (self, abs, cb) {
- return function (er, entries) {
- if (er)
- self._readdirError(abs, er, cb)
- else
- self._readdirEntries(abs, entries, cb)
- }
-}
-
-Glob.prototype._readdirEntries = function (abs, entries, cb) {
- if (this.aborted)
- return
-
- // if we haven't asked to stat everything, then just
- // assume that everything in there exists, so we can avoid
- // having to stat it a second time.
- if (!this.mark && !this.stat) {
- for (var i = 0; i < entries.length; i ++) {
- var e = entries[i]
- if (abs === '/')
- e = abs + e
- else
- e = abs + '/' + e
- this.cache[e] = true
- }
- }
-
- this.cache[abs] = entries
- return cb(null, entries)
-}
-
-Glob.prototype._readdirError = function (f, er, cb) {
- if (this.aborted)
- return
-
- // handle errors, and cache the information
- switch (er.code) {
- case 'ENOTDIR': // totally normal. means it *does* exist.
- this.cache[this._makeAbs(f)] = 'FILE'
- break
-
- case 'ENOENT': // not terribly unusual
- case 'ELOOP':
- case 'ENAMETOOLONG':
- case 'UNKNOWN':
- this.cache[this._makeAbs(f)] = false
- break
-
- default: // some unusual error. Treat as failure.
- this.cache[this._makeAbs(f)] = false
- if (this.strict) return this.emit('error', er)
- if (!this.silent) console.error('glob error', er)
- break
- }
- return cb()
-}
-
-Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {
- var self = this
- this._readdir(abs, inGlobStar, function (er, entries) {
- self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)
- })
-}
-
-
-Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
- //console.error('pgs2', prefix, remain[0], entries)
-
- // no entries means not a dir, so it can never have matches
- // foo.txt/** doesn't match foo.txt
- if (!entries)
- return cb()
-
- // test without the globstar, and with every child both below
- // and replacing the globstar.
- var remainWithoutGlobStar = remain.slice(1)
- var gspref = prefix ? [ prefix ] : []
- var noGlobStar = gspref.concat(remainWithoutGlobStar)
-
- // the noGlobStar pattern exits the inGlobStar state
- this._process(noGlobStar, index, false, cb)
-
- var isSym = this.symlinks[abs]
- var len = entries.length
-
- // If it's a symlink, and we're in a globstar, then stop
- if (isSym && inGlobStar)
- return cb()
-
- for (var i = 0; i < len; i++) {
- var e = entries[i]
- if (e.charAt(0) === '.' && !this.dot)
- continue
-
- // these two cases enter the inGlobStar state
- var instead = gspref.concat(entries[i], remainWithoutGlobStar)
- this._process(instead, index, true, cb)
-
- var below = gspref.concat(entries[i], remain)
- this._process(below, index, true, cb)
- }
-
- cb()
-}
-
-Glob.prototype._processSimple = function (prefix, index, cb) {
- // XXX review this. Shouldn't it be doing the mounting etc
- // before doing stat? kinda weird?
- var self = this
- this._stat(prefix, function (er, exists) {
- self._processSimple2(prefix, index, er, exists, cb)
- })
-}
-Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {
-
- //console.error('ps2', prefix, exists)
-
- if (!this.matches[index])
- this.matches[index] = Object.create(null)
-
- // If it doesn't exist, then just mark the lack of results
- if (!exists)
- return cb()
-
- if (prefix && isAbsolute(prefix) && !this.nomount) {
- var trail = /[\/\\]$/.test(prefix)
- if (prefix.charAt(0) === '/') {
- prefix = path.join(this.root, prefix)
- } else {
- prefix = path.resolve(this.root, prefix)
- if (trail)
- prefix += '/'
- }
- }
-
- if (process.platform === 'win32')
- prefix = prefix.replace(/\\/g, '/')
-
- // Mark this as a match
- this._emitMatch(index, prefix)
- cb()
-}
-
-// Returns either 'DIR', 'FILE', or false
-Glob.prototype._stat = function (f, cb) {
- var abs = this._makeAbs(f)
- var needDir = f.slice(-1) === '/'
-
- if (f.length > this.maxLength)
- return cb()
-
- if (!this.stat && ownProp(this.cache, abs)) {
- var c = this.cache[abs]
-
- if (Array.isArray(c))
- c = 'DIR'
-
- // It exists, but maybe not how we need it
- if (!needDir || c === 'DIR')
- return cb(null, c)
-
- if (needDir && c === 'FILE')
- return cb()
-
- // otherwise we have to stat, because maybe c=true
- // if we know it exists, but not what it is.
- }
-
- var exists
- var stat = this.statCache[abs]
- if (stat !== undefined) {
- if (stat === false)
- return cb(null, stat)
- else {
- var type = stat.isDirectory() ? 'DIR' : 'FILE'
- if (needDir && type === 'FILE')
- return cb()
- else
- return cb(null, type, stat)
- }
- }
-
- var self = this
- var statcb = inflight('stat\0' + abs, lstatcb_)
- if (statcb)
- fs.lstat(abs, statcb)
-
- function lstatcb_ (er, lstat) {
- if (lstat && lstat.isSymbolicLink()) {
- // If it's a symlink, then treat it as the target, unless
- // the target does not exist, then treat it as a file.
- return fs.stat(abs, function (er, stat) {
- if (er)
- self._stat2(f, abs, null, lstat, cb)
- else
- self._stat2(f, abs, er, stat, cb)
- })
- } else {
- self._stat2(f, abs, er, lstat, cb)
- }
- }
-}
-
-Glob.prototype._stat2 = function (f, abs, er, stat, cb) {
- if (er) {
- this.statCache[abs] = false
- return cb()
- }
-
- var needDir = f.slice(-1) === '/'
- this.statCache[abs] = stat
-
- if (abs.slice(-1) === '/' && !stat.isDirectory())
- return cb(null, false, stat)
-
- var c = stat.isDirectory() ? 'DIR' : 'FILE'
- this.cache[abs] = this.cache[abs] || c
-
- if (needDir && c !== 'DIR')
- return cb()
-
- return cb(null, c, stat)
-}
diff --git a/node_modules/read-package-json/node_modules/glob/package.json b/node_modules/read-package-json/node_modules/glob/package.json
deleted file mode 100644
index 7a2cb4c63..000000000
--- a/node_modules/read-package-json/node_modules/glob/package.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me/"
- },
- "name": "glob",
- "description": "a little globber",
- "version": "4.5.3",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/node-glob.git"
- },
- "main": "glob.js",
- "files": [
- "glob.js",
- "sync.js",
- "common.js"
- ],
- "engines": {
- "node": "*"
- },
- "dependencies": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^2.0.1",
- "once": "^1.3.0"
- },
- "devDependencies": {
- "mkdirp": "0",
- "rimraf": "^2.2.8",
- "tap": "^0.5.0",
- "tick": "0.0.6"
- },
- "scripts": {
- "prepublish": "npm run benchclean",
- "profclean": "rm -f v8.log profile.txt",
- "test": "npm run profclean && tap test/*.js",
- "test-regen": "npm run profclean && TEST_REGEN=1 node test/00-setup.js",
- "bench": "bash benchmark.sh",
- "prof": "bash prof.sh && cat profile.txt",
- "benchclean": "bash benchclean.sh"
- },
- "license": "ISC",
- "gitHead": "a4e461ab59a837eee80a4d8dbdbf5ae1054a646f",
- "bugs": {
- "url": "https://github.com/isaacs/node-glob/issues"
- },
- "homepage": "https://github.com/isaacs/node-glob",
- "_id": "glob@4.5.3",
- "_shasum": "c6cb73d3226c1efef04de3c56d012f03377ee15f",
- "_from": "glob@>=4.4.2 <5.0.0",
- "_npmVersion": "2.7.1",
- "_nodeVersion": "1.4.2",
- "_npmUser": {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "dist": {
- "shasum": "c6cb73d3226c1efef04de3c56d012f03377ee15f",
- "tarball": "http://registry.npmjs.org/glob/-/glob-4.5.3.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/node_modules/read-package-json/node_modules/glob/sync.js b/node_modules/read-package-json/node_modules/glob/sync.js
deleted file mode 100644
index f4f5e36d4..000000000
--- a/node_modules/read-package-json/node_modules/glob/sync.js
+++ /dev/null
@@ -1,457 +0,0 @@
-module.exports = globSync
-globSync.GlobSync = GlobSync
-
-var fs = require('fs')
-var minimatch = require('minimatch')
-var Minimatch = minimatch.Minimatch
-var Glob = require('./glob.js').Glob
-var util = require('util')
-var path = require('path')
-var assert = require('assert')
-var common = require('./common.js')
-var alphasort = common.alphasort
-var alphasorti = common.alphasorti
-var isAbsolute = common.isAbsolute
-var setopts = common.setopts
-var ownProp = common.ownProp
-var childrenIgnored = common.childrenIgnored
-
-function globSync (pattern, options) {
- if (typeof options === 'function' || arguments.length === 3)
- throw new TypeError('callback provided to sync glob\n'+
- 'See: https://github.com/isaacs/node-glob/issues/167')
-
- return new GlobSync(pattern, options).found
-}
-
-function GlobSync (pattern, options) {
- if (!pattern)
- throw new Error('must provide pattern')
-
- if (typeof options === 'function' || arguments.length === 3)
- throw new TypeError('callback provided to sync glob\n'+
- 'See: https://github.com/isaacs/node-glob/issues/167')
-
- if (!(this instanceof GlobSync))
- return new GlobSync(pattern, options)
-
- setopts(this, pattern, options)
-
- if (this.noprocess)
- return this
-
- var n = this.minimatch.set.length
- this.matches = new Array(n)
- for (var i = 0; i < n; i ++) {
- this._process(this.minimatch.set[i], i, false)
- }
- this._finish()
-}
-
-GlobSync.prototype._finish = function () {
- assert(this instanceof GlobSync)
- if (this.realpath) {
- var self = this
- this.matches.forEach(function (matchset, index) {
- var set = self.matches[index] = Object.create(null)
- for (var p in matchset) {
- try {
- p = self._makeAbs(p)
- var real = fs.realpathSync(p, this.realpathCache)
- set[real] = true
- } catch (er) {
- if (er.syscall === 'stat')
- set[self._makeAbs(p)] = true
- else
- throw er
- }
- }
- })
- }
- common.finish(this)
-}
-
-
-GlobSync.prototype._process = function (pattern, index, inGlobStar) {
- assert(this instanceof GlobSync)
-
- // Get the first [n] parts of pattern that are all strings.
- var n = 0
- while (typeof pattern[n] === 'string') {
- n ++
- }
- // now n is the index of the first one that is *not* a string.
-
- // See if there's anything else
- var prefix
- switch (n) {
- // if not, then this is rather simple
- case pattern.length:
- this._processSimple(pattern.join('/'), index)
- return
-
- case 0:
- // pattern *starts* with some non-trivial item.
- // going to readdir(cwd), but not include the prefix in matches.
- prefix = null
- break
-
- default:
- // pattern has some string bits in the front.
- // whatever it starts with, whether that's 'absolute' like /foo/bar,
- // or 'relative' like '../baz'
- prefix = pattern.slice(0, n).join('/')
- break
- }
-
- var remain = pattern.slice(n)
-
- // get the list of entries.
- var read
- if (prefix === null)
- read = '.'
- else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {
- if (!prefix || !isAbsolute(prefix))
- prefix = '/' + prefix
- read = prefix
- } else
- read = prefix
-
- var abs = this._makeAbs(read)
-
- //if ignored, skip processing
- if (childrenIgnored(this, read))
- return
-
- var isGlobStar = remain[0] === minimatch.GLOBSTAR
- if (isGlobStar)
- this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)
- else
- this._processReaddir(prefix, read, abs, remain, index, inGlobStar)
-}
-
-
-GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {
- var entries = this._readdir(abs, inGlobStar)
-
- // if the abs isn't a dir, then nothing can match!
- if (!entries)
- return
-
- // It will only match dot entries if it starts with a dot, or if
- // dot is set. Stuff like @(.foo|.bar) isn't allowed.
- var pn = remain[0]
- var negate = !!this.minimatch.negate
- var rawGlob = pn._glob
- var dotOk = this.dot || rawGlob.charAt(0) === '.'
-
- var matchedEntries = []
- for (var i = 0; i < entries.length; i++) {
- var e = entries[i]
- if (e.charAt(0) !== '.' || dotOk) {
- var m
- if (negate && !prefix) {
- m = !e.match(pn)
- } else {
- m = e.match(pn)
- }
- if (m)
- matchedEntries.push(e)
- }
- }
-
- var len = matchedEntries.length
- // If there are no matched entries, then nothing matches.
- if (len === 0)
- return
-
- // if this is the last remaining pattern bit, then no need for
- // an additional stat *unless* the user has specified mark or
- // stat explicitly. We know they exist, since readdir returned
- // them.
-
- if (remain.length === 1 && !this.mark && !this.stat) {
- if (!this.matches[index])
- this.matches[index] = Object.create(null)
-
- for (var i = 0; i < len; i ++) {
- var e = matchedEntries[i]
- if (prefix) {
- if (prefix.slice(-1) !== '/')
- e = prefix + '/' + e
- else
- e = prefix + e
- }
-
- if (e.charAt(0) === '/' && !this.nomount) {
- e = path.join(this.root, e)
- }
- this.matches[index][e] = true
- }
- // This was the last one, and no stats were needed
- return
- }
-
- // now test all matched entries as stand-ins for that part
- // of the pattern.
- remain.shift()
- for (var i = 0; i < len; i ++) {
- var e = matchedEntries[i]
- var newPattern
- if (prefix)
- newPattern = [prefix, e]
- else
- newPattern = [e]
- this._process(newPattern.concat(remain), index, inGlobStar)
- }
-}
-
-
-GlobSync.prototype._emitMatch = function (index, e) {
- var abs = this._makeAbs(e)
- if (this.mark)
- e = this._mark(e)
-
- if (this.matches[index][e])
- return
-
- if (this.nodir) {
- var c = this.cache[this._makeAbs(e)]
- if (c === 'DIR' || Array.isArray(c))
- return
- }
-
- this.matches[index][e] = true
- if (this.stat)
- this._stat(e)
-}
-
-
-GlobSync.prototype._readdirInGlobStar = function (abs) {
- // follow all symlinked directories forever
- // just proceed as if this is a non-globstar situation
- if (this.follow)
- return this._readdir(abs, false)
-
- var entries
- var lstat
- var stat
- try {
- lstat = fs.lstatSync(abs)
- } catch (er) {
- // lstat failed, doesn't exist
- return null
- }
-
- var isSym = lstat.isSymbolicLink()
- this.symlinks[abs] = isSym
-
- // If it's not a symlink or a dir, then it's definitely a regular file.
- // don't bother doing a readdir in that case.
- if (!isSym && !lstat.isDirectory())
- this.cache[abs] = 'FILE'
- else
- entries = this._readdir(abs, false)
-
- return entries
-}
-
-GlobSync.prototype._readdir = function (abs, inGlobStar) {
- var entries
-
- if (inGlobStar && !ownProp(this.symlinks, abs))
- return this._readdirInGlobStar(abs)
-
- if (ownProp(this.cache, abs)) {
- var c = this.cache[abs]
- if (!c || c === 'FILE')
- return null
-
- if (Array.isArray(c))
- return c
- }
-
- try {
- return this._readdirEntries(abs, fs.readdirSync(abs))
- } catch (er) {
- this._readdirError(abs, er)
- return null
- }
-}
-
-GlobSync.prototype._readdirEntries = function (abs, entries) {
- // if we haven't asked to stat everything, then just
- // assume that everything in there exists, so we can avoid
- // having to stat it a second time.
- if (!this.mark && !this.stat) {
- for (var i = 0; i < entries.length; i ++) {
- var e = entries[i]
- if (abs === '/')
- e = abs + e
- else
- e = abs + '/' + e
- this.cache[e] = true
- }
- }
-
- this.cache[abs] = entries
-
- // mark and cache dir-ness
- return entries
-}
-
-GlobSync.prototype._readdirError = function (f, er) {
- // handle errors, and cache the information
- switch (er.code) {
- case 'ENOTDIR': // totally normal. means it *does* exist.
- this.cache[this._makeAbs(f)] = 'FILE'
- break
-
- case 'ENOENT': // not terribly unusual
- case 'ELOOP':
- case 'ENAMETOOLONG':
- case 'UNKNOWN':
- this.cache[this._makeAbs(f)] = false
- break
-
- default: // some unusual error. Treat as failure.
- this.cache[this._makeAbs(f)] = false
- if (this.strict) throw er
- if (!this.silent) console.error('glob error', er)
- break
- }
-}
-
-GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {
-
- var entries = this._readdir(abs, inGlobStar)
-
- // no entries means not a dir, so it can never have matches
- // foo.txt/** doesn't match foo.txt
- if (!entries)
- return
-
- // test without the globstar, and with every child both below
- // and replacing the globstar.
- var remainWithoutGlobStar = remain.slice(1)
- var gspref = prefix ? [ prefix ] : []
- var noGlobStar = gspref.concat(remainWithoutGlobStar)
-
- // the noGlobStar pattern exits the inGlobStar state
- this._process(noGlobStar, index, false)
-
- var len = entries.length
- var isSym = this.symlinks[abs]
-
- // If it's a symlink, and we're in a globstar, then stop
- if (isSym && inGlobStar)
- return
-
- for (var i = 0; i < len; i++) {
- var e = entries[i]
- if (e.charAt(0) === '.' && !this.dot)
- continue
-
- // these two cases enter the inGlobStar state
- var instead = gspref.concat(entries[i], remainWithoutGlobStar)
- this._process(instead, index, true)
-
- var below = gspref.concat(entries[i], remain)
- this._process(below, index, true)
- }
-}
-
-GlobSync.prototype._processSimple = function (prefix, index) {
- // XXX review this. Shouldn't it be doing the mounting etc
- // before doing stat? kinda weird?
- var exists = this._stat(prefix)
-
- if (!this.matches[index])
- this.matches[index] = Object.create(null)
-
- // If it doesn't exist, then just mark the lack of results
- if (!exists)
- return
-
- if (prefix && isAbsolute(prefix) && !this.nomount) {
- var trail = /[\/\\]$/.test(prefix)
- if (prefix.charAt(0) === '/') {
- prefix = path.join(this.root, prefix)
- } else {
- prefix = path.resolve(this.root, prefix)
- if (trail)
- prefix += '/'
- }
- }
-
- if (process.platform === 'win32')
- prefix = prefix.replace(/\\/g, '/')
-
- // Mark this as a match
- this.matches[index][prefix] = true
-}
-
-// Returns either 'DIR', 'FILE', or false
-GlobSync.prototype._stat = function (f) {
- var abs = this._makeAbs(f)
- var needDir = f.slice(-1) === '/'
-
- if (f.length > this.maxLength)
- return false
-
- if (!this.stat && ownProp(this.cache, abs)) {
- var c = this.cache[abs]
-
- if (Array.isArray(c))
- c = 'DIR'
-
- // It exists, but maybe not how we need it
- if (!needDir || c === 'DIR')
- return c
-
- if (needDir && c === 'FILE')
- return false
-
- // otherwise we have to stat, because maybe c=true
- // if we know it exists, but not what it is.
- }
-
- var exists
- var stat = this.statCache[abs]
- if (!stat) {
- var lstat
- try {
- lstat = fs.lstatSync(abs)
- } catch (er) {
- return false
- }
-
- if (lstat.isSymbolicLink()) {
- try {
- stat = fs.statSync(abs)
- } catch (er) {
- stat = lstat
- }
- } else {
- stat = lstat
- }
- }
-
- this.statCache[abs] = stat
-
- var c = stat.isDirectory() ? 'DIR' : 'FILE'
- this.cache[abs] = this.cache[abs] || c
-
- if (needDir && c !== 'DIR')
- return false
-
- return c
-}
-
-GlobSync.prototype._mark = function (p) {
- return common.mark(this, p)
-}
-
-GlobSync.prototype._makeAbs = function (f) {
- return common.makeAbs(this, f)
-}
diff --git a/node_modules/read-package-json/package.json b/node_modules/read-package-json/package.json
index 143d6d739..acbbd816d 100644
--- a/node_modules/read-package-json/package.json
+++ b/node_modules/read-package-json/package.json
@@ -1,6 +1,6 @@
{
"name": "read-package-json",
- "version": "1.3.2",
+ "version": "1.3.3",
"author": {
"name": "Isaac Z. Schlueter",
"email": "i@izs.me",
@@ -13,53 +13,30 @@
},
"main": "read-json.js",
"scripts": {
- "test": "tap test/*.js"
+ "test": "standard && tap test/*.js"
},
"dependencies": {
- "github-url-from-git": "^1.3.0",
- "github-url-from-username-repo": "~1.0.0",
- "glob": "^4.0.2",
+ "glob": "^5.0.3",
"json-parse-helpfulerror": "^1.0.2",
- "lru-cache": "2",
"normalize-package-data": "^1.0.0",
"graceful-fs": "2 || 3"
},
"devDependencies": {
+ "standard": "^3.3.1",
"tap": "^0.7.1"
},
"optionalDependencies": {
"graceful-fs": "2 || 3"
},
"license": "ISC",
- "gitHead": "d307d827f1a4f13a3a8bc4d747bb854779ad35c8",
+ "readme": "# read-package-json\n\nThis is the thing that npm uses to read package.json files. It\nvalidates some stuff, and loads some default things.\n\nIt keeps a cache of the files you've read, so that you don't end\nup reading the same package.json file multiple times.\n\nNote that if you just want to see what's literally in the package.json\nfile, you can usually do `var data = require('some-module/package.json')`.\n\nThis module is basically only needed by npm, but it's handy to see what\nnpm will see when it looks at your package.\n\n## Usage\n\n```javascript\nvar readJson = require('read-package-json')\n\n// readJson(filename, [logFunction=noop], [strict=false], cb)\nreadJson('/path/to/package.json', console.error, false, function (er, data) {\n if (er) {\n console.error(\"There was an error reading the file\")\n return\n }\n\n console.error('the package data is', data)\n});\n```\n\n## readJson(file, [logFn = noop], [strict = false], cb)\n\n* `file` {String} The path to the package.json file\n* `logFn` {Function} Function to handle logging. Defaults to a noop.\n* `strict` {Boolean} True to enforce SemVer 2.0 version strings, and\n other strict requirements.\n* `cb` {Function} Gets called with `(er, data)`, as is The Node Way.\n\nReads the JSON file and does the things.\n\n## `package.json` Fields\n\nSee `man 5 package.json` or `npm help json`.\n\n## readJson.log\n\nBy default this is a reference to the `npmlog` module. But if that\nmodule can't be found, then it'll be set to just a dummy thing that does\nnothing.\n\nReplace with your own `{log,warn,error}` object for fun loggy time.\n\n## readJson.extras(file, data, cb)\n\nRun all the extra stuff relative to the file, with the parsed data.\n\nModifies the data as it does stuff. Calls the cb when it's done.\n\n## readJson.extraSet = [fn, fn, ...]\n\nArray of functions that are called by `extras`. Each one receives the\narguments `fn(file, data, cb)` and is expected to call `cb(er, data)`\nwhen done or when an error occurs.\n\nOrder is indeterminate, so each function should be completely\nindependent.\n\nMix and match!\n\n## readJson.cache\n\nThe `lru-cache` object that readJson uses to not read the same file over\nand over again. See\n[lru-cache](https://github.com/isaacs/node-lru-cache) for details.\n\n## Other Relevant Files Besides `package.json`\n\nSome other files have an effect on the resulting data object, in the\nfollowing ways:\n\n### `README?(.*)`\n\nIf there is a `README` or `README.*` file present, then npm will attach\na `readme` field to the data with the contents of this file.\n\nOwing to the fact that roughly 100% of existing node modules have\nMarkdown README files, it will generally be assumed to be Markdown,\nregardless of the extension. Please plan accordingly.\n\n### `server.js`\n\nIf there is a `server.js` file, and there is not already a\n`scripts.start` field, then `scripts.start` will be set to `node\nserver.js`.\n\n### `AUTHORS`\n\nIf there is not already a `contributors` field, then the `contributors`\nfield will be set to the contents of the `AUTHORS` file, split by lines,\nand parsed.\n\n### `bindings.gyp`\n\nIf a bindings.gyp file exists, and there is not already a\n`scripts.install` field, then the `scripts.install` field will be set to\n`node-gyp rebuild`.\n\n### `wscript`\n\nIf a wscript file exists, and there is not already a `scripts.install`\nfield, then the `scripts.install` field will be set to `node-waf clean ;\nnode-waf configure build`.\n\nNote that the `bindings.gyp` file supercedes this, since node-waf has\nbeen deprecated in favor of node-gyp.\n\n### `index.js`\n\nIf the json file does not exist, but there is a `index.js` file\npresent instead, and that file has a package comment, then it will try\nto parse the package comment, and use that as the data instead.\n\nA package comment looks like this:\n\n```javascript\n/**package\n * { \"name\": \"my-bare-module\"\n * , \"version\": \"1.2.3\"\n * , \"description\": \"etc....\" }\n **/\n\n// or...\n\n/**package\n{ \"name\": \"my-bare-module\"\n, \"version\": \"1.2.3\"\n, \"description\": \"etc....\" }\n**/\n```\n\nThe important thing is that it starts with `/**package`, and ends with\n`**/`. If the package.json file exists, then the index.js is not\nparsed.\n\n### `{directories.man}/*.[0-9]`\n\nIf there is not already a `man` field defined as an array of files or a\nsingle file, and\nthere is a `directories.man` field defined, then that directory will\nbe searched for manpages.\n\nAny valid manpages found in that directory will be assigned to the `man`\narray, and installed in the appropriate man directory at package install\ntime, when installed globally on a Unix system.\n\n### `{directories.bin}/*`\n\nIf there is not already a `bin` field defined as a string filename or a\nhash of `<name> : <filename>` pairs, then the `directories.bin`\ndirectory will be searched and all the files within it will be linked as\nexecutables at install time.\n\nWhen installing locally, npm links bins into `node_modules/.bin`, which\nis in the `PATH` environ when npm runs scripts. When\ninstalling globally, they are linked into `{prefix}/bin`, which is\npresumably in the `PATH` environment variable.\n",
+ "readmeFilename": "README.md",
+ "gitHead": "74cdfd00c828b01cbd3bc85178448707b45cee3a",
"bugs": {
"url": "https://github.com/isaacs/read-package-json/issues"
},
"homepage": "https://github.com/isaacs/read-package-json",
- "_id": "read-package-json@1.3.2",
- "_shasum": "5228bc7ad1f33ded75184ece48710036101affa2",
- "_from": "read-package-json@>=1.3.2 <1.4.0",
- "_npmVersion": "2.7.0",
- "_nodeVersion": "1.2.0",
- "_npmUser": {
- "name": "othiym23",
- "email": "ogd@aoaioxxysz.net"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- {
- "name": "othiym23",
- "email": "ogd@aoaioxxysz.net"
- }
- ],
- "dist": {
- "shasum": "5228bc7ad1f33ded75184ece48710036101affa2",
- "tarball": "http://registry.npmjs.org/read-package-json/-/read-package-json-1.3.2.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-1.3.2.tgz",
- "readme": "ERROR: No README data found!"
+ "_id": "read-package-json@1.3.3",
+ "_shasum": "ef79dfda46e165376ee8a57efbfedd4d1b029ba4",
+ "_from": "read-package-json@>=1.3.3 <1.4.0"
}
diff --git a/node_modules/read-package-json/read-json.js b/node_modules/read-package-json/read-json.js
index 98ab9f16d..3f93603f8 100644
--- a/node_modules/read-package-json/read-json.js
+++ b/node_modules/read-package-json/read-json.js
@@ -1,336 +1,304 @@
-// vim: set softtabstop=16 shiftwidth=16:
-
+var fs
try {
- var fs = require("graceful-fs")
+ fs = require('graceful-fs')
} catch (er) {
- var fs = require("fs")
+ fs = require('fs')
}
+var path = require('path')
-module.exports = readJson
+var glob = require('glob')
+var normalizeData = require('normalize-package-data')
+var safeJSON = require('json-parse-helpfulerror')
-var LRU = require("lru-cache")
-readJson.cache = new LRU({max: 1000})
-var path = require("path")
-var glob = require("glob")
-var normalizeData = require("normalize-package-data")
-var jsonparse = require("json-parse-helpfulerror")
+module.exports = readJson
// put more stuff on here to customize.
readJson.extraSet = [
- gypfile,
- serverjs,
- scriptpath,
- authors,
- readme,
- mans,
- bins,
- githead
+ gypfile,
+ serverjs,
+ scriptpath,
+ authors,
+ readme,
+ mans,
+ bins,
+ githead
]
var typoWarned = {}
-
function readJson (file, log_, strict_, cb_) {
- var log, strict, cb
- for (var i = 1; i < arguments.length - 1; i++) {
- if (typeof arguments[i] === 'boolean')
- strict = arguments[i]
- else if (typeof arguments[i] === 'function')
- log = arguments[i]
- }
- if (!log) log = function () {};
- cb = arguments[ arguments.length - 1 ]
-
- var c = readJson.cache.get(file)
- if (c) {
- cb = cb.bind(null, null, c)
- return process.nextTick(cb);
- }
- cb = (function (orig) { return function (er, data) {
- if (data) readJson.cache.set(file, data);
- return orig(er, data)
- } })(cb)
- readJson_(file, log, strict, cb)
-}
+ var log, strict, cb
+ for (var i = 1; i < arguments.length - 1; i++) {
+ if (typeof arguments[i] === 'boolean') {
+ strict = arguments[i]
+ } else if (typeof arguments[i] === 'function') {
+ log = arguments[i]
+ }
+ }
+ if (!log) log = function () {}
+ cb = arguments[ arguments.length - 1 ]
-function readJson_ (file, log, strict, cb) {
- fs.readFile(file, "utf8", function (er, d) {
- parseJson(file, er, d, log, strict, cb)
- })
+ readJson_(file, log, strict, cb)
}
-
-function stripBOM(content) {
- // Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
- // because the buffer-to-string conversion in `fs.readFileSync()`
- // translates it to FEFF, the UTF-16 BOM.
- if (content.charCodeAt(0) === 0xFEFF) {
- content = content.slice(1);
- }
- return content;
+function readJson_ (file, log, strict, cb) {
+ fs.readFile(file, 'utf8', function (er, d) {
+ parseJson(file, er, d, log, strict, cb)
+ })
}
+function stripBOM (content) {
+ // Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
+ // because the buffer-to-string conversion in `fs.readFileSync()`
+ // translates it to FEFF, the UTF-16 BOM.
+ if (content.charCodeAt(0) === 0xFEFF) content = content.slice(1)
+ return content
+}
function parseJson (file, er, d, log, strict, cb) {
- if (er && er.code === "ENOENT") {
- indexjs(file, er, log, strict, cb)
- return
- }
- if (er) return cb(er);
- try {
- d = jsonparse.parse(stripBOM(d))
- } catch (er) {
- d = parseIndex(d)
- if (!d) return cb(parseError(er, file));
- }
- extras(file, d, log, strict, cb)
-}
+ if (er && er.code === 'ENOENT') return indexjs(file, er, log, strict, cb)
+ if (er) return cb(er)
+ try {
+ d = safeJSON.parse(stripBOM(d))
+ } catch (er) {
+ d = parseIndex(d)
+ if (!d) return cb(parseError(er, file))
+ }
-function indexjs (file, er, log, strict, cb) {
- if (path.basename(file) === "index.js") {
- return cb(er);
- }
- var index = path.resolve(path.dirname(file), "index.js")
- fs.readFile(index, "utf8", function (er2, d) {
- if (er2) return cb(er);
- d = parseIndex(d)
- if (!d) return cb(er);
- extras(file, d, log, strict, cb)
- })
+ extras(file, d, log, strict, cb)
}
+function indexjs (file, er, log, strict, cb) {
+ if (path.basename(file) === 'index.js') return cb(er)
+
+ var index = path.resolve(path.dirname(file), 'index.js')
+ fs.readFile(index, 'utf8', function (er2, d) {
+ if (er2) return cb(er)
+
+ d = parseIndex(d)
+ if (!d) return cb(er)
+
+ extras(file, d, log, strict, cb)
+ })
+}
readJson.extras = extras
function extras (file, data, log_, strict_, cb_) {
- var log, strict, cb
- for (var i = 2; i < arguments.length - 1; i++) {
- if (typeof arguments[i] === 'boolean')
- strict = arguments[i]
- else if (typeof arguments[i] === 'function')
- log = arguments[i]
- }
- if (!log) log = function () {};
- cb = arguments[i]
- var set = readJson.extraSet
- var n = set.length
- var errState = null
- set.forEach(function (fn) {
- fn(file, data, then)
- })
- function then(er) {
- if (errState) return;
- if (er) return cb(errState = er);
- if (--n > 0) return;
- final(file, data, log, strict, cb);
- }
+ var log, strict, cb
+ for (var i = 2; i < arguments.length - 1; i++) {
+ if (typeof arguments[i] === 'boolean') {
+ strict = arguments[i]
+ } else if (typeof arguments[i] === 'function') {
+ log = arguments[i]
+ }
+ }
+
+ if (!log) log = function () {}
+ cb = arguments[i]
+
+ var set = readJson.extraSet
+ var n = set.length
+ var errState = null
+ set.forEach(function (fn) {
+ fn(file, data, then)
+ })
+
+ function then (er) {
+ if (errState) return
+ if (er) return cb(errState = er)
+ if (--n > 0) return
+ final(file, data, log, strict, cb)
+ }
}
function scriptpath (file, data, cb) {
- if (!data.scripts) return cb(null, data);
- var k = Object.keys(data.scripts)
- k.forEach(scriptpath_, data.scripts)
- cb(null, data);
+ if (!data.scripts) return cb(null, data)
+ var k = Object.keys(data.scripts)
+ k.forEach(scriptpath_, data.scripts)
+ cb(null, data)
}
-function scriptpath_(key) {
- s = this[key]
- // This is never allowed, and only causes problems
- if (typeof s !== 'string')
- return delete this[key]
- var spre = /^(\.[\/\\])?node_modules[\/\\].bin[\\\/]/
- if (s.match(spre))
- this[key] = this[key].replace(spre, '')
+
+function scriptpath_ (key) {
+ var s = this[key]
+ // This is never allowed, and only causes problems
+ if (typeof s !== 'string') return delete this[key]
+
+ var spre = /^(\.[\/\\])?node_modules[\/\\].bin[\\\/]/
+ if (s.match(spre)) {
+ this[key] = this[key].replace(spre, '')
+ }
}
function gypfile (file, data, cb) {
- var dir = path.dirname(file)
- var s = data.scripts || {}
- if (s.install || s.preinstall)
- return cb(null, data);
- glob("*.gyp", { cwd: dir }, function (er, files) {
- if (er) return cb(er);
- gypfile_(file, data, files, cb)
- })
+ var dir = path.dirname(file)
+ var s = data.scripts || {}
+ if (s.install || s.preinstall) return cb(null, data)
+
+ glob('*.gyp', { cwd: dir }, function (er, files) {
+ if (er) return cb(er)
+ gypfile_(file, data, files, cb)
+ })
}
function gypfile_ (file, data, files, cb) {
- if (!files.length) return cb(null, data);
- var s = data.scripts || {}
- s.install = "node-gyp rebuild"
- data.scripts = s
- data.gypfile = true
- return cb(null, data);
+ if (!files.length) return cb(null, data)
+ var s = data.scripts || {}
+ s.install = 'node-gyp rebuild'
+ data.scripts = s
+ data.gypfile = true
+ return cb(null, data)
}
function serverjs (file, data, cb) {
- var dir = path.dirname(file)
- var s = data.scripts || {}
- if (s.start) return cb(null, data)
- glob("server.js", { cwd: dir }, function (er, files) {
- if (er) return cb(er);
- serverjs_(file, data, files, cb)
- })
+ var dir = path.dirname(file)
+ var s = data.scripts || {}
+ if (s.start) return cb(null, data)
+ glob('server.js', { cwd: dir }, function (er, files) {
+ if (er) return cb(er)
+ serverjs_(file, data, files, cb)
+ })
}
+
function serverjs_ (file, data, files, cb) {
- if (!files.length) return cb(null, data);
- var s = data.scripts || {}
- s.start = "node server.js"
- data.scripts = s
- return cb(null, data)
+ if (!files.length) return cb(null, data)
+ var s = data.scripts || {}
+ s.start = 'node server.js'
+ data.scripts = s
+ return cb(null, data)
}
function authors (file, data, cb) {
- if (data.contributors) return cb(null, data);
- var af = path.resolve(path.dirname(file), "AUTHORS")
- fs.readFile(af, "utf8", function (er, ad) {
- // ignore error. just checking it.
- if (er) return cb(null, data);
- authors_(file, data, ad, cb)
- })
-}
-function authors_ (file, data, ad, cb) {
- ad = ad.split(/\r?\n/g).map(function (line) {
- return line.replace(/^\s*#.*$/, '').trim()
- }).filter(function (line) {
- return line
- })
- data.contributors = ad
- return cb(null, data)
-}
-
-var defDesc = "Unnamed repository; edit this file " +
- "'description' to name the repository."
-function gitDescription (file, data, cb) {
- if (data.description) return cb(null, data);
- var dir = path.dirname(file)
- // just cuz it'd be nice if this file mattered...
- var gitDesc = path.resolve(dir, '.git/description')
- fs.readFile(gitDesc, 'utf8', function (er, desc) {
- if (desc) desc = desc.trim()
- if (!er && desc !== defDesc)
- data.description = desc
- return cb(null, data)
- })
+ if (data.contributors) return cb(null, data)
+ var af = path.resolve(path.dirname(file), 'AUTHORS')
+ fs.readFile(af, 'utf8', function (er, ad) {
+ // ignore error. just checking it.
+ if (er) return cb(null, data)
+ authors_(file, data, ad, cb)
+ })
}
-function readmeDescription (file, data) {
- if (data.description) return cb(null, data);
- var d = data.readme
- if (!d) return;
- // the first block of text before the first heading
- // that isn't the first line heading
- d = d.trim().split('\n')
- for (var s = 0; d[s] && d[s].trim().match(/^(#|$)/); s ++);
- var l = d.length
- for (var e = s + 1; e < l && d[e].trim(); e ++);
- data.description = d.slice(s, e).join(' ').trim()
+function authors_ (file, data, ad, cb) {
+ ad = ad.split(/\r?\n/g).map(function (line) {
+ return line.replace(/^\s*#.*$/, '').trim()
+ }).filter(function (line) {
+ return line
+ })
+ data.contributors = ad
+ return cb(null, data)
}
function readme (file, data, cb) {
- if (data.readme) return cb(null, data);
- var dir = path.dirname(file)
- var globOpts = { cwd: dir, nocase: true, mark: true }
- glob("{README,README.*}", globOpts, function (er, files) {
- if (er) return cb(er);
- // don't accept directories.
- files = files.filter(function (file) {
- return !file.match(/\/$/)
- })
- if (!files.length) return cb();
- var fn = preferMarkdownReadme(files)
- var rm = path.resolve(dir, fn)
- readme_(file, data, rm, cb)
- })
-}
-function preferMarkdownReadme(files) {
- var fallback = 0;
- var re = /\.m?a?r?k?d?o?w?n?$/i
- for (var i = 0; i < files.length; i++) {
- if (files[i].match(re))
- return files[i]
- else if (files[i].match(/README$/))
- fallback = i
- }
- // prefer README.md, followed by README; otherwise, return
- // the first filename (which could be README)
- return files[fallback];
-}
-function readme_(file, data, rm, cb) {
- var rmfn = path.basename(rm);
- fs.readFile(rm, "utf8", function (er, rm) {
- // maybe not readable, or something.
- if (er) return cb()
- data.readme = rm
- data.readmeFilename = rmfn
- return cb(er, data)
- })
+ if (data.readme) return cb(null, data)
+ var dir = path.dirname(file)
+ var globOpts = { cwd: dir, nocase: true, mark: true }
+ glob('{README,README.*}', globOpts, function (er, files) {
+ if (er) return cb(er)
+ // don't accept directories.
+ files = files.filter(function (file) {
+ return !file.match(/\/$/)
+ })
+ if (!files.length) return cb()
+ var fn = preferMarkdownReadme(files)
+ var rm = path.resolve(dir, fn)
+ readme_(file, data, rm, cb)
+ })
+}
+
+function preferMarkdownReadme (files) {
+ var fallback = 0
+ var re = /\.m?a?r?k?d?o?w?n?$/i
+ for (var i = 0; i < files.length; i++) {
+ if (files[i].match(re)) {
+ return files[i]
+ } else if (files[i].match(/README$/)) {
+ fallback = i
+ }
+ }
+ // prefer README.md, followed by README; otherwise, return
+ // the first filename (which could be README)
+ return files[fallback]
+}
+
+function readme_ (file, data, rm, cb) {
+ var rmfn = path.basename(rm)
+ fs.readFile(rm, 'utf8', function (er, rm) {
+ // maybe not readable, or something.
+ if (er) return cb()
+ data.readme = rm
+ data.readmeFilename = rmfn
+ return cb(er, data)
+ })
}
function mans (file, data, cb) {
- var m = data.directories && data.directories.man
- if (data.man || !m) return cb(null, data);
- m = path.resolve(path.dirname(file), m)
- glob("**/*.[0-9]", { cwd: m }, function (er, mans) {
- if (er) return cb(er);
- mans_(file, data, mans, cb)
- })
+ var m = data.directories && data.directories.man
+ if (data.man || !m) return cb(null, data)
+ m = path.resolve(path.dirname(file), m)
+ glob('**/*.[0-9]', { cwd: m }, function (er, mans) {
+ if (er) return cb(er)
+ mans_(file, data, mans, cb)
+ })
}
+
function mans_ (file, data, mans, cb) {
- var m = data.directories && data.directories.man
- data.man = mans.map(function (mf) {
- return path.resolve(path.dirname(file), m, mf)
- })
- return cb(null, data)
+ var m = data.directories && data.directories.man
+ data.man = mans.map(function (mf) {
+ return path.resolve(path.dirname(file), m, mf)
+ })
+ return cb(null, data)
}
function bins (file, data, cb) {
- if (Array.isArray(data.bin)) {
- return bins_(file, data, data.bin, cb)
- }
- var m = data.directories && data.directories.bin
- if (data.bin || !m) return cb(null, data);
- m = path.resolve(path.dirname(file), m)
- glob("**", { cwd: m }, function (er, bins) {
- if (er) return cb(er);
- bins_(file, data, bins, cb)
- })
+ if (Array.isArray(data.bin)) return bins_(file, data, data.bin, cb)
+
+ var m = data.directories && data.directories.bin
+ if (data.bin || !m) return cb(null, data)
+
+ m = path.resolve(path.dirname(file), m)
+ glob('**', { cwd: m }, function (er, bins) {
+ if (er) return cb(er)
+ bins_(file, data, bins, cb)
+ })
}
+
function bins_ (file, data, bins, cb) {
- var m = data.directories && data.directories.bin || '.'
- data.bin = bins.reduce(function (acc, mf) {
- if (mf && mf.charAt(0) !== '.') {
- var f = path.basename(mf)
- acc[f] = path.join(m, mf)
- }
- return acc
- }, {})
- return cb(null, data)
+ var m = data.directories && data.directories.bin || '.'
+ data.bin = bins.reduce(function (acc, mf) {
+ if (mf && mf.charAt(0) !== '.') {
+ var f = path.basename(mf)
+ acc[f] = path.join(m, mf)
+ }
+ return acc
+ }, {})
+ return cb(null, data)
}
function githead (file, data, cb) {
- if (data.gitHead) return cb(null, data);
- var dir = path.dirname(file)
- var head = path.resolve(dir, '.git/HEAD')
- fs.readFile(head, 'utf8', function (er, head) {
- if (er) return cb(null, data);
- githead_(file, data, dir, head, cb)
- })
+ if (data.gitHead) return cb(null, data)
+ var dir = path.dirname(file)
+ var head = path.resolve(dir, '.git/HEAD')
+ fs.readFile(head, 'utf8', function (er, head) {
+ if (er) return cb(null, data)
+ githead_(file, data, dir, head, cb)
+ })
}
+
function githead_ (file, data, dir, head, cb) {
- if (!head.match(/^ref: /)) {
- data.gitHead = head.trim()
- return cb(null, data)
- }
- var headFile = head.replace(/^ref: /, '').trim()
- headFile = path.resolve(dir, '.git', headFile)
- fs.readFile(headFile, 'utf8', function (er, head) {
- if (er || !head) return cb(null, data)
- head = head.replace(/^ref: /, '').trim()
- data.gitHead = head
- return cb(null, data)
- })
+ if (!head.match(/^ref: /)) {
+ data.gitHead = head.trim()
+ return cb(null, data)
+ }
+ var headFile = head.replace(/^ref: /, '').trim()
+ headFile = path.resolve(dir, '.git', headFile)
+ fs.readFile(headFile, 'utf8', function (er, head) {
+ if (er || !head) return cb(null, data)
+ head = head.replace(/^ref: /, '').trim()
+ data.gitHead = head
+ return cb(null, data)
+ })
}
/**
@@ -338,73 +306,78 @@ function githead_ (file, data, dir, head, cb) {
* normalize-package-data if it had access to the file path.
*/
function checkBinReferences_ (file, data, warn, cb) {
- if (!(data.bin instanceof Object)) return cb()
-
- var keys = Object.keys(data.bin)
- var keysLeft = keys.length
- if (!keysLeft) return cb()
-
- function handleExists(relName, result) {
- keysLeft--
- if (!result) warn("No bin file found at " + relName)
- if (!keysLeft) cb()
- }
-
- keys.forEach(function (key) {
- var dirName = path.dirname(file)
- var relName = data.bin[key]
- var binPath = path.resolve(dirName, relName)
- fs.exists(binPath, handleExists.bind(null, relName))
- })
+ if (!(data.bin instanceof Object)) return cb()
+
+ var keys = Object.keys(data.bin)
+ var keysLeft = keys.length
+ if (!keysLeft) return cb()
+
+ function handleExists (relName, result) {
+ keysLeft--
+ if (!result) warn('No bin file found at ' + relName)
+ if (!keysLeft) cb()
+ }
+
+ keys.forEach(function (key) {
+ var dirName = path.dirname(file)
+ var relName = data.bin[key]
+ var binPath = path.resolve(dirName, relName)
+ fs.exists(binPath, handleExists.bind(null, relName))
+ })
}
function final (file, data, log, strict, cb) {
- var pId = makePackageId(data)
- function warn(msg) {
- if (typoWarned[pId]) return;
- if (log) log("package.json", pId, msg);
- }
- try {
- normalizeData(data, warn, strict)
- }
- catch (error) {
- return cb(error)
- }
- checkBinReferences_(file, data, warn, function () {
- typoWarned[pId] = true
- readJson.cache.set(file, data)
- cb(null, data)
- })
+ var pId = makePackageId(data)
+
+ function warn (msg) {
+ if (typoWarned[pId]) return
+ if (log) log('package.json', pId, msg)
+ }
+
+ try {
+ normalizeData(data, warn, strict)
+ } catch (error) {
+ return cb(error)
+ }
+
+ checkBinReferences_(file, data, warn, function () {
+ typoWarned[pId] = true
+ cb(null, data)
+ })
}
function makePackageId (data) {
- var name = cleanString(data.name)
- var ver = cleanString(data.version)
- return name + "@" + ver
+ var name = cleanString(data.name)
+ var ver = cleanString(data.version)
+ return name + '@' + ver
}
-function cleanString(str) {
- return (!str || typeof(str) !== "string") ? "" : str.trim()
+
+function cleanString (str) {
+ return (!str || typeof (str) !== 'string') ? '' : str.trim()
}
// /**package { "name": "foo", "version": "1.2.3", ... } **/
function parseIndex (data) {
- data = data.split(/^\/\*\*package(?:\s|$)/m)
- if (data.length < 2) return null
- data = data[1]
- data = data.split(/\*\*\/$/m)
- if (data.length < 2) return null
- data = data[0]
- data = data.replace(/^\s*\*/mg, "")
- try {
- return jsonparse.parse(data)
- } catch (er) {
- return null
- }
+ data = data.split(/^\/\*\*package(?:\s|$)/m)
+
+ if (data.length < 2) return null
+ data = data[1]
+ data = data.split(/\*\*\/$/m)
+
+ if (data.length < 2) return null
+ data = data[0]
+ data = data.replace(/^\s*\*/mg, '')
+
+ try {
+ return safeJSON.parse(data)
+ } catch (er) {
+ return null
+ }
}
function parseError (ex, file) {
- var e = new Error("Failed to parse json\n"+ex.message)
- e.code = "EJSONPARSE"
- e.file = file
- return e
+ var e = new Error('Failed to parse json\n' + ex.message)
+ e.code = 'EJSONPARSE'
+ e.file = file
+ return e
}
diff --git a/node_modules/read-package-json/test/basic.js b/node_modules/read-package-json/test/basic.js
index 8590f23c0..5996c8e4e 100644
--- a/node_modules/read-package-json/test/basic.js
+++ b/node_modules/read-package-json/test/basic.js
@@ -1,45 +1,46 @@
-// vim: set softtabstop=16 shiftwidth=16:
-var tap = require("tap")
-var readJson = require("../")
-var path = require("path")
-var fs = require("fs")
-var readme = fs.readFileSync(path.resolve(__dirname, "../README.md"), "utf8")
-var package = require("../package.json")
+var fs = require('fs')
+var path = require('path')
+
+var tap = require('tap')
+
+var readJson = require('../')
+
+var readme = fs.readFileSync(path.resolve(__dirname, '../README.md'), 'utf8')
+var pkg = require('../package.json')
var isGit
try {
- fs.readFileSync(path.resolve(__dirname, '../.git/HEAD'));
- isGit = true
+ fs.readFileSync(path.resolve(__dirname, '../.git/HEAD'))
+ isGit = true
} catch (e) {
- isGit = false
+ isGit = false
}
-console.error("basic test")
-tap.test("basic test", function (t) {
- var p = path.resolve(__dirname, "../package.json")
- readJson(p, function (er, data) {
- if (er) throw er;
- basic_(t, data)
- })
+tap.test('basic test', function (t) {
+ var p = path.resolve(__dirname, '../package.json')
+ readJson(p, function (er, data) {
+ if (er) throw er
+ basic_(t, data)
+ })
})
+
function basic_ (t, data) {
- t.ok(data)
- t.equal(data.version, package.version)
- t.equal(data._id, data.name + "@" + data.version)
- t.equal(data.name, package.name)
- t.type(data.author, "object")
- t.equal(data.readme, readme)
- t.deepEqual(data.scripts, package.scripts)
- t.equal(data.main, package.main)
- t.equal(data.readmeFilename, 'README.md')
-
- if (isGit) t.similar(data.gitHead, /^[a-f0-9]{40}$/);
-
- // optional deps are folded in.
- t.deepEqual(data.optionalDependencies,
- package.optionalDependencies)
- t.has(data.dependencies, package.optionalDependencies)
- t.has(data.dependencies, package.dependencies)
-
- t.deepEqual(data.devDependencies, package.devDependencies)
- t.end()
+ t.ok(data)
+ t.equal(data.version, pkg.version)
+ t.equal(data._id, data.name + '@' + data.version)
+ t.equal(data.name, pkg.name)
+ t.type(data.author, 'object')
+ t.equal(data.readme, readme)
+ t.deepEqual(data.scripts, pkg.scripts)
+ t.equal(data.main, pkg.main)
+ t.equal(data.readmeFilename, 'README.md')
+
+ if (isGit) t.similar(data.gitHead, /^[a-f0-9]{40}$/)
+
+ // optional deps are folded in.
+ t.deepEqual(data.optionalDependencies, pkg.optionalDependencies)
+ t.has(data.dependencies, pkg.optionalDependencies)
+ t.has(data.dependencies, pkg.dependencies)
+
+ t.deepEqual(data.devDependencies, pkg.devDependencies)
+ t.end()
}
diff --git a/node_modules/read-package-json/test/bin.js b/node_modules/read-package-json/test/bin.js
index 2ed4ec5ca..3e0e0e9be 100644
--- a/node_modules/read-package-json/test/bin.js
+++ b/node_modules/read-package-json/test/bin.js
@@ -1,43 +1,43 @@
-// vim: set softtabstop=16 shiftwidth=16:
-var tap = require("tap")
-var readJson = require("../")
-var path = require("path")
-var fs = require("fs")
+var path = require('path')
+
+var tap = require('tap')
+
+var readJson = require('../')
var createWarningCollector = function () {
- var warn = function (msg) {
- warn.warnings.push(arguments)
- }
- warn.warnings = []
- return warn
+ var warn = function (msg) {
+ warn.warnings.push(arguments)
+ }
+ warn.warnings = []
+ return warn
}
-tap.test("Bin test", function (t) {
- var p = path.resolve(__dirname, "fixtures/bin.json")
- var warn = createWarningCollector()
- readJson(p, warn, function (er, data) {
- t.equals(warn.warnings.length, 0)
- t.deepEqual(data.bin, {"bin-test": "./bin/echo"})
- t.end()
- })
+tap.test('Bin test', function (t) {
+ var p = path.resolve(__dirname, 'fixtures/bin.json')
+ var warn = createWarningCollector()
+ readJson(p, warn, function (er, data) {
+ t.equals(warn.warnings.length, 0)
+ t.deepEqual(data.bin, {'bin-test': './bin/echo'})
+ t.end()
+ })
})
-tap.test("Bad bin test", function (t) {
- var p = path.resolve(__dirname, "fixtures/badbin.json")
- var warn = createWarningCollector()
- readJson(p, warn, function (er, data) {
- t.equals(warn.warnings.length, 1)
- t.equals(warn.warnings[0][2], "No bin file found at ./bin/typo")
- t.end()
- })
+tap.test('Bad bin test', function (t) {
+ var p = path.resolve(__dirname, 'fixtures/badbin.json')
+ var warn = createWarningCollector()
+ readJson(p, warn, function (er, data) {
+ t.equals(warn.warnings.length, 1)
+ t.equals(warn.warnings[0][2], 'No bin file found at ./bin/typo')
+ t.end()
+ })
})
-tap.test("Empty bin test", function (t) {
- var p = path.resolve(__dirname, "fixtures/emptybin.json")
- var warn = createWarningCollector()
- readJson(p, warn, function (er, data) {
- t.equals(warn.warnings.length, 0)
- t.same(data.bin, {}, "no mapping to bin because object was empty")
- t.end()
- })
+tap.test('Empty bin test', function (t) {
+ var p = path.resolve(__dirname, 'fixtures/emptybin.json')
+ var warn = createWarningCollector()
+ readJson(p, warn, function (er, data) {
+ t.equals(warn.warnings.length, 0)
+ t.same(data.bin, {}, 'no mapping to bin because object was empty')
+ t.end()
+ })
})
diff --git a/node_modules/read-package-json/test/bom.js b/node_modules/read-package-json/test/bom.js
index 33c4f4a1a..372a4f4ab 100644
--- a/node_modules/read-package-json/test/bom.js
+++ b/node_modules/read-package-json/test/bom.js
@@ -1,19 +1,16 @@
-// vim: set softtabstop=16 shiftwidth=16:
-var tap = require("tap")
-var readJson = require("../")
-var path = require("path")
-var fs = require("fs")
+var tap = require('tap')
+var readJson = require('../')
+var path = require('path')
-console.error("BOM test")
-tap.test("BOM test", function (t) {
- var p = path.resolve(__dirname, "fixtures/bom.json")
- readJson(p, function (er, data) {
- if (er) throw er;
- p = path.resolve(__dirname, "fixtures/nobom.json")
- readJson(p, function (er, data2) {
- if (er) throw er;
- t.deepEqual(data, data2)
- t.end()
- })
- })
+tap.test('BOM test', function (t) {
+ var p = path.resolve(__dirname, 'fixtures/bom.json')
+ readJson(p, function (er, data) {
+ if (er) throw er
+ p = path.resolve(__dirname, 'fixtures/nobom.json')
+ readJson(p, function (er, data2) {
+ if (er) throw er
+ t.deepEqual(data, data2)
+ t.end()
+ })
+ })
})
diff --git a/node_modules/read-package-json/test/helpful.js b/node_modules/read-package-json/test/helpful.js
index 579b558d0..f5b1a8b13 100644
--- a/node_modules/read-package-json/test/helpful.js
+++ b/node_modules/read-package-json/test/helpful.js
@@ -1,17 +1,12 @@
-// vim: set softtabstop=16 shiftwidth=16:
-var tap = require("tap")
-var readJson = require("../")
-var path = require("path")
-var fs = require("fs")
-var p = path.resolve(__dirname, "fixtures/erroneous.json")
+var tap = require('tap')
+var readJson = require('../')
+var path = require('path')
+var p = path.resolve(__dirname, 'fixtures/erroneous.json')
-var expect = {}
-
-console.error("readme test")
-tap.test("readme test", function (t) {
- readJson(p, function (er, data) {
- t.ok(er instanceof Error)
- t.ok(er.message.match(/Unexpected token '\\''/))
- t.end()
- })
+tap.test('erroneous package data', function (t) {
+ readJson(p, function (er, data) {
+ t.ok(er instanceof Error)
+ t.ok(er.message.match(/Unexpected token '\\''/))
+ t.end()
+ })
})
diff --git a/node_modules/read-package-json/test/non-json.js b/node_modules/read-package-json/test/non-json.js
index e8d989b6f..0710ccd51 100644
--- a/node_modules/read-package-json/test/non-json.js
+++ b/node_modules/read-package-json/test/non-json.js
@@ -1,52 +1,57 @@
-// vim: set softtabstop=16 shiftwidth=16:
+var path = require('path')
+
var tap = require('tap')
+
var readJson = require('../')
-var path = require('path')
-var fs = require('fs')
-var expect =
-{ name: 'read-package-json',
+
+var expect = {
+ name: 'read-package-json',
version: '0.1.1',
- author:
- { name: 'Isaac Z. Schlueter',
- email: 'i@izs.me',
- url: 'http://blog.izs.me/' },
+ author: {
+ name: 'Isaac Z. Schlueter',
+ email: 'i@izs.me',
+ url: 'http://blog.izs.me/'
+ },
description: 'The thing npm uses to read package.json files with semantics and defaults and validation',
- repository:
- { type: 'git',
- url: 'git://github.com/isaacs/read-package-json.git' },
- bugs: {url: "https://github.com/isaacs/read-package-json/issues" },
+ repository: {
+ type: 'git',
+ url: 'git://github.com/isaacs/read-package-json.git'
+ },
+ bugs: {
+ url: 'https://github.com/isaacs/read-package-json/issues'
+ },
main: 'read-json.js',
scripts: { test: 'tap test/*.js' },
- dependencies:
- { glob: '~3.1.9',
- 'lru-cache': '~1.1.0',
- semver: '~1.0.14',
- slide: '~1.1.3',
- npmlog: '0',
- 'graceful-fs': '~1.1.8' },
+ dependencies: {
+ glob: '~3.1.9',
+ 'lru-cache': '~1.1.0',
+ semver: '~1.0.14',
+ slide: '~1.1.3',
+ npmlog: '0',
+ 'graceful-fs': '~1.1.8'
+ },
devDependencies: { tap: '~0.2.5' },
- homepage: "https://github.com/isaacs/read-package-json",
- optionalDependencies: { npmlog: '0', 'graceful-fs': '~1.1.8' },
+ homepage: 'https://github.com/isaacs/read-package-json',
+ optionalDependencies: { npmlog: '0', 'graceful-fs': '~1.1.8' },
_id: 'read-package-json@0.1.1',
- readme: 'ERROR: No README data found!' }
+ readme: 'ERROR: No README data found!'
+}
tap.test('from css', function (t) {
- var c = path.join(__dirname, 'fixtures', 'not-json.css')
- readJson(c, function (er, d) {
- t.same(d, expect)
- t.end()
- })
+ var c = path.join(__dirname, 'fixtures', 'not-json.css')
+ readJson(c, function (er, d) {
+ t.same(d, expect)
+ t.end()
+ })
})
tap.test('from js', function (t) {
- readJson(__filename, function (er, d) {
- t.same(d, expect)
- t.end()
- })
+ readJson(__filename, function (er, d) {
+ t.same(d, expect)
+ t.end()
+ })
})
-
-
/**package
{
"name": "read-package-json",
@@ -76,4 +81,3 @@ tap.test('from js', function (t) {
}
}
**/
-
diff --git a/node_modules/read-package-json/test/readmes.js b/node_modules/read-package-json/test/readmes.js
index 1c1cee1b3..c74cafb92 100644
--- a/node_modules/read-package-json/test/readmes.js
+++ b/node_modules/read-package-json/test/readmes.js
@@ -1,29 +1,28 @@
-// vim: set softtabstop=16 shiftwidth=16:
-var tap = require("tap")
-var readJson = require("../")
-var path = require("path")
-var fs = require("fs")
-var p = path.resolve(__dirname, "fixtures/readmes/package.json")
+var path = require('path')
+
+var tap = require('tap')
+var p = path.resolve(__dirname, 'fixtures/readmes/package.json')
+
+var readJson = require('../')
var expect = {}
var expect = {
- "name" : "readmes",
- "version" : "99.999.999999999",
- "readme" : "*markdown*\n",
- "readmeFilename" : "README.md",
- "description" : "*markdown*",
- "_id" : "readmes@99.999.999999999"
+ 'name': 'readmes',
+ 'version': '99.999.999999999',
+ 'readme': '*markdown*\n',
+ 'readmeFilename': 'README.md',
+ 'description': '*markdown*',
+ '_id': 'readmes@99.999.999999999'
}
-console.error("readme test")
-tap.test("readme test", function (t) {
- readJson(p, function (er, data) {
- if (er) throw er;
- test(t, data)
- })
+tap.test('readme test', function (t) {
+ readJson(p, function (er, data) {
+ t.ifError(er, 'read README without error')
+ test(t, data)
+ })
})
-function test(t, data) {
- t.deepEqual(data, expect)
- t.end()
+function test (t, data) {
+ t.deepEqual(data, expect)
+ t.end()
}