You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by st...@apache.org on 2016/08/01 22:22:50 UTC

[31/61] [abbrv] [partial] cordova-create git commit: gitignore node modules

http://git-wip-us.apache.org/repos/asf/cordova-create/blob/9fb2883e/node_modules/cordova-fetch/node_modules/minimatch/minimatch.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-fetch/node_modules/minimatch/minimatch.js b/node_modules/cordova-fetch/node_modules/minimatch/minimatch.js
deleted file mode 100644
index 830a272..0000000
--- a/node_modules/cordova-fetch/node_modules/minimatch/minimatch.js
+++ /dev/null
@@ -1,924 +0,0 @@
-module.exports = minimatch
-minimatch.Minimatch = Minimatch
-
-var path = { sep: '/' }
-try {
-  path = require('path')
-} catch (er) {}
-
-var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}
-var expand = require('brace-expansion')
-
-// any single thing other than /
-// don't need to escape / when using new RegExp()
-var qmark = '[^/]'
-
-// * => any number of characters
-var star = qmark + '*?'
-
-// ** when dots are allowed.  Anything goes, except .. and .
-// not (^ or / followed by one or two dots followed by $ or /),
-// followed by anything, any number of times.
-var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?'
-
-// not a ^ or / followed by a dot,
-// followed by anything, any number of times.
-var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?'
-
-// characters that need to be escaped in RegExp.
-var reSpecials = charSet('().*{}+?[]^$\\!')
-
-// "abc" -> { a:true, b:true, c:true }
-function charSet (s) {
-  return s.split('').reduce(function (set, c) {
-    set[c] = true
-    return set
-  }, {})
-}
-
-// normalizes slashes.
-var slashSplit = /\/+/
-
-minimatch.filter = filter
-function filter (pattern, options) {
-  options = options || {}
-  return function (p, i, list) {
-    return minimatch(p, pattern, options)
-  }
-}
-
-function ext (a, b) {
-  a = a || {}
-  b = b || {}
-  var t = {}
-  Object.keys(b).forEach(function (k) {
-    t[k] = b[k]
-  })
-  Object.keys(a).forEach(function (k) {
-    t[k] = a[k]
-  })
-  return t
-}
-
-minimatch.defaults = function (def) {
-  if (!def || !Object.keys(def).length) return minimatch
-
-  var orig = minimatch
-
-  var m = function minimatch (p, pattern, options) {
-    return orig.minimatch(p, pattern, ext(def, options))
-  }
-
-  m.Minimatch = function Minimatch (pattern, options) {
-    return new orig.Minimatch(pattern, ext(def, options))
-  }
-
-  return m
-}
-
-Minimatch.defaults = function (def) {
-  if (!def || !Object.keys(def).length) return Minimatch
-  return minimatch.defaults(def).Minimatch
-}
-
-function minimatch (p, pattern, options) {
-  if (typeof pattern !== 'string') {
-    throw new TypeError('glob pattern string required')
-  }
-
-  if (!options) options = {}
-
-  // shortcut: comments match nothing.
-  if (!options.nocomment && pattern.charAt(0) === '#') {
-    return false
-  }
-
-  // "" only matches ""
-  if (pattern.trim() === '') return p === ''
-
-  return new Minimatch(pattern, options).match(p)
-}
-
-function Minimatch (pattern, options) {
-  if (!(this instanceof Minimatch)) {
-    return new Minimatch(pattern, options)
-  }
-
-  if (typeof pattern !== 'string') {
-    throw new TypeError('glob pattern string required')
-  }
-
-  if (!options) options = {}
-  pattern = pattern.trim()
-
-  // windows support: need to use /, not \
-  if (path.sep !== '/') {
-    pattern = pattern.split(path.sep).join('/')
-  }
-
-  this.options = options
-  this.set = []
-  this.pattern = pattern
-  this.regexp = null
-  this.negate = false
-  this.comment = false
-  this.empty = false
-
-  // make the set of regexps etc.
-  this.make()
-}
-
-Minimatch.prototype.debug = function () {}
-
-Minimatch.prototype.make = make
-function make () {
-  // don't do it more than once.
-  if (this._made) return
-
-  var pattern = this.pattern
-  var options = this.options
-
-  // empty patterns and comments match nothing.
-  if (!options.nocomment && pattern.charAt(0) === '#') {
-    this.comment = true
-    return
-  }
-  if (!pattern) {
-    this.empty = true
-    return
-  }
-
-  // step 1: figure out negation, etc.
-  this.parseNegate()
-
-  // step 2: expand braces
-  var set = this.globSet = this.braceExpand()
-
-  if (options.debug) this.debug = console.error
-
-  this.debug(this.pattern, set)
-
-  // step 3: now we have a set, so turn each one into a series of path-portion
-  // matching patterns.
-  // These will be regexps, except in the case of "**", which is
-  // set to the GLOBSTAR object for globstar behavior,
-  // and will not contain any / characters
-  set = this.globParts = set.map(function (s) {
-    return s.split(slashSplit)
-  })
-
-  this.debug(this.pattern, set)
-
-  // glob --> regexps
-  set = set.map(function (s, si, set) {
-    return s.map(this.parse, this)
-  }, this)
-
-  this.debug(this.pattern, set)
-
-  // filter out everything that didn't compile properly.
-  set = set.filter(function (s) {
-    return s.indexOf(false) === -1
-  })
-
-  this.debug(this.pattern, set)
-
-  this.set = set
-}
-
-Minimatch.prototype.parseNegate = parseNegate
-function parseNegate () {
-  var pattern = this.pattern
-  var negate = false
-  var options = this.options
-  var negateOffset = 0
-
-  if (options.nonegate) return
-
-  for (var i = 0, l = pattern.length
-    ; i < l && pattern.charAt(i) === '!'
-    ; i++) {
-    negate = !negate
-    negateOffset++
-  }
-
-  if (negateOffset) this.pattern = pattern.substr(negateOffset)
-  this.negate = negate
-}
-
-// Brace expansion:
-// a{b,c}d -> abd acd
-// a{b,}c -> abc ac
-// a{0..3}d -> a0d a1d a2d a3d
-// a{b,c{d,e}f}g -> abg acdfg acefg
-// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg
-//
-// Invalid sets are not expanded.
-// a{2..}b -> a{2..}b
-// a{b}c -> a{b}c
-minimatch.braceExpand = function (pattern, options) {
-  return braceExpand(pattern, options)
-}
-
-Minimatch.prototype.braceExpand = braceExpand
-
-function braceExpand (pattern, options) {
-  if (!options) {
-    if (this instanceof Minimatch) {
-      options = this.options
-    } else {
-      options = {}
-    }
-  }
-
-  pattern = typeof pattern === 'undefined'
-    ? this.pattern : pattern
-
-  if (typeof pattern === 'undefined') {
-    throw new TypeError('undefined pattern')
-  }
-
-  if (options.nobrace ||
-    !pattern.match(/\{.*\}/)) {
-    // shortcut. no need to expand.
-    return [pattern]
-  }
-
-  return expand(pattern)
-}
-
-// parse a component of the expanded set.
-// At this point, no pattern may contain "/" in it
-// so we're going to return a 2d array, where each entry is the full
-// pattern, split on '/', and then turned into a regular expression.
-// A regexp is made at the end which joins each array with an
-// escaped /, and another full one which joins each regexp with |.
-//
-// Following the lead of Bash 4.1, note that "**" only has special meaning
-// when it is the *only* thing in a path portion.  Otherwise, any series
-// of * is equivalent to a single *.  Globstar behavior is enabled by
-// default, and can be disabled by setting options.noglobstar.
-Minimatch.prototype.parse = parse
-var SUBPARSE = {}
-function parse (pattern, isSub) {
-  if (pattern.length > 1024 * 64) {
-    throw new TypeError('pattern is too long')
-  }
-
-  var options = this.options
-
-  // shortcuts
-  if (!options.noglobstar && pattern === '**') return GLOBSTAR
-  if (pattern === '') return ''
-
-  var re = ''
-  var hasMagic = !!options.nocase
-  var escaping = false
-  // ? => one single character
-  var patternListStack = []
-  var negativeLists = []
-  var plType
-  var stateChar
-  var inClass = false
-  var reClassStart = -1
-  var classStart = -1
-  // . and .. never match anything that doesn't start with .,
-  // even when options.dot is set.
-  var patternStart = pattern.charAt(0) === '.' ? '' // anything
-  // not (start or / followed by . or .. followed by / or end)
-  : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))'
-  : '(?!\\.)'
-  var self = this
-
-  function clearStateChar () {
-    if (stateChar) {
-      // we had some state-tracking character
-      // that wasn't consumed by this pass.
-      switch (stateChar) {
-        case '*':
-          re += star
-          hasMagic = true
-        break
-        case '?':
-          re += qmark
-          hasMagic = true
-        break
-        default:
-          re += '\\' + stateChar
-        break
-      }
-      self.debug('clearStateChar %j %j', stateChar, re)
-      stateChar = false
-    }
-  }
-
-  for (var i = 0, len = pattern.length, c
-    ; (i < len) && (c = pattern.charAt(i))
-    ; i++) {
-    this.debug('%s\t%s %s %j', pattern, i, re, c)
-
-    // skip over any that are escaped.
-    if (escaping && reSpecials[c]) {
-      re += '\\' + c
-      escaping = false
-      continue
-    }
-
-    switch (c) {
-      case '/':
-        // completely not allowed, even escaped.
-        // Should already be path-split by now.
-        return false
-
-      case '\\':
-        clearStateChar()
-        escaping = true
-      continue
-
-      // the various stateChar values
-      // for the "extglob" stuff.
-      case '?':
-      case '*':
-      case '+':
-      case '@':
-      case '!':
-        this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c)
-
-        // all of those are literals inside a class, except that
-        // the glob [!a] means [^a] in regexp
-        if (inClass) {
-          this.debug('  in class')
-          if (c === '!' && i === classStart + 1) c = '^'
-          re += c
-          continue
-        }
-
-        // if we already have a stateChar, then it means
-        // that there was something like ** or +? in there.
-        // Handle the stateChar, then proceed with this one.
-        self.debug('call clearStateChar %j', stateChar)
-        clearStateChar()
-        stateChar = c
-        // if extglob is disabled, then +(asdf|foo) isn't a thing.
-        // just clear the statechar *now*, rather than even diving into
-        // the patternList stuff.
-        if (options.noext) clearStateChar()
-      continue
-
-      case '(':
-        if (inClass) {
-          re += '('
-          continue
-        }
-
-        if (!stateChar) {
-          re += '\\('
-          continue
-        }
-
-        plType = stateChar
-        patternListStack.push({
-          type: plType,
-          start: i - 1,
-          reStart: re.length
-        })
-        // negation is (?:(?!js)[^/]*)
-        re += stateChar === '!' ? '(?:(?!(?:' : '(?:'
-        this.debug('plType %j %j', stateChar, re)
-        stateChar = false
-      continue
-
-      case ')':
-        if (inClass || !patternListStack.length) {
-          re += '\\)'
-          continue
-        }
-
-        clearStateChar()
-        hasMagic = true
-        re += ')'
-        var pl = patternListStack.pop()
-        plType = pl.type
-        // negation is (?:(?!js)[^/]*)
-        // The others are (?:<pattern>)<type>
-        switch (plType) {
-          case '!':
-            negativeLists.push(pl)
-            re += ')[^/]*?)'
-            pl.reEnd = re.length
-            break
-          case '?':
-          case '+':
-          case '*':
-            re += plType
-            break
-          case '@': break // the default anyway
-        }
-      continue
-
-      case '|':
-        if (inClass || !patternListStack.length || escaping) {
-          re += '\\|'
-          escaping = false
-          continue
-        }
-
-        clearStateChar()
-        re += '|'
-      continue
-
-      // these are mostly the same in regexp and glob
-      case '[':
-        // swallow any state-tracking char before the [
-        clearStateChar()
-
-        if (inClass) {
-          re += '\\' + c
-          continue
-        }
-
-        inClass = true
-        classStart = i
-        reClassStart = re.length
-        re += c
-      continue
-
-      case ']':
-        //  a right bracket shall lose its special
-        //  meaning and represent itself in
-        //  a bracket expression if it occurs
-        //  first in the list.  -- POSIX.2 2.8.3.2
-        if (i === classStart + 1 || !inClass) {
-          re += '\\' + c
-          escaping = false
-          continue
-        }
-
-        // handle the case where we left a class open.
-        // "[z-a]" is valid, equivalent to "\[z-a\]"
-        if (inClass) {
-          // split where the last [ was, make sure we don't have
-          // an invalid re. if so, re-walk the contents of the
-          // would-be class to re-translate any characters that
-          // were passed through as-is
-          // TODO: It would probably be faster to determine this
-          // without a try/catch and a new RegExp, but it's tricky
-          // to do safely.  For now, this is safe and works.
-          var cs = pattern.substring(classStart + 1, i)
-          try {
-            RegExp('[' + cs + ']')
-          } catch (er) {
-            // not a valid class!
-            var sp = this.parse(cs, SUBPARSE)
-            re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]'
-            hasMagic = hasMagic || sp[1]
-            inClass = false
-            continue
-          }
-        }
-
-        // finish up the class.
-        hasMagic = true
-        inClass = false
-        re += c
-      continue
-
-      default:
-        // swallow any state char that wasn't consumed
-        clearStateChar()
-
-        if (escaping) {
-          // no need
-          escaping = false
-        } else if (reSpecials[c]
-          && !(c === '^' && inClass)) {
-          re += '\\'
-        }
-
-        re += c
-
-    } // switch
-  } // for
-
-  // handle the case where we left a class open.
-  // "[abc" is valid, equivalent to "\[abc"
-  if (inClass) {
-    // split where the last [ was, and escape it
-    // this is a huge pita.  We now have to re-walk
-    // the contents of the would-be class to re-translate
-    // any characters that were passed through as-is
-    cs = pattern.substr(classStart + 1)
-    sp = this.parse(cs, SUBPARSE)
-    re = re.substr(0, reClassStart) + '\\[' + sp[0]
-    hasMagic = hasMagic || sp[1]
-  }
-
-  // handle the case where we had a +( thing at the *end*
-  // of the pattern.
-  // each pattern list stack adds 3 chars, and we need to go through
-  // and escape any | chars that were passed through as-is for the regexp.
-  // Go through and escape them, taking care not to double-escape any
-  // | chars that were already escaped.
-  for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
-    var tail = re.slice(pl.reStart + 3)
-    // maybe some even number of \, then maybe 1 \, followed by a |
-    tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) {
-      if (!$2) {
-        // the | isn't already escaped, so escape it.
-        $2 = '\\'
-      }
-
-      // need to escape all those slashes *again*, without escaping the
-      // one that we need for escaping the | character.  As it works out,
-      // escaping an even number of slashes can be done by simply repeating
-      // it exactly after itself.  That's why this trick works.
-      //
-      // I am sorry that you have to see this.
-      return $1 + $1 + $2 + '|'
-    })
-
-    this.debug('tail=%j\n   %s', tail, tail)
-    var t = pl.type === '*' ? star
-      : pl.type === '?' ? qmark
-      : '\\' + pl.type
-
-    hasMagic = true
-    re = re.slice(0, pl.reStart) + t + '\\(' + tail
-  }
-
-  // handle trailing things that only matter at the very end.
-  clearStateChar()
-  if (escaping) {
-    // trailing \\
-    re += '\\\\'
-  }
-
-  // only need to apply the nodot start if the re starts with
-  // something that could conceivably capture a dot
-  var addPatternStart = false
-  switch (re.charAt(0)) {
-    case '.':
-    case '[':
-    case '(': addPatternStart = true
-  }
-
-  // Hack to work around lack of negative lookbehind in JS
-  // A pattern like: *.!(x).!(y|z) needs to ensure that a name
-  // like 'a.xyz.yz' doesn't match.  So, the first negative
-  // lookahead, has to look ALL the way ahead, to the end of
-  // the pattern.
-  for (var n = negativeLists.length - 1; n > -1; n--) {
-    var nl = negativeLists[n]
-
-    var nlBefore = re.slice(0, nl.reStart)
-    var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)
-    var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)
-    var nlAfter = re.slice(nl.reEnd)
-
-    nlLast += nlAfter
-
-    // Handle nested stuff like *(*.js|!(*.json)), where open parens
-    // mean that we should *not* include the ) in the bit that is considered
-    // "after" the negated section.
-    var openParensBefore = nlBefore.split('(').length - 1
-    var cleanAfter = nlAfter
-    for (i = 0; i < openParensBefore; i++) {
-      cleanAfter = cleanAfter.replace(/\)[+*?]?/, '')
-    }
-    nlAfter = cleanAfter
-
-    var dollar = ''
-    if (nlAfter === '' && isSub !== SUBPARSE) {
-      dollar = '$'
-    }
-    var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast
-    re = newRe
-  }
-
-  // if the re is not "" at this point, then we need to make sure
-  // it doesn't match against an empty path part.
-  // Otherwise a/* will match a/, which it should not.
-  if (re !== '' && hasMagic) {
-    re = '(?=.)' + re
-  }
-
-  if (addPatternStart) {
-    re = patternStart + re
-  }
-
-  // parsing just a piece of a larger pattern.
-  if (isSub === SUBPARSE) {
-    return [re, hasMagic]
-  }
-
-  // skip the regexp for non-magical patterns
-  // unescape anything in it, though, so that it'll be
-  // an exact match against a file etc.
-  if (!hasMagic) {
-    return globUnescape(pattern)
-  }
-
-  var flags = options.nocase ? 'i' : ''
-  try {
-    var regExp = new RegExp('^' + re + '$', flags)
-  } catch (er) {
-    // If it was an invalid regular expression, then it can't match
-    // anything.  This trick looks for a character after the end of
-    // the string, which is of course impossible, except in multi-line
-    // mode, but it's not a /m regex.
-    return new RegExp('$.')
-  }
-
-  regExp._glob = pattern
-  regExp._src = re
-
-  return regExp
-}
-
-minimatch.makeRe = function (pattern, options) {
-  return new Minimatch(pattern, options || {}).makeRe()
-}
-
-Minimatch.prototype.makeRe = makeRe
-function makeRe () {
-  if (this.regexp || this.regexp === false) return this.regexp
-
-  // at this point, this.set is a 2d array of partial
-  // pattern strings, or "**".
-  //
-  // It's better to use .match().  This function shouldn't
-  // be used, really, but it's pretty convenient sometimes,
-  // when you just want to work with a regex.
-  var set = this.set
-
-  if (!set.length) {
-    this.regexp = false
-    return this.regexp
-  }
-  var options = this.options
-
-  var twoStar = options.noglobstar ? star
-    : options.dot ? twoStarDot
-    : twoStarNoDot
-  var flags = options.nocase ? 'i' : ''
-
-  var re = set.map(function (pattern) {
-    return pattern.map(function (p) {
-      return (p === GLOBSTAR) ? twoStar
-      : (typeof p === 'string') ? regExpEscape(p)
-      : p._src
-    }).join('\\\/')
-  }).join('|')
-
-  // must match entire pattern
-  // ending in a * or ** will make it less strict.
-  re = '^(?:' + re + ')$'
-
-  // can match anything, as long as it's not this.
-  if (this.negate) re = '^(?!' + re + ').*$'
-
-  try {
-    this.regexp = new RegExp(re, flags)
-  } catch (ex) {
-    this.regexp = false
-  }
-  return this.regexp
-}
-
-minimatch.match = function (list, pattern, options) {
-  options = options || {}
-  var mm = new Minimatch(pattern, options)
-  list = list.filter(function (f) {
-    return mm.match(f)
-  })
-  if (mm.options.nonull && !list.length) {
-    list.push(pattern)
-  }
-  return list
-}
-
-Minimatch.prototype.match = match
-function match (f, partial) {
-  this.debug('match', f, this.pattern)
-  // short-circuit in the case of busted things.
-  // comments, etc.
-  if (this.comment) return false
-  if (this.empty) return f === ''
-
-  if (f === '/' && partial) return true
-
-  var options = this.options
-
-  // windows: need to use /, not \
-  if (path.sep !== '/') {
-    f = f.split(path.sep).join('/')
-  }
-
-  // treat the test path as a set of pathparts.
-  f = f.split(slashSplit)
-  this.debug(this.pattern, 'split', f)
-
-  // just ONE of the pattern sets in this.set needs to match
-  // in order for it to be valid.  If negating, then just one
-  // match means that we have failed.
-  // Either way, return on the first hit.
-
-  var set = this.set
-  this.debug(this.pattern, 'set', set)
-
-  // Find the basename of the path by looking for the last non-empty segment
-  var filename
-  var i
-  for (i = f.length - 1; i >= 0; i--) {
-    filename = f[i]
-    if (filename) break
-  }
-
-  for (i = 0; i < set.length; i++) {
-    var pattern = set[i]
-    var file = f
-    if (options.matchBase && pattern.length === 1) {
-      file = [filename]
-    }
-    var hit = this.matchOne(file, pattern, partial)
-    if (hit) {
-      if (options.flipNegate) return true
-      return !this.negate
-    }
-  }
-
-  // didn't get any hits.  this is success if it's a negative
-  // pattern, failure otherwise.
-  if (options.flipNegate) return false
-  return this.negate
-}
-
-// set partial to true to test if, for example,
-// "/a/b" matches the start of "/*/b/*/d"
-// Partial means, if you run out of file before you run
-// out of pattern, then that's fine, as long as all
-// the parts match.
-Minimatch.prototype.matchOne = function (file, pattern, partial) {
-  var options = this.options
-
-  this.debug('matchOne',
-    { 'this': this, file: file, pattern: pattern })
-
-  this.debug('matchOne', file.length, pattern.length)
-
-  for (var fi = 0,
-      pi = 0,
-      fl = file.length,
-      pl = pattern.length
-      ; (fi < fl) && (pi < pl)
-      ; fi++, pi++) {
-    this.debug('matchOne loop')
-    var p = pattern[pi]
-    var f = file[fi]
-
-    this.debug(pattern, p, f)
-
-    // should be impossible.
-    // some invalid regexp stuff in the set.
-    if (p === false) return false
-
-    if (p === GLOBSTAR) {
-      this.debug('GLOBSTAR', [pattern, p, f])
-
-      // "**"
-      // a/**/b/**/c would match the following:
-      // a/b/x/y/z/c
-      // a/x/y/z/b/c
-      // a/b/x/b/x/c
-      // a/b/c
-      // To do this, take the rest of the pattern after
-      // the **, and see if it would match the file remainder.
-      // If so, return success.
-      // If not, the ** "swallows" a segment, and try again.
-      // This is recursively awful.
-      //
-      // a/**/b/**/c matching a/b/x/y/z/c
-      // - a matches a
-      // - doublestar
-      //   - matchOne(b/x/y/z/c, b/**/c)
-      //     - b matches b
-      //     - doublestar
-      //       - matchOne(x/y/z/c, c) -> no
-      //       - matchOne(y/z/c, c) -> no
-      //       - matchOne(z/c, c) -> no
-      //       - matchOne(c, c) yes, hit
-      var fr = fi
-      var pr = pi + 1
-      if (pr === pl) {
-        this.debug('** at the end')
-        // a ** at the end will just swallow the rest.
-        // We have found a match.
-        // however, it will not swallow /.x, unless
-        // options.dot is set.
-        // . and .. are *never* matched by **, for explosively
-        // exponential reasons.
-        for (; fi < fl; fi++) {
-          if (file[fi] === '.' || file[fi] === '..' ||
-            (!options.dot && file[fi].charAt(0) === '.')) return false
-        }
-        return true
-      }
-
-      // ok, let's see if we can swallow whatever we can.
-      while (fr < fl) {
-        var swallowee = file[fr]
-
-        this.debug('\nglobstar while', file, fr, pattern, pr, swallowee)
-
-        // XXX remove this slice.  Just pass the start index.
-        if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
-          this.debug('globstar found match!', fr, fl, swallowee)
-          // found a match.
-          return true
-        } else {
-          // can't swallow "." or ".." ever.
-          // can only swallow ".foo" when explicitly asked.
-          if (swallowee === '.' || swallowee === '..' ||
-            (!options.dot && swallowee.charAt(0) === '.')) {
-            this.debug('dot detected!', file, fr, pattern, pr)
-            break
-          }
-
-          // ** swallows a segment, and continue.
-          this.debug('globstar swallow a segment, and continue')
-          fr++
-        }
-      }
-
-      // no match was found.
-      // However, in partial mode, we can't say this is necessarily over.
-      // If there's more *pattern* left, then
-      if (partial) {
-        // ran out of file
-        this.debug('\n>>> no match, partial?', file, fr, pattern, pr)
-        if (fr === fl) return true
-      }
-      return false
-    }
-
-    // something other than **
-    // non-magic patterns just have to match exactly
-    // patterns with magic have been turned into regexps.
-    var hit
-    if (typeof p === 'string') {
-      if (options.nocase) {
-        hit = f.toLowerCase() === p.toLowerCase()
-      } else {
-        hit = f === p
-      }
-      this.debug('string match', p, f, hit)
-    } else {
-      hit = f.match(p)
-      this.debug('pattern match', p, f, hit)
-    }
-
-    if (!hit) return false
-  }
-
-  // Note: ending in / means that we'll get a final ""
-  // at the end of the pattern.  This can only match a
-  // corresponding "" at the end of the file.
-  // If the file ends in /, then it can only match a
-  // a pattern that ends in /, unless the pattern just
-  // doesn't have any more for it. But, a/b/ should *not*
-  // match "a/b/*", even though "" matches against the
-  // [^/]*? pattern, except in partial mode, where it might
-  // simply not be reached yet.
-  // However, a/b/ should still satisfy a/*
-
-  // now either we fell off the end of the pattern, or we're done.
-  if (fi === fl && pi === pl) {
-    // ran out of pattern and filename at the same time.
-    // an exact hit!
-    return true
-  } else if (fi === fl) {
-    // ran out of file, but still had pattern left.
-    // this is ok if we're doing the match as part of
-    // a glob fs traversal.
-    return partial
-  } else if (pi === pl) {
-    // ran out of pattern, still have file left.
-    // this is only acceptable if we're on the very last
-    // empty segment of a file with a trailing slash.
-    // a/* should match a/b/
-    var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')
-    return emptyFileEnd
-  }
-
-  // should be unreachable.
-  throw new Error('wtf?')
-}
-
-// replace stuff like \* with *
-function globUnescape (s) {
-  return s.replace(/\\(.)/g, '$1')
-}
-
-function regExpEscape (s) {
-  return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&')
-}

http://git-wip-us.apache.org/repos/asf/cordova-create/blob/9fb2883e/node_modules/cordova-fetch/node_modules/minimatch/package.json
----------------------------------------------------------------------
diff --git a/node_modules/cordova-fetch/node_modules/minimatch/package.json b/node_modules/cordova-fetch/node_modules/minimatch/package.json
deleted file mode 100644
index 6ff1900..0000000
--- a/node_modules/cordova-fetch/node_modules/minimatch/package.json
+++ /dev/null
@@ -1,107 +0,0 @@
-{
-  "_args": [
-    [
-      {
-        "name": "minimatch",
-        "raw": "minimatch@^3.0.0",
-        "rawSpec": "^3.0.0",
-        "scope": null,
-        "spec": ">=3.0.0 <4.0.0",
-        "type": "range"
-      },
-      "/Users/ctran/cordova/cordova-lib/cordova-create/node_modules/cordova-common"
-    ],
-    [
-      {
-        "name": "minimatch",
-        "raw": "minimatch@^3.0.2",
-        "rawSpec": "^3.0.2",
-        "scope": null,
-        "spec": ">=3.0.2 <4.0.0",
-        "type": "range"
-      },
-      "/Users/ctran/cordova/cordova-lib/cordova-create/node_modules/cordova-fetch/node_modules/glob"
-    ]
-  ],
-  "_from": "minimatch@^3.0.2",
-  "_id": "minimatch@3.0.2",
-  "_inCache": true,
-  "_installable": true,
-  "_location": "/cordova-fetch/minimatch",
-  "_nodeVersion": "4.4.4",
-  "_npmOperationalInternal": {
-    "host": "packages-16-east.internal.npmjs.com",
-    "tmp": "tmp/minimatch-3.0.2.tgz_1466194379770_0.11417287751100957"
-  },
-  "_npmUser": {
-    "email": "i@izs.me",
-    "name": "isaacs"
-  },
-  "_npmVersion": "3.9.1",
-  "_phantomChildren": {},
-  "_requested": {
-    "name": "minimatch",
-    "raw": "minimatch@^3.0.2",
-    "rawSpec": "^3.0.2",
-    "scope": null,
-    "spec": ">=3.0.2 <4.0.0",
-    "type": "range"
-  },
-  "_requiredBy": [
-    "/cordova-fetch/glob"
-  ],
-  "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz",
-  "_shasum": "0f398a7300ea441e9c348c83d98ab8c9dbf9c40a",
-  "_shrinkwrap": null,
-  "_spec": "minimatch@^3.0.2",
-  "_where": "/Users/ctran/cordova/cordova-lib/cordova-create/node_modules/cordova-fetch/node_modules/glob",
-  "author": {
-    "email": "i@izs.me",
-    "name": "Isaac Z. Schlueter",
-    "url": "http://blog.izs.me"
-  },
-  "bugs": {
-    "url": "https://github.com/isaacs/minimatch/issues"
-  },
-  "dependencies": {
-    "brace-expansion": "^1.0.0"
-  },
-  "description": "a glob matcher in javascript",
-  "devDependencies": {
-    "standard": "^3.7.2",
-    "tap": "^5.6.0"
-  },
-  "directories": {},
-  "dist": {
-    "shasum": "0f398a7300ea441e9c348c83d98ab8c9dbf9c40a",
-    "tarball": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz"
-  },
-  "engines": {
-    "node": "*"
-  },
-  "files": [
-    "minimatch.js"
-  ],
-  "gitHead": "81edb7c763abd31ba981c87ec5e835f178786be0",
-  "homepage": "https://github.com/isaacs/minimatch#readme",
-  "license": "ISC",
-  "main": "minimatch.js",
-  "maintainers": [
-    {
-      "email": "i@izs.me",
-      "name": "isaacs"
-    }
-  ],
-  "name": "minimatch",
-  "optionalDependencies": {},
-  "readme": "ERROR: No README data found!",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/isaacs/minimatch.git"
-  },
-  "scripts": {
-    "posttest": "standard minimatch.js test/*.js",
-    "test": "tap test/*.js"
-  },
-  "version": "3.0.2"
-}

http://git-wip-us.apache.org/repos/asf/cordova-create/blob/9fb2883e/node_modules/cordova-fetch/node_modules/q/CHANGES.md
----------------------------------------------------------------------
diff --git a/node_modules/cordova-fetch/node_modules/q/CHANGES.md b/node_modules/cordova-fetch/node_modules/q/CHANGES.md
deleted file mode 100644
index cd351fd..0000000
--- a/node_modules/cordova-fetch/node_modules/q/CHANGES.md
+++ /dev/null
@@ -1,786 +0,0 @@
-
-## 1.4.1
-
- - Address an issue that prevented Q from being used as a `<script>` for
-   Firefox add-ons. Q can now be used in any environment that provides `window`
-   or `self` globals, favoring `window` since add-ons have an an immutable
-   `self` that is distinct from `window`.
-
-## 1.4.0
-
- - Add `noConflict` support for use in `<script>` (@jahnjw).
-
-## 1.3.0
-
- - Add tracking for unhandled and handled rejections in Node.js (@benjamingr).
-
-## 1.2.1
-
- - Fix Node.js environment detection for modern Browserify (@kahnjw).
-
-## 1.2.0
-
- - Added Q.any(promisesArray) method (@vergara).
-   Returns a promise fulfilled with the value of the first resolved promise in
-   promisesArray. If all promises in promisesArray are rejected, it returns
-   a rejected promise.
-
-## 1.1.2
-
- - Removed extraneous files from the npm package by using the "files"
-   whitelist in package.json instead of the .npmignore blacklist.
-   (@anton-rudeshko)
-
-## 1.1.1
-
- - Fix a pair of regressions in bootstrapping, one which precluded
-   WebWorker support, and another that precluded support in
-   ``<script>`` usage outright. #607
-
-## 1.1.0
-
- - Adds support for enabling long stack traces in node.js by setting
-   environment variable `Q_DEBUG=1`.
- - Introduces the `tap` method to promises, which will see a value
-   pass through without alteration.
- - Use instanceof to recognize own promise instances as opposed to
-   thenables.
- - Construct timeout errors with `code === ETIMEDOUT` (Kornel Lesi\u0144ski)
- - More descriminant CommonJS module environment detection.
- - Dropped continuous integration for Node.js 0.6 and 0.8 because of
-   changes to npm that preclude the use of new `^` version predicate
-   operator in any transitive dependency.
- - Users can now override `Q.nextTick`.
-
-## 1.0.1
-
- - Adds support for `Q.Promise`, which implements common usage of the
-   ES6 `Promise` constructor and its methods. `Promise` does not have
-   a valid promise constructor and a proper implementation awaits
-   version 2 of Q.
- - Removes the console stopgap for a promise inspector. This no longer
-   works with any degree of reliability.
- - Fixes support for content security policies that forbid eval. Now
-   using the `StopIteration` global to distinguish SpiderMonkey
-   generators from ES6 generators, assuming that they will never
-   coexist.
-
-## 1.0.0
-
-:cake: This is all but a re-release of version 0.9, which has settled
-into a gentle maintenance mode and rightly deserves an official 1.0.
-An ambitious 2.0 release is already around the corner, but 0.9/1.0
-have been distributed far and wide and demand long term support.
-
- - Q will now attempt to post a debug message in browsers regardless
-   of whether window.Touch is defined. Chrome at least now has this
-   property regardless of whether touch is supported by the underlying
-   hardware.
- - Remove deprecation warning from `promise.valueOf`. The function is
-   called by the browser in various ways so there is no way to
-   distinguish usage that should be migrated from usage that cannot be
-   altered.
-
-## 0.9.7
-
- - :warning: `q.min.js` is no longer checked-in.  It is however still
-   created by Grunt and NPM.
- - Fixes a bug that inhibited `Q.async` with implementations of the new
-   ES6 generators.
- - Fixes a bug with `nextTick` affecting Safari 6.0.5 the first time a
-   page loads when an `iframe` is involved.
- - Introduces `passByCopy`, `join`, and `race`.
- - Shows stack traces or error messages on the console, instead of
-   `Error` objects.
- - Elimintates wrapper methods for improved performance.
- - `Q.all` now propagates progress notifications of the form you might
-   expect of ES6 iterations, `{value, index}` where the `value` is the
-   progress notification from the promise at `index`.
-
-## 0.9.6
-
- - Fixes a bug in recognizing the difference between compatible Q
-   promises, and Q promises from before the implementation of "inspect".
-   The latter are now coerced.
- - Fixes an infinite asynchronous coercion cycle introduced by former
-   solution, in two independently sufficient ways.  1.) All promises
-   returned by makePromise now implement "inspect", albeit a default
-   that reports that the promise has an "unknown" state.  2.) The
-   implementation of "then/when" is now in "then" instead of "when", so
-   that the responsibility to "coerce" the given promise rests solely in
-   the "when" method and the "then" method may assume that "this" is a
-   promise of the right type.
- - Refactors `nextTick` to use an unrolled microtask within Q regardless
-   of how new ticks a requested. #316 @rkatic
-
-## 0.9.5
-
- - Introduces `inspect` for getting the state of a promise as
-   `{state: "fulfilled" | "rejected" | "pending", value | reason}`.
- - Introduces `allSettled` which produces an array of promises states
-   for the input promises once they have all "settled".  This is in
-   accordance with a discussion on Promises/A+ that "settled" refers to
-   a promise that is "fulfilled" or "rejected".  "resolved" refers to a
-   deferred promise that has been "resolved" to another promise,
-   "sealing its fate" to the fate of the successor promise.
- - Long stack traces are now off by default.  Set `Q.longStackSupport`
-   to true to enable long stack traces.
- - Long stack traces can now follow the entire asynchronous history of a
-   promise, not just a single jump.
- - Introduces `spawn` for an immediately invoked asychronous generator.
-   @jlongster
- - Support for *experimental* synonyms `mapply`, `mcall`, `nmapply`,
-   `nmcall` for method invocation.
-
-## 0.9.4
-
- - `isPromise` and `isPromiseAlike` now always returns a boolean
-   (even for falsy values). #284 @lfac-pt
- - Support for ES6 Generators in `async` #288 @andywingo
- - Clear duplicate promise rejections from dispatch methods #238 @SLaks
- - Unhandled rejection API #296 @domenic
-   `stopUnhandledRejectionTracking`, `getUnhandledReasons`,
-   `resetUnhandledRejections`.
-
-## 0.9.3
-
- - Add the ability to give `Q.timeout`'s errors a custom error message. #270
-   @jgrenon
- - Fix Q's call-stack busting behavior in Node.js 0.10, by switching from
-   `process.nextTick` to `setImmediate`. #254 #259
- - Fix Q's behavior when used with the Mocha test runner in the browser, since
-   Mocha introduces a fake `process` global without a `nextTick` property. #267
- - Fix some, but not all, cases wherein Q would give false positives in its
-   unhandled rejection detection (#252). A fix for other cases (#238) is
-   hopefully coming soon.
- - Made `Q.promise` throw early if given a non-function.
-
-## 0.9.2
-
- - Pass through progress notifications when using `timeout`. #229 @omares
- - Pass through progress notifications when using `delay`.
- - Fix `nbind` to actually bind the `thisArg`. #232 @davidpadbury
-
-## 0.9.1
-
- - Made the AMD detection compatible with the RequireJS optimizer's `namespace`
-   option. #225 @terinjokes
- - Fix side effects from `valueOf`, and thus from `isFulfilled`, `isRejected`,
-   and `isPending`. #226 @benjamn
-
-## 0.9.0
-
-This release removes many layers of deprecated methods and brings Q closer to
-alignment with Mark Miller\u2019s TC39 [strawman][] for concurrency. At the same
-time, it fixes many bugs and adds a few features around error handling. Finally,
-it comes with an updated and comprehensive [API Reference][].
-
-[strawman]: http://wiki.ecmascript.org/doku.php?id=strawman:concurrency
-[API Reference]: https://github.com/kriskowal/q/wiki/API-Reference
-
-### API Cleanup
-
-The following deprecated or undocumented methods have been removed.
-Their replacements are listed here:
-
-<table>
-   <thead>
-      <tr>
-         <th>0.8.x method</th>
-         <th>0.9 replacement</th>
-      </tr>
-   </thead>
-   <tbody>
-      <tr>
-         <td><code>Q.ref</code></td>
-         <td><code>Q</code></td>
-      </tr>
-      <tr>
-         <td><code>call</code>, <code>apply</code>, <code>bind</code> (*)</td>
-         <td><code>fcall</code>/<code>invoke</code>, <code>fapply</code>/<code>post</code>, <code>fbind</code></td>
-      </tr>
-      <tr>
-         <td><code>ncall</code>, <code>napply</code> (*)</td>
-         <td><code>nfcall</code>/<code>ninvoke</code>, <code>nfapply</code>/<code>npost</code></td>
-      </tr>
-      <tr>
-         <td><code>end</code></td>
-         <td><code>done</code></td>
-      </tr>
-      <tr>
-         <td><code>put</code></td>
-         <td><code>set</code></td>
-      </tr>
-      <tr>
-         <td><code>node</code></td>
-         <td><code>nbind</code></td>
-      </tr>
-      <tr>
-         <td><code>nend</code></td>
-         <td><code>nodeify</code></td>
-      </tr>
-      <tr>
-         <td><code>isResolved</code></td>
-         <td><code>isPending</code></td>
-      </tr>
-      <tr>
-         <td><code>deferred.node</code></td>
-         <td><code>deferred.makeNodeResolver</code></td>
-      </tr>
-      <tr>
-         <td><code>Method</code>, <code>sender</code></td>
-         <td><code>dispatcher</code></td>
-      </tr>
-      <tr>
-         <td><code>send</code></td>
-         <td><code>dispatch</code></td>
-      </tr>
-      <tr>
-         <td><code>view</code>, <code>viewInfo</code></td>
-         <td>(none)</td>
-      </tr>
-   </tbody>
-</table>
-
-
-(*) Use of ``thisp`` is discouraged. For calling methods, use ``post`` or
-``invoke``.
-
-### Alignment with the Concurrency Strawman
-
--   Q now exports a `Q(value)` function, an alias for `resolve`.
-    `Q.call`, `Q.apply`, and `Q.bind` were removed to make room for the
-    same methods on the function prototype.
--   `invoke` has been aliased to `send` in all its forms.
--   `post` with no method name acts like `fapply`.
-
-### Error Handling
-
--   Long stack traces can be turned off by setting `Q.stackJumpLimit` to zero.
-    In the future, this property will be used to fine tune how many stack jumps
-    are retained in long stack traces; for now, anything nonzero is treated as
-    one (since Q only tracks one stack jump at the moment, see #144). #168
--   In Node.js, if there are unhandled rejections when the process exits, they
-    are output to the console. #115
-
-### Other
-
--   `delete` and `set` (n�e `put`) no longer have a fulfillment value.
--   Q promises are no longer frozen, which
-    [helps with performance](http://code.google.com/p/v8/issues/detail?id=1858).
--   `thenReject` is now included, as a counterpart to `thenResolve`.
--   The included browser `nextTick` shim is now faster. #195 @rkatic.
-
-### Bug Fixes
-
--   Q now works in Internet Explorer 10. #186 @ForbesLindesay
--   `fbind` no longer hard-binds the returned function's `this` to `undefined`.
-    #202
--   `Q.reject` no longer leaks memory. #148
--   `npost` with no arguments now works. #207
--   `allResolved` now works with non-Q promises ("thenables"). #179
--   `keys` behavior is now correct even in browsers without native
-    `Object.keys`. #192 @rkatic
--   `isRejected` and the `exception` property now work correctly if the
-    rejection reason is falsy. #198
-
-### Internals and Advanced
-
--   The internal interface for a promise now uses
-    `dispatchPromise(resolve, op, operands)` instead of `sendPromise(op,
-    resolve, ...operands)`, which reduces the cases where Q needs to do
-    argument slicing.
--   The internal protocol uses different operands. "put" is now "set".
-    "del" is now "delete". "view" and "viewInfo" have been removed.
--   `Q.fulfill` has been added. It is distinct from `Q.resolve` in that
-    it does not pass promises through, nor coerces promises from other
-    systems. The promise becomes the fulfillment value. This is only
-    recommended for use when trying to fulfill a promise with an object that has
-    a `then` function that is at the same time not a promise.
-
-## 0.8.12
-- Treat foreign promises as unresolved in `Q.isFulfilled`; this lets `Q.all`
-  work on arrays containing foreign promises. #154
-- Fix minor incompliances with the [Promises/A+ spec][] and [test suite][]. #157
-  #158
-
-[Promises/A+ spec]: http://promises-aplus.github.com/promises-spec/
-[test suite]: https://github.com/promises-aplus/promises-tests
-
-## 0.8.11
-
- - Added ``nfcall``, ``nfapply``, and ``nfbind`` as ``thisp``-less versions of
-   ``ncall``, ``napply``, and ``nbind``. The latter are now deprecated. #142
- - Long stack traces no longer cause linearly-growing memory usage when chaining
-   promises together. #111
- - Inspecting ``error.stack`` in a rejection handler will now give a long stack
-   trace. #103
- - Fixed ``Q.timeout`` to clear its timeout handle when the promise is rejected;
-   previously, it kept the event loop alive until the timeout period expired.
-   #145 @dfilatov
- - Added `q/queue` module, which exports an infinite promise queue
-   constructor.
-
-## 0.8.10
-
- - Added ``done`` as a replacement for ``end``, taking the usual fulfillment,
-   rejection, and progress handlers. It's essentially equivalent to
-   ``then(f, r, p).end()``.
- - Added ``Q.onerror``, a settable error trap that you can use to get full stack
-   traces for uncaught errors. #94
- - Added ``thenResolve`` as a shortcut for returning a constant value once a
-   promise is fulfilled. #108 @ForbesLindesay
- - Various tweaks to progress notification, including propagation and
-   transformation of progress values and only forwarding a single progress
-   object.
- - Renamed ``nend`` to ``nodeify``. It no longer returns an always-fulfilled
-   promise when a Node callback is passed.
- - ``deferred.resolve`` and ``deferred.reject`` no longer (sometimes) return
-   ``deferred.promise``.
- - Fixed stack traces getting mangled if they hit ``end`` twice. #116 #121 @ef4
- - Fixed ``ninvoke`` and ``npost`` to work on promises for objects with Node
-   methods. #134
- - Fixed accidental coercion of objects with nontrivial ``valueOf`` methods,
-   like ``Date``s, by the promise's ``valueOf`` method. #135
- - Fixed ``spread`` not calling the passed rejection handler if given a rejected
-   promise.
-
-## 0.8.9
-
- - Added ``nend``
- - Added preliminary progress notification support, via
-   ``promise.then(onFulfilled, onRejected, onProgress)``,
-   ``promise.progress(onProgress)``, and ``deferred.notify(...progressData)``.
- - Made ``put`` and ``del`` return the object acted upon for easier chaining.
-   #84
- - Fixed coercion cycles with cooperating promises. #106
-
-## 0.8.7
-
- - Support [Montage Require](http://github.com/kriskowal/mr)
-
-## 0.8.6
-
- - Fixed ``npost`` and ``ninvoke`` to pass the correct ``thisp``. #74
- - Fixed various cases involving unorthodox rejection reasons. #73 #90
-   @ef4
- - Fixed double-resolving of misbehaved custom promises. #75
- - Sped up ``Q.all`` for arrays contain already-resolved promises or scalar
-   values. @ForbesLindesay
- - Made stack trace filtering work when concatenating assets. #93 @ef4
- - Added warnings for deprecated methods. @ForbesLindesay
- - Added ``.npmignore`` file so that dependent packages get a slimmer
-   ``node_modules`` directory.
-
-## 0.8.5
-
- - Added preliminary support for long traces (@domenic)
- - Added ``fapply``, ``fcall``, ``fbind`` for non-thisp
-   promised function calls.
- - Added ``return`` for async generators, where generators
-   are implemented.
- - Rejected promises now have an "exception" property.  If an object
-   isRejected(object), then object.valueOf().exception will
-   be the wrapped error.
- - Added Jasmine specifications
- - Support Internet Explorers 7\u20139 (with multiple bug fixes @domenic)
- - Support Firefox 12
- - Support Safari 5.1.5
- - Support Chrome 18
-
-## 0.8.4
-
- - WARNING: ``promise.timeout`` is now rejected with an ``Error`` object
-   and the message now includes the duration of the timeout in
-   miliseconds.  This doesn't constitute (in my opinion) a
-   backward-incompatibility since it is a change of an undocumented and
-   unspecified public behavior, but if you happened to depend on the
-   exception being a string, you will need to revise your code.
- - Added ``deferred.makeNodeResolver()`` to replace the more cryptic
-   ``deferred.node()`` method.
- - Added experimental ``Q.promise(maker(resolve, reject))`` to make a
-   promise inside a callback, such that thrown exceptions in the
-   callback are converted and the resolver and rejecter are arguments.
-   This is a shorthand for making a deferred directly and inspired by
-   @gozala\u2019s stream constructor pattern and the Microsoft Windows Metro
-   Promise constructor interface.
- - Added experimental ``Q.begin()`` that is intended to kick off chains
-   of ``.then`` so that each of these can be reordered without having to
-   edit the new and former first step.
-
-## 0.8.3
-
- - Added ``isFulfilled``, ``isRejected``, and ``isResolved``
-   to the promise prototype.
- - Added ``allResolved`` for waiting for every promise to either be
-   fulfilled or rejected, without propagating an error. @utvara #53
- - Added ``Q.bind`` as a method to transform functions that
-   return and throw into promise-returning functions. See
-   [an example](https://gist.github.com/1782808). @domenic
- - Renamed ``node`` export to ``nbind``, and added ``napply`` to
-   complete the set. ``node`` remains as deprecated. @domenic #58
- - Renamed ``Method`` export to ``sender``.  ``Method``
-   remains as deprecated and will be removed in the next
-   major version since I expect it has very little usage.
- - Added browser console message indicating a live list of
-   unhandled errors.
- - Added support for ``msSetImmediate`` (IE10) or ``setImmediate``
-   (available via [polyfill](https://github.com/NobleJS/setImmediate))
-   as a browser-side ``nextTick`` implementation. #44 #50 #59
- - Stopped using the event-queue dependency, which was in place for
-   Narwhal support: now directly using ``process.nextTick``.
- - WARNING: EXPERIMENTAL: added ``finally`` alias for ``fin``, ``catch``
-   alias for ``fail``, ``try`` alias for ``call``, and ``delete`` alias
-   for ``del``.  These properties are enquoted in the library for
-   cross-browser compatibility, but may be used as property names in
-   modern engines.
-
-## 0.8.2
-
- - Deprecated ``ref`` in favor of ``resolve`` as recommended by
-   @domenic.
- - Update event-queue dependency.
-
-## 0.8.1
-
- - Fixed Opera bug. #35 @cadorn
- - Fixed ``Q.all([])`` #32 @domenic
-
-## 0.8.0
-
- - WARNING: ``enqueue`` removed.  Use ``nextTick`` instead.
-   This is more consistent with NodeJS and (subjectively)
-   more explicit and intuitive.
- - WARNING: ``def`` removed.  Use ``master`` instead.  The
-   term ``def`` was too confusing to new users.
- - WARNING: ``spy`` removed in favor of ``fin``.
- - WARNING: ``wait`` removed. Do ``all(args).get(0)`` instead.
- - WARNING: ``join`` removed. Do ``all(args).spread(callback)`` instead.
- - WARNING: Removed the ``Q`` function module.exports alias
-   for ``Q.ref``. It conflicts with ``Q.apply`` in weird
-   ways, making it uncallable.
- - Revised ``delay`` so that it accepts both ``(value,
-   timeout)`` and ``(timeout)`` variations based on
-   arguments length.
- - Added ``ref().spread(cb(...args))``, a variant of
-   ``then`` that spreads an array across multiple arguments.
-   Useful with ``all()``.
- - Added ``defer().node()`` Node callback generator.  The
-   callback accepts ``(error, value)`` or ``(error,
-   ...values)``.  For multiple value arguments, the
-   fulfillment value is an array, useful in conjunction with
-   ``spread``.
- - Added ``node`` and ``ncall``, both with the signature
-   ``(fun, thisp_opt, ...args)``.  The former is a decorator
-   and the latter calls immediately.  ``node`` optional
-   binds and partially applies.  ``ncall`` can bind and pass
-   arguments.
-
-## 0.7.2
-
- - Fixed thenable promise assimilation.
-
-## 0.7.1
-
- - Stopped shimming ``Array.prototype.reduce``. The
-   enumerable property has bad side-effects.  Libraries that
-   depend on this (for example, QQ) will need to be revised.
-
-## 0.7.0 - BACKWARD INCOMPATIBILITY
-
- - WARNING: Removed ``report`` and ``asap``
- - WARNING: The ``callback`` argument of the ``fin``
-   function no longer receives any arguments. Thus, it can
-   be used to call functions that should not receive
-   arguments on resolution.  Use ``when``, ``then``, or
-   ``fail`` if you need a value.
- - IMPORTANT: Fixed a bug in the use of ``MessageChannel``
-   for ``nextTick``.
- - Renamed ``enqueue`` to ``nextTick``.
- - Added experimental ``view`` and ``viewInfo`` for creating
-   views of promises either when or before they're
-   fulfilled.
- - Shims are now externally applied so subsequent scripts or
-   dependees can use them.
- - Improved minification results.
- - Improved readability.
-
-## 0.6.0 - BACKWARD INCOMPATIBILITY
-
- - WARNING: In practice, the implementation of ``spy`` and
-   the name ``fin`` were useful.  I've removed the old
-   ``fin`` implementation and renamed/aliased ``spy``.
- - The "q" module now exports its ``ref`` function as a "Q"
-   constructor, with module systems that support exports
-   assignment including NodeJS, RequireJS, and when used as
-   a ``<script>`` tag. Notably, strictly compliant CommonJS
-   does not support this, but UncommonJS does.
- - Added ``async`` decorator for generators that use yield
-   to "trampoline" promises. In engines that support
-   generators (SpiderMonkey), this will greatly reduce the
-   need for nested callbacks.
- - Made ``when`` chainable.
- - Made ``all`` chainable.
-
-## 0.5.3
-
- - Added ``all`` and refactored ``join`` and ``wait`` to use
-   it.  All of these will now reject at the earliest
-   rejection.
-
-## 0.5.2
-
- - Minor improvement to ``spy``; now waits for resolution of
-   callback promise.
-
-## 0.5.1
-
- - Made most Q API methods chainable on promise objects, and
-   turned the previous promise-methods of ``join``,
-   ``wait``, and ``report`` into Q API methods.
- - Added ``apply`` and ``call`` to the Q API, and ``apply``
-   as a promise handler.
- - Added ``fail``, ``fin``, and ``spy`` to Q and the promise
-   prototype for convenience when observing rejection,
-   fulfillment and rejection, or just observing without
-   affecting the resolution.
- - Renamed ``def`` (although ``def`` remains shimmed until
-   the next major release) to ``master``.
- - Switched to using ``MessageChannel`` for next tick task
-   enqueue in browsers that support it.
-
-## 0.5.0 - MINOR BACKWARD INCOMPATIBILITY
-
- - Exceptions are no longer reported when consumed.
- - Removed ``error`` from the API.  Since exceptions are
-   getting consumed, throwing them in an errback causes the
-   exception to silently disappear.  Use ``end``.
- - Added ``end`` as both an API method and a promise-chain
-   ending method.  It causes propagated rejections to be
-   thrown, which allows Node to write stack traces and
-   emit ``uncaughtException`` events, and browsers to
-   likewise emit ``onerror`` and log to the console.
- - Added ``join`` and ``wait`` as promise chain functions,
-   so you can wait for variadic promises, returning your own
-   promise back, or join variadic promises, resolving with a
-   callback that receives variadic fulfillment values.
-
-## 0.4.4
-
- - ``end`` no longer returns a promise. It is the end of the
-   promise chain.
- - Stopped reporting thrown exceptions in ``when`` callbacks
-   and errbacks.  These must be explicitly reported through
-   ``.end()``, ``.then(null, Q.error)``, or some other
-   mechanism.
- - Added ``report`` as an API method, which can be used as
-   an errback to report and propagate an error.
- - Added ``report`` as a promise-chain method, so an error
-   can be reported if it passes such a gate.
-
-## 0.4.3
-
- - Fixed ``<script>`` support that regressed with 0.4.2
-   because of "use strict" in the module system
-   multi-plexer.
-
-## 0.4.2
-
- - Added support for RequireJS (jburke)
-
-## 0.4.1
-
- - Added an "end" method to the promise prototype,
-   as a shorthand for waiting for the promise to
-   be resolved gracefully, and failing to do so,
-   to dump an error message.
-
-## 0.4.0 - BACKWARD INCOMPATIBLE*
-
- - *Removed the utility modules. NPM and Node no longer
-   expose any module except the main module.  These have
-   been moved and merged into the "qq" package.
- - *In a non-CommonJS browser, q.js can be used as a script.
-   It now creates a Q global variable.
- - Fixed thenable assimilation.
- - Fixed some issues with asap, when it resolves to
-   undefined, or throws an exception.
-
-## 0.3.0 - BACKWARD-INCOMPATIBLE
-
- - The `post` method has been reverted to its original
-   signature, as provided in Tyler Close's `ref_send` API.
-   That is, `post` accepts two arguments, the second of
-   which is an arbitrary object, but usually invocation
-   arguments as an `Array`.  To provide variadic arguments
-   to `post`, there is a new `invoke` function that posts
-   the variadic arguments to the value given in the first
-   argument.
- - The `defined` method has been moved from `q` to `q/util`
-   since it gets no use in practice but is still
-   theoretically useful.
- - The `Promise` constructor has been renamed to
-   `makePromise` to be consistent with the convention that
-   functions that do not require the `new` keyword to be
-   used as constructors have camelCase names.
- - The `isResolved` function has been renamed to
-   `isFulfilled`.  There is a new `isResolved` function that
-   indicates whether a value is not a promise or, if it is a
-   promise, whether it has been either fulfilled or
-   rejected.  The code has been revised to reflect this
-   nuance in terminology.
-
-## 0.2.10
-
- - Added `join` to `"q/util"` for variadically joining
-   multiple promises.
-
-## 0.2.9
-
- - The future-compatible `invoke` method has been added,
-   to replace `post`, since `post` will become backward-
-   incompatible in the next major release.
- - Exceptions thrown in the callbacks of a `when` call are
-   now emitted to Node's `"uncaughtException"` `process`
-   event in addition to being returned as a rejection reason.
-
-## 0.2.8
-
- - Exceptions thrown in the callbacks of a `when` call
-   are now consumed, warned, and transformed into
-   rejections of the promise returned by `when`.
-
-## 0.2.7
-
- - Fixed a minor bug in thenable assimilation, regressed
-   because of the change in the forwarding protocol.
- - Fixed behavior of "q/util" `deep` method on dates and
-   other primitives. Github issue #11.
-
-## 0.2.6
-
- - Thenables (objects with a "then" method) are accepted
-   and provided, bringing this implementation of Q
-   into conformance with Promises/A, B, and D.
- - Added `makePromise`, to replace the `Promise` function
-   eventually.
- - Rejections are now also duck-typed. A rejection is a
-   promise with a valueOf method that returns a rejection
-   descriptor. A rejection descriptor has a
-   "promiseRejected" property equal to "true" and a
-   "reason" property corresponding to the rejection reason.
- - Altered the `makePromise` API such that the `fallback`
-   method no longer receives a superfluous `resolved` method
-   after the `operator`.  The fallback method is responsible
-   only for returning a resolution.  This breaks an
-   undocumented API, so third-party API's depending on the
-   previous undocumented behavior may break.
-
-## 0.2.5
-
- - Changed promises into a duck-type such that multiple
-   instances of the Q module can exchange promise objects.
-   A promise is now defined as "an object that implements the
-   `promiseSend(op, resolved, ...)` method and `valueOf`".
- - Exceptions in promises are now captured and returned
-   as rejections.
-
-## 0.2.4
-
- - Fixed bug in `ref` that prevented `del` messages from
-   being received (gozala)
- - Fixed a conflict with FireFox 4; constructor property
-   is now read-only.
-
-## 0.2.3
-
- - Added `keys` message to promises and to the promise API.
-
-## 0.2.2
-
- - Added boilerplate to `q/queue` and `q/util`.
- - Fixed missing dependency to `q/queue`.
-
-## 0.2.1
-
- - The `resolve` and `reject` methods of `defer` objects now
-   return the resolution promise for convenience.
- - Added `q/util`, which provides `step`, `delay`, `shallow`,
-   `deep`, and three reduction orders.
- - Added `q/queue` module for a promise `Queue`.
- - Added `q-comm` to the list of compatible libraries.
- - Deprecated `defined` from `q`, with intent to move it to
-   `q/util`.
-
-## 0.2.0 - BACKWARD INCOMPATIBLE
-
- - Changed post(ref, name, args) to variadic
-   post(ref, name, ...args). BACKWARD INCOMPATIBLE
- - Added a def(value) method to annotate an object as being
-   necessarily a local value that cannot be serialized, such
-   that inter-process/worker/vat promise communication
-   libraries will send messages to it, but never send it
-   back.
- - Added a send(value, op, ...args) method to the public API, for
-   forwarding messages to a value or promise in a future turn.
-
-## 0.1.9
-
- - Added isRejected() for testing whether a value is a rejected
-   promise.  isResolved() retains the behavior of stating
-   that rejected promises are not resolved.
-
-## 0.1.8
-
- - Fixed isResolved(null) and isResolved(undefined) [issue #9]
- - Fixed a problem with the Object.create shim
-
-## 0.1.7
-
- - shimmed ES5 Object.create in addition to Object.freeze
-   for compatibility on non-ES5 engines (gozala)
-
-## 0.1.6
-
- - Q.isResolved added
- - promise.valueOf() now returns the value of resolved
-   and near values
- - asap retried
- - promises are frozen when possible
-
-## 0.1.5
-
- - fixed dependency list for Teleport (gozala)
- - all unit tests now pass (gozala)
-
-## 0.1.4
-
- - added support for Teleport as an engine (gozala)
- - simplified and updated methods for getting internal
-   print and enqueue functions universally (gozala)
-
-## 0.1.3
-
- - fixed erroneous link to the q module in package.json
-
-## 0.1.2
-
- - restructured for overlay style package compatibility
-
-## 0.1.0
-
- - removed asap because it was broken, probably down to the
-   philosophy.
-
-## 0.0.3
-
- - removed q-util
- - fixed asap so it returns a value if completed
-
-## 0.0.2
-
- - added q-util
-
-## 0.0.1
-
- - initial version

http://git-wip-us.apache.org/repos/asf/cordova-create/blob/9fb2883e/node_modules/cordova-fetch/node_modules/q/LICENSE
----------------------------------------------------------------------
diff --git a/node_modules/cordova-fetch/node_modules/q/LICENSE b/node_modules/cordova-fetch/node_modules/q/LICENSE
deleted file mode 100644
index 8a706b5..0000000
--- a/node_modules/cordova-fetch/node_modules/q/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-Copyright 2009\u20132014 Kristopher Michael Kowal. All rights reserved.
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/cordova-create/blob/9fb2883e/node_modules/cordova-fetch/node_modules/q/README.md
----------------------------------------------------------------------
diff --git a/node_modules/cordova-fetch/node_modules/q/README.md b/node_modules/cordova-fetch/node_modules/q/README.md
deleted file mode 100644
index 9065bfa..0000000
--- a/node_modules/cordova-fetch/node_modules/q/README.md
+++ /dev/null
@@ -1,881 +0,0 @@
-[![Build Status](https://secure.travis-ci.org/kriskowal/q.png?branch=master)](http://travis-ci.org/kriskowal/q)
-
-<a href="http://promises-aplus.github.com/promises-spec">
-    <img src="http://kriskowal.github.io/q/q.png"
-         align="right" alt="Q logo" />
-</a>
-
-*This is Q version 1, from the `v1` branch in Git. This documentation applies to
-the latest of both the version 1 and version 0.9 release trains. These releases
-are stable. There will be no further releases of 0.9 after 0.9.7 which is nearly
-equivalent to version 1.0.0. All further releases of `q@~1.0` will be backward
-compatible. The version 2 release train introduces significant and
-backward-incompatible changes and is experimental at this time.*
-
-If a function cannot return a value or throw an exception without
-blocking, it can return a promise instead.  A promise is an object
-that represents the return value or the thrown exception that the
-function may eventually provide.  A promise can also be used as a
-proxy for a [remote object][Q-Connection] to overcome latency.
-
-[Q-Connection]: https://github.com/kriskowal/q-connection
-
-On the first pass, promises can mitigate the \u201c[Pyramid of
-Doom][POD]\u201d: the situation where code marches to the right faster
-than it marches forward.
-
-[POD]: http://calculist.org/blog/2011/12/14/why-coroutines-wont-work-on-the-web/
-
-```javascript
-step1(function (value1) {
-    step2(value1, function(value2) {
-        step3(value2, function(value3) {
-            step4(value3, function(value4) {
-                // Do something with value4
-            });
-        });
-    });
-});
-```
-
-With a promise library, you can flatten the pyramid.
-
-```javascript
-Q.fcall(promisedStep1)
-.then(promisedStep2)
-.then(promisedStep3)
-.then(promisedStep4)
-.then(function (value4) {
-    // Do something with value4
-})
-.catch(function (error) {
-    // Handle any error from all above steps
-})
-.done();
-```
-
-With this approach, you also get implicit error propagation, just like `try`,
-`catch`, and `finally`.  An error in `promisedStep1` will flow all the way to
-the `catch` function, where it\u2019s caught and handled.  (Here `promisedStepN` is
-a version of `stepN` that returns a promise.)
-
-The callback approach is called an \u201cinversion of control\u201d.
-A function that accepts a callback instead of a return value
-is saying, \u201cDon\u2019t call me, I\u2019ll call you.\u201d.  Promises
-[un-invert][IOC] the inversion, cleanly separating the input
-arguments from control flow arguments.  This simplifies the
-use and creation of API\u2019s, particularly variadic,
-rest and spread arguments.
-
-[IOC]: http://www.slideshare.net/domenicdenicola/callbacks-promises-and-coroutines-oh-my-the-evolution-of-asynchronicity-in-javascript
-
-
-## Getting Started
-
-The Q module can be loaded as:
-
--   A ``<script>`` tag (creating a ``Q`` global variable): ~2.5 KB minified and
-    gzipped.
--   A Node.js and CommonJS module, available in [npm](https://npmjs.org/) as
-    the [q](https://npmjs.org/package/q) package
--   An AMD module
--   A [component](https://github.com/component/component) as ``microjs/q``
--   Using [bower](http://bower.io/) as `q#1.0.1`
--   Using [NuGet](http://nuget.org/) as [Q](https://nuget.org/packages/q)
-
-Q can exchange promises with jQuery, Dojo, When.js, WinJS, and more.
-
-## Resources
-
-Our [wiki][] contains a number of useful resources, including:
-
-- A method-by-method [Q API reference][reference].
-- A growing [examples gallery][examples], showing how Q can be used to make
-  everything better. From XHR to database access to accessing the Flickr API,
-  Q is there for you.
-- There are many libraries that produce and consume Q promises for everything
-  from file system/database access or RPC to templating. For a list of some of
-  the more popular ones, see [Libraries][].
-- If you want materials that introduce the promise concept generally, and the
-  below tutorial isn't doing it for you, check out our collection of
-  [presentations, blog posts, and podcasts][resources].
-- A guide for those [coming from jQuery's `$.Deferred`][jquery].
-
-We'd also love to have you join the Q-Continuum [mailing list][].
-
-[wiki]: https://github.com/kriskowal/q/wiki
-[reference]: https://github.com/kriskowal/q/wiki/API-Reference
-[examples]: https://github.com/kriskowal/q/wiki/Examples-Gallery
-[Libraries]: https://github.com/kriskowal/q/wiki/Libraries
-[resources]: https://github.com/kriskowal/q/wiki/General-Promise-Resources
-[jquery]: https://github.com/kriskowal/q/wiki/Coming-from-jQuery
-[mailing list]: https://groups.google.com/forum/#!forum/q-continuum
-
-
-## Tutorial
-
-Promises have a ``then`` method, which you can use to get the eventual
-return value (fulfillment) or thrown exception (rejection).
-
-```javascript
-promiseMeSomething()
-.then(function (value) {
-}, function (reason) {
-});
-```
-
-If ``promiseMeSomething`` returns a promise that gets fulfilled later
-with a return value, the first function (the fulfillment handler) will be
-called with the value.  However, if the ``promiseMeSomething`` function
-gets rejected later by a thrown exception, the second function (the
-rejection handler) will be called with the exception.
-
-Note that resolution of a promise is always asynchronous: that is, the
-fulfillment or rejection handler will always be called in the next turn of the
-event loop (i.e. `process.nextTick` in Node). This gives you a nice
-guarantee when mentally tracing the flow of your code, namely that
-``then`` will always return before either handler is executed.
-
-In this tutorial, we begin with how to consume and work with promises. We'll
-talk about how to create them, and thus create functions like
-`promiseMeSomething` that return promises, [below](#the-beginning).
-
-
-### Propagation
-
-The ``then`` method returns a promise, which in this example, I\u2019m
-assigning to ``outputPromise``.
-
-```javascript
-var outputPromise = getInputPromise()
-.then(function (input) {
-}, function (reason) {
-});
-```
-
-The ``outputPromise`` variable becomes a new promise for the return
-value of either handler.  Since a function can only either return a
-value or throw an exception, only one handler will ever be called and it
-will be responsible for resolving ``outputPromise``.
-
--   If you return a value in a handler, ``outputPromise`` will get
-    fulfilled.
-
--   If you throw an exception in a handler, ``outputPromise`` will get
-    rejected.
-
--   If you return a **promise** in a handler, ``outputPromise`` will
-    \u201cbecome\u201d that promise.  Being able to become a new promise is useful
-    for managing delays, combining results, or recovering from errors.
-
-If the ``getInputPromise()`` promise gets rejected and you omit the
-rejection handler, the **error** will go to ``outputPromise``:
-
-```javascript
-var outputPromise = getInputPromise()
-.then(function (value) {
-});
-```
-
-If the input promise gets fulfilled and you omit the fulfillment handler, the
-**value** will go to ``outputPromise``:
-
-```javascript
-var outputPromise = getInputPromise()
-.then(null, function (error) {
-});
-```
-
-Q promises provide a ``fail`` shorthand for ``then`` when you are only
-interested in handling the error:
-
-```javascript
-var outputPromise = getInputPromise()
-.fail(function (error) {
-});
-```
-
-If you are writing JavaScript for modern engines only or using
-CoffeeScript, you may use `catch` instead of `fail`.
-
-Promises also have a ``fin`` function that is like a ``finally`` clause.
-The final handler gets called, with no arguments, when the promise
-returned by ``getInputPromise()`` either returns a value or throws an
-error.  The value returned or error thrown by ``getInputPromise()``
-passes directly to ``outputPromise`` unless the final handler fails, and
-may be delayed if the final handler returns a promise.
-
-```javascript
-var outputPromise = getInputPromise()
-.fin(function () {
-    // close files, database connections, stop servers, conclude tests
-});
-```
-
--   If the handler returns a value, the value is ignored
--   If the handler throws an error, the error passes to ``outputPromise``
--   If the handler returns a promise, ``outputPromise`` gets postponed.  The
-    eventual value or error has the same effect as an immediate return
-    value or thrown error: a value would be ignored, an error would be
-    forwarded.
-
-If you are writing JavaScript for modern engines only or using
-CoffeeScript, you may use `finally` instead of `fin`.
-
-### Chaining
-
-There are two ways to chain promises.  You can chain promises either
-inside or outside handlers.  The next two examples are equivalent.
-
-```javascript
-return getUsername()
-.then(function (username) {
-    return getUser(username)
-    .then(function (user) {
-        // if we get here without an error,
-        // the value returned here
-        // or the exception thrown here
-        // resolves the promise returned
-        // by the first line
-    })
-});
-```
-
-```javascript
-return getUsername()
-.then(function (username) {
-    return getUser(username);
-})
-.then(function (user) {
-    // if we get here without an error,
-    // the value returned here
-    // or the exception thrown here
-    // resolves the promise returned
-    // by the first line
-});
-```
-
-The only difference is nesting.  It\u2019s useful to nest handlers if you
-need to capture multiple input values in your closure.
-
-```javascript
-function authenticate() {
-    return getUsername()
-    .then(function (username) {
-        return getUser(username);
-    })
-    // chained because we will not need the user name in the next event
-    .then(function (user) {
-        return getPassword()
-        // nested because we need both user and password next
-        .then(function (password) {
-            if (user.passwordHash !== hash(password)) {
-                throw new Error("Can't authenticate");
-            }
-        });
-    });
-}
-```
-
-
-### Combination
-
-You can turn an array of promises into a promise for the whole,
-fulfilled array using ``all``.
-
-```javascript
-return Q.all([
-    eventualAdd(2, 2),
-    eventualAdd(10, 20)
-]);
-```
-
-If you have a promise for an array, you can use ``spread`` as a
-replacement for ``then``.  The ``spread`` function \u201cspreads\u201d the
-values over the arguments of the fulfillment handler.  The rejection handler
-will get called at the first sign of failure.  That is, whichever of
-the received promises fails first gets handled by the rejection handler.
-
-```javascript
-function eventualAdd(a, b) {
-    return Q.spread([a, b], function (a, b) {
-        return a + b;
-    })
-}
-```
-
-But ``spread`` calls ``all`` initially, so you can skip it in chains.
-
-```javascript
-return getUsername()
-.then(function (username) {
-    return [username, getUser(username)];
-})
-.spread(function (username, user) {
-});
-```
-
-The ``all`` function returns a promise for an array of values.  When this
-promise is fulfilled, the array contains the fulfillment values of the original
-promises, in the same order as those promises.  If one of the given promises
-is rejected, the returned promise is immediately rejected, not waiting for the
-rest of the batch.  If you want to wait for all of the promises to either be
-fulfilled or rejected, you can use ``allSettled``.
-
-```javascript
-Q.allSettled(promises)
-.then(function (results) {
-    results.forEach(function (result) {
-        if (result.state === "fulfilled") {
-            var value = result.value;
-        } else {
-            var reason = result.reason;
-        }
-    });
-});
-```
-
-The ``any`` function accepts an array of promises and returns a promise that is
-fulfilled by the first given promise to be fulfilled, or rejected if all of the
-given promises are rejected.
-
-```javascript
-Q.any(promises)
-.then(function (first) {
-    // Any of the promises was fulfilled.
-}, function (error) {
-    // All of the promises were rejected.
-});
-```
-
-### Sequences
-
-If you have a number of promise-producing functions that need
-to be run sequentially, you can of course do so manually:
-
-```javascript
-return foo(initialVal).then(bar).then(baz).then(qux);
-```
-
-However, if you want to run a dynamically constructed sequence of
-functions, you'll want something like this:
-
-```javascript
-var funcs = [foo, bar, baz, qux];
-
-var result = Q(initialVal);
-funcs.forEach(function (f) {
-    result = result.then(f);
-});
-return result;
-```
-
-You can make this slightly more compact using `reduce`:
-
-```javascript
-return funcs.reduce(function (soFar, f) {
-    return soFar.then(f);
-}, Q(initialVal));
-```
-
-Or, you could use the ultra-compact version:
-
-```javascript
-return funcs.reduce(Q.when, Q(initialVal));
-```
-
-### Handling Errors
-
-One sometimes-unintuive aspect of promises is that if you throw an
-exception in the fulfillment handler, it will not be caught by the error
-handler.
-
-```javascript
-return foo()
-.then(function (value) {
-    throw new Error("Can't bar.");
-}, function (error) {
-    // We only get here if "foo" fails
-});
-```
-
-To see why this is, consider the parallel between promises and
-``try``/``catch``. We are ``try``-ing to execute ``foo()``: the error
-handler represents a ``catch`` for ``foo()``, while the fulfillment handler
-represents code that happens *after* the ``try``/``catch`` block.
-That code then needs its own ``try``/``catch`` block.
-
-In terms of promises, this means chaining your rejection handler:
-
-```javascript
-return foo()
-.then(function (value) {
-    throw new Error("Can't bar.");
-})
-.fail(function (error) {
-    // We get here with either foo's error or bar's error
-});
-```
-
-### Progress Notification
-
-It's possible for promises to report their progress, e.g. for tasks that take a
-long time like a file upload. Not all promises will implement progress
-notifications, but for those that do, you can consume the progress values using
-a third parameter to ``then``:
-
-```javascript
-return uploadFile()
-.then(function () {
-    // Success uploading the file
-}, function (err) {
-    // There was an error, and we get the reason for error
-}, function (progress) {
-    // We get notified of the upload's progress as it is executed
-});
-```
-
-Like `fail`, Q also provides a shorthand for progress callbacks
-called `progress`:
-
-```javascript
-return uploadFile().progress(function (progress) {
-    // We get notified of the upload's progress
-});
-```
-
-### The End
-
-When you get to the end of a chain of promises, you should either
-return the last promise or end the chain.  Since handlers catch
-errors, it\u2019s an unfortunate pattern that the exceptions can go
-unobserved.
-
-So, either return it,
-
-```javascript
-return foo()
-.then(function () {
-    return "bar";
-});
-```
-
-Or, end it.
-
-```javascript
-foo()
-.then(function () {
-    return "bar";
-})
-.done();
-```
-
-Ending a promise chain makes sure that, if an error doesn\u2019t get
-handled before the end, it will get rethrown and reported.
-
-This is a stopgap. We are exploring ways to make unhandled errors
-visible without any explicit handling.
-
-
-### The Beginning
-
-Everything above assumes you get a promise from somewhere else.  This
-is the common case.  Every once in a while, you will need to create a
-promise from scratch.
-
-#### Using ``Q.fcall``
-
-You can create a promise from a value using ``Q.fcall``.  This returns a
-promise for 10.
-
-```javascript
-return Q.fcall(function () {
-    return 10;
-});
-```
-
-You can also use ``fcall`` to get a promise for an exception.
-
-```javascript
-return Q.fcall(function () {
-    throw new Error("Can't do it");
-});
-```
-
-As the name implies, ``fcall`` can call functions, or even promised
-functions.  This uses the ``eventualAdd`` function above to add two
-numbers.
-
-```javascript
-return Q.fcall(eventualAdd, 2, 2);
-```
-
-
-#### Using Deferreds
-
-If you have to interface with asynchronous functions that are callback-based
-instead of promise-based, Q provides a few shortcuts (like ``Q.nfcall`` and
-friends). But much of the time, the solution will be to use *deferreds*.
-
-```javascript
-var deferred = Q.defer();
-FS.readFile("foo.txt", "utf-8", function (error, text) {
-    if (error) {
-        deferred.reject(new Error(error));
-    } else {
-        deferred.resolve(text);
-    }
-});
-return deferred.promise;
-```
-
-Note that a deferred can be resolved with a value or a promise.  The
-``reject`` function is a shorthand for resolving with a rejected
-promise.
-
-```javascript
-// this:
-deferred.reject(new Error("Can't do it"));
-
-// is shorthand for:
-var rejection = Q.fcall(function () {
-    throw new Error("Can't do it");
-});
-deferred.resolve(rejection);
-```
-
-This is a simplified implementation of ``Q.delay``.
-
-```javascript
-function delay(ms) {
-    var deferred = Q.defer();
-    setTimeout(deferred.resolve, ms);
-    return deferred.promise;
-}
-```
-
-This is a simplified implementation of ``Q.timeout``
-
-```javascript
-function timeout(promise, ms) {
-    var deferred = Q.defer();
-    Q.when(promise, deferred.resolve);
-    delay(ms).then(function () {
-        deferred.reject(new Error("Timed out"));
-    });
-    return deferred.promise;
-}
-```
-
-Finally, you can send a progress notification to the promise with
-``deferred.notify``.
-
-For illustration, this is a wrapper for XML HTTP requests in the browser. Note
-that a more [thorough][XHR] implementation would be in order in practice.
-
-[XHR]: https://github.com/montagejs/mr/blob/71e8df99bb4f0584985accd6f2801ef3015b9763/browser.js#L29-L73
-
-```javascript
-function requestOkText(url) {
-    var request = new XMLHttpRequest();
-    var deferred = Q.defer();
-
-    request.open("GET", url, true);
-    request.onload = onload;
-    request.onerror = onerror;
-    request.onprogress = onprogress;
-    request.send();
-
-    function onload() {
-        if (request.status === 200) {
-            deferred.resolve(request.responseText);
-        } else {
-            deferred.reject(new Error("Status code was " + request.status));
-        }
-    }
-
-    function onerror() {
-        deferred.reject(new Error("Can't XHR " + JSON.stringify(url)));
-    }
-
-    function onprogress(event) {
-        deferred.notify(event.loaded / event.total);
-    }
-
-    return deferred.promise;
-}
-```
-
-Below is an example of how to use this ``requestOkText`` function:
-
-```javascript
-requestOkText("http://localhost:3000")
-.then(function (responseText) {
-    // If the HTTP response returns 200 OK, log the response text.
-    console.log(responseText);
-}, function (error) {
-    // If there's an error or a non-200 status code, log the error.
-    console.error(error);
-}, function (progress) {
-    // Log the progress as it comes in.
-    console.log("Request progress: " + Math.round(progress * 100) + "%");
-});
-```
-
-#### Using `Q.Promise`
-
-This is an alternative promise-creation API that has the same power as
-the deferred concept, but without introducing another conceptual entity.
-
-Rewriting the `requestOkText` example above using `Q.Promise`:
-
-```javascript
-function requestOkText(url) {
-    return Q.Promise(function(resolve, reject, notify) {
-        var request = new XMLHttpRequest();
-
-        request.open("GET", url, true);
-        request.onload = onload;
-        request.onerror = onerror;
-        request.onprogress = onprogress;
-        request.send();
-
-        function onload() {
-            if (request.status === 200) {
-                resolve(request.responseText);
-            } else {
-                reject(new Error("Status code was " + request.status));
-            }
-        }
-
-        function onerror() {
-            reject(new Error("Can't XHR " + JSON.stringify(url)));
-        }
-
-        function onprogress(event) {
-            notify(event.loaded / event.total);
-        }
-    });
-}
-```
-
-If `requestOkText` were to throw an exception, the returned promise would be
-rejected with that thrown exception as the rejection reason.
-
-### The Middle
-
-If you are using a function that may return a promise, but just might
-return a value if it doesn\u2019t need to defer, you can use the \u201cstatic\u201d
-methods of the Q library.
-
-The ``when`` function is the static equivalent for ``then``.
-
-```javascript
-return Q.when(valueOrPromise, function (value) {
-}, function (error) {
-});
-```
-
-All of the other methods on a promise have static analogs with the
-same name.
-
-The following are equivalent:
-
-```javascript
-return Q.all([a, b]);
-```
-
-```javascript
-return Q.fcall(function () {
-    return [a, b];
-})
-.all();
-```
-
-When working with promises provided by other libraries, you should
-convert it to a Q promise.  Not all promise libraries make the same
-guarantees as Q and certainly don\u2019t provide all of the same methods.
-Most libraries only provide a partially functional ``then`` method.
-This thankfully is all we need to turn them into vibrant Q promises.
-
-```javascript
-return Q($.ajax(...))
-.then(function () {
-});
-```
-
-If there is any chance that the promise you receive is not a Q promise
-as provided by your library, you should wrap it using a Q function.
-You can even use ``Q.invoke`` as a shorthand.
-
-```javascript
-return Q.invoke($, 'ajax', ...)
-.then(function () {
-});
-```
-
-
-### Over the Wire
-
-A promise can serve as a proxy for another object, even a remote
-object.  There are methods that allow you to optimistically manipulate
-properties or call functions.  All of these interactions return
-promises, so they can be chained.
-
-```
-direct manipulation         using a promise as a proxy
---------------------------  -------------------------------
-value.foo                   promise.get("foo")
-value.foo = value           promise.put("foo", value)
-delete value.foo            promise.del("foo")
-value.foo(...args)          promise.post("foo", [args])
-value.foo(...args)          promise.invoke("foo", ...args)
-value(...args)              promise.fapply([args])
-value(...args)              promise.fcall(...args)
-```
-
-If the promise is a proxy for a remote object, you can shave
-round-trips by using these functions instead of ``then``.  To take
-advantage of promises for remote objects, check out [Q-Connection][].
-
-[Q-Connection]: https://github.com/kriskowal/q-connection
-
-Even in the case of non-remote objects, these methods can be used as
-shorthand for particularly-simple fulfillment handlers. For example, you
-can replace
-
-```javascript
-return Q.fcall(function () {
-    return [{ foo: "bar" }, { foo: "baz" }];
-})
-.then(function (value) {
-    return value[0].foo;
-});
-```
-
-with
-
-```javascript
-return Q.fcall(function () {
-    return [{ foo: "bar" }, { foo: "baz" }];
-})
-.get(0)
-.get("foo");
-```
-
-
-### Adapting Node
-
-If you're working with functions that make use of the Node.js callback pattern,
-where callbacks are in the form of `function(err, result)`, Q provides a few
-useful utility functions for converting between them. The most straightforward
-are probably `Q.nfcall` and `Q.nfapply` ("Node function call/apply") for calling
-Node.js-style functions and getting back a promise:
-
-```javascript
-return Q.nfcall(FS.readFile, "foo.txt", "utf-8");
-return Q.nfapply(FS.readFile, ["foo.txt", "utf-8"]);
-```
-
-If you are working with methods, instead of simple functions, you can easily
-run in to the usual problems where passing a method to another function\u2014like
-`Q.nfcall`\u2014"un-binds" the method from its owner. To avoid this, you can either
-use `Function.prototype.bind` or some nice shortcut methods we provide:
-
-```javascript
-return Q.ninvoke(redisClient, "get", "user:1:id");
-return Q.npost(redisClient, "get", ["user:1:id"]);
-```
-
-You can also create reusable wrappers with `Q.denodeify` or `Q.nbind`:
-
-```javascript
-var readFile = Q.denodeify(FS.readFile);
-return readFile("foo.txt", "utf-8");
-
-var redisClientGet = Q.nbind(redisClient.get, redisClient);
-return redisClientGet("user:1:id");
-```
-
-Finally, if you're working with raw deferred objects, there is a
-`makeNodeResolver` method on deferreds that can be handy:
-
-```javascript
-var deferred = Q.defer();
-FS.readFile("foo.txt", "utf-8", deferred.makeNodeResolver());
-return deferred.promise;
-```
-
-### Long Stack Traces
-
-Q comes with optional support for \u201clong stack traces,\u201d wherein the `stack`
-property of `Error` rejection reasons is rewritten to be traced along
-asynchronous jumps instead of stopping at the most recent one. As an example:
-
-```js
-function theDepthsOfMyProgram() {
-  Q.delay(100).done(function explode() {
-    throw new Error("boo!");
-  });
-}
-
-theDepthsOfMyProgram();
-```
-
-usually would give a rather unhelpful stack trace looking something like
-
-```
-Error: boo!
-    at explode (/path/to/test.js:3:11)
-    at _fulfilled (/path/to/test.js:q:54)
-    at resolvedValue.promiseDispatch.done (/path/to/q.js:823:30)
-    at makePromise.promise.promiseDispatch (/path/to/q.js:496:13)
-    at pending (/path/to/q.js:397:39)
-    at process.startup.processNextTick.process._tickCallback (node.js:244:9)
-```
-
-But, if you turn this feature on by setting
-
-```js
-Q.longStackSupport = true;
-```
-
-then the above code gives a nice stack trace to the tune of
-
-```
-Error: boo!
-    at explode (/path/to/test.js:3:11)
-From previous event:
-    at theDepthsOfMyProgram (/path/to/test.js:2:16)
-    at Object.<anonymous> (/path/to/test.js:7:1)
-```
-
-Note how you can see the function that triggered the async operation in the
-stack trace! This is very helpful for debugging, as otherwise you end up getting
-only the first line, plus a bunch of Q internals, with no sign of where the
-operation started.
-
-In node.js, this feature can also be enabled through the Q_DEBUG environment
-variable:
-
-```
-Q_DEBUG=1 node server.js
-```
-
-This will enable long stack support in every instance of Q.
-
-This feature does come with somewhat-serious performance and memory overhead,
-however. If you're working with lots of promises, or trying to scale a server
-to many users, you should probably keep it off. But in development, go for it!
-
-## Tests
-
-You can view the results of the Q test suite [in your browser][tests]!
-
-[tests]: https://rawgithub.com/kriskowal/q/v1/spec/q-spec.html
-
-## License
-
-Copyright 2009\u20132015 Kristopher Michael Kowal and contributors
-MIT License (enclosed)
-


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org