http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/ls.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/ls.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/ls.js new file mode 100644 index 0000000..194aae6 --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/ls.js @@ -0,0 +1,356 @@ + +// show the installed versions of packages +// +// --parseable creates output like this: +// <fullpath>:<name@ver>:<realpath>:<flags> +// Flags are a :-separated list of zero or more indicators + +module.exports = exports = ls + +var npm = require("./npm.js") + , readInstalled = require("read-installed") + , log = require("npmlog") + , path = require("path") + , archy = require("archy") + , semver = require("semver") + , url = require("url") + , isGitUrl = require("./utils/is-git-url.js") + +ls.usage = "npm ls" + +ls.completion = require("./utils/completion/installed-deep.js") + +function ls (args, silent, cb) { + if (typeof cb !== "function") cb = silent, silent = false + + var dir = path.resolve(npm.dir, "..") + + // npm ls 'foo@~1.3' bar 'baz@<2' + if (!args) args = [] + else args = args.map(function (a) { + var nv = a.split("@") + , name = nv.shift() + , ver = semver.validRange(nv.join("@")) || "" + + return [ name, ver ] + }) + + var depth = npm.config.get("depth") + readInstalled(dir, depth, log.warn, function (er, data) { + var bfs = bfsify(data, args) + , lite = getLite(bfs) + + if (er || silent) return cb(er, data, lite) + + var long = npm.config.get("long") + , json = npm.config.get("json") + , out + if (json) { + var seen = [] + var d = long ? bfs : lite + // the raw data can be circular + out = JSON.stringify(d, function (k, o) { + if (typeof o === "object") { + if (-1 !== seen.indexOf(o)) return "[Circular]" + seen.push(o) + } + return o + }, 2) + } else if (npm.config.get("parseable")) { + out = makeParseable(bfs, long, dir) + } else if (data) { + out = makeArchy(bfs, long, dir) + } + console.log(out) + + if (args.length && !data._found) process.exitCode = 1 + + // if any errors were found, then complain and exit status 1 + if (lite.problems && lite.problems.length) { + er = lite.problems.join('\n') + } + cb(er, data, lite) + }) +} + +// only include +function filter (data, args) { + +} + +function alphasort (a, b) { + a = a.toLowerCase() + b = b.toLowerCase() + return a > b ? 1 + : a < b ? -1 : 0 +} + +function getLite (data, noname) { + var lite = {} + , maxDepth = npm.config.get("depth") + + if (!noname && data.name) lite.name = data.name + if (data.version) lite.version = data.version + if (data.extraneous) { + lite.extraneous = true + lite.problems = lite.problems || [] + lite.problems.push( "extraneous: " + + data.name + "@" + data.version + + " " + (data.path || "") ) + } + + if (data._from) + lite.from = data._from + + if (data._resolved) + lite.resolved = data._resolved + + if (data.invalid) { + lite.invalid = true + lite.problems = lite.problems || [] + lite.problems.push( "invalid: " + + data.name + "@" + data.version + + " " + (data.path || "") ) + } + + if (data.peerInvalid) { + lite.peerInvalid = true + lite.problems = lite.problems || [] + lite.problems.push( "peer invalid: " + + data.name + "@" + data.version + + " " + (data.path || "") ) + } + + if (data.dependencies) { + var deps = Object.keys(data.dependencies) + if (deps.length) lite.dependencies = deps.map(function (d) { + var dep = data.dependencies[d] + if (typeof dep === "string") { + lite.problems = lite.problems || [] + var p + if (data.depth >= maxDepth) { + p = "max depth reached: " + } else { + p = "missing: " + } + p += d + "@" + dep + + ", required by " + + data.name + "@" + data.version + lite.problems.push(p) + return [d, { required: dep, missing: true }] + } + return [d, getLite(dep, true)] + }).reduce(function (deps, d) { + if (d[1].problems) { + lite.problems = lite.problems || [] + lite.problems.push.apply(lite.problems, d[1].problems) + } + deps[d[0]] = d[1] + return deps + }, {}) + } + return lite +} + +function bfsify (root, args, current, queue, seen) { + // walk over the data, and turn it from this: + // +-- a + // | `-- b + // | `-- a (truncated) + // `--b (truncated) + // into this: + // +-- a + // `-- b + // which looks nicer + args = args || [] + current = current || root + queue = queue || [] + seen = seen || [root] + var deps = current.dependencies = current.dependencies || {} + Object.keys(deps).forEach(function (d) { + var dep = deps[d] + if (typeof dep !== "object") return + if (seen.indexOf(dep) !== -1) { + if (npm.config.get("parseable") || !npm.config.get("long")) { + delete deps[d] + return + } else { + dep = deps[d] = Object.create(dep) + dep.dependencies = {} + } + } + queue.push(dep) + seen.push(dep) + }) + + if (!queue.length) { + // if there were args, then only show the paths to found nodes. + return filterFound(root, args) + } + return bfsify(root, args, queue.shift(), queue, seen) +} + +function filterFound (root, args) { + if (!args.length) return root + var deps = root.dependencies + if (deps) Object.keys(deps).forEach(function (d) { + var dep = filterFound(deps[d], args) + + // see if this one itself matches + var found = false + for (var i = 0; !found && i < args.length; i ++) { + if (d === args[i][0]) { + found = semver.satisfies(dep.version, args[i][1], true) + } + } + // included explicitly + if (found) dep._found = true + // included because a child was included + if (dep._found && !root._found) root._found = 1 + // not included + if (!dep._found) delete deps[d] + }) + if (!root._found) root._found = false + return root +} + +function makeArchy (data, long, dir) { + var out = makeArchy_(data, long, dir, 0) + return archy(out, "", { unicode: npm.config.get("unicode") }) +} + +function makeArchy_ (data, long, dir, depth, parent, d) { + var color = npm.color + if (typeof data === "string") { + if (depth < npm.config.get("depth")) { + // just missing + var p = parent.link || parent.path + var unmet = "UNMET DEPENDENCY" + if (color) { + unmet = "\033[31;40m" + unmet + "\033[0m" + } + data = unmet + " " + d + " " + data + } else { + data = d+"@"+ data + } + return data + } + + var out = {} + // the top level is a bit special. + out.label = data._id || "" + if (data._found === true && data._id) { + var pre = color ? "\033[33;40m" : "" + , post = color ? "\033[m" : "" + out.label = pre + out.label.trim() + post + " " + } + if (data.link) out.label += " -> " + data.link + + if (data.invalid) { + if (data.realName !== data.name) out.label += " ("+data.realName+")" + out.label += " " + (color ? "\033[31;40m" : "") + + "invalid" + + (color ? "\033[0m" : "") + } + + if (data.peerInvalid) { + out.label += " " + (color ? "\033[31;40m" : "") + + "peer invalid" + + (color ? "\033[0m" : "") + } + + if (data.extraneous && data.path !== dir) { + out.label += " " + (color ? "\033[32;40m" : "") + + "extraneous" + + (color ? "\033[0m" : "") + } + + // add giturl to name@version + if (data._resolved) { + var p = url.parse(data._resolved) + if (isGitUrl(p)) + out.label += " (" + data._resolved + ")" + } + + if (long) { + if (dir === data.path) out.label += "\n" + dir + out.label += "\n" + getExtras(data, dir) + } else if (dir === data.path) { + if (out.label) out.label += " " + out.label += dir + } + + // now all the children. + out.nodes = Object.keys(data.dependencies || {}) + .sort(alphasort).map(function (d) { + return makeArchy_(data.dependencies[d], long, dir, depth + 1, data, d) + }) + + if (out.nodes.length === 0 && data.path === dir) { + out.nodes = ["(empty)"] + } + + return out +} + +function getExtras (data, dir) { + var extras = [] + + if (data.description) extras.push(data.description) + if (data.repository) extras.push(data.repository.url) + if (data.homepage) extras.push(data.homepage) + if (data._from) { + var from = data._from + if (from.indexOf(data.name + "@") === 0) { + from = from.substr(data.name.length + 1) + } + var u = url.parse(from) + if (u.protocol) extras.push(from) + } + return extras.join("\n") +} + + +function makeParseable (data, long, dir, depth, parent, d) { + depth = depth || 0 + + return [ makeParseable_(data, long, dir, depth, parent, d) ] + .concat(Object.keys(data.dependencies || {}) + .sort(alphasort).map(function (d) { + return makeParseable(data.dependencies[d], long, dir, depth + 1, data, d) + })) + .filter(function (x) { return x }) + .join("\n") +} + +function makeParseable_ (data, long, dir, depth, parent, d) { + if (data.hasOwnProperty("_found") && data._found !== true) return "" + + if (typeof data === "string") { + if (data.depth < npm.config.get("depth")) { + var p = parent.link || parent.path + data = npm.config.get("long") + ? path.resolve(parent.path, "node_modules", d) + + ":"+d+"@"+JSON.stringify(data)+":INVALID:MISSING" + : "" + } else { + data = path.resolve(data.path || "", "node_modules", d || "") + + (npm.config.get("long") + ? ":" + d + "@" + JSON.stringify(data) + + ":" // no realpath resolved + + ":MAXDEPTH" + : "") + } + + return data + } + + if (!npm.config.get("long")) return data.path + + return data.path + + ":" + (data._id || "") + + ":" + (data.realPath !== data.path ? data.realPath : "") + + (data.extraneous ? ":EXTRANEOUS" : "") + + (data.invalid ? ":INVALID" : "") + + (data.peerInvalid ? ":PEERINVALID" : "") +}
http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/npm.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/npm.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/npm.js new file mode 100644 index 0000000..858a5e8 --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/npm.js @@ -0,0 +1,520 @@ +;(function(){ +// windows: running "npm blah" in this folder will invoke WSH, not node. +if (typeof WScript !== "undefined") { + WScript.echo("npm does not work when run\n" + +"with the Windows Scripting Host\n\n" + +"'cd' to a different directory,\n" + +"or type 'npm.cmd <args>',\n" + +"or type 'node npm <args>'.") + WScript.quit(1) + return +} + + +// monkey-patch support for 0.6 child processes +require('child-process-close') + +var EventEmitter = require("events").EventEmitter + , npm = module.exports = new EventEmitter + , config = require("./config.js") + , npmconf = require("npmconf") + , log = require("npmlog") + , fs = require("graceful-fs") + , path = require("path") + , abbrev = require("abbrev") + , which = require("which") + , semver = require("semver") + , findPrefix = require("./utils/find-prefix.js") + , getUid = require("uid-number") + , mkdirp = require("mkdirp") + , slide = require("slide") + , chain = slide.chain + , RegClient = require("npm-registry-client") + +npm.config = {loaded: false} + +// /usr/local is often a read-only fs, which is not +// well handled by node or mkdirp. Just double-check +// in the case of errors when making the prefix dirs. +function mkdir (p, cb) { + mkdirp(p, function (er, made) { + // it could be that we couldn't create it, because it + // already exists, and is on a read-only fs. + if (er) { + return fs.stat(p, function (er2, st) { + if (er2 || !st.isDirectory()) return cb(er) + return cb(null, made) + }) + } + return cb(er, made) + }) +} + +npm.commands = {} + +try { + var pv = process.version.replace(/^v/, '') + // startup, ok to do this synchronously + var j = JSON.parse(fs.readFileSync( + path.join(__dirname, "../package.json"))+"") + npm.version = j.version + npm.nodeVersionRequired = j.engines.node + if (!semver.satisfies(pv, j.engines.node)) { + log.warn("unsupported version", ["" + ,"npm requires node version: "+j.engines.node + ,"And you have: "+pv + ,"which is not satisfactory." + ,"" + ,"Bad things will likely happen. You have been warned." + ,""].join("\n")) + } +} catch (ex) { + try { + log.info("error reading version", ex) + } catch (er) {} + npm.version = ex +} + +var commandCache = {} + // short names for common things + , aliases = { "rm" : "uninstall" + , "r" : "uninstall" + , "un" : "uninstall" + , "unlink" : "uninstall" + , "remove" : "uninstall" + , "rb" : "rebuild" + , "list" : "ls" + , "la" : "ls" + , "ll" : "ls" + , "ln" : "link" + , "i" : "install" + , "isntall" : "install" + , "up" : "update" + , "c" : "config" + , "info" : "view" + , "show" : "view" + , "find" : "search" + , "s" : "search" + , "se" : "search" + , "author" : "owner" + , "home" : "docs" + , "issues": "bugs" + , "unstar": "star" // same function + , "apihelp" : "help" + , "login": "adduser" + , "add-user": "adduser" + , "tst": "test" + , "find-dupes": "dedupe" + , "ddp": "dedupe" + , "v": "view" + } + + , aliasNames = Object.keys(aliases) + // these are filenames in . + , cmdList = [ "install" + , "uninstall" + , "cache" + , "config" + , "set" + , "get" + , "update" + , "outdated" + , "prune" + , "submodule" + , "pack" + , "dedupe" + + , "rebuild" + , "link" + + , "publish" + , "star" + , "stars" + , "tag" + , "adduser" + , "unpublish" + , "owner" + , "deprecate" + , "shrinkwrap" + + , "help" + , "help-search" + , "ls" + , "search" + , "view" + , "init" + , "version" + , "edit" + , "explore" + , "docs" + , "repo" + , "bugs" + , "faq" + , "root" + , "prefix" + , "bin" + , "whoami" + + , "test" + , "stop" + , "start" + , "restart" + , "run-script" + , "completion" + ] + , plumbing = [ "build" + , "unbuild" + , "xmas" + , "substack" + , "visnup" + ] + , fullList = npm.fullList = cmdList.concat(aliasNames).filter(function (c) { + return plumbing.indexOf(c) === -1 + }) + , abbrevs = abbrev(fullList) + +Object.keys(abbrevs).concat(plumbing).forEach(function addCommand (c) { + Object.defineProperty(npm.commands, c, { get : function () { + if (!loaded) throw new Error( + "Call npm.load(config, cb) before using this command.\n"+ + "See the README.md or cli.js for example usage.") + var a = npm.deref(c) + if (c === "la" || c === "ll") { + npm.config.set("long", true) + } + npm.command = c + if (commandCache[a]) return commandCache[a] + var cmd = require(__dirname+"/"+a+".js") + commandCache[a] = function () { + var args = Array.prototype.slice.call(arguments, 0) + if (typeof args[args.length - 1] !== "function") { + args.push(defaultCb) + } + if (args.length === 1) args.unshift([]) + cmd.apply(npm, args) + } + Object.keys(cmd).forEach(function (k) { + commandCache[a][k] = cmd[k] + }) + return commandCache[a] + }, enumerable: fullList.indexOf(c) !== -1 }) + + // make css-case commands callable via camelCase as well + if (c.match(/\-([a-z])/)) { + addCommand(c.replace(/\-([a-z])/g, function (a, b) { + return b.toUpperCase() + })) + } +}) + +function defaultCb (er, data) { + if (er) console.error(er.stack || er.message) + else console.log(data) +} + +npm.deref = function (c) { + if (!c) return "" + if (c.match(/[A-Z]/)) c = c.replace(/([A-Z])/g, function (m) { + return "-" + m.toLowerCase() + }) + if (plumbing.indexOf(c) !== -1) return c + var a = abbrevs[c] + if (aliases[a]) a = aliases[a] + return a +} + +var loaded = false + , loading = false + , loadErr = null + , loadListeners = [] + +function loadCb (er) { + loadListeners.forEach(function (cb) { + process.nextTick(cb.bind(npm, er, npm)) + }) + loadListeners.length = 0 +} + +npm.load = function (cli, cb_) { + if (!cb_ && typeof cli === "function") cb_ = cli , cli = {} + if (!cb_) cb_ = function () {} + if (!cli) cli = {} + loadListeners.push(cb_) + if (loaded || loadErr) return cb(loadErr) + if (loading) return + loading = true + var onload = true + + function cb (er) { + if (loadErr) return + if (npm.config.get("force")) { + log.warn("using --force", "I sure hope you know what you are doing.") + } + npm.config.loaded = true + loaded = true + loadCb(loadErr = er) + if (onload = onload && npm.config.get("onload-script")) { + require(onload) + onload = false + } + } + + log.pause() + + load(npm, cli, cb) +} + +function load (npm, cli, cb) { + which(process.argv[0], function (er, node) { + if (!er && node.toUpperCase() !== process.execPath.toUpperCase()) { + log.verbose("node symlink", node) + process.execPath = node + process.installPrefix = path.resolve(node, "..", "..") + } + + // look up configs + //console.error("about to look up configs") + + var builtin = path.resolve(__dirname, "..", "npmrc") + npmconf.load(cli, builtin, function (er, config) { + if (er === config) er = null + + npm.config = config + + var color = config.get("color") + + log.level = config.get("loglevel") + log.heading = config.get("heading") || "npm" + log.stream = config.get("logstream") + switch (color) { + case "always": log.enableColor(); break + case false: log.disableColor(); break + } + log.resume() + + if (er) return cb(er) + + // see if we need to color normal output + switch (color) { + case "always": + npm.color = true + break + case false: + npm.color = false + break + default: + var tty = require("tty") + if (process.stdout.isTTY) npm.color = true + else if (!tty.isatty) npm.color = true + else if (tty.isatty(1)) npm.color = true + else npm.color = false + break + } + + // at this point the configs are all set. + // go ahead and spin up the registry client. + var token = config.get("_token") + if (typeof token === "string") { + try { + token = JSON.parse(token) + config.set("_token", token, "user") + config.save("user") + } catch (e) { token = null } + } + + npm.registry = new RegClient(npm.config) + + // save the token cookie in the config file + if (npm.registry.couchLogin) { + npm.registry.couchLogin.tokenSet = function (tok) { + npm.config.set("_token", tok, "user") + // ignore save error. best effort. + npm.config.save("user") + } + } + + var umask = npm.config.get("umask") + npm.modes = { exec: 0777 & (~umask) + , file: 0666 & (~umask) + , umask: umask } + + chain([ [ loadPrefix, npm, cli ] + , [ setUser, config, config.root ] + , [ loadUid, npm ] + ], cb) + }) + }) +} + +function loadPrefix (npm, config, cb) { + // try to guess at a good node_modules location. + var p + , gp + if (!Object.prototype.hasOwnProperty.call(config, "prefix")) { + p = process.cwd() + } else { + p = npm.config.get("prefix") + } + gp = npm.config.get("prefix") + + findPrefix(p, function (er, p) { + Object.defineProperty(npm, "localPrefix", + { get : function () { return p } + , set : function (r) { return p = r } + , enumerable : true + }) + // the prefix MUST exist, or else nothing works. + if (!npm.config.get("global")) { + mkdir(p, next) + } else { + next(er) + } + }) + + gp = path.resolve(gp) + Object.defineProperty(npm, "globalPrefix", + { get : function () { return gp } + , set : function (r) { return gp = r } + , enumerable : true + }) + // the prefix MUST exist, or else nothing works. + mkdir(gp, next) + + + var i = 2 + , errState = null + function next (er) { + if (errState) return + if (er) return cb(errState = er) + if (--i === 0) return cb() + } +} + + +function loadUid (npm, cb) { + // if we're not in unsafe-perm mode, then figure out who + // to run stuff as. Do this first, to support `npm update npm -g` + if (!npm.config.get("unsafe-perm")) { + getUid(npm.config.get("user"), npm.config.get("group"), cb) + } else { + process.nextTick(cb) + } +} + +function setUser (cl, dc, cb) { + // If global, leave it as-is. + // If not global, then set the user to the owner of the prefix folder. + // Just set the default, so it can be overridden. + if (cl.get("global")) return cb() + if (process.env.SUDO_UID) { + dc.user = +(process.env.SUDO_UID) + return cb() + } + + var prefix = path.resolve(cl.get("prefix")) + mkdir(prefix, function (er) { + if (er) { + log.error("could not create prefix dir", prefix) + return cb(er) + } + fs.stat(prefix, function (er, st) { + dc.user = st && st.uid + return cb(er) + }) + }) +} + + +Object.defineProperty(npm, "prefix", + { get : function () { + return npm.config.get("global") ? npm.globalPrefix : npm.localPrefix + } + , set : function (r) { + var k = npm.config.get("global") ? "globalPrefix" : "localPrefix" + return npm[k] = r + } + , enumerable : true + }) + +Object.defineProperty(npm, "bin", + { get : function () { + if (npm.config.get("global")) return npm.globalBin + return path.resolve(npm.root, ".bin") + } + , enumerable : true + }) + +Object.defineProperty(npm, "globalBin", + { get : function () { + var b = npm.globalPrefix + if (process.platform !== "win32") b = path.resolve(b, "bin") + return b + } + }) + +Object.defineProperty(npm, "dir", + { get : function () { + if (npm.config.get("global")) return npm.globalDir + return path.resolve(npm.prefix, "node_modules") + } + , enumerable : true + }) + +Object.defineProperty(npm, "globalDir", + { get : function () { + return (process.platform !== "win32") + ? path.resolve(npm.globalPrefix, "lib", "node_modules") + : path.resolve(npm.globalPrefix, "node_modules") + } + , enumerable : true + }) + +Object.defineProperty(npm, "root", + { get : function () { return npm.dir } }) + +Object.defineProperty(npm, "cache", + { get : function () { return npm.config.get("cache") } + , set : function (r) { return npm.config.set("cache", r) } + , enumerable : true + }) + +var tmpFolder +var crypto = require("crypto") +var rand = crypto.randomBytes(6) + .toString("base64") + .replace(/\//g, '_') + .replace(/\+/, '-') +Object.defineProperty(npm, "tmp", + { get : function () { + if (!tmpFolder) tmpFolder = "npm-" + process.pid + "-" + rand + return path.resolve(npm.config.get("tmp"), tmpFolder) + } + , enumerable : true + }) + +// the better to repl you with +Object.getOwnPropertyNames(npm.commands).forEach(function (n) { + if (npm.hasOwnProperty(n) || n === "config") return + + Object.defineProperty(npm, n, { get: function () { + return function () { + var args = Array.prototype.slice.call(arguments, 0) + , cb = defaultCb + + if (args.length === 1 && Array.isArray(args[0])) { + args = args[0] + } + + if (typeof args[args.length - 1] === "function") { + cb = args.pop() + } + + npm.commands[n](args, cb) + } + }, enumerable: false, configurable: true }) +}) + +if (require.main === module) { + require("../bin/npm-cli.js") +} +})() http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/outdated.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/outdated.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/outdated.js new file mode 100644 index 0000000..b94b0c6 --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/outdated.js @@ -0,0 +1,244 @@ +/* + +npm outdated [pkg] + +Does the following: + +1. check for a new version of pkg + +If no packages are specified, then run for all installed +packages. + +*/ + +module.exports = outdated + +outdated.usage = "npm outdated [<pkg> [<pkg> ...]]" + +outdated.completion = require("./utils/completion/installed-deep.js") + + +var path = require("path") + , fs = require("graceful-fs") + , readJson = require("read-package-json") + , cache = require("./cache.js") + , asyncMap = require("slide").asyncMap + , npm = require("./npm.js") + , url = require("url") + , isGitUrl = require("./utils/is-git-url.js") + , color = require("ansicolors") + , styles = require("ansistyles") + , table = require("text-table") + +function outdated (args, silent, cb) { + if (typeof cb !== "function") cb = silent, silent = false + var dir = path.resolve(npm.dir, "..") + outdated_(args, dir, {}, 0, function (er, list) { + if (er || silent) return cb(er, list) + if (npm.config.get("json")) { + console.log(makeJSON(list)) + } else { + var outList = list.map(makePretty) + var outTable = [[ styles.underline("Package") + , styles.underline("Current") + , styles.underline("Wanted") + , styles.underline("Latest") + , styles.underline("Location") + ]].concat(outList) + var tableOpts = { align: ["l", "r", "r", "r", "l"] + , stringLength: function(s) { return ansiTrim(s).length } + } + console.log(table(outTable, tableOpts)) + } + cb(null, list) + }) +} + +// [[ dir, dep, has, want ]] +function makePretty (p) { + var parseable = npm.config.get("parseable") + , long = npm.config.get("long") + , dep = p[1] + , dir = path.resolve(p[0], "node_modules", dep) + , has = p[2] + , want = p[3] + , latest = p[4] + + // XXX add --json support + // Should match (more or less) the output of ls --json + + if (parseable) { + var str = dir + if (npm.config.get("long")) { + str += ":" + dep + "@" + want + + ":" + (has ? (dep + "@" + has) : "MISSING") + } + return str + } + + if (!npm.config.get("global")) { + dir = path.relative(process.cwd(), dir) + } + return [ has === want ? color.yellow(dep) : color.red(dep) + , (has || "MISSING") + , color.green(want) + , color.magenta(latest) + , color.brightBlack(dirToPrettyLocation(dir)) + ] +} + +function ansiTrim (str) { + var r = new RegExp("\x1b(?:\\[(?:\\d+[ABCDEFGJKSTm]|\\d+;\\d+[Hfm]|" + + "\\d+;\\d+;\\d+m|6n|s|u|\\?25[lh])|\\w)", "g"); + return str.replace(r, "") +} + +function dirToPrettyLocation (dir) { + return dir.replace(/^node_modules[/\\]/, "") + .replace(/[[/\\]node_modules[/\\]/g, " > ") +} + +function makeJSON (list) { + var out = {} + list.forEach(function (p) { + var dir = path.resolve(p[0], "node_modules", p[1]) + if (!npm.config.get("global")) { + dir = path.relative(process.cwd(), dir) + } + out[p[1]] = { current: p[2] + , wanted: p[3] + , latest: p[4] + , location: dir + } + }) + return JSON.stringify(out, null, 2) +} + +function outdated_ (args, dir, parentHas, depth, cb) { + // get the deps from package.json, or {<dir/node_modules/*>:"*"} + // asyncMap over deps: + // shouldHave = cache.add(dep, req).version + // if has === shouldHave then + // return outdated(args, dir/node_modules/dep, parentHas + has) + // else if dep in args or args is empty + // return [dir, dep, has, shouldHave] + + if (depth > npm.config.get("depth")) { + return cb(null, []) + } + var deps = null + readJson(path.resolve(dir, "package.json"), function (er, d) { + if (er && er.code !== "ENOENT" && er.code !== "ENOTDIR") return cb(er) + deps = (er) ? true : (d.dependencies || {}) + var doUpdate = npm.config.get("dev") || + (!npm.config.get("production") && + !Object.keys(parentHas).length && + !npm.config.get("global")) + if (!er && d && doUpdate) { + Object.keys(d.devDependencies || {}).forEach(function (k) { + if (!(k in parentHas)) { + deps[k] = d.devDependencies[k] + } + }) + } + return next() + }) + + var has = null + fs.readdir(path.resolve(dir, "node_modules"), function (er, pkgs) { + if (er) { + has = Object.create(parentHas) + return next() + } + pkgs = pkgs.filter(function (p) { + return !p.match(/^[\._-]/) + }) + asyncMap(pkgs, function (pkg, cb) { + var jsonFile = path.resolve(dir, "node_modules", pkg, "package.json") + readJson(jsonFile, function (er, d) { + if (er && er.code !== "ENOENT" && er.code !== "ENOTDIR") return cb(er) + cb(null, er ? [] : [[d.name, d.version, d._from]]) + }) + }, function (er, pvs) { + if (er) return cb(er) + has = Object.create(parentHas) + pvs.forEach(function (pv) { + has[pv[0]] = { + version: pv[1], + from: pv[2] + } + }) + + next() + }) + }) + + function next () { + if (!has || !deps) return + if (deps === true) { + deps = Object.keys(has).reduce(function (l, r) { + l[r] = "*" + return l + }, {}) + } + + // now get what we should have, based on the dep. + // if has[dep] !== shouldHave[dep], then cb with the data + // otherwise dive into the folder + asyncMap(Object.keys(deps), function (dep, cb) { + shouldUpdate(args, dir, dep, has, deps[dep], depth, cb) + }, cb) + } +} + +function shouldUpdate (args, dir, dep, has, req, depth, cb) { + // look up the most recent version. + // if that's what we already have, or if it's not on the args list, + // then dive into it. Otherwise, cb() with the data. + + // { version: , from: } + var curr = has[dep] + + function skip () { + outdated_( args + , path.resolve(dir, "node_modules", dep) + , has + , depth + 1 + , cb ) + } + + function doIt (wanted, latest) { + cb(null, [[ dir, dep, curr && curr.version, wanted, latest, req ]]) + } + + if (args.length && args.indexOf(dep) === -1) { + return skip() + } + + if (isGitUrl(url.parse(req))) + return doIt("git", "git") + + var registry = npm.registry + // search for the latest package + registry.get(dep + "/latest", function (er, l) { + if (er) return cb() + // so, we can conceivably update this. find out if we need to. + cache.add(dep, req, function (er, d) { + // if this fails, then it means we can't update this thing. + // it's probably a thing that isn't published. + if (er) return skip() + + // check that the url origin hasn't changed (#1727) and that + // there is no newer version available + var dFromUrl = d._from && url.parse(d._from).protocol + var cFromUrl = curr && curr.from && url.parse(curr.from).protocol + + if (!curr || dFromUrl && cFromUrl && d._from !== curr.from + || d.version !== curr.version + || d.version !== l.version) + doIt(d.version, l.version) + else + skip() + }) + }) +} http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/owner.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/owner.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/owner.js new file mode 100644 index 0000000..fdf4559 --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/owner.js @@ -0,0 +1,205 @@ + +module.exports = owner + +owner.usage = "npm owner add <username> <pkg>" + + "\nnpm owner rm <username> <pkg>" + + "\nnpm owner ls <pkg>" + +owner.completion = function (opts, cb) { + var argv = opts.conf.argv.remain + if (argv.length > 4) return cb() + if (argv.length <= 2) { + var subs = ["add", "rm"] + if (opts.partialWord === "l") subs.push("ls") + else subs.push("ls", "list") + return cb(null, subs) + } + var un = encodeURIComponent(npm.config.get("username")) + switch (argv[2]) { + case "ls": + if (argv.length > 3) return cb() + else return registry.get("/-/short", cb) + + case "rm": + if (argv.length > 3) { + var theUser = encodeURIComponent(argv[3]) + , uri = "/-/by-user/"+theUser+"|"+un + console.error(uri) + return registry.get(uri, function (er, d) { + if (er) return cb(er) + // return the intersection + return cb(null, d[theUser].filter(function (p) { + // kludge for server adminery. + return un === "isaacs" || d[un].indexOf(p) === -1 + })) + }) + } + // else fallthrough + case "add": + if (argv.length > 3) { + var theUser = encodeURIComponent(argv[3]) + , uri = "/-/by-user/"+theUser+"|"+un + console.error(uri) + return registry.get(uri, function (er, d) { + console.error(uri, er || d) + // return mine that they're not already on. + if (er) return cb(er) + var mine = d[un] || [] + , theirs = d[theUser] || [] + return cb(null, mine.filter(function (p) { + return theirs.indexOf(p) === -1 + })) + }) + } + // just list all users who aren't me. + return registry.get("/-/users", function (er, list) { + if (er) return cb() + return cb(null, Object.keys(list).filter(function (n) { + return n !== un + })) + }) + + default: + return cb() + } +} + +var npm = require("./npm.js") + , registry = npm.registry + , log = require("npmlog") + , readJson = require("read-package-json") + +function owner (args, cb) { + var action = args.shift() + switch (action) { + case "ls": case "list": return ls(args[0], cb) + case "add": return add(args[0], args[1], cb) + case "rm": case "remove": return rm(args[0], args[1], cb) + default: return unknown(action, cb) + } +} + +function ls (pkg, cb) { + if (!pkg) return readLocalPkg(function (er, pkg) { + if (er) return cb(er) + if (!pkg) return cb(owner.usage) + ls(pkg, cb) + }) + + registry.get(pkg, function (er, data) { + var msg = "" + if (er) { + log.error("owner ls", "Couldn't get owner data", pkg) + return cb(er) + } + var owners = data.maintainers + if (!owners || !owners.length) msg = "admin party!" + else msg = owners.map(function (o) { return o.name +" <"+o.email+">" }).join("\n") + console.log(msg) + cb(er, owners) + }) +} + +function add (user, pkg, cb) { + if (!user) return cb(owner.usage) + if (!pkg) return readLocalPkg(function (er, pkg) { + if (er) return cb(er) + if (!pkg) return cb(new Error(owner.usage)) + add(user, pkg, cb) + }) + + log.verbose("owner add", "%s to %s", user, pkg) + mutate(pkg, user, function (u, owners) { + if (!owners) owners = [] + for (var i = 0, l = owners.length; i < l; i ++) { + var o = owners[i] + if (o.name === u.name) { + log.info( "owner add" + , "Already a package owner: "+o.name+" <"+o.email+">") + return false + } + } + owners.push(u) + return owners + }, cb) +} + +function rm (user, pkg, cb) { + if (!pkg) return readLocalPkg(function (er, pkg) { + if (er) return cb(er) + if (!pkg) return cb(new Error(owner.usage)) + rm(user, pkg, cb) + }) + + log.verbose("owner rm", "%s from %s", user, pkg) + mutate(pkg, null, function (u, owners) { + var found = false + , m = owners.filter(function (o) { + var match = (o.name === user) + found = found || match + return !match + }) + if (!found) { + log.info("owner rm", "Not a package owner: "+user) + return false + } + if (!m.length) return new Error( + "Cannot remove all owners of a package. Add someone else first.") + return m + }, cb) +} + +function mutate (pkg, user, mutation, cb) { + if (user) { + registry.get("/-/user/org.couchdb.user:"+user, mutate_) + } else { + mutate_(null, null) + } + + function mutate_ (er, u) { + if (!er && user && (!u || u.error)) er = new Error( + "Couldn't get user data for "+user+": "+JSON.stringify(u)) + + if (er) { + log.error("owner mutate", "Error getting user data for %s", user) + return cb(er) + } + + if (u) u = { "name" : u.name, "email" : u.email } + registry.get(pkg, function (er, data) { + if (er) { + log.error("owner mutate", "Error getting package data for %s", pkg) + return cb(er) + } + var m = mutation(u, data.maintainers) + if (!m) return cb() // handled + if (m instanceof Error) return cb(m) // error + data = { _id : data._id + , _rev : data._rev + , maintainers : m + } + registry.request("PUT" + , pkg+"/-rev/"+data._rev, data + , function (er, data) { + if (!er && data.error) er = new Error( + "Failed to update package metadata: "+JSON.stringify(data)) + if (er) { + log.error("owner mutate", "Failed to update package metadata") + } + cb(er, data) + }) + }) + } +} + +function readLocalPkg (cb) { + if (npm.config.get("global")) return cb() + var path = require("path") + readJson(path.resolve(npm.prefix, "package.json"), function (er, d) { + return cb(er, d && d.name) + }) +} + +function unknown (action, cb) { + cb("Usage: \n"+owner.usage) +} http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/pack.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/pack.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/pack.js new file mode 100644 index 0000000..302aa81 --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/pack.js @@ -0,0 +1,65 @@ +// npm pack <pkg> +// Packs the specified package into a .tgz file, which can then +// be installed. + +module.exports = pack + +var npm = require("./npm.js") + , install = require("./install.js") + , cache = require("./cache.js") + , fs = require("graceful-fs") + , chain = require("slide").chain + , path = require("path") + , cwd = process.cwd() + +pack.usage = "npm pack <pkg>" + +// if it can be installed, it can be packed. +pack.completion = install.completion + +function pack (args, silent, cb) { + if (typeof cb !== "function") cb = silent, silent = false + + if (args.length === 0) args = ["."] + + chain(args.map(function (arg) { return function (cb) { + pack_(arg, cb) + }}), function (er, files) { + if (er || silent) return cb(er, files) + printFiles(files, cb) + }) +} + +function printFiles (files, cb) { + files = files.map(function (file) { + return path.relative(cwd, file) + }) + console.log(files.join("\n")) + cb() +} + +// add to cache, then cp to the cwd +function pack_ (pkg, cb) { + cache.add(pkg, function (er, data) { + if (er) return cb(er) + var fname = path.resolve(data._id.replace(/@/g, "-") + ".tgz") + , cached = path.resolve( npm.cache + , data.name + , data.version + , "package.tgz" ) + , from = fs.createReadStream(cached) + , to = fs.createWriteStream(fname) + , errState = null + + from.on("error", cb_) + to.on("error", cb_) + to.on("close", cb_) + from.pipe(to) + + function cb_ (er) { + if (errState) return + if (er) return cb(errState = er) + cb(null, fname) + } + }) +} http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/prefix.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/prefix.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/prefix.js new file mode 100644 index 0000000..e002ede --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/prefix.js @@ -0,0 +1,11 @@ +module.exports = prefix + +var npm = require("./npm.js") + +prefix.usage = "npm prefix\nnpm prefix -g\n(just prints the prefix folder)" + +function prefix (args, silent, cb) { + if (typeof cb !== "function") cb = silent, silent = false + if (!silent) console.log(npm.prefix) + process.nextTick(cb.bind(this, null, npm.prefix)) +} http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/prune.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/prune.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/prune.js new file mode 100644 index 0000000..0e13da1 --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/prune.js @@ -0,0 +1,52 @@ +// prune extraneous packages. + +module.exports = prune + +prune.usage = "npm prune" + +var readInstalled = require("read-installed") + , npm = require("./npm.js") + , path = require("path") + , readJson = require("read-package-json") + , log = require("npmlog") + +prune.completion = require("./utils/completion/installed-deep.js") + +function prune (args, cb) { + //check if is a valid package.json file + var jsonFile = path.resolve(npm.dir, "..", "package.json" ) + readJson(jsonFile, log.warn, function (er, data) { + if (er) return cb(er) + next() + }) + + function next() { + readInstalled(npm.prefix, npm.config.get("depth"), function (er, data) { + if (er) return cb(er) + prune_(args, data, cb) + }) + } +} + +function prune_ (args, data, cb) { + npm.commands.unbuild(prunables(args, data, []), cb) +} + +function prunables (args, data, seen) { + var deps = data.dependencies || {} + return Object.keys(deps).map(function (d) { + if (typeof deps[d] !== "object" + || seen.indexOf(deps[d]) !== -1) return null + seen.push(deps[d]) + if (deps[d].extraneous + && (args.length === 0 || args.indexOf(d) !== -1)) { + var extra = deps[d] + delete deps[d] + return extra.path + } + return prunables(args, deps[d], seen) + }).filter(function (d) { return d !== null }) + .reduce(function FLAT (l, r) { + return l.concat(Array.isArray(r) ? r.reduce(FLAT,[]) : r) + }, []) +} http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/publish.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/publish.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/publish.js new file mode 100644 index 0000000..cede9ff --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/publish.js @@ -0,0 +1,118 @@ + +module.exports = publish + +var npm = require("./npm.js") + , log = require("npmlog") + , tar = require("./utils/tar.js") + , path = require("path") + , readJson = require("read-package-json") + , fs = require("graceful-fs") + , lifecycle = require("./utils/lifecycle.js") + , chain = require("slide").chain + , Conf = require("npmconf").Conf + , RegClient = require("npm-registry-client") + +publish.usage = "npm publish <tarball>" + + "\nnpm publish <folder>" + + "\n\nPublishes '.' if no argument supplied" + +publish.completion = function (opts, cb) { + // publish can complete to a folder with a package.json + // or a tarball, or a tarball url. + // for now, not yet implemented. + return cb() +} + +function publish (args, isRetry, cb) { + if (typeof cb !== "function") cb = isRetry, isRetry = false + if (args.length === 0) args = ["."] + if (args.length !== 1) return cb(publish.usage) + + log.verbose("publish", args) + var arg = args[0] + // if it's a local folder, then run the prepublish there, first. + readJson(path.resolve(arg, "package.json"), function (er, data) { + er = needVersion(er, data) + if (er && er.code !== "ENOENT" && er.code !== "ENOTDIR") return cb(er) + // error is ok. could be publishing a url or tarball + // however, that means that we will not have automatically run + // the prepublish script, since that gets run when adding a folder + // to the cache. + if (er) return cacheAddPublish(arg, false, isRetry, cb) + cacheAddPublish(arg, true, isRetry, cb) + }) +} + +// didPre in this case means that we already ran the prepublish script, +// and that the "dir" is an actual directory, and not something silly +// like a tarball or name@version thing. +// That means that we can run publish/postpublish in the dir, rather than +// in the cache dir. +function cacheAddPublish (dir, didPre, isRetry, cb) { + npm.commands.cache.add(dir, function (er, data) { + if (er) return cb(er) + log.silly("publish", data) + var cachedir = path.resolve( npm.cache + , data.name + , data.version + , "package" ) + chain + ( [ !didPre && [lifecycle, data, "prepublish", cachedir] + , [publish_, dir, data, isRetry, cachedir] + , [lifecycle, data, "publish", didPre ? dir : cachedir] + , [lifecycle, data, "postpublish", didPre ? dir : cachedir] ] + , cb ) + }) +} + +function publish_ (arg, data, isRetry, cachedir, cb) { + if (!data) return cb(new Error("no package.json file found")) + + // check for publishConfig hash + var registry = npm.registry + if (data.publishConfig) { + var pubConf = new Conf(npm.config) + pubConf.save = npm.config.save.bind(npm.config) + + // don't modify the actual publishConfig object, in case we have + // to set a login token or some other data. + pubConf.unshift(Object.keys(data.publishConfig).reduce(function (s, k) { + s[k] = data.publishConfig[k] + return s + }, {})) + registry = new RegClient(pubConf) + } + + data._npmVersion = npm.version + data._npmUser = { name: npm.config.get("username") + , email: npm.config.get("email") } + + delete data.modules + if (data.private) return cb(new Error + ("This package has been marked as private\n" + +"Remove the 'private' field from the package.json to publish it.")) + + var tarball = cachedir + ".tgz" + registry.publish(data, tarball, function (er) { + if (er && er.code === "EPUBLISHCONFLICT" + && npm.config.get("force") && !isRetry) { + log.warn("publish", "Forced publish over "+data._id) + return npm.commands.unpublish([data._id], function (er) { + // ignore errors. Use the force. Reach out with your feelings. + // but if it fails again, then report the first error. + publish([arg], er || true, cb) + }) + } + // report the unpublish error if this was a retry and unpublish failed + if (er && isRetry && isRetry !== true) return cb(isRetry) + if (er) return cb(er) + console.log("+ " + data._id) + cb() + }) +} + +function needVersion(er, data) { + return er ? er + : (data && !data.version) ? new Error("No version provided") + : null +} http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/rebuild.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/rebuild.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/rebuild.js new file mode 100644 index 0000000..7cea3ef --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/rebuild.js @@ -0,0 +1,74 @@ + +module.exports = rebuild + +var readInstalled = require("read-installed") + , semver = require("semver") + , log = require("npmlog") + , path = require("path") + , npm = require("./npm.js") + , asyncMap = require("slide").asyncMap + , fs = require("graceful-fs") + +rebuild.usage = "npm rebuild [<name>[@<version>] [name[@<version>] ...]]" + +rebuild.completion = require("./utils/completion/installed-deep.js") + +function rebuild (args, cb) { + readInstalled(npm.prefix, npm.config.get("depth"), function (er, data) { + log.info("readInstalled", typeof data) + if (er) return cb(er) + var set = filter(data, args) + , folders = Object.keys(set).filter(function (f) { + return f !== npm.prefix + }) + if (!folders.length) return cb() + log.silly("rebuild set", folders) + cleanBuild(folders, set, cb) + }) +} + +function cleanBuild (folders, set, cb) { + npm.commands.build(folders, function (er) { + if (er) return cb(er) + console.log(folders.map(function (f) { + return set[f] + " " + f + }).join("\n")) + cb() + }) +} + +function filter (data, args, set, seen) { + if (!set) set = {} + if (!seen) seen = {} + if (set.hasOwnProperty(data.path)) return set + if (seen.hasOwnProperty(data.path)) return set + seen[data.path] = true + var pass + if (!args.length) pass = true // rebuild everything + else if (data.name && data._id) { + for (var i = 0, l = args.length; i < l; i ++) { + var arg = args[i] + , nv = arg.split("@") + , n = nv.shift() + , v = nv.join("@") + if (n !== data.name) continue + if (!semver.satisfies(data.version, v, true)) continue + pass = true + break + } + } + if (pass && data._id) { + log.verbose("rebuild", "path, id", [data.path, data._id]) + set[data.path] = data._id + } + // need to also dive through kids, always. + // since this isn't an install these won't get auto-built unless + // they're not dependencies. + Object.keys(data.dependencies || {}).forEach(function (d) { + // return + var dep = data.dependencies[d] + if (typeof dep === "string") return + filter(dep, args, set, seen) + }) + return set +} http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/repo.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/repo.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/repo.js new file mode 100644 index 0000000..ed1f7e1 --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/repo.js @@ -0,0 +1,54 @@ + +module.exports = repo + +repo.usage = "npm repo <pkgname>" + +repo.completion = function (opts, cb) { + if (opts.conf.argv.remain.length > 2) return cb() + registry.get("/-/short", 60000, function (er, list) { + return cb(null, list || []) + }) +} + +var npm = require("./npm.js") + , registry = npm.registry + , log = require("npmlog") + , opener = require("opener") + , github = require('github-url-from-git') + , githubUserRepo = require("github-url-from-username-repo") + , path = require("path") + , readJson = require("read-package-json") + , fs = require("fs") + +function repo (args, cb) { + var n = args.length && args[0].split("@").shift() || '.' + fs.stat(n, function (er, s) { + if (er && er.code === "ENOENT") return callRegistry(n, cb) + else if (er) return cb(er) + if (!s.isDirectory()) return callRegistry(n, cb) + readJson(path.resolve(n, "package.json"), function (er, d) { + if (er) return cb(er) + getUrlAndOpen(d, cb) + }) + }) +} + +function getUrlAndOpen (d, cb) { + var r = d.repository; + if (!r) return cb(new Error('no repository')); + // XXX remove this when npm@v1.3.10 from node 0.10 is deprecated + // from https://github.com/isaacs/npm-www/issues/418 + if (githubUserRepo(r.url)) + r.url = githubUserRepo(r.url) + var url = github(r.url) + if (!url) + return cb(new Error('no repository: could not get url')) + opener(url, { command: npm.config.get("browser") }, cb) +} + +function callRegistry (n, cb) { + registry.get(n + "/latest", 3600, function (er, d) { + if (er) return cb(er) + getUrlAndOpen(d, cb) + }) +} http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/restart.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/restart.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/restart.js new file mode 100644 index 0000000..69c4b91 --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/restart.js @@ -0,0 +1 @@ +module.exports = require("./utils/lifecycle.js").cmd("restart") http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/root.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/root.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/root.js new file mode 100644 index 0000000..b2f731e --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/root.js @@ -0,0 +1,11 @@ +module.exports = root + +var npm = require("./npm.js") + +root.usage = "npm root\nnpm root -g\n(just prints the root folder)" + +function root (args, silent, cb) { + if (typeof cb !== "function") cb = silent, silent = false + if (!silent) console.log(npm.dir) + process.nextTick(cb.bind(this, null, npm.dir)) +} http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/run-script.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/run-script.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/run-script.js new file mode 100644 index 0000000..0808f2e --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/run-script.js @@ -0,0 +1,102 @@ + +module.exports = runScript + +var lifecycle = require("./utils/lifecycle.js") + , npm = require("./npm.js") + , path = require("path") + , readJson = require("read-package-json") + , log = require("npmlog") + , chain = require("slide").chain + , fs = require("graceful-fs") + , asyncMap = require("slide").asyncMap + +runScript.usage = "npm run-script [<pkg>] <command>" + +runScript.completion = function (opts, cb) { + + // see if there's already a package specified. + var argv = opts.conf.argv.remain + , installedShallow = require("./utils/completion/installed-shallow.js") + + if (argv.length >= 4) return cb() + + if (argv.length === 3) { + // either specified a script locally, in which case, done, + // or a package, in which case, complete against its scripts + var json = path.join(npm.prefix, "package.json") + return readJson(json, function (er, d) { + if (er && er.code !== "ENOENT" && er.code !== "ENOTDIR") return cb(er) + if (er) d = {} + var scripts = Object.keys(d.scripts || {}) + console.error("local scripts", scripts) + if (scripts.indexOf(argv[2]) !== -1) return cb() + // ok, try to find out which package it was, then + var pref = npm.config.get("global") ? npm.config.get("prefix") + : npm.prefix + var pkgDir = path.resolve( pref, "node_modules" + , argv[2], "package.json" ) + readJson(pkgDir, function (er, d) { + if (er && er.code !== "ENOENT" && er.code !== "ENOTDIR") return cb(er) + if (er) d = {} + var scripts = Object.keys(d.scripts || {}) + return cb(null, scripts) + }) + }) + } + + // complete against the installed-shallow, and the pwd's scripts. + // but only packages that have scripts + var installed + , scripts + installedShallow(opts, function (d) { + return d.scripts + }, function (er, inst) { + installed = inst + next() + }) + + if (npm.config.get("global")) scripts = [], next() + else readJson(path.join(npm.prefix, "package.json"), function (er, d) { + if (er && er.code !== "ENOENT" && er.code !== "ENOTDIR") return cb(er) + d = d || {} + scripts = Object.keys(d.scripts || {}) + next() + }) + + function next () { + if (!installed || !scripts) return + return cb(null, scripts.concat(installed)) + } +} + +function runScript (args, cb) { + if (!args.length) return cb(runScript.usage) + var pkgdir = args.length === 1 ? process.cwd() + : path.resolve(npm.dir, args[0]) + , cmd = args.pop() + + readJson(path.resolve(pkgdir, "package.json"), function (er, d) { + if (er) return cb(er) + run(d, pkgdir, cmd, cb) + }) +} + +function run (pkg, wd, cmd, cb) { + var cmds = [] + if (!pkg.scripts) pkg.scripts = {} + if (cmd === "restart") { + cmds = ["prestop","stop","poststop" + ,"restart" + ,"prestart","start","poststart"] + } else { + cmds = [cmd] + } + if (!cmd.match(/^(pre|post)/)) { + cmds = ["pre"+cmd].concat(cmds).concat("post"+cmd) + } + log.verbose("run-script", cmds) + chain(cmds.map(function (c) { + // when running scripts explicitly, assume that they're trusted. + return [lifecycle, pkg, c, wd, true] + }), cb) +} http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/search.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/search.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/search.js new file mode 100644 index 0000000..21b6ab2 --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/search.js @@ -0,0 +1,265 @@ + +module.exports = exports = search + +var npm = require("./npm.js") + , registry = npm.registry + , columnify = require('columnify') + +search.usage = "npm search [some search terms ...]" + +search.completion = function (opts, cb) { + var compl = {} + , partial = opts.partialWord + , ipartial = partial.toLowerCase() + , plen = partial.length + + // get the batch of data that matches so far. + // this is an example of using npm.commands.search programmatically + // to fetch data that has been filtered by a set of arguments. + search(opts.conf.argv.remain.slice(2), true, function (er, data) { + if (er) return cb(er) + Object.keys(data).forEach(function (name) { + data[name].words.split(" ").forEach(function (w) { + if (w.toLowerCase().indexOf(ipartial) === 0) { + compl[partial + w.substr(plen)] = true + } + }) + }) + cb(null, Object.keys(compl)) + }) +} + +function search (args, silent, staleness, cb) { + if (typeof cb !== "function") cb = staleness, staleness = 600 + if (typeof cb !== "function") cb = silent, silent = false + + var searchopts = npm.config.get("searchopts") + , searchexclude = npm.config.get("searchexclude") + if (typeof searchopts !== "string") searchopts = "" + searchopts = searchopts.split(/\s+/) + if (typeof searchexclude === "string") { + searchexclude = searchexclude.split(/\s+/) + } else searchexclude = [] + var opts = searchopts.concat(args).map(function (s) { + return s.toLowerCase() + }).filter(function (s) { return s }) + searchexclude = searchexclude.map(function (s) { + return s.toLowerCase() + }) + getFilteredData( staleness, opts, searchexclude, function (er, data) { + // now data is the list of data that we want to show. + // prettify and print it, and then provide the raw + // data to the cb. + if (er || silent) return cb(er, data) + console.log(prettify(data, args)) + cb(null, data) + }) +} + +function getFilteredData (staleness, args, notArgs, cb) { + registry.get( "/-/all", staleness, false + , true, function (er, data) { + if (er) return cb(er) + return cb(null, filter(data, args, notArgs)) + }) +} + +function filter (data, args, notArgs) { + // data={<name>:{package data}} + return Object.keys(data).map(function (d) { + return data[d] + }).filter(function (d) { + return typeof d === "object" + }).map(stripData).map(getWords).filter(function (data) { + return filterWords(data, args, notArgs) + }).reduce(function (l, r) { + l[r.name] = r + return l + }, {}) +} + +function stripData (data) { + return { name: data.name + , description: npm.config.get("description") ? data.description : "" + , maintainers: (data.maintainers || []).map(function (m) { + return "=" + m.name + }) + , url: !Object.keys(data.versions || {}).length ? data.url : null + , keywords: data.keywords || [] + , version: Object.keys(data.versions || {})[0] || [] + , time: data.time + && data.time.modified + && (new Date(data.time.modified).toISOString() + .split("T").join(" ") + .replace(/:[0-9]{2}\.[0-9]{3}Z$/, "")) + .slice(0, -5) // remove time + || "prehistoric" + } +} + +function getWords (data) { + data.words = [ data.name ] + .concat(data.description) + .concat(data.maintainers) + .concat(data.url && ("<" + data.url + ">")) + .concat(data.keywords) + .map(function (f) { return f && f.trim && f.trim() }) + .filter(function (f) { return f }) + .join(" ") + .toLowerCase() + return data +} + +function filterWords (data, args, notArgs) { + var words = data.words + for (var i = 0, l = args.length; i < l; i ++) { + if (!match(words, args[i])) return false + } + for (var i = 0, l = notArgs.length; i < l; i ++) { + if (match(words, notArgs[i])) return false + } + return true +} + +function match (words, arg) { + if (arg.charAt(0) === "/") { + arg = arg.replace(/\/$/, "") + arg = new RegExp(arg.substr(1, arg.length - 1)) + return words.match(arg) + } + return words.indexOf(arg) !== -1 +} + +function prettify (data, args) { + var searchsort = (npm.config.get("searchsort") || "NAME").toLowerCase() + , sortField = searchsort.replace(/^\-+/, "") + , searchRev = searchsort.charAt(0) === "-" + , truncate = !npm.config.get("long") + + if (Object.keys(data).length === 0) { + return "No match found for "+(args.map(JSON.stringify).join(" ")) + } + + var lines = Object.keys(data).map(function (d) { + // strip keyname + return data[d] + }).map(function(dat) { + dat.author = dat.maintainers + delete dat.maintainers + dat.date = dat.time + delete dat.time + return dat + }).map(function(dat) { + // split keywords on whitespace or , + if (typeof dat.keywords === "string") { + dat.keywords = dat.keywords.split(/[,\s]+/) + } + if (Array.isArray(dat.keywords)) { + dat.keywords = dat.keywords.join(' ') + } + + // split author on whitespace or , + if (typeof dat.author === "string") { + dat.author = dat.author.split(/[,\s]+/) + } + if (Array.isArray(dat.author)) { + dat.author = dat.author.join(' ') + } + return dat + }) + + lines.sort(function(a, b) { + var aa = a[sortField].toLowerCase() + , bb = b[sortField].toLowerCase() + return aa === bb ? 0 + : aa < bb ? -1 : 1 + }) + + if (searchRev) lines.reverse() + + var columns = npm.config.get("description") + ? ["name", "description", "author", "date", "version", "keywords"] + : ["name", "author", "date", "version", "keywords"] + + var output = columnify(lines, { + include: columns + , truncate: truncate + , config: { + name: { maxWidth: 40, truncate: false, truncateMarker: '' } + , description: { maxWidth: 60 } + , author: { maxWidth: 20 } + , date: { maxWidth: 11 } + , version: { maxWidth: 11 } + , keywords: { maxWidth: Infinity } + } + }) + output = trimToMaxWidth(output) + output = highlightSearchTerms(output, args) + + return output +} + +var colors = [31, 33, 32, 36, 34, 35 ] + , cl = colors.length + +function addColorMarker (str, arg, i) { + var m = i % cl + 1 + , markStart = String.fromCharCode(m) + , markEnd = String.fromCharCode(0) + + if (arg.charAt(0) === "/") { + //arg = arg.replace(/\/$/, "") + return str.replace( new RegExp(arg.substr(1, arg.length - 1), "gi") + , function (bit) { return markStart + bit + markEnd } ) + + } + + // just a normal string, do the split/map thing + var pieces = str.toLowerCase().split(arg.toLowerCase()) + , p = 0 + + return pieces.map(function (piece, i) { + piece = str.substr(p, piece.length) + var mark = markStart + + str.substr(p+piece.length, arg.length) + + markEnd + p += piece.length + arg.length + return piece + mark + }).join("") +} + +function colorize (line) { + for (var i = 0; i < cl; i ++) { + var m = i + 1 + var color = npm.color ? "\033["+colors[i]+"m" : "" + line = line.split(String.fromCharCode(m)).join(color) + } + var uncolor = npm.color ? "\033[0m" : "" + return line.split("\u0000").join(uncolor) +} + +function getMaxWidth() { + try { + var tty = require("tty") + , stdout = process.stdout + , cols = !tty.isatty(stdout.fd) ? Infinity + : process.stdout.getWindowSize()[0] + cols = (cols == 0) ? Infinity : cols + } catch (ex) { cols = Infinity } + return cols +} + +function trimToMaxWidth(str) { + var maxWidth = getMaxWidth() + return str.split('\n').map(function(line) { + return line.slice(0, maxWidth) + }).join('\n') +} + +function highlightSearchTerms(str, terms) { + terms.forEach(function (arg, i) { + str = addColorMarker(str, arg, i) + }) + + return colorize(str).trim() +} http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/set.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/set.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/set.js new file mode 100644 index 0000000..c83602e --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/set.js @@ -0,0 +1,13 @@ + +module.exports = set + +set.usage = "npm set <key> <value> (See `npm config`)" + +var npm = require("./npm.js") + +set.completion = npm.commands.config.completion + +function set (args, cb) { + if (!args.length) return cb(set.usage) + npm.commands.config(["set"].concat(args), cb) +} http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/shrinkwrap.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/shrinkwrap.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/shrinkwrap.js new file mode 100644 index 0000000..14711df --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/shrinkwrap.js @@ -0,0 +1,69 @@ +// emit JSON describing versions of all packages currently installed (for later +// use with shrinkwrap install) + +module.exports = exports = shrinkwrap + +var npm = require("./npm.js") + , log = require("npmlog") + , fs = require("fs") + , path = require("path") + , readJson = require("read-package-json") + +shrinkwrap.usage = "npm shrinkwrap" + +function shrinkwrap (args, silent, cb) { + if (typeof cb !== "function") cb = silent, silent = false + + if (args.length) { + log.warn("shrinkwrap", "doesn't take positional args") + } + + npm.commands.ls([], true, function (er, _, pkginfo) { + if (er) return cb(er) + shrinkwrap_(pkginfo, silent, npm.config.get("dev"), cb) + }) +} + +function shrinkwrap_ (pkginfo, silent, dev, cb) { + if (pkginfo.problems) { + return cb(new Error("Problems were encountered\n" + +"Please correct and try again.\n" + +pkginfo.problems.join("\n"))) + } + + if (!dev) { + // remove dev deps unless the user does --dev + readJson(path.resolve(npm.prefix, "package.json"), function (er, data) { + if (er) + return cb(er) + if (data.devDependencies) { + Object.keys(data.devDependencies).forEach(function (dep) { + log.warn("shrinkwrap", "Excluding devDependency: %s", dep) + delete pkginfo.dependencies[dep] + }) + } + save(pkginfo, silent, cb) + }) + } else { + save(pkginfo, silent, cb) + } +} + + +function save (pkginfo, silent, cb) { + try { + var swdata = JSON.stringify(pkginfo, null, 2) + "\n" + } catch (er) { + log.error("shrinkwrap", "Error converting package info to json") + return cb(er) + } + + var file = path.resolve(npm.prefix, "npm-shrinkwrap.json") + + fs.writeFile(file, swdata, function (er) { + if (er) return cb(er) + if (silent) return cb(null, pkginfo) + console.log("wrote npm-shrinkwrap.json") + cb(null, pkginfo) + }) +} http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/star.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/star.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/star.js new file mode 100644 index 0000000..33b1247 --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/star.js @@ -0,0 +1,33 @@ + +module.exports = star + +var npm = require("./npm.js") + , registry = npm.registry + , log = require("npmlog") + , asyncMap = require("slide").asyncMap + +star.usage = "npm star <package> [pkg, pkg, ...]\n" + + "npm unstar <package> [pkg, pkg, ...]" + +star.completion = function (opts, cb) { + registry.get("/-/short", 60000, function (er, list) { + return cb(null, list || []) + }) +} + +function star (args, cb) { + if (!args.length) return cb(star.usage) + var s = npm.config.get("unicode") ? "\u2605 " : "(*)" + , u = npm.config.get("unicode") ? "\u2606 " : "( )" + , using = !(npm.command.match(/^un/)) + if (!using) s = u + asyncMap(args, function (pkg, cb) { + registry.star(pkg, using, function (er, data, raw, req) { + if (!er) { + console.log(s + " "+pkg) + log.verbose("star", data) + } + cb(er, data, raw, req) + }) + }, cb) +} http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/stars.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/stars.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/stars.js new file mode 100644 index 0000000..74841f2 --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/stars.js @@ -0,0 +1,27 @@ +module.exports = stars + +stars.usage = "npm stars [username]" + +var npm = require("./npm.js") + , registry = npm.registry + , log = require("npmlog") + +function stars (args, cb) { + var name = args.length === 1 ? args[0] : npm.config.get("username") + registry.stars(name, showstars) + + function showstars (er, data) { + if (er) { + return cb(er) + } + + if (data.rows.length === 0) { + log.warn('stars', 'user has not starred any packages.') + } else { + data.rows.forEach(function(a) { + console.log(a.value) + }) + } + cb() + } +} http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/start.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/start.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/start.js new file mode 100644 index 0000000..9882382 --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/start.js @@ -0,0 +1 @@ +module.exports = require("./utils/lifecycle.js").cmd("start") http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/stop.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/stop.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/stop.js new file mode 100644 index 0000000..8ea5ba6 --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/stop.js @@ -0,0 +1 @@ +module.exports = require("./utils/lifecycle.js").cmd("stop") http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/submodule.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/submodule.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/submodule.js new file mode 100644 index 0000000..72a2248 --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/submodule.js @@ -0,0 +1,119 @@ +// npm submodule <pkg> +// Check the package contents for a git repository url. +// If there is one, then create a git submodule in the node_modules folder. + +module.exports = submodule + +var npm = require("./npm.js") + , exec = require("child_process").execFile + , cache = require("./cache.js") + , asyncMap = require("slide").asyncMap + , chain = require("slide").chain + , which = require("which") + +submodule.usage = "npm submodule <pkg>" + +submodule.completion = require("./docs.js").completion + +function submodule (args, cb) { + if (npm.config.get("global")) { + return cb(new Error("Cannot use submodule command in global mode.")) + } + + if (args.length === 0) return cb(submodule.usage) + + asyncMap(args, function (arg, cb) { + cache.add(arg, cb) + }, function (er, pkgs) { + if (er) return cb(er) + chain(pkgs.map(function (pkg) { return function (cb) { + submodule_(pkg, cb) + }}), cb) + }) + +} + +function submodule_ (pkg, cb) { + if (!pkg.repository + || pkg.repository.type !== "git" + || !pkg.repository.url) { + return cb(new Error(pkg._id + ": No git repository listed")) + } + + // prefer https:// github urls + pkg.repository.url = pkg.repository.url + .replace(/^(git:\/\/)?(git@)?github.com[:\/]/, "https://github.com/") + + // first get the list of submodules, and update if it's already there. + getSubmodules(function (er, modules) { + if (er) return cb(er) + // if there's already a submodule, then just update it. + if (modules.indexOf(pkg.name) !== -1) { + return updateSubmodule(pkg.name, cb) + } + addSubmodule(pkg.name, pkg.repository.url, cb) + }) +} + +function updateSubmodule (name, cb) { + var git = npm.config.get("git") + var args = [ "submodule", "update", "--init", "node_modules/", name ] + + // check for git + which(git, function (err) { + if (err) { + err.code = "ENOGIT" + return cb(err) + } + + exec(git, args, cb) + }) +} + +function addSubmodule (name, url, cb) { + var git = npm.config.get("git") + var args = [ "submodule", "add", url, "node_modules/", name ] + + // check for git + which(git, function (err) { + if (err) { + err.code = "ENOGIT" + return cb(err) + } + + exec(git, args, function (er) { + if (er) return cb(er) + updateSubmodule(name, cb) + }) + }) +} + + +var getSubmodules = function getSubmodules (cb) { + var git = npm.config.get("git") + var args = [ "submodule", "status" ] + + // check for git + which(git, function (err) { + if (err) { + err.code = "ENOGIT" + return cb(err) + } + exec(git, args, function (er, stdout, stderr) { + if (er) return cb(er) + res = stdout.trim().split(/\n/).map(function (line) { + return line.trim().split(/\s+/)[1] + }).filter(function (line) { + // only care about submodules in the node_modules folder. + return line && line.match(/^node_modules\//) + }).map(function (line) { + return line.replace(/^node_modules\//g, "") + }) + + // memoize. + getSubmodules = function (cb) { return cb(null, res) } + + cb(null, res) + }) + }) +} http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/substack.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/substack.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/substack.js new file mode 100644 index 0000000..1929f18 --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/substack.js @@ -0,0 +1,20 @@ +module.exports = substack +var npm = require("./npm.js") + +var isms = + [ "\033[32mbeep \033[35mboop\033[m" + , "Replace your configs with services" + , "SEPARATE ALL THE CONCERNS!" + , "MODULE ALL THE THINGS!" + , "\\o/" + , "but first, burritos" + , "full time mad scientist here" + , "c/,,\\" ] + +function substack (args, cb) { + var i = Math.floor(Math.random() * isms.length) + console.log(isms[i]) + 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/tag.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/tag.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/tag.js new file mode 100644 index 0000000..8a7c51c --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/tag.js @@ -0,0 +1,18 @@ +// turns out tagging isn't very complicated +// all the smarts are in the couch. +module.exports = tag +tag.usage = "npm tag <project>@<version> [<tag>]" + +tag.completion = require("./unpublish.js").completion + +var npm = require("./npm.js") + , registry = npm.registry + +function tag (args, cb) { + var thing = (args.shift() || "").split("@") + , project = thing.shift() + , version = thing.join("@") + , t = args.shift() || npm.config.get("tag") + if (!project || !version || !t) return cb("Usage:\n"+tag.usage) + registry.tag(project, version, t, cb) +} http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/test.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/test.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/test.js new file mode 100644 index 0000000..d741807 --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/test.js @@ -0,0 +1,14 @@ +module.exports = test + +var testCmd = require("./utils/lifecycle.js").cmd("test") + , log = require("npmlog") + +function test (args, cb) { + testCmd(args, function (er) { + if (!er) return cb() + if (er.code === "ELIFECYCLE") { + return cb("Test failed. See above for more details.") + } + 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/unbuild.js ---------------------------------------------------------------------- diff --git a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/unbuild.js b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/unbuild.js new file mode 100644 index 0000000..57688f0 --- /dev/null +++ b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/npm/lib/unbuild.js @@ -0,0 +1,112 @@ +module.exports = unbuild +unbuild.usage = "npm unbuild <folder>\n(this is plumbing)" + +var readJson = require("read-package-json") + , rm = require("rimraf") + , gentlyRm = require("./utils/gently-rm.js") + , npm = require("./npm.js") + , path = require("path") + , fs = require("graceful-fs") + , lifecycle = require("./utils/lifecycle.js") + , asyncMap = require("slide").asyncMap + , chain = require("slide").chain + , log = require("npmlog") + , build = require("./build.js") + +// args is a list of folders. +// remove any bins/etc, and then delete the folder. +function unbuild (args, silent, cb) { + if (typeof silent === 'function') cb = silent, silent = false + asyncMap(args, unbuild_(silent), cb) +} + +function unbuild_ (silent) { return function (folder, cb_) { + function cb (er) { + cb_(er, path.relative(npm.root, folder)) + } + folder = path.resolve(folder) + delete build._didBuild[folder] + log.info(folder, "unbuild") + readJson(path.resolve(folder, "package.json"), function (er, pkg) { + // if no json, then just trash it, but no scripts or whatever. + if (er) return rm(folder, cb) + readJson.cache.del(folder) + chain + ( [ [lifecycle, pkg, "preuninstall", folder, false, true] + , [lifecycle, pkg, "uninstall", folder, false, true] + , !silent && function(cb) { + console.log("unbuild " + pkg._id) + cb() + } + , [rmStuff, pkg, folder] + , [lifecycle, pkg, "postuninstall", folder, false, true] + , [rm, folder] ] + , cb ) + }) +}} + +function rmStuff (pkg, folder, cb) { + // if it's global, and folder is in {prefix}/node_modules, + // then bins are in {prefix}/bin + // otherwise, then bins are in folder/../.bin + var parent = path.dirname(folder) + , gnm = npm.dir + , top = gnm === parent + + readJson.cache.del(path.resolve(folder, "package.json")) + + log.verbose([top, gnm, parent], "unbuild " + pkg._id) + asyncMap([rmBins, rmMans], function (fn, cb) { + fn(pkg, folder, parent, top, cb) + }, cb) +} + +function rmBins (pkg, folder, parent, top, cb) { + if (!pkg.bin) return cb() + var binRoot = top ? npm.bin : path.resolve(parent, ".bin") + log.verbose([binRoot, pkg.bin], "binRoot") + asyncMap(Object.keys(pkg.bin), function (b, cb) { + if (process.platform === "win32") { + chain([ [rm, path.resolve(binRoot, b) + ".cmd"] + , [rm, path.resolve(binRoot, b) ] ], cb) + } else { + gentlyRm( path.resolve(binRoot, b) + , !npm.config.get("force") && folder + , cb ) + } + }, cb) +} + +function rmMans (pkg, folder, parent, top, cb) { + if (!pkg.man + || !top + || process.platform === "win32" + || !npm.config.get("global")) { + return cb() + } + var manRoot = path.resolve(npm.config.get("prefix"), "share", "man") + asyncMap(pkg.man, function (man, cb) { + if (Array.isArray(man)) { + man.forEach(rm) + } else { + rm(man) + } + + function rm(man) { + var parseMan = man.match(/(.*)\.([0-9]+)(\.gz)?$/) + , stem = parseMan[1] + , sxn = parseMan[2] + , gz = parseMan[3] || "" + , bn = path.basename(stem) + , manDest = path.join( manRoot + , "man"+sxn + , (bn.indexOf(pkg.name) === 0 ? bn + : pkg.name + "-" + bn) + + "." + sxn + gz + ) + gentlyRm( manDest + , !npm.config.get("force") && folder + , cb ) + } + }, cb) +}