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 09:57:48 +0300
committerForrest L Norvell <forrest@npmjs.com>2015-04-03 10:24:04 +0300
commitdd20f5755291b9433f0d298ee0eead22cda6db36 (patch)
tree5e0019e454f653e54a9123bfaabba1f70e92d36d /node_modules/init-package-json
parent78005ebb6f4103c20f077669c3929b7ea46a4c0d (diff)
init-package-json@1.3.2
* only add `@` to scopes if they're missing * validate package names inside promzard
Diffstat (limited to 'node_modules/init-package-json')
-rw-r--r--node_modules/init-package-json/default-input.js17
-rw-r--r--node_modules/init-package-json/init-package-json.js5
-rw-r--r--node_modules/init-package-json/node_modules/glob/LICENSE15
-rw-r--r--node_modules/init-package-json/node_modules/glob/README.md369
-rw-r--r--node_modules/init-package-json/node_modules/glob/common.js237
-rw-r--r--node_modules/init-package-json/node_modules/glob/glob.js740
-rw-r--r--node_modules/init-package-json/node_modules/glob/package.json72
-rw-r--r--node_modules/init-package-json/node_modules/glob/sync.js457
-rw-r--r--node_modules/init-package-json/node_modules/promzard/example/buffer.js12
-rw-r--r--node_modules/init-package-json/node_modules/promzard/package.json18
-rw-r--r--node_modules/init-package-json/node_modules/promzard/promzard.js28
-rw-r--r--node_modules/init-package-json/node_modules/promzard/test/buffer.js84
-rw-r--r--node_modules/init-package-json/node_modules/promzard/test/validate.input8
-rw-r--r--node_modules/init-package-json/node_modules/promzard/test/validate.js20
-rw-r--r--node_modules/init-package-json/node_modules/validate-npm-package-name/.npmignore1
-rw-r--r--node_modules/init-package-json/node_modules/validate-npm-package-name/README.md86
-rw-r--r--node_modules/init-package-json/node_modules/validate-npm-package-name/index.js101
-rw-r--r--node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/.travis.yml4
-rw-r--r--node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/History.md39
-rw-r--r--node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/Readme.md18
-rw-r--r--node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/builtins.json31
-rw-r--r--node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/package.json46
-rw-r--r--node_modules/init-package-json/node_modules/validate-npm-package-name/package.json58
-rw-r--r--node_modules/init-package-json/node_modules/validate-npm-package-name/test/index.js97
-rw-r--r--node_modules/init-package-json/package.json46
-rw-r--r--node_modules/init-package-json/test/basic.input2
-rw-r--r--node_modules/init-package-json/test/basic.js2
-rw-r--r--node_modules/init-package-json/test/npm-defaults.js2
-rw-r--r--node_modules/init-package-json/test/scope.js45
29 files changed, 698 insertions, 1962 deletions
diff --git a/node_modules/init-package-json/default-input.js b/node_modules/init-package-json/default-input.js
index 95c799ebb..7ae892229 100644
--- a/node_modules/init-package-json/default-input.js
+++ b/node_modules/init-package-json/default-input.js
@@ -1,6 +1,7 @@
var fs = require('fs')
-var path = require('path')
var glob = require('glob')
+var path = require('path')
+var validateName = require("validate-npm-package-name")
// more popular packages should go here, maybe?
function isTestPkg (p) {
@@ -39,10 +40,18 @@ function readDeps (test) { return function (cb) {
}}
var name = package.name || basename
-if (config.get('scope')) {
- name = '@' + config.get('scope') + '/' + name
+var scope = config.get('scope')
+if (scope) {
+ if (scope.charAt(0) !== '@') scope = '@' + scope
+ name = scope + '/' + name
}
-exports.name = yes ? name : prompt('name', name)
+exports.name = yes ? name : prompt('name', name, function (data) {
+ var its = validateName(data)
+ if (its.validForNewPackages) return data
+ var er = new Error('Sorry, ' + its.errors.join(' and ') + '.')
+ er.notValid = true
+ return er
+})
var version = package.version ||
config.get('init.version') ||
diff --git a/node_modules/init-package-json/init-package-json.js b/node_modules/init-package-json/init-package-json.js
index cac761c39..5e50e7127 100644
--- a/node_modules/init-package-json/init-package-json.js
+++ b/node_modules/init-package-json/init-package-json.js
@@ -98,6 +98,11 @@ function init (dir, input, config, cb) {
if (!pkg.repository)
delete pkg.repository
+ // readJson filters out empty descriptions, but init-package-json
+ // traditionally leaves them alone
+ if (!pkg.description)
+ pkg.description = data.description
+
var d = JSON.stringify(pkg, null, 2) + '\n'
function write (yes) {
fs.writeFile(package, d, 'utf8', function (er) {
diff --git a/node_modules/init-package-json/node_modules/glob/LICENSE b/node_modules/init-package-json/node_modules/glob/LICENSE
deleted file mode 100644
index 19129e315..000000000
--- a/node_modules/init-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/init-package-json/node_modules/glob/README.md b/node_modules/init-package-json/node_modules/glob/README.md
deleted file mode 100644
index 258257ecb..000000000
--- a/node_modules/init-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/init-package-json/node_modules/glob/common.js b/node_modules/init-package-json/node_modules/glob/common.js
deleted file mode 100644
index cd7c82448..000000000
--- a/node_modules/init-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/init-package-json/node_modules/glob/glob.js b/node_modules/init-package-json/node_modules/glob/glob.js
deleted file mode 100644
index eac0693cc..000000000
--- a/node_modules/init-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/init-package-json/node_modules/glob/package.json b/node_modules/init-package-json/node_modules/glob/package.json
deleted file mode 100644
index 7a2cb4c63..000000000
--- a/node_modules/init-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/init-package-json/node_modules/glob/sync.js b/node_modules/init-package-json/node_modules/glob/sync.js
deleted file mode 100644
index f4f5e36d4..000000000
--- a/node_modules/init-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/init-package-json/node_modules/promzard/example/buffer.js b/node_modules/init-package-json/node_modules/promzard/example/buffer.js
new file mode 100644
index 000000000..828f9d1df
--- /dev/null
+++ b/node_modules/init-package-json/node_modules/promzard/example/buffer.js
@@ -0,0 +1,12 @@
+var pz = require('../promzard')
+
+var path = require('path')
+var file = path.resolve(__dirname, 'substack-input.js')
+var buf = require('fs').readFileSync(file)
+var ctx = { basename: path.basename(path.dirname(file)) }
+
+pz.fromBuffer(buf, ctx, function (er, res) {
+ if (er)
+ throw er
+ console.error(JSON.stringify(res, null, 2))
+})
diff --git a/node_modules/init-package-json/node_modules/promzard/package.json b/node_modules/init-package-json/node_modules/promzard/package.json
index f66857539..1007cdde4 100644
--- a/node_modules/init-package-json/node_modules/promzard/package.json
+++ b/node_modules/init-package-json/node_modules/promzard/package.json
@@ -6,7 +6,7 @@
},
"name": "promzard",
"description": "prompting wizardly",
- "version": "0.2.2",
+ "version": "0.3.0",
"repository": {
"url": "git://github.com/isaacs/promzard"
},
@@ -21,14 +21,16 @@
"test": "tap test/*.js"
},
"license": "ISC",
+ "gitHead": "780ead051299aa28be2584199ab6fa503a32d354",
"bugs": {
"url": "https://github.com/isaacs/promzard/issues"
},
"homepage": "https://github.com/isaacs/promzard",
- "_id": "promzard@0.2.2",
- "_shasum": "918b9f2b29458cb001781a8856502e4a79b016e0",
- "_from": "promzard@>=0.2.0 <0.3.0",
- "_npmVersion": "1.4.10",
+ "_id": "promzard@0.3.0",
+ "_shasum": "26a5d6ee8c7dee4cb12208305acfb93ba382a9ee",
+ "_from": "promzard@>=0.3.0 <0.4.0",
+ "_npmVersion": "2.7.1",
+ "_nodeVersion": "1.4.2",
"_npmUser": {
"name": "isaacs",
"email": "i@izs.me"
@@ -40,10 +42,10 @@
}
],
"dist": {
- "shasum": "918b9f2b29458cb001781a8856502e4a79b016e0",
- "tarball": "http://registry.npmjs.org/promzard/-/promzard-0.2.2.tgz"
+ "shasum": "26a5d6ee8c7dee4cb12208305acfb93ba382a9ee",
+ "tarball": "http://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/promzard/-/promzard-0.2.2.tgz",
+ "_resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz",
"readme": "ERROR: No README data found!"
}
diff --git a/node_modules/init-package-json/node_modules/promzard/promzard.js b/node_modules/init-package-json/node_modules/promzard/promzard.js
index 3afb567f7..da1abca95 100644
--- a/node_modules/init-package-json/node_modules/promzard/promzard.js
+++ b/node_modules/init-package-json/node_modules/promzard/promzard.js
@@ -21,6 +21,16 @@ function promzard (file, ctx, cb) {
cb(null, data)
})
}
+promzard.fromBuffer = function (buf, ctx, cb) {
+ var filename = 0
+ do {
+ filename = '\0' + Math.random();
+ } while (files[filename])
+ files[filename] = buf
+ var ret = promzard(filename, ctx, cb)
+ delete files[filename]
+ return ret
+}
function PromZard (file, ctx) {
if (!(this instanceof PromZard))
@@ -175,8 +185,14 @@ PromZard.prototype.walk = function (o, cb) {
prompt[1] = this.ctx[k]
return this.prompt(prompt, function (er, res) {
- if (er)
- return this.emit('error', this.error = er);
+ if (er) {
+ if (!er.notValid) {
+ return this.emit('error', this.error = er);
+ }
+ console.log(er.message)
+ i --
+ return L.call(this)
+ }
o[k] = res
L.call(this)
}.bind(this))
@@ -206,7 +222,13 @@ PromZard.prototype.prompt = function (pdt, cb) {
if (tx) {
cb = function (cb) { return function (er, data) {
- try { return cb(er, tx(data)) }
+ try {
+ var res = tx(data)
+ if (!er && res instanceof Error && !!res.notValid) {
+ return cb(res, null)
+ }
+ return cb(er, res)
+ }
catch (er) { this.emit('error', er) }
}}(cb).bind(this)
}
diff --git a/node_modules/init-package-json/node_modules/promzard/test/buffer.js b/node_modules/init-package-json/node_modules/promzard/test/buffer.js
new file mode 100644
index 000000000..e1d240e2e
--- /dev/null
+++ b/node_modules/init-package-json/node_modules/promzard/test/buffer.js
@@ -0,0 +1,84 @@
+var tap = require('tap')
+var pz = require('../promzard.js')
+var spawn = require('child_process').spawn
+
+tap.test('run the example using a buffer', function (t) {
+
+ var example = require.resolve('../example/buffer.js')
+ var node = process.execPath
+
+ var expect = {
+ "name": "example",
+ "version": "0.0.0",
+ "description": "testing description",
+ "main": "test-entry.js",
+ "directories": {
+ "example": "example",
+ "test": "test"
+ },
+ "dependencies": {},
+ "devDependencies": {
+ "tap": "~0.2.5"
+ },
+ "scripts": {
+ "test": "tap test/*.js"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/substack/example.git"
+ },
+ "homepage": "https://github.com/substack/example",
+ "keywords": [
+ "fugazi",
+ "function",
+ "waiting",
+ "room"
+ ],
+ "author": {
+ "name": "James Halliday",
+ "email": "mail@substack.net",
+ "url": "http://substack.net"
+ },
+ "license": "MIT",
+ "engine": {
+ "node": ">=0.6"
+ }
+ }
+
+ var c = spawn(node, [example], { customFds: [-1,-1,-1] })
+ var output = ''
+ c.stdout.on('data', function (d) {
+ output += d
+ respond()
+ })
+
+ var actual = ''
+ c.stderr.on('data', function (d) {
+ actual += d
+ })
+
+ function respond () {
+ if (output.match(/description: $/)) {
+ c.stdin.write('testing description\n')
+ return
+ }
+ if (output.match(/entry point: \(index\.js\) $/)) {
+ c.stdin.write('test-entry.js\n')
+ return
+ }
+ if (output.match(/keywords: $/)) {
+ c.stdin.write('fugazi function waiting room\n')
+ // "read" module is weird on node >= 0.10 when not a TTY
+ // requires explicit ending for reasons.
+ // could dig in, but really just wanna make tests pass, whatever.
+ c.stdin.end()
+ return
+ }
+ }
+
+ c.on('close', function () {
+ actual = JSON.parse(actual)
+ t.deepEqual(actual, expect)
+ t.end()
+ })
+})
diff --git a/node_modules/init-package-json/node_modules/promzard/test/validate.input b/node_modules/init-package-json/node_modules/promzard/test/validate.input
new file mode 100644
index 000000000..839c06522
--- /dev/null
+++ b/node_modules/init-package-json/node_modules/promzard/test/validate.input
@@ -0,0 +1,8 @@
+module.exports = {
+ "name": prompt("name", function (data) {
+ if (data === 'cool') return data
+ var er = new Error('not cool')
+ er.notValid = true
+ return er
+ })
+}
diff --git a/node_modules/init-package-json/node_modules/promzard/test/validate.js b/node_modules/init-package-json/node_modules/promzard/test/validate.js
new file mode 100644
index 000000000..a12068149
--- /dev/null
+++ b/node_modules/init-package-json/node_modules/promzard/test/validate.js
@@ -0,0 +1,20 @@
+
+var promzard = require('../')
+var test = require('tap').test
+
+test('validate', function (t) {
+ t.plan(2)
+ var ctx = { tmpdir : '/tmp' }
+ var file = __dirname + '/validate.input'
+ promzard(file, ctx, function (er, found) {
+ t.ok(!er)
+ var wanted = { name: 'cool' }
+ t.same(found, wanted)
+ })
+ setTimeout(function () {
+ process.stdin.emit('data', 'not cool\n')
+ }, 100)
+ setTimeout(function () {
+ process.stdin.emit('data', 'cool\n')
+ }, 200)
+})
diff --git a/node_modules/init-package-json/node_modules/validate-npm-package-name/.npmignore b/node_modules/init-package-json/node_modules/validate-npm-package-name/.npmignore
new file mode 100644
index 000000000..3c3629e64
--- /dev/null
+++ b/node_modules/init-package-json/node_modules/validate-npm-package-name/.npmignore
@@ -0,0 +1 @@
+node_modules
diff --git a/node_modules/init-package-json/node_modules/validate-npm-package-name/README.md b/node_modules/init-package-json/node_modules/validate-npm-package-name/README.md
new file mode 100644
index 000000000..97e7fc520
--- /dev/null
+++ b/node_modules/init-package-json/node_modules/validate-npm-package-name/README.md
@@ -0,0 +1,86 @@
+# validate-npm-package-name
+
+Give me a string and I'll tell you if it's a valid npm package name.
+
+This package exports a single synchronous function that takes a string as
+input and returns an object:
+
+## Valid Names
+
+```js
+var validate = require("validate-npm-package-name")
+
+validate("some-package")
+validate("example.com")
+validate("under_score")
+validate("123numeric")
+validate("crazy!")
+validate("@npm/thingy")
+validate("@jane/foo.js")
+```
+
+All of the above names are valid, so you'll get this object back:
+
+```js
+{
+ validForNewPackages: true,
+ validForOldPackages: true
+}
+```
+
+## Invalid Names
+
+```js
+ validate(" leading-space:and:weirdchars")
+```
+
+That was never a valid package name, so you get this:
+
+```js
+{
+ validForNewPackages: false,
+ validForOldPackages: false,
+ errors: [
+ 'name cannot contain leading or trailing spaces',
+ 'name can only contain URL-friendly characters'
+ ]
+}
+```
+
+## Legacy Names
+
+In the old days of npm, package names were wild. They could have capital
+letters in them. They could be really long. They could be the name of an
+existing module in node core.
+
+If you give this function a package name that **used to be valid**, you'll see
+a change in the value of `validForNewPackages` property, and a warnings array
+will be present:
+
+```js
+validate("cRaZY-paCkAgE-with-mixed-case-and-more-than-fifty-characters")
+```
+
+returns:
+
+```js
+{
+ validForNewPackages: false,
+ validForOldPackages: true,
+ warnings: [
+ "name can no longer contain capital letters",
+ "name can no longer contain more than 50 characters"
+ ]
+}
+```
+
+## Tests
+
+```sh
+npm install
+npm test
+```
+
+## License
+
+ISC
diff --git a/node_modules/init-package-json/node_modules/validate-npm-package-name/index.js b/node_modules/init-package-json/node_modules/validate-npm-package-name/index.js
new file mode 100644
index 000000000..fde5b7e91
--- /dev/null
+++ b/node_modules/init-package-json/node_modules/validate-npm-package-name/index.js
@@ -0,0 +1,101 @@
+var scopedPackagePattern = new RegExp("^(?:@([^/]+?)[/])?([^/]+?)$");
+var builtins = require("builtins")
+var blacklist = [
+ "node_modules",
+ "favicon.ico"
+];
+
+var validate = module.exports = function(name) {
+
+ var warnings = []
+ var errors = []
+
+ if (name === null) {
+ errors.push("name cannot be null")
+ return done(warnings, errors)
+ }
+
+ if (name === undefined) {
+ errors.push("name cannot be undefined")
+ return done(warnings, errors)
+ }
+
+ if (typeof name !== "string") {
+ errors.push("name must be a string")
+ return done(warnings, errors)
+ }
+
+ if (!name.length) {
+ errors.push("name length must be greater than zero")
+ }
+
+ if (name.match(/^\./)) {
+ errors.push("name cannot start with a period")
+ }
+
+ if (name.match(/^_/)) {
+ errors.push("name cannot start with an underscore")
+ }
+
+ if (name.trim() !== name) {
+ errors.push("name cannot contain leading or trailing spaces")
+ }
+
+ // No funny business
+ blacklist.forEach(function(blacklistedName){
+ if (name.toLowerCase() === blacklistedName) {
+ errors.push(blacklistedName + " is a blacklisted name")
+ }
+ })
+
+ // Generate warnings for stuff that used to be allowed
+
+ // core module names like http, events, util, etc
+ builtins.forEach(function(builtin){
+ if (name.toLowerCase() === builtin) {
+ warnings.push(builtin + " is a core module name")
+ }
+ })
+
+ // really-long-package-names-------------------------------such--length-----many---wow
+ if (name.length > 50) {
+ warnings.push("name can no longer contain more than 50 characters")
+ }
+
+ // mIxeD CaSe nAMEs
+ if (name.toLowerCase() !== name) {
+ warnings.push("name can no longer contain capital letters")
+ }
+
+ if (encodeURIComponent(name) !== name) {
+
+ // Maybe it's a scoped package name, like @user/package
+ var nameMatch = name.match(scopedPackagePattern)
+ if (nameMatch) {
+ var user = nameMatch[1]
+ var pkg = nameMatch[2]
+ if (encodeURIComponent(user) === user && encodeURIComponent(pkg) === pkg) {
+ return done(warnings, errors)
+ }
+ }
+
+ errors.push("name can only contain URL-friendly characters")
+ }
+
+ return done(warnings, errors)
+
+}
+
+validate.scopedPackagePattern = scopedPackagePattern
+
+var done = function (warnings, errors) {
+ var result = {
+ validForNewPackages: errors.length === 0 && warnings.length === 0,
+ validForOldPackages: errors.length === 0,
+ warnings: warnings,
+ errors: errors
+ }
+ if (!result.warnings.length) delete result.warnings
+ if (!result.errors.length) delete result.errors
+ return result
+}
diff --git a/node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/.travis.yml b/node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/.travis.yml
new file mode 100644
index 000000000..cc4dba29d
--- /dev/null
+++ b/node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/.travis.yml
@@ -0,0 +1,4 @@
+language: node_js
+node_js:
+ - "0.8"
+ - "0.10"
diff --git a/node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/History.md b/node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/History.md
new file mode 100644
index 000000000..0eb45c420
--- /dev/null
+++ b/node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/History.md
@@ -0,0 +1,39 @@
+
+0.0.7 / 2014-09-01
+==================
+
+ * update .repository
+
+0.0.6 / 2014-09-01
+==================
+
+ * add travis
+ * add test script
+ * add constants
+
+0.0.5 / 2014-06-27
+==================
+
+ * add module
+ * publish to public npm
+
+0.0.4 / 2014-04-25
+==================
+
+ * add timers
+
+0.0.3 / 2014-02-22
+==================
+
+ * add buffer
+
+0.0.2 / 2014-02-11
+==================
+
+ * add assert
+
+0.0.1 / 2014-02-11
+==================
+
+ * add main
+ * initial commit
diff --git a/node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/Readme.md b/node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/Readme.md
new file mode 100644
index 000000000..96f4b1f6c
--- /dev/null
+++ b/node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/Readme.md
@@ -0,0 +1,18 @@
+
+# builtins
+
+ List of node.js [builtin modules](http://nodejs.org/api/).
+
+ [![build status](https://secure.travis-ci.org/juliangruber/builtins.svg)](http://travis-ci.org/juliangruber/builtins)
+
+## Example
+
+```js
+var builtins = require('builtins');
+
+assert(builtins.indexOf('http') > -1);
+```
+
+## License
+
+ MIT
diff --git a/node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/builtins.json b/node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/builtins.json
new file mode 100644
index 000000000..c52221d77
--- /dev/null
+++ b/node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/builtins.json
@@ -0,0 +1,31 @@
+[
+ "assert",
+ "buffer",
+ "child_process",
+ "cluster",
+ "constants",
+ "crypto",
+ "dns",
+ "domain",
+ "events",
+ "fs",
+ "http",
+ "https",
+ "module",
+ "net",
+ "os",
+ "path",
+ "punycode",
+ "querystring",
+ "repl",
+ "stream",
+ "string_decoder",
+ "timers",
+ "tls",
+ "tty",
+ "dgram",
+ "url",
+ "util",
+ "vm",
+ "zlib"
+]
diff --git a/node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/package.json b/node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/package.json
new file mode 100644
index 000000000..459d0793b
--- /dev/null
+++ b/node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/package.json
@@ -0,0 +1,46 @@
+{
+ "name": "builtins",
+ "version": "0.0.7",
+ "description": "List of node.js builtin modules",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/juliangruber/builtins"
+ },
+ "license": "MIT",
+ "main": "builtins.json",
+ "publishConfig": {
+ "registry": "https://registry.npmjs.org"
+ },
+ "scripts": {
+ "test": "node -e \"require('./builtins.json')\""
+ },
+ "bugs": {
+ "url": "https://github.com/juliangruber/builtins/issues"
+ },
+ "homepage": "https://github.com/juliangruber/builtins",
+ "_id": "builtins@0.0.7",
+ "dist": {
+ "shasum": "355219cd6cf18dbe7c01cc7fd2dce765cfdc549a",
+ "tarball": "http://registry.npmjs.org/builtins/-/builtins-0.0.7.tgz"
+ },
+ "_from": "builtins@0.0.7",
+ "_npmVersion": "1.3.22",
+ "_npmUser": {
+ "name": "juliangruber",
+ "email": "julian@juliangruber.com"
+ },
+ "maintainers": [
+ {
+ "name": "juliangruber",
+ "email": "julian@juliangruber.com"
+ },
+ {
+ "name": "segment",
+ "email": "tj@segment.io"
+ }
+ ],
+ "directories": {},
+ "_shasum": "355219cd6cf18dbe7c01cc7fd2dce765cfdc549a",
+ "_resolved": "https://registry.npmjs.org/builtins/-/builtins-0.0.7.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/node_modules/init-package-json/node_modules/validate-npm-package-name/package.json b/node_modules/init-package-json/node_modules/validate-npm-package-name/package.json
new file mode 100644
index 000000000..68bd5451b
--- /dev/null
+++ b/node_modules/init-package-json/node_modules/validate-npm-package-name/package.json
@@ -0,0 +1,58 @@
+{
+ "name": "validate-npm-package-name",
+ "version": "2.0.1",
+ "description": "Give me a string and I'll tell you if it's a valid npm package name",
+ "main": "index.js",
+ "directories": {
+ "test": "test"
+ },
+ "dependencies": {
+ "builtins": "0.0.7"
+ },
+ "devDependencies": {
+ "tap": "^0.4.13"
+ },
+ "scripts": {
+ "test": "tap test/*.js"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/npm/validate-npm-package-name"
+ },
+ "keywords": [
+ "npm",
+ "package",
+ "names",
+ "validation"
+ ],
+ "author": {
+ "name": "zeke"
+ },
+ "license": "ISC",
+ "bugs": {
+ "url": "https://github.com/npm/validate-npm-package-name/issues"
+ },
+ "homepage": "https://github.com/npm/validate-npm-package-name",
+ "gitHead": "69f5c629525feeccfc941a6f1b9280ceed8a4b3a",
+ "_id": "validate-npm-package-name@2.0.1",
+ "_shasum": "ca006761b2b325f107fab172fb0cfcfc5e412c58",
+ "_from": "validate-npm-package-name@>=2.0.1 <3.0.0",
+ "_npmVersion": "2.2.0",
+ "_nodeVersion": "0.10.31",
+ "_npmUser": {
+ "name": "zeke",
+ "email": "zeke@npmjs.com"
+ },
+ "maintainers": [
+ {
+ "name": "zeke",
+ "email": "zeke@sikelianos.com"
+ }
+ ],
+ "dist": {
+ "shasum": "ca006761b2b325f107fab172fb0cfcfc5e412c58",
+ "tarball": "http://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-2.0.1.tgz"
+ },
+ "_resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-2.0.1.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/node_modules/init-package-json/node_modules/validate-npm-package-name/test/index.js b/node_modules/init-package-json/node_modules/validate-npm-package-name/test/index.js
new file mode 100644
index 000000000..0a976dcc8
--- /dev/null
+++ b/node_modules/init-package-json/node_modules/validate-npm-package-name/test/index.js
@@ -0,0 +1,97 @@
+var validate = require("..")
+var test = require("tap").test
+var path = require("path")
+var fs = require("fs")
+
+test("validate-npm-package-name", function (t) {
+
+ // Traditional
+
+ t.deepEqual(validate("some-package"), {validForNewPackages: true, validForOldPackages: true})
+ t.deepEqual(validate("example.com"), {validForNewPackages: true, validForOldPackages: true})
+ t.deepEqual(validate("under_score"), {validForNewPackages: true, validForOldPackages: true})
+ t.deepEqual(validate("period.js"), {validForNewPackages: true, validForOldPackages: true})
+ t.deepEqual(validate("123numeric"), {validForNewPackages: true, validForOldPackages: true})
+ t.deepEqual(validate("crazy!"), {validForNewPackages: true, validForOldPackages: true})
+
+ // Scoped (npm 2+)
+
+ t.deepEqual(validate("@npm/thingy"), {validForNewPackages: true, validForOldPackages: true})
+ t.deepEqual(validate("@npm-zors/money!time.js"), {validForNewPackages: true, validForOldPackages: true})
+
+ // Invalid
+
+ t.deepEqual(validate(""), {
+ validForNewPackages: false,
+ validForOldPackages: false,
+ errors: ["name length must be greater than zero"]})
+
+ t.deepEqual(validate(""), {
+ validForNewPackages: false,
+ validForOldPackages: false,
+ errors: ["name length must be greater than zero"]})
+
+ t.deepEqual(validate(".start-with-period"), {
+ validForNewPackages: false,
+ validForOldPackages: false,
+ errors: ["name cannot start with a period"]})
+
+ t.deepEqual(validate("_start-with-underscore"), {
+ validForNewPackages: false,
+ validForOldPackages: false,
+ errors: ["name cannot start with an underscore"]})
+
+ t.deepEqual(validate("contain:colons"), {
+ validForNewPackages: false,
+ validForOldPackages: false,
+ errors: ["name can only contain URL-friendly characters"]})
+
+ t.deepEqual(validate(" leading-space"), {
+ validForNewPackages: false,
+ validForOldPackages: false,
+ errors: ["name cannot contain leading or trailing spaces", "name can only contain URL-friendly characters"]})
+
+ t.deepEqual(validate("trailing-space "), {
+ validForNewPackages: false,
+ validForOldPackages: false,
+ errors: ["name cannot contain leading or trailing spaces", "name can only contain URL-friendly characters"]})
+
+ t.deepEqual(validate("s/l/a/s/h/e/s"), {
+ validForNewPackages: false,
+ validForOldPackages: false,
+ errors: ["name can only contain URL-friendly characters"]})
+
+ t.deepEqual(validate("node_modules"), {
+ validForNewPackages: false,
+ validForOldPackages: false,
+ errors: ["node_modules is a blacklisted name"]})
+
+ t.deepEqual(validate("favicon.ico"), {
+ validForNewPackages: false,
+ validForOldPackages: false,
+ errors: ["favicon.ico is a blacklisted name"]})
+
+ // Node/IO Core
+
+ t.deepEqual(validate("http"), {
+ validForNewPackages: false,
+ validForOldPackages: true,
+ warnings: ["http is a core module name"]})
+
+ // Long Package Names
+
+ t.deepEqual(validate("1234567890123456789012345678901234567890-more-than-fifty"), {
+ validForNewPackages: false,
+ validForOldPackages: true,
+ warnings: ["name can no longer contain more than 50 characters"]
+ })
+
+ // Legacy Mixed-Case
+
+ t.deepEqual(validate("CAPITAL-LETTERS"), {
+ validForNewPackages: false,
+ validForOldPackages: true,
+ warnings: ["name can no longer contain capital letters"]})
+
+ t.end()
+})
diff --git a/node_modules/init-package-json/package.json b/node_modules/init-package-json/package.json
index a2fb3c716..dd7511452 100644
--- a/node_modules/init-package-json/package.json
+++ b/node_modules/init-package-json/package.json
@@ -1,6 +1,6 @@
{
"name": "init-package-json",
- "version": "1.3.0",
+ "version": "1.3.2",
"main": "init-package-json.js",
"scripts": {
"test": "tap test/*.js"
@@ -17,16 +17,17 @@
"license": "ISC",
"description": "A node module to get your node module started",
"dependencies": {
- "glob": "^4.0.2",
- "promzard": "~0.2.0",
+ "glob": "^5.0.3",
+ "promzard": "^0.3.0",
"read": "~1.0.1",
"read-package-json": "1",
- "semver": "2.x || 3.x || 4"
+ "semver": "2.x || 3.x || 4",
+ "validate-npm-package-name": "^2.0.1"
},
"devDependencies": {
- "npm": "^2.1.4",
+ "npm": "^2",
"rimraf": "^2.1.4",
- "tap": "^0.4.13"
+ "tap": "^0.7.1"
},
"keywords": [
"init",
@@ -38,35 +39,14 @@
"prompt",
"start"
],
- "gitHead": "53273513f3fbaa017435ca6254d717cc27a85ddc",
+ "readme": "# init-package-json\n\nA node module to get your node module started.\n\n## Usage\n\n```javascript\nvar init = require('init-package-json')\nvar path = require('path')\n\n// a path to a promzard module. In the event that this file is\n// not found, one will be provided for you.\nvar initFile = path.resolve(process.env.HOME, '.npm-init')\n\n// the dir where we're doin stuff.\nvar dir = process.cwd()\n\n// extra stuff that gets put into the PromZard module's context.\n// In npm, this is the resolved config object. Exposed as 'config'\n// Optional.\nvar configData = { some: 'extra stuff' }\n\n// Any existing stuff from the package.json file is also exposed in the\n// PromZard module as the `package` object. There will also be free\n// vars for:\n// * `filename` path to the package.json file\n// * `basename` the tip of the package dir\n// * `dirname` the parent of the package dir\n\ninit(dir, initFile, configData, function (er, data) {\n // the data's already been written to {dir}/package.json\n // now you can do stuff with it\n})\n```\n\nOr from the command line:\n\n```\n$ npm-init\n```\n\nSee [PromZard](https://github.com/isaacs/promzard) for details about\nwhat can go in the config file.\n",
+ "readmeFilename": "README.md",
+ "gitHead": "4aaccb745ecba65676ae4bf105039928e697d65c",
"bugs": {
"url": "https://github.com/isaacs/init-package-json/issues"
},
"homepage": "https://github.com/isaacs/init-package-json",
- "_id": "init-package-json@1.3.0",
- "_shasum": "6bb76ed69dd1359581a6f1507d37d309658074d6",
- "_from": "init-package-json@>=1.3.0 <1.4.0",
- "_npmVersion": "2.6.1",
- "_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": "6bb76ed69dd1359581a6f1507d37d309658074d6",
- "tarball": "http://registry.npmjs.org/init-package-json/-/init-package-json-1.3.0.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-1.3.0.tgz",
- "readme": "ERROR: No README data found!"
+ "_id": "init-package-json@1.3.2",
+ "_shasum": "9ad3038b52e50838d78739f16b4dfb1418909d18",
+ "_from": "init-package-json@>=1.3.2 <1.4.0"
}
diff --git a/node_modules/init-package-json/test/basic.input b/node_modules/init-package-json/test/basic.input
index b41ba5040..ca309e922 100644
--- a/node_modules/init-package-json/test/basic.input
+++ b/node_modules/init-package-json/test/basic.input
@@ -3,7 +3,7 @@ var assert = require('assert')
exports.name = prompt('name', package.name || basename)
exports.version = '1.2.5'
exports.description = prompt('description', package.description)
-exports.author = 'me <em@i.l> (http://url)'
+exports.author = 'npmbot <n@p.m> (http://npm.im)'
exports.scripts = package.scripts || {}
exports.scripts.test = 'make test'
exports.main = package.main || 'main.js'
diff --git a/node_modules/init-package-json/test/basic.js b/node_modules/init-package-json/test/basic.js
index e1c448656..409c16978 100644
--- a/node_modules/init-package-json/test/basic.js
+++ b/node_modules/init-package-json/test/basic.js
@@ -11,7 +11,7 @@ tap.test('the basics', function (t) {
{ name: 'the-name',
version: '1.2.5',
description: 'description',
- author: 'me <em@i.l> (http://url)',
+ author: 'npmbot <n@p.m> (http://npm.im)',
scripts: { test: 'make test' },
main: 'main.js',
config: { foo: 'bar' },
diff --git a/node_modules/init-package-json/test/npm-defaults.js b/node_modules/init-package-json/test/npm-defaults.js
index f65f64631..666e9a1c4 100644
--- a/node_modules/init-package-json/test/npm-defaults.js
+++ b/node_modules/init-package-json/test/npm-defaults.js
@@ -14,7 +14,7 @@ var EXPECTED = {
test : 'echo "Error: no test specified" && exit 1'
},
keywords : [],
- author : "npmbot <n@p.m> (http://npm.im)",
+ author : "npmbot <n@p.m> (http://npm.im/)",
license : "WTFPL"
}
diff --git a/node_modules/init-package-json/test/scope.js b/node_modules/init-package-json/test/scope.js
index 7049a4db4..05968fcc0 100644
--- a/node_modules/init-package-json/test/scope.js
+++ b/node_modules/init-package-json/test/scope.js
@@ -1,35 +1,38 @@
-var tap = require('tap')
-var init = require('../')
-var rimraf = require('rimraf')
+var tap = require("tap")
+var init = require("../")
+var rimraf = require("rimraf")
-tap.test('the scope', function (t) {
- var i = __dirname + '/basic.input'
+var EXPECT = {
+ name: "@foo/test"
+ , version: "1.2.5"
+ , description: "description"
+ , author: "npmbot <n@p.m> (http://npm.im)"
+ , scripts: { test: "make test" }
+ , main: "main.js"
+ , config: { scope: "@foo" }
+ , package: {}
+}
+
+tap.test("the scope", function (t) {
+ var i = __dirname + "/basic.input"
var dir = __dirname
- init(dir, i, {scope: 'foo'}, function (er, data) {
+ init(dir, i, {scope: "@foo"}, function (er, data) {
if (er) throw er
- var expect =
- { name: '@foo/test',
- version: '1.2.5',
- description: 'description',
- author: 'me <em@i.l> (http://url)',
- scripts: { test: 'make test' },
- main: 'main.js',
- config: { scope: 'foo' },
- package: {} }
- t.same(data, expect)
+
+ t.same(EXPECT, data)
t.end()
})
setTimeout(function () {
- process.stdin.emit('data', '@foo/test\n')
+ process.stdin.emit("data", "@foo/test\n")
}, 50)
setTimeout(function () {
- process.stdin.emit('data', 'description\n')
+ process.stdin.emit("data", "description\n")
}, 100)
setTimeout(function () {
- process.stdin.emit('data', 'yes\n')
+ process.stdin.emit("data", "yes\n")
}, 150)
})
-tap.test('teardown', function (t) {
- rimraf(__dirname + '/package.json', t.end.bind(t))
+tap.test("teardown", function (t) {
+ rimraf(__dirname + "/package.json", t.end.bind(t))
})