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