You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cmda.apache.org by xi...@apache.org on 2015/10/17 01:11:42 UTC

[08/51] [partial] incubator-cmda git commit: Update ApacheCMDA_1.0

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/uninstall.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/uninstall.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/uninstall.js
new file mode 100644
index 0000000..072d46b
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/uninstall.js
@@ -0,0 +1,127 @@
+
+// remove a package.
+
+module.exports = uninstall
+
+uninstall.usage = "npm uninstall <name>[@<version> [<name>[@<version>] ...]"
+                + "\nnpm rm <name>[@<version> [<name>[@<version>] ...]"
+
+uninstall.completion = require("./utils/completion/installed-shallow.js")
+
+var fs = require("graceful-fs")
+  , log = require("npmlog")
+  , readJson = require("read-package-json")
+  , path = require("path")
+  , npm = require("./npm.js")
+  , asyncMap = require("slide").asyncMap
+
+function uninstall (args, cb) {
+  // this is super easy
+  // get the list of args that correspond to package names in either
+  // the global npm.dir,
+  // then call unbuild on all those folders to pull out their bins
+  // and mans and whatnot, and then delete the folder.
+
+  var nm = npm.dir
+  if (args.length === 1 && args[0] === ".") args = []
+  if (args.length) return uninstall_(args, nm, cb)
+
+  // remove this package from the global space, if it's installed there
+  if (npm.config.get("global")) return cb(uninstall.usage)
+  readJson(path.resolve(npm.prefix, "package.json"), function (er, pkg) {
+    if (er && er.code !== "ENOENT" && er.code !== "ENOTDIR") return cb(er)
+    if (er) return cb(uninstall.usage)
+    uninstall_( [pkg.name]
+              , npm.dir
+              , cb )
+  })
+
+}
+
+function uninstall_ (args, nm, cb) {
+  // if we've been asked to --save or --save-dev or --save-optional,
+  // then also remove it from the associated dependencies hash.
+  var s = npm.config.get('save')
+    , d = npm.config.get('save-dev')
+    , o = npm.config.get('save-optional')
+  if (s || d || o) {
+    cb = saver(args, nm, cb)
+  }
+
+  asyncMap(args, function (arg, cb) {
+    // uninstall .. should not delete /usr/local/lib/node_modules/..
+    var p = path.join(path.resolve(nm), path.join("/", arg))
+    if (path.resolve(p) === nm) {
+      log.warn("uninstall", "invalid argument: %j", arg)
+      return cb(null, [])
+    }
+    fs.lstat(p, function (er) {
+      if (er) {
+        log.warn("uninstall", "not installed in %s: %j", nm, arg)
+        return cb(null, [])
+      }
+      cb(null, p)
+    })
+  }, function (er, folders) {
+    if (er) return cb(er)
+    asyncMap(folders, npm.commands.unbuild, cb)
+  })
+}
+
+function saver (args, nm, cb_) {
+  return cb
+  function cb (er, data) {
+    var s = npm.config.get('save')
+      , d = npm.config.get('save-dev')
+      , o = npm.config.get('save-optional')
+    if (er || !(s || d || o)) return cb_(er, data)
+    var pj = path.resolve(nm, '..', 'package.json')
+    // don't use readJson here, because we don't want all the defaults
+    // filled in, for mans and other bs.
+    fs.readFile(pj, 'utf8', function (er, json) {
+      try {
+        var pkg = JSON.parse(json)
+      } catch (_) {}
+      if (!pkg) return cb_(null, data)
+
+      var bundle
+      if (npm.config.get('save-bundle')) {
+        var bundle = pkg.bundleDependencies || pkg.bundledDependencies
+        if (!Array.isArray(bundle)) bundle = undefined
+      }
+
+      var changed = false
+      args.forEach(function (a) {
+        ; [ [s, 'dependencies']
+          , [o, 'optionalDependencies']
+          , [d, 'devDependencies'] ].forEach(function (f) {
+            var flag = f[0]
+              , field = f[1]
+            if (!flag || !pkg[field] || !pkg[field].hasOwnProperty(a)) return
+            changed = true
+
+            if (bundle) {
+              var i = bundle.indexOf(a)
+              if (i !== -1) bundle.splice(i, 1)
+            }
+
+            delete pkg[field][a]
+          })
+      })
+      if (!changed) return cb_(null, data)
+
+      if (bundle) {
+        delete pkg.bundledDependencies
+        if (bundle.length) {
+          pkg.bundleDependencies = bundle
+        } else {
+          delete pkg.bundleDependencies
+        }
+      }
+
+      fs.writeFile(pj, JSON.stringify(pkg, null, 2) + "\n", function (er) {
+        return cb_(er, data)
+      })
+    })
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/unpublish.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/unpublish.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/unpublish.js
new file mode 100644
index 0000000..0e48ab7
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/unpublish.js
@@ -0,0 +1,83 @@
+
+module.exports = unpublish
+
+var log = require("npmlog")
+  , npm = require("./npm.js")
+  , registry = npm.registry
+  , readJson = require("read-package-json")
+  , path = require("path")
+
+unpublish.usage = "npm unpublish <project>[@<version>]"
+
+unpublish.completion = function (opts, cb) {
+  if (opts.conf.argv.remain.length >= 3) return cb()
+  var un = encodeURIComponent(npm.config.get("username"))
+  if (!un) return cb()
+  registry.get("/-/by-user/"+un, function (er, pkgs) {
+    // do a bit of filtering at this point, so that we don't need
+    // to fetch versions for more than one thing, but also don't
+    // accidentally a whole project.
+    pkgs = pkgs[un]
+    if (!pkgs || !pkgs.length) return cb()
+    var partial = opts.partialWord.split("@")
+      , pp = partial.shift()
+      , pv = partial.join("@")
+    pkgs = pkgs.filter(function (p) {
+      return p.indexOf(pp) === 0
+    })
+    if (pkgs.length > 1) return cb(null, pkgs)
+    registry.get(pkgs[0], function (er, d) {
+      if (er) return cb(er)
+      var vers = Object.keys(d.versions)
+      if (!vers.length) return cb(null, pkgs)
+      return cb(null, vers.map(function (v) {
+        return pkgs[0]+"@"+v
+      }))
+    })
+  })
+}
+
+function unpublish (args, cb) {
+
+  if (args.length > 1) return cb(unpublish.usage)
+
+  var thing = args.length ? args.shift().split("@") : []
+    , project = thing.shift()
+    , version = thing.join("@")
+
+  if (!version && !npm.config.get("force")) {
+    return cb("Refusing to delete entire project.\n"
+             +"Run with --force to do this.\n"
+             +unpublish.usage)
+  }
+
+  if (!project || path.resolve(project) === npm.prefix) {
+    // if there's a package.json in the current folder, then
+    // read the package name and version out of that.
+    var cwdJson = path.join(process.cwd(), "package.json")
+    return readJson(cwdJson, function (er, data) {
+      if (er && er.code !== "ENOENT" && er.code !== "ENOTDIR") return cb(er)
+      if (er) return cb("Usage:\n"+unpublish.usage)
+      gotProject(data.name, data.version, cb)
+    })
+  }
+  return gotProject(project, version, cb)
+}
+
+function gotProject (project, version, cb_) {
+  function cb (er) {
+    if (er) return cb_(er)
+    console.log("- " + project + (version ? "@" + version : ""))
+    cb_()
+  }
+
+  // remove from the cache first
+  npm.commands.cache(["clean", project, version], function (er) {
+    if (er) {
+      log.error("unpublish", "Failed to clean cache")
+      return cb(er)
+    }
+
+    registry.unpublish(project, version, cb)
+  })
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/update.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/update.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/update.js
new file mode 100644
index 0000000..9ae50dc
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/update.js
@@ -0,0 +1,43 @@
+/*
+for each pkg in prefix that isn't a git repo
+  look for a new version of pkg that satisfies dep
+  if so, install it.
+  if not, then update it
+*/
+
+module.exports = update
+
+update.usage = "npm update [pkg]"
+
+var npm = require("./npm.js")
+  , lifecycle = require("./utils/lifecycle.js")
+  , asyncMap = require("slide").asyncMap
+  , log = require("npmlog")
+
+  // load these, just so that we know that they'll be available, in case
+  // npm itself is getting overwritten.
+  , install = require("./install.js")
+  , build = require("./build.js")
+
+update.completion = npm.commands.outdated.completion
+
+function update (args, cb) {
+  npm.commands.outdated(args, true, function (er, outdated) {
+    log.info("outdated", "updating", outdated)
+    if (er) return cb(er)
+
+    asyncMap(outdated, function (ww, cb) {
+      // [[ dir, dep, has, want, req ]]
+      var where = ww[0]
+        , dep = ww[1]
+        , want = ww[3]
+        , what = dep + "@" + want
+        , req = ww[5]
+        , url = require('url')
+
+      // use the initial installation method (repo, tar, git) for updating
+      if (url.parse(req).protocol) what = req
+      npm.commands.install(where, what, cb)
+    }, cb)
+  })
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/completion.sh
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/completion.sh b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/completion.sh
new file mode 100644
index 0000000..d027590
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/completion.sh
@@ -0,0 +1,54 @@
+#!/bin/bash
+###-begin-npm-completion-###
+#
+# npm command completion script
+#
+# Installation: npm completion >> ~/.bashrc  (or ~/.zshrc)
+# Or, maybe: npm completion > /usr/local/etc/bash_completion.d/npm
+#
+
+COMP_WORDBREAKS=${COMP_WORDBREAKS/=/}
+COMP_WORDBREAKS=${COMP_WORDBREAKS/@/}
+export COMP_WORDBREAKS
+
+if type complete &>/dev/null; then
+  _npm_completion () {
+    local si="$IFS"
+    IFS=$'\n' COMPREPLY=($(COMP_CWORD="$COMP_CWORD" \
+                           COMP_LINE="$COMP_LINE" \
+                           COMP_POINT="$COMP_POINT" \
+                           npm completion -- "${COMP_WORDS[@]}" \
+                           2>/dev/null)) || return $?
+    IFS="$si"
+  }
+  complete -F _npm_completion npm
+elif type compdef &>/dev/null; then
+  _npm_completion() {
+    si=$IFS
+    compadd -- $(COMP_CWORD=$((CURRENT-1)) \
+                 COMP_LINE=$BUFFER \
+                 COMP_POINT=0 \
+                 npm completion -- "${words[@]}" \
+                 2>/dev/null)
+    IFS=$si
+  }
+  compdef _npm_completion npm
+elif type compctl &>/dev/null; then
+  _npm_completion () {
+    local cword line point words si
+    read -Ac words
+    read -cn cword
+    let cword-=1
+    read -l line
+    read -ln point
+    si="$IFS"
+    IFS=$'\n' reply=($(COMP_CWORD="$cword" \
+                       COMP_LINE="$line" \
+                       COMP_POINT="$point" \
+                       npm completion -- "${words[@]}" \
+                       2>/dev/null)) || return $?
+    IFS="$si"
+  }
+  compctl -K _npm_completion npm
+fi
+###-end-npm-completion-###

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/completion/file-completion.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/completion/file-completion.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/completion/file-completion.js
new file mode 100644
index 0000000..3605557
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/completion/file-completion.js
@@ -0,0 +1,26 @@
+module.exports = fileCompletion
+
+var mkdir = require("mkdirp")
+  , path = require("path")
+  , fs = require("graceful-fs")
+  , glob = require("glob")
+
+function fileCompletion (root, req, depth, cb) {
+  if (typeof cb !== "function") cb = depth, depth = Infinity
+  mkdir(root, function (er) {
+    if (er) return cb(er)
+
+    // can be either exactly the req, or a descendent
+    var pattern = root + "/{" + req + "," + req + "/**/*}"
+      , opts = { mark: true, dot: true, maxDepth: depth }
+    glob(pattern, opts, function (er, files) {
+      if (er) return cb(er)
+      return cb(null, (files || []).map(function (f) {
+        return path.join(req, f.substr(root.length + 1)
+                               .substr((f === req ? path.dirname(req)
+                                                  : req).length)
+                               .replace(/^\//, ""))
+      }))
+    })
+  })
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/completion/installed-deep.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/completion/installed-deep.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/completion/installed-deep.js
new file mode 100644
index 0000000..b49d7bb
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/completion/installed-deep.js
@@ -0,0 +1,46 @@
+module.exports = installedDeep
+
+var npm = require("../../npm.js")
+  , readInstalled = require("read-installed")
+
+function installedDeep (opts, cb) {
+  var local
+    , global
+  if (npm.config.get("global")) local = [], next()
+  else readInstalled(npm.prefix, npm.config.get("depth"), function (er, data) {
+    local = getNames(data || {})
+    next()
+  })
+  readInstalled(npm.config.get("prefix"), npm.config.get("depth"), function (er, data) {
+    global = getNames(data || {})
+    next()
+  })
+
+  function getNames_ (d, n) {
+    if (d.realName && n) {
+      if (n[d.realName]) return n
+      n[d.realName] = true
+    }
+    if (!n) n = {}
+    Object.keys(d.dependencies || {}).forEach(function (dep) {
+      getNames_(d.dependencies[dep], n)
+    })
+    return n
+  }
+  function getNames (d) {
+    return Object.keys(getNames_(d))
+  }
+
+  function next () {
+    if (!local || !global) return
+    if (!npm.config.get("global")) {
+      global = global.map(function (g) {
+        return [g, "-g"]
+      })
+    }
+    var names = local.concat(global)
+    return cb(null, names)
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/completion/installed-shallow.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/completion/installed-shallow.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/completion/installed-shallow.js
new file mode 100644
index 0000000..8d64649
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/completion/installed-shallow.js
@@ -0,0 +1,79 @@
+
+module.exports = installedShallow
+
+var npm = require("../../npm.js")
+  , fs = require("graceful-fs")
+  , path = require("path")
+  , readJson = require("read-package-json")
+  , asyncMap = require("slide").asyncMap
+
+function installedShallow (opts, filter, cb) {
+  if (typeof cb !== "function") cb = filter, filter = null
+  var conf = opts.conf
+    , args = conf.argv.remain
+  if (args.length > 3) return cb()
+  var local
+    , global
+    , localDir = npm.dir
+    , globalDir = npm.globalDir
+  if (npm.config.get("global")) local = [], next()
+  else fs.readdir(localDir, function (er, pkgs) {
+    local = (pkgs || []).filter(function (p) {
+      return p.charAt(0) !== "."
+    })
+    next()
+  })
+  fs.readdir(globalDir, function (er, pkgs) {
+    global = (pkgs || []).filter(function (p) {
+      return p.charAt(0) !== "."
+    })
+    next()
+  })
+  function next () {
+    if (!local || !global) return
+    filterInstalled(local, global, filter, cb)
+  }
+}
+
+function filterInstalled (local, global, filter, cb) {
+  var fl
+    , fg
+
+  if (!filter) {
+    fl = local
+    fg = global
+    return next()
+  }
+
+  asyncMap(local, function (p, cb) {
+    readJson(path.join(npm.dir, p, "package.json"), function (er, d) {
+      if (!d || !filter(d)) return cb(null, [])
+      return cb(null, d.name)
+    })
+  }, function (er, local) {
+    fl = local || []
+    next()
+  })
+
+  var globalDir = npm.globalDir
+  asyncMap(global, function (p, cb) {
+    readJson(path.join(globalDir, p, "package.json"), function (er, d) {
+      if (!d || !filter(d)) return cb(null, [])
+      return cb(null, d.name)
+    })
+  }, function (er, global) {
+    fg = global || []
+    next()
+  })
+
+  function next () {
+    if (!fg || !fl) return
+    if (!npm.config.get("global")) {
+      fg = fg.map(function (g) {
+        return [g, "-g"]
+      })
+    }
+    console.error("filtered", fl, fg)
+    return cb(null, fl.concat(fg))
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/error-handler.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/error-handler.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/error-handler.js
new file mode 100644
index 0000000..93d8792
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/error-handler.js
@@ -0,0 +1,343 @@
+
+module.exports = errorHandler
+
+var cbCalled = false
+  , log = require("npmlog")
+  , npm = require("../npm.js")
+  , rm = require("rimraf")
+  , itWorked = false
+  , path = require("path")
+  , wroteLogFile = false
+  , exitCode = 0
+
+
+process.on("exit", function (code) {
+  // console.error("exit", code)
+  if (!npm.config.loaded) return
+  if (code) itWorked = false
+  if (itWorked) log.info("ok")
+  else {
+    if (!cbCalled) {
+      log.error("", "cb() never called!")
+    }
+
+    if (wroteLogFile) {
+      log.error("", [""
+                ,"Additional logging details can be found in:"
+                ,"    " + path.resolve("npm-debug.log")
+                ].join("\n"))
+      wroteLogFile = false
+    }
+    log.error("not ok", "code", code)
+  }
+
+  var doExit = npm.config.get("_exit")
+  if (doExit) {
+    // actually exit.
+    if (exitCode === 0 && !itWorked) {
+      exitCode = 1
+    }
+    if (exitCode !== 0) process.exit(exitCode)
+  } else {
+    itWorked = false // ready for next exit
+  }
+})
+
+function exit (code, noLog) {
+  exitCode = exitCode || process.exitCode || code
+
+  var doExit = npm.config.get("_exit")
+  log.verbose("exit", [code, doExit])
+  if (log.level === "silent") noLog = true
+
+  if (code && !noLog) writeLogFile(reallyExit)
+  else rm("npm-debug.log", function () { rm(npm.tmp, reallyExit) })
+
+  function reallyExit() {
+    // truncate once it's been written.
+    log.record.length = 0
+
+    itWorked = !code
+
+    // just emit a fake exit event.
+    // if we're really exiting, then let it exit on its own, so that
+    // in-process stuff can finish or clean up first.
+    if (!doExit) process.emit("exit", code)
+  }
+}
+
+
+function errorHandler (er) {
+  var printStack = false
+  // console.error("errorHandler", er)
+  if (!npm.config.loaded) {
+    // logging won't work unless we pretend that it's ready
+    er = er || new Error("Exit prior to config file resolving.")
+    console.error(er.stack || er.message)
+  }
+
+  if (cbCalled) {
+    er = er || new Error("Callback called more than once.")
+  }
+
+  cbCalled = true
+  if (!er) return exit(0)
+  if (typeof er === "string") {
+    log.error("", er)
+    return exit(1, true)
+  } else if (!(er instanceof Error)) {
+    log.error("weird error", er)
+    return exit(1, true)
+  }
+
+  var m = er.code || er.message.match(/^(?:Error: )?(E[A-Z]+)/)
+  if (m && !er.code) er.code = m
+
+  switch (er.code) {
+  case "ECONNREFUSED":
+    log.error("", er)
+    log.error("", ["\nIf you are behind a proxy, please make sure that the"
+              ,"'proxy' config is set properly.  See: 'npm help config'"
+              ].join("\n"))
+    printStack = true
+    break
+
+  case "EACCES":
+  case "EPERM":
+    log.error("", er)
+    log.error("", ["\nPlease try running this command again as root/Administrator."
+              ].join("\n"))
+    printStack = true
+    break
+
+  case "ELIFECYCLE":
+    er.code = "ELIFECYCLE"
+    log.error("", er.message)
+    log.error("", ["","Failed at the "+er.pkgid+" "+er.stage+" script."
+              ,"This is most likely a problem with the "+er.pkgname+" package,"
+              ,"not with npm itself."
+              ,"Tell the author that this fails on your system:"
+              ,"    "+er.script
+              ,"You can get their info via:"
+              ,"    npm owner ls "+er.pkgname
+              ,"There is likely additional logging output above."
+              ].join("\n"))
+    break
+
+  case "ENOGIT":
+    er.code = "ENOGIT"
+    log.error("", er.message)
+    log.error("", ["","Failed using git."
+              ,"This is most likely not a problem with npm itself."
+              ,"Please check if you have git installed and in your PATH."
+              ].join("\n"))
+    break
+
+  case "EJSONPARSE":
+    er.code = "EJSONPARSE"
+    log.error("", er.message)
+    log.error("", "File: "+er.file)
+    log.error("", ["Failed to parse package.json data."
+              ,"package.json must be actual JSON, not just JavaScript."
+              ,"","This is not a bug in npm."
+              ,"Tell the package author to fix their package.json file."
+              ].join("\n"), "JSON.parse")
+    break
+
+  case "E404":
+    er.code = "E404"
+    if (er.pkgid && er.pkgid !== "-") {
+      var msg = ["'"+er.pkgid+"' is not in the npm registry."
+                ,"You should bug the author to publish it"]
+      if (er.parent) {
+        msg.push("It was specified as a dependency of '"+er.parent+"'")
+      }
+      if (er.pkgid.match(/^node[\.\-]|[\.\-]js$/)) {
+        var s = er.pkgid.replace(/^node[\.\-]|[\.\-]js$/g, "")
+        if (s !== er.pkgid) {
+          s = s.replace(/[^a-z0-9]/g, ' ')
+          msg.push("\nMaybe try 'npm search " + s + "'")
+        }
+      }
+      msg.push("\nNote that you can also install from a"
+              ,"tarball, folder, or http url, or git url.")
+      log.error("404", msg.join("\n"))
+    }
+    break
+
+  case "EPUBLISHCONFLICT":
+    er.code = "EPUBLISHCONFLICT"
+    log.error("publish fail", ["Cannot publish over existing version."
+              ,"Update the 'version' field in package.json and try again."
+              ,""
+              ,"If the previous version was published in error, see:"
+              ,"    npm help unpublish"
+              ,""
+              ,"To automatically increment version numbers, see:"
+              ,"    npm help version"
+              ].join("\n"))
+    break
+
+  case "EISGIT":
+    er.code = "EISGIT"
+    log.error("git", [er.message
+              ,"    "+er.path
+              ,"Refusing to remove it. Update manually,"
+              ,"or move it out of the way first."
+              ].join("\n"))
+    break
+
+  case "ECYCLE":
+    er.code = "ECYCLE"
+    log.error("cycle", [er.message
+              ,"While installing: "+er.pkgid
+              ,"Found a pathological dependency case that npm cannot solve."
+              ,"Please report this to the package author."
+              ].join("\n"))
+    break
+
+  case "EBADPLATFORM":
+    er.code = "EBADPLATFORM"
+    log.error("notsup", [er.message
+              ,"Not compatible with your operating system or architecture: "+er.pkgid
+              ,"Valid OS:    "+er.os.join(",")
+              ,"Valid Arch:  "+er.cpu.join(",")
+              ,"Actual OS:   "+process.platform
+              ,"Actual Arch: "+process.arch
+              ].join("\n"))
+    break
+
+  case "EEXIST":
+    log.error([er.message
+              ,"File exists: "+er.path
+              ,"Move it away, and try again."].join("\n"))
+    break
+
+  case "ENEEDAUTH":
+    log.error("need auth", [er.message
+              ,"You need to authorize this machine using `npm adduser`"
+              ].join("\n"))
+    break
+
+  case "EPEERINVALID":
+    var peerErrors = Object.keys(er.peersDepending).map(function (peer) {
+      return "Peer " + peer + " wants " + er.packageName + "@"
+        + er.peersDepending[peer]
+    })
+    log.error("peerinvalid", [er.message].concat(peerErrors).join("\n"))
+    break
+
+  case "ECONNRESET":
+  case "ENOTFOUND":
+  case "ETIMEDOUT":
+    log.error("network", [er.message
+              ,"This is most likely not a problem with npm itself"
+              ,"and is related to network connectivity."
+              ,"In most cases you are behind a proxy or have bad network settings."
+              ,"\nIf you are behind a proxy, please make sure that the"
+              ,"'proxy' config is set properly.  See: 'npm help config'"
+              ].join("\n"))
+    break
+
+  case "ENOPACKAGEJSON":
+    log.error("package.json", [er.message
+              ,"This is most likely not a problem with npm itself."
+              ,"npm can't find a package.json file in your current directory."
+              ].join("\n"))
+    break
+
+  case "ETARGET":
+    log.error("notarget", [er.message
+              ,"This is most likely not a problem with npm itself."
+              ,"In most cases you or one of your dependencies are requesting"
+              ,"a package version that doesn't exist."
+              ].join("\n"))
+    break
+
+  case "ENOTSUP":
+    if (er.required) {
+      log.error("notsup", [er.message
+                ,"Not compatible with your version of node/npm: "+er.pkgid
+                ,"Required: "+JSON.stringify(er.required)
+                ,"Actual:   "
+                +JSON.stringify({npm:npm.version
+                                ,node:npm.config.get("node-version")})
+                ].join("\n"))
+      break
+    } // else passthrough
+
+  default:
+    log.error("", er.stack || er.message || er)
+    log.error("", ["If you need help, you may report this *entire* log,"
+                  ,"including the npm and node versions, at:"
+                  ,"    <http://github.com/isaacs/npm/issues>"
+                  ].join("\n"))
+    printStack = false
+    break
+  }
+
+  var os = require("os")
+  // just a line break
+  console.error("")
+  log.error("System", os.type() + " " + os.release())
+  log.error("command", process.argv
+            .map(JSON.stringify).join(" "))
+  log.error("cwd", process.cwd())
+  log.error("node -v", process.version)
+  log.error("npm -v", npm.version)
+
+  ; [ "file"
+    , "path"
+    , "type"
+    , "syscall"
+    , "fstream_path"
+    , "fstream_unc_path"
+    , "fstream_type"
+    , "fstream_class"
+    , "fstream_finish_call"
+    , "fstream_linkpath"
+    , "code"
+    , "errno"
+    , "stack"
+    , "fstream_stack"
+    ].forEach(function (k) {
+      var v = er[k]
+      if (k === "stack") {
+        if (!printStack) return
+        if (!v) v = er.message
+      }
+      if (!v) return
+      if (k === "fstream_stack") v = v.join("\n")
+      log.error(k, v)
+    })
+
+  exit(typeof er.errno === "number" ? er.errno : 1)
+}
+
+var writingLogFile = false
+function writeLogFile (cb) {
+  if (writingLogFile) return cb()
+  writingLogFile = true
+  wroteLogFile = true
+
+  var fs = require("graceful-fs")
+    , fstr = fs.createWriteStream("npm-debug.log")
+    , util = require("util")
+    , os = require("os")
+    , out = ""
+
+  log.record.forEach(function (m) {
+    var pref = [m.id, m.level]
+    if (m.prefix) pref.push(m.prefix)
+    pref = pref.join(' ')
+
+    m.message.trim().split(/\r?\n/).map(function (line) {
+      return (pref + ' ' + line).trim()
+    }).forEach(function (line) {
+      out += line + os.EOL
+    })
+  })
+
+  fstr.end(out)
+  fstr.on("close", cb)
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/fetch.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/fetch.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/fetch.js
new file mode 100644
index 0000000..e92b68d
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/fetch.js
@@ -0,0 +1,93 @@
+/**
+ * Fetch an HTTP url to a local file.
+ **/
+
+var request = require("request")
+  , fs = require("graceful-fs")
+  , npm = require("../npm.js")
+  , url = require("url")
+  , log = require("npmlog")
+  , path = require("path")
+  , mkdir = require("mkdirp")
+  , chownr = require("chownr")
+  , regHost
+  , once = require("once")
+
+module.exports = fetch
+
+function fetch (remote, local, headers, cb) {
+  if (typeof cb !== "function") cb = headers, headers = {}
+  cb = once(cb)
+  log.verbose("fetch", "to=", local)
+  mkdir(path.dirname(local), function (er, made) {
+    if (er) return cb(er)
+    fetch_(remote, local, headers, cb)
+  })
+}
+
+function fetch_ (remote, local, headers, cb) {
+  var fstr = fs.createWriteStream(local, { mode : npm.modes.file })
+  var response = null
+
+  fstr.on("error", function (er) {
+    cb(er)
+    fstr.destroy()
+  })
+
+  var req = makeRequest(remote, fstr, headers)
+  req.on("response", function (res) {
+    log.http(res.statusCode, remote)
+    response = res
+    response.resume()
+    // Work around bug in node v0.10.0 where the CryptoStream
+    // gets stuck and never starts reading again.
+    if (process.version === "v0.10.0") {
+      response.resume = function (orig) { return function() {
+        var ret = orig.apply(response, arguments)
+        if (response.socket.encrypted)
+          response.socket.encrypted.read(0)
+        return ret
+      }}(response.resume)
+    }
+  })
+
+  fstr.on("close", function () {
+    var er
+    if (response && response.statusCode && response.statusCode >= 400) {
+      er = new Error(response.statusCode + " "
+                    + require("http").STATUS_CODES[response.statusCode])
+    }
+    cb(er, response)
+  })
+}
+
+function makeRequest (remote, fstr, headers) {
+  remote = url.parse(remote)
+  log.http("GET", remote.href)
+  regHost = regHost || url.parse(npm.config.get("registry")).host
+
+  if (remote.host === regHost && npm.config.get("always-auth")) {
+    remote.auth = new Buffer( npm.config.get("_auth")
+                            , "base64" ).toString("utf8")
+    if (!remote.auth) return fstr.emit("error", new Error(
+      "Auth required and none provided. Please run 'npm adduser'"))
+  }
+
+  var proxy
+  if (remote.protocol !== "https:" || !(proxy = npm.config.get("https-proxy"))) {
+    proxy = npm.config.get("proxy")
+  }
+
+  var opts = { url: remote
+             , proxy: proxy
+             , strictSSL: npm.config.get("strict-ssl")
+             , rejectUnauthorized: npm.config.get("strict-ssl")
+             , ca: remote.host === regHost ? npm.config.get("ca") : undefined
+             , headers: { "user-agent": npm.config.get("user-agent") }}
+  var req = request(opts)
+  req.on("error", function (er) {
+    fstr.emit("error", er)
+  })
+  req.pipe(fstr)
+  return req
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/find-prefix.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/find-prefix.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/find-prefix.js
new file mode 100644
index 0000000..a61d9e1
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/find-prefix.js
@@ -0,0 +1,57 @@
+// try to find the most reasonable prefix to use
+
+module.exports = findPrefix
+
+var fs = require("graceful-fs")
+  , path = require("path")
+  , npm = require("../npm.js")
+
+function findPrefix (p, cb_) {
+  function cb (er, p) {
+    process.nextTick(function () {
+      cb_(er, p)
+    })
+  }
+
+  p = path.resolve(p)
+  // if there's no node_modules folder, then
+  // walk up until we hopefully find one.
+  // if none anywhere, then use cwd.
+  var walkedUp = false
+  while (path.basename(p) === "node_modules") {
+    p = path.dirname(p)
+    walkedUp = true
+  }
+  if (walkedUp) return cb(null, p)
+
+  findPrefix_(p, p, cb)
+}
+
+function findPrefix_ (p, original, cb) {
+  if (p === "/"
+      || (process.platform === "win32" && p.match(/^[a-zA-Z]:(\\|\/)?$/))) {
+    return cb(null, original)
+  }
+  fs.readdir(p, function (er, files) {
+    // an error right away is a bad sign.
+    // unless the prefix was simply a non
+    // existent directory.
+    if (er && p === original) {
+      if (er.code === "ENOENT") return cb(null, original);
+      return cb(er)
+    }
+
+    // walked up too high or something.
+    if (er) return cb(null, original)
+
+    if (files.indexOf("node_modules") !== -1
+        || files.indexOf("package.json") !== -1) {
+      return cb(null, p)
+    }
+
+    var d = path.dirname(p)
+    if (d === p) return cb(null, original)
+
+    return findPrefix_(d, original, cb)
+  })
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/gently-rm.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/gently-rm.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/gently-rm.js
new file mode 100644
index 0000000..f24309a
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/gently-rm.js
@@ -0,0 +1,45 @@
+// only remove the thing if it's a symlink into a specific folder.
+// This is a very common use-case of npm's, but not so common elsewhere.
+
+module.exports = gentlyRm
+
+var rimraf = require("rimraf")
+  , fs = require("graceful-fs")
+  , npm = require("../npm.js")
+  , path = require("path")
+
+function gentlyRm (p, gently, cb) {
+  if (npm.config.get("force") || !gently) {
+    return rimraf(p, cb)
+  }
+
+  gently = path.resolve(gently)
+
+  // lstat it, see if it's a symlink.
+  fs.lstat(p, function (er, s) {
+    if (er) return rimraf(p, cb)
+    if (!s.isSymbolicLink()) next(null, path.resolve(p))
+    realish(p, next)
+  })
+
+  function next (er, rp) {
+    if (rp && rp.indexOf(gently) !== 0) {
+      return clobberFail(p, gently, cb)
+    }
+    rimraf(p, cb)
+  }
+}
+
+function realish (p, cb) {
+  fs.readlink(p, function (er, r) {
+    if (er) return cb(er)
+    return cb(null, path.resolve(path.dirname(p), r))
+  })
+}
+
+function clobberFail (p, g, cb) {
+  var er = new Error("Refusing to delete: "+p+" not in "+g)
+  er.code = "EEXIST"
+  er.path = p
+  return cb(er)
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/is-git-url.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/is-git-url.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/is-git-url.js
new file mode 100644
index 0000000..7ded4b6
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/is-git-url.js
@@ -0,0 +1,13 @@
+module.exports = isGitUrl
+
+function isGitUrl (url) {
+  switch (url.protocol) {
+    case "git:":
+    case "git+http:":
+    case "git+https:":
+    case "git+rsync:":
+    case "git+ftp:":
+    case "git+ssh:":
+      return true
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/lifecycle.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/lifecycle.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/lifecycle.js
new file mode 100644
index 0000000..e6ef925
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/lifecycle.js
@@ -0,0 +1,360 @@
+
+exports = module.exports = lifecycle
+exports.cmd = cmd
+
+var log = require("npmlog")
+  , spawn = require("child_process").spawn
+  , npm = require("../npm.js")
+  , path = require("path")
+  , fs = require("graceful-fs")
+  , chain = require("slide").chain
+  , Stream = require("stream").Stream
+  , PATH = "PATH"
+  , uidNumber = require("uid-number")
+
+// windows calls it's path "Path" usually, but this is not guaranteed.
+if (process.platform === "win32") {
+  PATH = "Path"
+  Object.keys(process.env).forEach(function (e) {
+    if (e.match(/^PATH$/i)) {
+      PATH = e
+    }
+  })
+}
+
+function lifecycle (pkg, stage, wd, unsafe, failOk, cb) {
+  if (typeof cb !== "function") cb = failOk, failOk = false
+  if (typeof cb !== "function") cb = unsafe, unsafe = false
+  if (typeof cb !== "function") cb = wd, wd = null
+
+  while (pkg && pkg._data) pkg = pkg._data
+  if (!pkg) return cb(new Error("Invalid package data"))
+
+  log.info(stage, pkg._id)
+  if (!pkg.scripts || npm.config.get('ignore-scripts')) pkg.scripts = {}
+
+  validWd(wd || path.resolve(npm.dir, pkg.name), function (er, wd) {
+    if (er) return cb(er)
+
+    unsafe = unsafe || npm.config.get("unsafe-perm")
+
+    if ((wd.indexOf(npm.dir) !== 0 || path.basename(wd) !== pkg.name)
+        && !unsafe && pkg.scripts[stage]) {
+      log.warn( "cannot run in wd", "%s %s (wd=%s)"
+              , pkg._id, pkg.scripts[stage], wd)
+      return cb()
+    }
+
+    // set the env variables, then run scripts as a child process.
+    var env = makeEnv(pkg)
+    env.npm_lifecycle_event = stage
+    env.npm_node_execpath = env.NODE = env.NODE || process.execPath
+    env.npm_execpath = require.main.filename
+
+    // "nobody" typically doesn't have permission to write to /tmp
+    // even if it's never used, sh freaks out.
+    if (!npm.config.get("unsafe-perm")) env.TMPDIR = wd
+
+    lifecycle_(pkg, stage, wd, env, unsafe, failOk, cb)
+  })
+}
+
+function checkForLink (pkg, cb) {
+  var f = path.join(npm.dir, pkg.name)
+  fs.lstat(f, function (er, s) {
+    cb(null, !(er || !s.isSymbolicLink()))
+  })
+}
+
+function lifecycle_ (pkg, stage, wd, env, unsafe, failOk, cb) {
+  var pathArr = []
+    , p = wd.split("node_modules")
+    , acc = path.resolve(p.shift())
+
+  // first add the directory containing the `node` executable currently
+  // running, so that any lifecycle script that invoke "node" will execute
+  // this same one.
+  pathArr.unshift(path.dirname(process.execPath))
+
+  p.forEach(function (pp) {
+    pathArr.unshift(path.join(acc, "node_modules", ".bin"))
+    acc = path.join(acc, "node_modules", pp)
+  })
+  pathArr.unshift(path.join(acc, "node_modules", ".bin"))
+
+  // we also unshift the bundled node-gyp-bin folder so that
+  // the bundled one will be used for installing things.
+  pathArr.unshift(path.join(__dirname, "..", "..", "bin", "node-gyp-bin"))
+
+  if (env[PATH]) pathArr.push(env[PATH])
+  env[PATH] = pathArr.join(process.platform === "win32" ? ";" : ":")
+
+  var packageLifecycle = pkg.scripts && pkg.scripts.hasOwnProperty(stage)
+
+  if (packageLifecycle) {
+    // define this here so it's available to all scripts.
+    env.npm_lifecycle_script = pkg.scripts[stage]
+  }
+
+  if (failOk) {
+    cb = (function (cb_) { return function (er) {
+      if (er) log.warn("continuing anyway", er.message)
+      cb_()
+    }})(cb)
+  }
+
+  if (npm.config.get("force")) {
+    cb = (function (cb_) { return function (er) {
+      if (er) log.info("forced, continuing", er)
+      cb_()
+    }})(cb)
+  }
+
+  chain
+    ( [ packageLifecycle && [runPackageLifecycle, pkg, env, wd, unsafe]
+      , [runHookLifecycle, pkg, env, wd, unsafe] ]
+    , cb )
+}
+
+function validWd (d, cb) {
+  fs.stat(d, function (er, st) {
+    if (er || !st.isDirectory()) {
+      var p = path.dirname(d)
+      if (p === d) {
+        return cb(new Error("Could not find suitable wd"))
+      }
+      return validWd(p, cb)
+    }
+    return cb(null, d)
+  })
+}
+
+function runPackageLifecycle (pkg, env, wd, unsafe, cb) {
+  // run package lifecycle scripts in the package root, or the nearest parent.
+  var stage = env.npm_lifecycle_event
+    , cmd = env.npm_lifecycle_script
+
+  var note = "\n> " + pkg._id + " " + stage + " " + wd
+           + "\n> " + cmd + "\n"
+  runCmd(note, cmd, pkg, env, stage, wd, unsafe, cb)
+}
+
+
+var running = false
+var queue = []
+function dequeue() {
+  running = false
+  if (queue.length) {
+    var r = queue.shift()
+    runCmd.apply(null, r)
+  }
+}
+
+function runCmd (note, cmd, pkg, env, stage, wd, unsafe, cb) {
+  if (running) {
+    queue.push([note, cmd, pkg, env, stage, wd, unsafe, cb])
+    return
+  }
+
+  running = true
+  log.pause()
+  var user = unsafe ? null : npm.config.get("user")
+    , group = unsafe ? null : npm.config.get("group")
+
+  console.log(note)
+  log.verbose("unsafe-perm in lifecycle", unsafe)
+
+  if (process.platform === "win32") {
+    unsafe = true
+  }
+
+  if (unsafe) {
+    runCmd_(cmd, pkg, env, wd, stage, unsafe, 0, 0, cb)
+  } else {
+    uidNumber(user, group, function (er, uid, gid) {
+      runCmd_(cmd, pkg, env, wd, stage, unsafe, uid, gid, cb)
+    })
+  }
+}
+
+function runCmd_ (cmd, pkg, env, wd, stage, unsafe, uid, gid, cb_) {
+
+  function cb (er) {
+    cb_.apply(null, arguments)
+    log.resume()
+    process.nextTick(dequeue)
+  }
+
+  var conf = { cwd: wd
+             , env: env
+             , stdio: [ 0, 1, 2 ]
+             }
+
+  if (!unsafe) {
+    conf.uid = uid ^ 0
+    conf.gid = gid ^ 0
+  }
+
+  var sh = "sh"
+  var shFlag = "-c"
+
+  if (process.platform === "win32") {
+    sh = "cmd"
+    shFlag = "/c"
+    conf.windowsVerbatimArguments = true
+  }
+
+  var proc = spawn(sh, [shFlag, cmd], conf)
+  proc.on("close", function (code, signal) {
+    if (signal) {
+      process.kill(process.pid, signal);
+    } else if (code) {
+      var er = new Error("Exit status " + code)
+    }
+    if (er && !npm.ROLLBACK) {
+      log.info(pkg._id, "Failed to exec "+stage+" script")
+      er.message = pkg._id + " "
+                 + stage + ": `" + cmd +"`\n"
+                 + er.message
+      if (er.code !== "EPERM") {
+        er.code = "ELIFECYCLE"
+      }
+      er.pkgid = pkg._id
+      er.stage = stage
+      er.script = cmd
+      er.pkgname = pkg.name
+      return cb(er)
+    } else if (er) {
+      log.error(pkg._id+"."+stage, er)
+      log.error(pkg._id+"."+stage, "continuing anyway")
+      return cb()
+    }
+    cb(er)
+  })
+}
+
+
+function runHookLifecycle (pkg, env, wd, unsafe, cb) {
+  // check for a hook script, run if present.
+  var stage = env.npm_lifecycle_event
+    , hook = path.join(npm.dir, ".hooks", stage)
+    , user = unsafe ? null : npm.config.get("user")
+    , group = unsafe ? null : npm.config.get("group")
+    , cmd = hook
+
+  fs.stat(hook, function (er) {
+    if (er) return cb()
+    var note = "\n> " + pkg._id + " " + stage + " " + wd
+             + "\n> " + cmd
+    runCmd(note, hook, pkg, env, stage, wd, unsafe, cb)
+  })
+}
+
+function makeEnv (data, prefix, env) {
+  prefix = prefix || "npm_package_"
+  if (!env) {
+    env = {}
+    for (var i in process.env) if (!i.match(/^npm_/)) {
+      env[i] = process.env[i]
+    }
+
+    // npat asks for tap output
+    if (npm.config.get("npat")) env.TAP = 1
+
+    // express and others respect the NODE_ENV value.
+    if (npm.config.get("production")) env.NODE_ENV = "production"
+
+  } else if (!data.hasOwnProperty("_lifecycleEnv")) {
+    Object.defineProperty(data, "_lifecycleEnv",
+      { value : env
+      , enumerable : false
+      })
+  }
+
+  for (var i in data) if (i.charAt(0) !== "_") {
+    var envKey = (prefix+i).replace(/[^a-zA-Z0-9_]/g, '_')
+    if (i === "readme") {
+      continue
+    }
+    if (data[i] && typeof(data[i]) === "object") {
+      try {
+        // quick and dirty detection for cyclical structures
+        JSON.stringify(data[i])
+        makeEnv(data[i], envKey+"_", env)
+      } catch (ex) {
+        // usually these are package objects.
+        // just get the path and basic details.
+        var d = data[i]
+        makeEnv( { name: d.name, version: d.version, path:d.path }
+               , envKey+"_", env)
+      }
+    } else {
+      env[envKey] = String(data[i])
+      env[envKey] = -1 !== env[envKey].indexOf("\n")
+                  ? JSON.stringify(env[envKey])
+                  : env[envKey]
+    }
+
+  }
+
+  if (prefix !== "npm_package_") return env
+
+  prefix = "npm_config_"
+  var pkgConfig = {}
+    , keys = npm.config.keys
+    , pkgVerConfig = {}
+    , namePref = data.name + ":"
+    , verPref = data.name + "@" + data.version + ":"
+
+  keys.forEach(function (i) {
+    if (i.charAt(0) === "_" && i.indexOf("_"+namePref) !== 0) {
+      return
+    }
+    var value = npm.config.get(i)
+    if (value instanceof Stream || Array.isArray(value)) return
+    if (!value) value = ""
+    else if (typeof value !== "string") value = JSON.stringify(value)
+
+    value = -1 !== value.indexOf("\n")
+          ? JSON.stringify(value)
+          : value
+    i = i.replace(/^_+/, "")
+    if (i.indexOf(namePref) === 0) {
+      var k = i.substr(namePref.length).replace(/[^a-zA-Z0-9_]/g, "_")
+      pkgConfig[ k ] = value
+    } else if (i.indexOf(verPref) === 0) {
+      var k = i.substr(verPref.length).replace(/[^a-zA-Z0-9_]/g, "_")
+      pkgVerConfig[ k ] = value
+    }
+    var envKey = (prefix+i).replace(/[^a-zA-Z0-9_]/g, "_")
+    env[envKey] = value
+  })
+
+  prefix = "npm_package_config_"
+  ;[pkgConfig, pkgVerConfig].forEach(function (conf) {
+    for (var i in conf) {
+      var envKey = (prefix+i)
+      env[envKey] = conf[i]
+    }
+  })
+
+  return env
+}
+
+function cmd (stage) {
+  function CMD (args, cb) {
+    if (args.length) {
+      chain(args.map(function (p) {
+        return [npm.commands, "run-script", [p, stage]]
+      }), cb)
+    } else npm.commands["run-script"]([stage], cb)
+  }
+  CMD.usage = "npm "+stage+" <name>"
+  var installedShallow = require("./completion/installed-shallow.js")
+  CMD.completion = function (opts, cb) {
+    installedShallow(opts, function (d) {
+      return d.scripts && d.scripts[stage]
+    }, cb)
+  }
+  return CMD
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/link.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/link.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/link.js
new file mode 100644
index 0000000..9e01d82
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/link.js
@@ -0,0 +1,39 @@
+
+module.exports = link
+link.ifExists = linkIfExists
+
+var fs = require("graceful-fs")
+  , chain = require("slide").chain
+  , mkdir = require("mkdirp")
+  , rm = require("./gently-rm.js")
+  , path = require("path")
+  , npm = require("../npm.js")
+
+function linkIfExists (from, to, gently, cb) {
+  fs.stat(from, function (er) {
+    if (er) return cb()
+    link(from, to, gently, cb)
+  })
+}
+
+function link (from, to, gently, cb) {
+  if (typeof cb !== "function") cb = gently, gently = null
+  if (npm.config.get("force")) gently = false
+
+  to = path.resolve(to)
+  var target = from = path.resolve(from)
+  if (process.platform !== "win32") {
+    // junctions on windows must be absolute
+    target = path.relative(path.dirname(to), from)
+    // if there is no folder in common, then it will be much
+    // longer, and using a relative link is dumb.
+    if (target.length >= from.length) target = from
+  }
+
+  chain
+    ( [ [fs, "stat", from]
+      , [rm, to, gently]
+      , [mkdir, path.dirname(to)]
+      , [fs, "symlink", target, to, "junction"] ]
+    , cb)
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/tar.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/tar.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/tar.js
new file mode 100644
index 0000000..378415e
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/utils/tar.js
@@ -0,0 +1,323 @@
+// commands for packing and unpacking tarballs
+// this file is used by lib/cache.js
+
+var npm = require("../npm.js")
+  , fs = require("graceful-fs")
+  , path = require("path")
+  , log = require("npmlog")
+  , uidNumber = require("uid-number")
+  , rm = require("rimraf")
+  , readJson = require("read-package-json")
+  , cache = require("../cache.js")
+  , myUid = process.getuid && process.getuid()
+  , myGid = process.getgid && process.getgid()
+  , tar = require("tar")
+  , zlib = require("zlib")
+  , fstream = require("fstream")
+  , Packer = require("fstream-npm")
+  , lifecycle = require("./lifecycle.js")
+
+function lock(path, cb) {
+  return cache.lock('tar://' + path, cb)
+}
+
+function unlock(path, cb) {
+  return cache.unlock('tar://' + path, cb)
+}
+
+if (process.env.SUDO_UID && myUid === 0) {
+  if (!isNaN(process.env.SUDO_UID)) myUid = +process.env.SUDO_UID
+  if (!isNaN(process.env.SUDO_GID)) myGid = +process.env.SUDO_GID
+}
+
+exports.pack = pack
+exports.unpack = unpack
+
+function pack (tarball, folder, pkg, dfc, cb) {
+  log.verbose("tar pack", [tarball, folder])
+  if (typeof cb !== "function") cb = dfc, dfc = false
+
+  log.verbose("tarball", tarball)
+  log.verbose("folder", folder)
+
+  if (dfc) {
+    // do fancy crap
+    return lifecycle(pkg, "prepublish", folder, function (er) {
+      if (er) return cb(er)
+      pack_(tarball, folder, pkg, cb)
+    })
+  } else {
+    pack_(tarball, folder, pkg, cb)
+  }
+}
+
+function pack_ (tarball, folder, pkg, cb_) {
+  var tarballLock = false
+    , folderLock = false
+
+  function cb (er) {
+    if (folderLock)
+      unlock(folder, function() {
+        folderLock = false
+        cb(er)
+      })
+    else if (tarballLock)
+      unlock(tarball, function() {
+        tarballLock = false
+        cb(er)
+      })
+    else
+      cb_(er)
+  }
+
+  lock(folder, function(er) {
+    if (er) return cb(er)
+    folderLock = true
+    next()
+  })
+
+  lock(tarball, function (er) {
+    if (er) return cb(er)
+    tarballLock = true
+    next()
+  })
+
+  function next () {
+    if (!tarballLock || !folderLock) return
+
+    new Packer({ path: folder, type: "Directory", isDirectory: true })
+      .on("error", function (er) {
+        if (er) log.error("tar pack", "Error reading " + folder)
+        return cb(er)
+      })
+
+      // By default, npm includes some proprietary attributes in the
+      // package tarball.  This is sane, and allowed by the spec.
+      // However, npm *itself* excludes these from its own package,
+      // so that it can be more easily bootstrapped using old and
+      // non-compliant tar implementations.
+      .pipe(tar.Pack({ noProprietary: !npm.config.get("proprietary-attribs") }))
+      .on("error", function (er) {
+        if (er) log.error("tar.pack", "tar creation error", tarball)
+        cb(er)
+      })
+      .pipe(zlib.Gzip())
+      .on("error", function (er) {
+        if (er) log.error("tar.pack", "gzip error "+tarball)
+        cb(er)
+      })
+      .pipe(fstream.Writer({ type: "File", path: tarball }))
+      .on("error", function (er) {
+        if (er) log.error("tar.pack", "Could not write "+tarball)
+        cb(er)
+      })
+      .on("close", cb)
+  }
+}
+
+
+function unpack (tarball, unpackTarget, dMode, fMode, uid, gid, cb) {
+  log.verbose("tar unpack", tarball)
+  if (typeof cb !== "function") cb = gid, gid = null
+  if (typeof cb !== "function") cb = uid, uid = null
+  if (typeof cb !== "function") cb = fMode, fMode = npm.modes.file
+  if (typeof cb !== "function") cb = dMode, dMode = npm.modes.exec
+
+  uidNumber(uid, gid, function (er, uid, gid) {
+    if (er) return cb(er)
+    unpack_(tarball, unpackTarget, dMode, fMode, uid, gid, cb)
+  })
+}
+
+function unpack_ ( tarball, unpackTarget, dMode, fMode, uid, gid, cb_ ) {
+  var parent = path.dirname(unpackTarget)
+    , base = path.basename(unpackTarget)
+    , folderLock
+    , tarballLock
+
+  function cb (er) {
+    if (folderLock)
+      unlock(unpackTarget, function() {
+        folderLock = false
+        cb(er)
+      })
+    else if (tarballLock)
+      unlock(tarball, function() {
+        tarballLock = false
+        cb(er)
+      })
+    else
+      cb_(er)
+  }
+
+  lock(unpackTarget, function (er) {
+    if (er) return cb(er)
+    folderLock = true
+    next()
+  })
+
+  lock(tarball, function (er) {
+    if (er) return cb(er)
+    tarballLock = true
+    next()
+  })
+
+  function next() {
+    if (!tarballLock || !folderLock) return
+    rmGunz()
+  }
+
+  function rmGunz () {
+    rm(unpackTarget, function (er) {
+      if (er) return cb(er)
+      gtp()
+    })
+  }
+
+  function gtp () {
+    // gzip {tarball} --decompress --stdout \
+    //   | tar -mvxpf - --strip-components=1 -C {unpackTarget}
+    gunzTarPerm( tarball, unpackTarget
+               , dMode, fMode
+               , uid, gid
+               , function (er, folder) {
+      if (er) return cb(er)
+      readJson(path.resolve(folder, "package.json"), cb)
+    })
+  }
+}
+
+
+function gunzTarPerm (tarball, target, dMode, fMode, uid, gid, cb_) {
+  if (!dMode) dMode = npm.modes.exec
+  if (!fMode) fMode = npm.modes.file
+  log.silly("gunzTarPerm", "modes", [dMode.toString(8), fMode.toString(8)])
+
+  var cbCalled = false
+  function cb (er) {
+    if (cbCalled) return
+    cbCalled = true
+    cb_(er, target)
+  }
+
+  var fst = fs.createReadStream(tarball)
+
+  // figure out who we're supposed to be, if we're not pretending
+  // to be a specific user.
+  if (npm.config.get("unsafe-perm") && process.platform !== "win32") {
+    uid = myUid
+    gid = myGid
+  }
+
+  function extractEntry (entry) {
+    log.silly("gunzTarPerm", "extractEntry", entry.path)
+    // never create things that are user-unreadable,
+    // or dirs that are user-un-listable. Only leads to headaches.
+    var originalMode = entry.mode = entry.mode || entry.props.mode
+    entry.mode = entry.mode | (entry.type === "Directory" ? dMode : fMode)
+    entry.mode = entry.mode & (~npm.modes.umask)
+    entry.props.mode = entry.mode
+    if (originalMode !== entry.mode) {
+      log.silly( "gunzTarPerm", "modified mode"
+               , [entry.path, originalMode, entry.mode])
+    }
+
+    // if there's a specific owner uid/gid that we want, then set that
+    if (process.platform !== "win32" &&
+        typeof uid === "number" &&
+        typeof gid === "number") {
+      entry.props.uid = entry.uid = uid
+      entry.props.gid = entry.gid = gid
+    }
+  }
+
+  var extractOpts = { type: "Directory", path: target, strip: 1 }
+
+  if (process.platform !== "win32" &&
+      typeof uid === "number" &&
+      typeof gid === "number") {
+    extractOpts.uid = uid
+    extractOpts.gid = gid
+  }
+
+  extractOpts.filter = function () {
+    // symbolic links are not allowed in packages.
+    if (this.type.match(/^.*Link$/)) {
+      log.warn( "excluding symbolic link"
+              , this.path.substr(target.length + 1)
+              + " -> " + this.linkpath )
+      return false
+    }
+    return true
+  }
+
+
+  fst.on("error", function (er) {
+    if (er) log.error("tar.unpack", "error reading "+tarball)
+    cb(er)
+  })
+  fst.on("data", function OD (c) {
+    // detect what it is.
+    // Then, depending on that, we'll figure out whether it's
+    // a single-file module, gzipped tarball, or naked tarball.
+    // gzipped files all start with 1f8b08
+    if (c[0] === 0x1F &&
+        c[1] === 0x8B &&
+        c[2] === 0x08) {
+      fst
+        .pipe(zlib.Unzip())
+        .on("error", function (er) {
+          if (er) log.error("tar.unpack", "unzip error "+tarball)
+          cb(er)
+        })
+        .pipe(tar.Extract(extractOpts))
+        .on("entry", extractEntry)
+        .on("error", function (er) {
+          if (er) log.error("tar.unpack", "untar error "+tarball)
+          cb(er)
+        })
+        .on("close", cb)
+    } else if (c.toString().match(/^package\//)) {
+      // naked tar
+      fst
+        .pipe(tar.Extract(extractOpts))
+        .on("entry", extractEntry)
+        .on("error", function (er) {
+          if (er) log.error("tar.unpack", "untar error "+tarball)
+          cb(er)
+        })
+        .on("close", cb)
+    } else {
+      // naked js file
+      var jsOpts = { path: path.resolve(target, "index.js") }
+
+      if (process.platform !== "win32" &&
+          typeof uid === "number" &&
+          typeof gid === "number") {
+        jsOpts.uid = uid
+        jsOpts.gid = gid
+      }
+
+      fst
+        .pipe(fstream.Writer(jsOpts))
+        .on("error", function (er) {
+          if (er) log.error("tar.unpack", "copy error "+tarball)
+          cb(er)
+        })
+        .on("close", function () {
+          var j = path.resolve(target, "package.json")
+          readJson(j, function (er, d) {
+            if (er) {
+              log.error("not a package", tarball)
+              return cb(er)
+            }
+            fs.writeFile(j, JSON.stringify(d) + "\n", cb)
+          })
+        })
+    }
+
+    // now un-hook, and re-emit the chunk
+    fst.removeListener("data", OD)
+    fst.emit("data", c)
+  })
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/version.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/version.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/version.js
new file mode 100644
index 0000000..4e155da
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/version.js
@@ -0,0 +1,120 @@
+// npm version <newver>
+
+module.exports = version
+
+var exec = require("child_process").execFile
+  , semver = require("semver")
+  , path = require("path")
+  , fs = require("graceful-fs")
+  , chain = require("slide").chain
+  , log = require("npmlog")
+  , which = require("which")
+  , npm = require("./npm.js")
+
+version.usage = "npm version [<newversion> | major | minor | patch]\n"
+              + "\n(run in package dir)\n"
+              + "'npm -v' or 'npm --version' to print npm version "
+              + "("+npm.version+")\n"
+              + "'npm view <pkg> version' to view a package's "
+              + "published version\n"
+              + "'npm ls' to inspect current package/dependency versions"
+
+function version (args, silent, cb_) {
+  if (typeof cb_ !== "function") cb_ = silent, silent = false
+  if (args.length > 1) return cb_(version.usage)
+  fs.readFile(path.join(process.cwd(), "package.json"), function (er, data) {
+    if (!args.length) {
+      var v = {}
+      Object.keys(process.versions).forEach(function (k) {
+        v[k] = process.versions[k]
+      })
+      v.npm = npm.version
+      try {
+        data = JSON.parse(data.toString())
+      } catch (er) {
+        data = null
+      }
+      if (data && data.name && data.version) {
+        v[data.name] = data.version
+      }
+      console.log(v)
+      return cb_()
+    }
+
+    if (er) {
+      log.error("version", "No package.json found")
+      return cb_(er)
+    }
+
+    try {
+      data = JSON.parse(data)
+    } catch (er) {
+      log.error("version", "Bad package.json data")
+      return cb_(er)
+    }
+
+		var newVer = semver.valid(args[0])
+		if (!newVer) newVer = semver.inc(data.version, args[0])
+		if (!newVer) return cb_(version.usage)
+    if (data.version === newVer) return cb_(new Error("Version not changed"))
+    data.version = newVer
+
+    fs.stat(path.join(process.cwd(), ".git"), function (er, s) {
+      function cb (er) {
+        if (!er && !silent) console.log("v" + newVer)
+        cb_(er)
+      }
+
+      var tags = npm.config.get('git-tag-version')
+      var doGit = !er && s.isDirectory() && tags
+      if (!doGit) return write(data, cb)
+      else checkGit(data, cb)
+    })
+  })
+}
+
+function checkGit (data, cb) {
+  var git = npm.config.get("git")
+  var args = [ "status", "--porcelain" ]
+  var env = process.env
+
+  // check for git
+  which(git, function (err) {
+    if (err) {
+      err.code = "ENOGIT"
+      return cb(err)
+    }
+
+    gitFound()
+  })
+
+  function gitFound () {
+    exec(git, args, {env: env}, function (er, stdout, stderr) {
+      var lines = stdout.trim().split("\n").filter(function (line) {
+        return line.trim() && !line.match(/^\?\? /)
+      }).map(function (line) {
+        return line.trim()
+      })
+      if (lines.length) return cb(new Error(
+        "Git working directory not clean.\n"+lines.join("\n")))
+      write(data, function (er) {
+        if (er) return cb(er)
+        var message = npm.config.get("message").replace(/%s/g, data.version)
+          , sign = npm.config.get("sign-git-tag")
+          , flag = sign ? "-sm" : "-am"
+        chain
+          ( [ [ exec, git, [ "add", "package.json" ], {env: process.env} ]
+            , [ exec, git, [ "commit", "-m", message ], {env: process.env} ]
+            , [ exec, git, [ "tag", "v" + data.version, flag, message ]
+              , {env: process.env} ] ]
+          , cb )
+      })
+    })
+  }
+}
+
+function write (data, cb) {
+  fs.writeFile( path.join(process.cwd(), "package.json")
+              , new Buffer(JSON.stringify(data, null, 2) + "\n")
+              , cb )
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/view.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/view.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/view.js
new file mode 100644
index 0000000..babd072
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/view.js
@@ -0,0 +1,246 @@
+// npm view [pkg [pkg ...]]
+
+module.exports = view
+view.usage = "npm view pkg[@version] [<field>[.subfield]...]"
+
+view.completion = function (opts, cb) {
+  if (opts.conf.argv.remain.length <= 2) {
+    return registry.get("/-/short", cb)
+  }
+  // have the package, get the fields.
+  var tag = npm.config.get("tag")
+  registry.get(opts.conf.argv.remain[2], function (er, d) {
+    if (er) return cb(er)
+    var dv = d.versions[d["dist-tags"][tag]]
+      , fields = []
+    d.versions = Object.keys(d.versions).sort(semver.compareLoose)
+    fields = getFields(d).concat(getFields(dv))
+    cb(null, fields)
+  })
+
+  function getFields (d, f, pref) {
+    f = f || []
+    if (!d) return f
+    pref = pref || []
+    Object.keys(d).forEach(function (k) {
+      if (k.charAt(0) === "_" || k.indexOf(".") !== -1) return
+      var p = pref.concat(k).join(".")
+      f.push(p)
+      if (Array.isArray(d[k])) {
+        return d[k].forEach(function (val, i) {
+          var pi = p + "[" + i + "]"
+          if (val && typeof val === "object") getFields(val, f, [p])
+          else f.push(pi)
+        })
+      }
+      if (typeof d[k] === "object") getFields(d[k], f, [p])
+    })
+    return f
+  }
+}
+
+var npm = require("./npm.js")
+  , registry = npm.registry
+  , log = require("npmlog")
+  , util = require("util")
+  , semver = require("semver")
+
+function view (args, silent, cb) {
+  if (typeof cb !== "function") cb = silent, silent = false
+  if (!args.length) return cb("Usage: "+view.usage)
+  var pkg = args.shift()
+    , nv = pkg.split("@")
+    , name = nv.shift()
+    , version = nv.join("@") || npm.config.get("tag")
+
+  if (name === ".") return cb(view.usage)
+
+  // get the data about this package
+  registry.get(name, 600, function (er, data) {
+    if (er) return cb(er)
+    if (data["dist-tags"].hasOwnProperty(version)) {
+      version = data["dist-tags"][version]
+    }
+    var results = []
+      , error = null
+      , versions = data.versions
+    data.versions = Object.keys(data.versions).sort(semver.compareLoose)
+    if (!args.length) args = [""]
+
+    // remove readme unless we asked for it
+    if (-1 === args.indexOf("readme")) {
+      delete data.readme
+    }
+
+    Object.keys(versions).forEach(function (v) {
+      if (semver.satisfies(v, version, true)) args.forEach(function (args) {
+        // remove readme unless we asked for it
+        if (-1 === args.indexOf("readme")) {
+          delete versions[v].readme
+        }
+        results.push(showFields(data, versions[v], args))
+      })
+    })
+    results = results.reduce(reducer, {})
+    var retval = results
+
+    if (args.length === 1 && args[0] === "") {
+      retval = cleanBlanks(retval)
+      log.silly("cleanup", retval)
+    }
+
+    if (error || silent) cb(error, retval)
+    else printData(results, data._id, cb.bind(null, error, retval))
+  })
+}
+
+function cleanBlanks (obj) {
+  var clean = {}
+  Object.keys(obj).forEach(function (version) {
+    clean[version] = obj[version][""]
+  })
+  return clean
+}
+
+function reducer (l, r) {
+  if (r) Object.keys(r).forEach(function (v) {
+    l[v] = l[v] || {}
+    Object.keys(r[v]).forEach(function (t) {
+      l[v][t] = r[v][t]
+    })
+  })
+  return l
+}
+
+// return whatever was printed
+function showFields (data, version, fields) {
+  var o = {}
+  ;[data, version].forEach(function (s) {
+    Object.keys(s).forEach(function (k) {
+      o[k] = s[k]
+    })
+  })
+  return search(o, fields.split("."), version.version, fields)
+}
+
+function search (data, fields, version, title) {
+  var field
+    , tail = fields
+  while (!field && fields.length) field = tail.shift()
+  fields = [field].concat(tail)
+  if (!field && !tail.length) {
+    var o = {}
+    o[version] = {}
+    o[version][title] = data
+    return o
+  }
+  var index = field.match(/(.+)\[([^\]]+)\]$/)
+  if (index) {
+    field = index[1]
+    index = index[2]
+    if (data.field && data.field.hasOwnProperty(index)) {
+      return search(data[field][index], tail, version, title)
+    } else {
+      field = field + "[" + index + "]"
+    }
+  }
+  if (Array.isArray(data)) {
+    if (data.length === 1) {
+      return search(data[0], fields, version, title)
+    }
+    var results = []
+      , res = null
+    data.forEach(function (data, i) {
+      var tl = title.length
+        , newt = title.substr(0, tl-(fields.join(".").length) - 1)
+               + "["+i+"]" + [""].concat(fields).join(".")
+      results.push(search(data, fields.slice(), version, newt))
+    })
+    results = results.reduce(reducer, {})
+    return results
+  }
+  if (!data.hasOwnProperty(field)) {
+    return
+  }
+  data = data[field]
+  if (tail.length) {
+    if (typeof data === "object") {
+      // there are more fields to deal with.
+      return search(data, tail, version, title)
+    } else {
+      return new Error("Not an object: "+data)
+    }
+  }
+  var o = {}
+  o[version] = {}
+  o[version][title] = data
+  return o
+}
+
+function printData (data, name, cb) {
+  var versions = Object.keys(data)
+    , msg = ""
+    , showVersions = versions.length > 1
+    , showFields
+
+  versions.forEach(function (v, i) {
+    var fields = Object.keys(data[v])
+    showFields = showFields || (fields.length > 1)
+    fields.forEach(function (f) {
+      var d = cleanup(data[v][f])
+      if (showVersions || showFields || typeof d !== "string") {
+        d = cleanup(data[v][f])
+        d = npm.config.get("json")
+          ? JSON.stringify(d, null, 2)
+          : util.inspect(d, false, 5, npm.color)
+      } else if (typeof d === "string" && npm.config.get("json")) {
+        d = JSON.stringify(d)
+      }
+      if (f && showFields) f += " = "
+      if (d.indexOf("\n") !== -1) d = "\n" + d
+      msg += (showVersions ? name + "@" + v + " " : "")
+           + (showFields ? f : "") + d + "\n"
+    })
+  })
+
+  console.log(msg)
+  cb(null, data)
+}
+function cleanup (data) {
+  if (Array.isArray(data)) {
+    if (data.length === 1) {
+      data = data[0]
+    } else {
+      return data.map(cleanup)
+    }
+  }
+  if (!data || typeof data !== "object") return data
+
+  if (typeof data.versions === "object"
+      && data.versions
+      && !Array.isArray(data.versions)) {
+    data.versions = Object.keys(data.versions || {})
+  }
+
+  var keys = Object.keys(data)
+  keys.forEach(function (d) {
+    if (d.charAt(0) === "_") delete data[d]
+    else if (typeof data[d] === "object") data[d] = cleanup(data[d])
+  })
+  keys = Object.keys(data)
+  if (keys.length <= 3
+      && data.name
+      && (keys.length === 1
+          || keys.length === 3 && data.email && data.url
+          || keys.length === 2 && (data.email || data.url))) {
+    data = unparsePerson(data)
+  }
+  return data
+}
+function unparsePerson (d) {
+  if (typeof d === "string") return d
+  return d.name
+       + (d.email ? " <"+d.email+">" : "")
+       + (d.url ? " ("+d.url+")" : "")
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/visnup.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/visnup.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/visnup.js
new file mode 100644
index 0000000..8d710c2
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/visnup.js
@@ -0,0 +1,42 @@
+module.exports = visnup
+var npm = require("./npm.js")
+
+var handsomeFace = [
+  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 237, 236, 236, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+ ,[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 235, 233, 237, 235, 233, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+ ,[0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 235, 233, 232, 235, 235, 234, 233, 236, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+ ,[0, 0, 0, 0, 0, 0, 0, 0, 237, 235, 232, 232, 234, 233, 233, 232, 232, 233, 232, 232, 235, 232, 233, 234, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+ ,[0, 0, 0, 0, 0, 0, 0, 232, 232, 232, 239, 238, 235, 233, 232, 232, 232, 232, 232, 232, 232, 233, 235, 232, 233, 233, 232, 0, 0, 0, 0, 0, 0, 0]
+ ,[0, 0, 0, 0, 234, 234, 232, 233, 234, 233, 234, 235, 233, 235, 60, 238, 238, 234, 234, 233, 234, 233, 238, 251, 246, 233, 233, 232, 0, 0, 0, 0, 0, 0]
+ ,[0, 0, 233, 233, 233, 232, 232, 239, 249, 251, 252, 231, 231, 188, 250, 254, 59, 60, 255, 231, 231, 231, 252, 235, 239, 235, 232, 233, 0, 0, 0, 0, 0, 0]
+ ,[0, 0, 232, 233, 232, 232, 232, 248, 231, 231, 231, 231, 231, 231, 231, 254, 238, 254, 231, 231, 231, 231, 231, 252, 233, 235, 237, 233, 234, 0, 0, 0, 0, 0]
+ ,[0, 0, 233, 232, 232, 232, 248, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 251, 233, 233, 233, 236, 233, 0, 0, 0, 0]
+ ,[232, 233, 233, 232, 232, 246, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 249, 233, 234, 234, 0, 0, 0, 0]
+ ,[232, 232, 232, 232, 233, 249, 231, 255, 255, 255, 255, 254, 109, 60, 239, 237, 238, 237, 235, 235, 235, 235, 236, 235, 235, 235, 234, 232, 232, 232, 232, 232, 233, 0]
+ ,[0, 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, 235, 236, 238, 238, 235, 188, 254, 254, 145, 236, 252, 254, 254, 254, 254, 249, 236, 235, 232, 232, 233, 0]
+ ,[0, 0, 233, 237, 249, 239, 233, 252, 231, 231, 231, 231, 231, 231, 254, 235, 235, 254, 231, 231, 251, 235, 237, 231, 231, 231, 231, 7, 237, 235, 232, 233, 233, 0]
+ ,[0, 0, 0, 0, 233, 248, 239, 233, 231, 231, 231, 231, 254, 233, 233, 235, 254, 255, 231, 254, 237, 236, 254, 239, 235, 235, 233, 233, 232, 232, 233, 232, 0, 0]
+ ,[0, 0, 0, 232, 233, 246, 255, 255, 236, 236, 236, 236, 236, 255, 231, 231, 231, 231, 231, 231, 252, 234, 248, 231, 231, 231, 231, 248, 232, 232, 232, 0, 0, 0]
+ ,[0, 0, 0, 0, 235, 237, 7, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 255, 238, 235, 7, 231, 231, 231, 246, 232, 0, 0, 0, 0, 0]
+ ,[0, 0, 0, 0, 0, 235, 103, 188, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 252, 232, 238, 231, 231, 255, 244, 232, 0, 0, 0, 0, 0]
+ ,[0, 0, 0, 0, 0, 235, 236, 103, 146, 253, 255, 231, 231, 231, 231, 231, 253, 251, 250, 250, 250, 246, 232, 235, 152, 255, 146, 66, 233, 0, 0, 0, 0, 0]
+ ,[0, 0, 0, 0, 0, 0, 233, 103, 146, 146, 146, 146, 254, 231, 231, 231, 109, 103, 146, 255, 188, 239, 240, 103, 255, 253, 103, 238, 234, 0, 0, 0, 0, 0]
+ ,[0, 0, 0, 0, 0, 0, 232, 235, 109, 146, 146, 146, 146, 146, 252, 152, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 103, 235, 233, 0, 0, 0, 0, 0]
+ ,[0, 0, 0, 0, 0, 0, 0, 235, 235, 103, 146, 146, 146, 146, 146, 146, 188, 188, 188, 188, 188, 188, 152, 146, 146, 146, 66, 235, 0, 0, 0, 0, 0, 0]
+ ,[0, 0, 0, 0, 0, 0, 0, 0, 233, 235, 66, 146, 146, 146, 146, 152, 255, 146, 240, 239, 241, 109, 146, 146, 146, 103, 233, 0, 0, 0, 0, 0, 0, 0]
+ ,[0, 0, 0, 0, 0, 0, 0, 0, 0, 234, 237, 109, 146, 146, 146, 146, 146, 254, 231, 231, 188, 146, 146, 146, 103, 233, 0, 0, 0, 0, 0, 0, 0, 0]
+ ,[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 233, 237, 60, 103, 146, 146, 146, 146, 146, 103, 66, 60, 235, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+ ,[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 233, 233, 236, 235, 237, 235, 237, 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
+
+
+function visnup (args, cb) {
+  handsomeFace.forEach(function (line) {
+    console.log(line.map(function (ch) {
+      return "\033[" + (ch ? "48;5;" + ch : ch) + "m"
+    }).join(' '))
+  })
+
+  var c = args.shift()
+  if (c) npm.commands[c](args, cb)
+  else cb()
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/whoami.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/whoami.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/whoami.js
new file mode 100644
index 0000000..664cbdb
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/whoami.js
@@ -0,0 +1,13 @@
+module.exports = whoami
+
+var npm = require("./npm.js")
+
+whoami.usage = "npm whoami\n(just prints the 'username' config)"
+
+function whoami (args, silent, cb) {
+  if (typeof cb !== "function") cb = silent, silent = false
+  var me = npm.config.get("username")
+  msg = me ? me : "Not authed.  Run 'npm adduser'"
+  if (!silent) console.log(msg)
+  process.nextTick(cb.bind(this, null, me))
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/xmas.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/xmas.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/xmas.js
new file mode 100644
index 0000000..bf838a8
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/xmas.js
@@ -0,0 +1,56 @@
+// happy xmas
+var npm = require("./npm.js")
+  , log = require("npmlog")
+
+module.exports = function (args, cb) {
+var s = process.platform === "win32" ? " *" : " \u2605"
+  , f = "\uFF0F"
+  , b = "\uFF3C"
+  , x = process.platform === "win32" ? " " : ""
+  , o = [ "\u0069" , "\u0020", "\u0020", "\u0020", "\u0020", "\u0020"
+        , "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020"
+        , "\u0020", "\u2E1B","\u2042","\u2E2E","&","@","\uFF61" ]
+  , oc = [21,33,34,35,36,37]
+  , l = "\u005e"
+
+function w (s) { process.stderr.write(s) }
+
+w("\n")
+;(function T (H) {
+  for (var i = 0; i < H; i ++) w(" ")
+  w(x+"\033[33m"+s+"\n")
+  var M = H * 2 - 1
+  for (L = 1; L <= H; L ++) {
+    var O = L * 2 - 2
+    var S = (M - O) / 2
+    for (var i = 0; i < S; i ++) w(" ")
+    w(x+"\033[32m"+f)
+    for (var i = 0; i < O; i ++) w(
+      "\033["+oc[Math.floor(Math.random()*oc.length)]+"m"+
+      o[Math.floor(Math.random() * o.length)]
+    )
+    w(x+"\033[32m"+b+"\n")
+  }
+  w(" ")
+  for (var i = 1; i < H; i ++) w("\033[32m"+l)
+  w("| "+x+" |")
+  for (var i = 1; i < H; i ++) w("\033[32m"+l)
+  if (H > 10) {
+    w("\n ")
+    for (var i = 1; i < H; i ++) w(" ")
+    w("| "+x+" |")
+    for (var i = 1; i < H; i ++) w(" ")
+  }
+})(20)
+w("\n\n")
+log.heading = ''
+log.addLevel('npm', 100000, log.headingStyle)
+log.npm("loves you", "Happy Xmas, Noders!")
+cb()
+}
+var dg=false
+Object.defineProperty(module.exports, "usage", {get:function () {
+  if (dg) module.exports([], function () {})
+  dg = true
+  return " "
+}})

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/abbrev/LICENSE
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/abbrev/LICENSE b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/abbrev/LICENSE
new file mode 100644
index 0000000..05a4010
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/abbrev/LICENSE
@@ -0,0 +1,23 @@
+Copyright 2009, 2010, 2011 Isaac Z. Schlueter.
+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/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/abbrev/README.md
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/abbrev/README.md b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/abbrev/README.md
new file mode 100644
index 0000000..99746fe
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/abbrev/README.md
@@ -0,0 +1,23 @@
+# abbrev-js
+
+Just like [ruby's Abbrev](http://apidock.com/ruby/Abbrev).
+
+Usage:
+
+    var abbrev = require("abbrev");
+    abbrev("foo", "fool", "folding", "flop");
+    
+    // returns:
+    { fl: 'flop'
+    , flo: 'flop'
+    , flop: 'flop'
+    , fol: 'folding'
+    , fold: 'folding'
+    , foldi: 'folding'
+    , foldin: 'folding'
+    , folding: 'folding'
+    , foo: 'foo'
+    , fool: 'fool'
+    }
+
+This is handy for command-line scripts, or other cases where you want to be able to accept shorthands.

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/abbrev/lib/abbrev.js
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/abbrev/lib/abbrev.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/abbrev/lib/abbrev.js
new file mode 100644
index 0000000..bee4132
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/abbrev/lib/abbrev.js
@@ -0,0 +1,111 @@
+
+module.exports = exports = abbrev.abbrev = abbrev
+
+abbrev.monkeyPatch = monkeyPatch
+
+function monkeyPatch () {
+  Object.defineProperty(Array.prototype, 'abbrev', {
+    value: function () { return abbrev(this) },
+    enumerable: false, configurable: true, writable: true
+  })
+
+  Object.defineProperty(Object.prototype, 'abbrev', {
+    value: function () { return abbrev(Object.keys(this)) },
+    enumerable: false, configurable: true, writable: true
+  })
+}
+
+function abbrev (list) {
+  if (arguments.length !== 1 || !Array.isArray(list)) {
+    list = Array.prototype.slice.call(arguments, 0)
+  }
+  for (var i = 0, l = list.length, args = [] ; i < l ; i ++) {
+    args[i] = typeof list[i] === "string" ? list[i] : String(list[i])
+  }
+
+  // sort them lexicographically, so that they're next to their nearest kin
+  args = args.sort(lexSort)
+
+  // walk through each, seeing how much it has in common with the next and previous
+  var abbrevs = {}
+    , prev = ""
+  for (var i = 0, l = args.length ; i < l ; i ++) {
+    var current = args[i]
+      , next = args[i + 1] || ""
+      , nextMatches = true
+      , prevMatches = true
+    if (current === next) continue
+    for (var j = 0, cl = current.length ; j < cl ; j ++) {
+      var curChar = current.charAt(j)
+      nextMatches = nextMatches && curChar === next.charAt(j)
+      prevMatches = prevMatches && curChar === prev.charAt(j)
+      if (!nextMatches && !prevMatches) {
+        j ++
+        break
+      }
+    }
+    prev = current
+    if (j === cl) {
+      abbrevs[current] = current
+      continue
+    }
+    for (var a = current.substr(0, j) ; j <= cl ; j ++) {
+      abbrevs[a] = current
+      a += current.charAt(j)
+    }
+  }
+  return abbrevs
+}
+
+function lexSort (a, b) {
+  return a === b ? 0 : a > b ? 1 : -1
+}
+
+
+// tests
+if (module === require.main) {
+
+var assert = require("assert")
+var util = require("util")
+
+console.log("running tests")
+function test (list, expect) {
+  var actual = abbrev(list)
+  assert.deepEqual(actual, expect,
+    "abbrev("+util.inspect(list)+") === " + util.inspect(expect) + "\n"+
+    "actual: "+util.inspect(actual))
+  actual = abbrev.apply(exports, list)
+  assert.deepEqual(abbrev.apply(exports, list), expect,
+    "abbrev("+list.map(JSON.stringify).join(",")+") === " + util.inspect(expect) + "\n"+
+    "actual: "+util.inspect(actual))
+}
+
+test([ "ruby", "ruby", "rules", "rules", "rules" ],
+{ rub: 'ruby'
+, ruby: 'ruby'
+, rul: 'rules'
+, rule: 'rules'
+, rules: 'rules'
+})
+test(["fool", "foom", "pool", "pope"],
+{ fool: 'fool'
+, foom: 'foom'
+, poo: 'pool'
+, pool: 'pool'
+, pop: 'pope'
+, pope: 'pope'
+})
+test(["a", "ab", "abc", "abcd", "abcde", "acde"],
+{ a: 'a'
+, ab: 'ab'
+, abc: 'abc'
+, abcd: 'abcd'
+, abcde: 'abcde'
+, ac: 'acde'
+, acd: 'acde'
+, acde: 'acde'
+})
+
+console.log("pass")
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/abbrev/package.json
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/abbrev/package.json b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/abbrev/package.json
new file mode 100644
index 0000000..bea853e
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/abbrev/package.json
@@ -0,0 +1,25 @@
+{
+  "name": "abbrev",
+  "version": "1.0.4",
+  "description": "Like ruby's abbrev module, but in js",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me"
+  },
+  "main": "./lib/abbrev.js",
+  "scripts": {
+    "test": "node lib/abbrev.js"
+  },
+  "repository": {
+    "type": "git",
+    "url": "http://github.com/isaacs/abbrev-js"
+  },
+  "license": {
+    "type": "MIT",
+    "url": "https://github.com/isaacs/abbrev-js/raw/master/LICENSE"
+  },
+  "readme": "# abbrev-js\n\nJust like [ruby's Abbrev](http://apidock.com/ruby/Abbrev).\n\nUsage:\n\n    var abbrev = require(\"abbrev\");\n    abbrev(\"foo\", \"fool\", \"folding\", \"flop\");\n    \n    // returns:\n    { fl: 'flop'\n    , flo: 'flop'\n    , flop: 'flop'\n    , fol: 'folding'\n    , fold: 'folding'\n    , foldi: 'folding'\n    , foldin: 'folding'\n    , folding: 'folding'\n    , foo: 'foo'\n    , fool: 'fool'\n    }\n\nThis is handy for command-line scripts, or other cases where you want to be able to accept shorthands.\n",
+  "readmeFilename": "README.md",
+  "_id": "abbrev@1.0.4",
+  "_from": "abbrev@latest"
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/ansi/.npmignore
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/ansi/.npmignore b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/ansi/.npmignore
new file mode 100644
index 0000000..3c3629e
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/node_modules/ansi/.npmignore
@@ -0,0 +1 @@
+node_modules