소스 검색

commit inicial

robert2206 8 년 전
커밋
8ad867f7a5
100개의 변경된 파일3848개의 추가작업 그리고 0개의 파일을 삭제
  1. 3 0
      .vscode/settings.json
  2. 8 0
      main.js
  3. 10 0
      main.ts
  4. 1 0
      node_modules/.bin/loose-envify
  5. 1 0
      node_modules/.bin/mkdirp
  6. 1 0
      node_modules/.bin/nopt
  7. 1 0
      node_modules/.bin/rc
  8. 1 0
      node_modules/.bin/rimraf
  9. 1 0
      node_modules/.bin/semver
  10. 1 0
      node_modules/.bin/strip-json-comments
  11. 1 0
      node_modules/.bin/touch
  12. 1 0
      node_modules/.bin/tsc
  13. 1 0
      node_modules/.bin/tsserver
  14. 1 0
      node_modules/.bin/typings
  15. 15 0
      node_modules/abbrev/LICENSE
  16. 23 0
      node_modules/abbrev/README.md
  17. 62 0
      node_modules/abbrev/abbrev.js
  18. 89 0
      node_modules/abbrev/package.json
  19. 1 0
      node_modules/agent-base/.npmignore
  20. 8 0
      node_modules/agent-base/.travis.yml
  21. 41 0
      node_modules/agent-base/History.md
  22. 121 0
      node_modules/agent-base/README.md
  23. 101 0
      node_modules/agent-base/agent.js
  24. 94 0
      node_modules/agent-base/package.json
  25. 54 0
      node_modules/agent-base/patch-core.js
  26. 15 0
      node_modules/agent-base/test/ssl-cert-snakeoil.key
  27. 12 0
      node_modules/agent-base/test/ssl-cert-snakeoil.pem
  28. 300 0
      node_modules/agent-base/test/test.js
  29. 21 0
      node_modules/ansi-align/CHANGELOG.md
  30. 13 0
      node_modules/ansi-align/LICENSE
  31. 79 0
      node_modules/ansi-align/README.md
  32. 61 0
      node_modules/ansi-align/index.js
  33. 105 0
      node_modules/ansi-align/package.json
  34. 106 0
      node_modules/ansi-escapes/index.js
  35. 21 0
      node_modules/ansi-escapes/license
  36. 118 0
      node_modules/ansi-escapes/package.json
  37. 176 0
      node_modules/ansi-escapes/readme.md
  38. 4 0
      node_modules/ansi-regex/index.js
  39. 21 0
      node_modules/ansi-regex/license
  40. 132 0
      node_modules/ansi-regex/package.json
  41. 39 0
      node_modules/ansi-regex/readme.md
  42. 65 0
      node_modules/ansi-styles/index.js
  43. 21 0
      node_modules/ansi-styles/license
  44. 114 0
      node_modules/ansi-styles/package.json
  45. 86 0
      node_modules/ansi-styles/readme.md
  46. 4 0
      node_modules/any-promise/.jshintrc
  47. 7 0
      node_modules/any-promise/.npmignore
  48. 19 0
      node_modules/any-promise/LICENSE
  49. 161 0
      node_modules/any-promise/README.md
  50. 3 0
      node_modules/any-promise/implementation.d.ts
  51. 1 0
      node_modules/any-promise/implementation.js
  52. 73 0
      node_modules/any-promise/index.d.ts
  53. 1 0
      node_modules/any-promise/index.js
  54. 78 0
      node_modules/any-promise/loader.js
  55. 6 0
      node_modules/any-promise/optional.js
  56. 110 0
      node_modules/any-promise/package.json
  57. 18 0
      node_modules/any-promise/register-shim.js
  58. 17 0
      node_modules/any-promise/register.d.ts
  59. 94 0
      node_modules/any-promise/register.js
  60. 1 0
      node_modules/any-promise/register/bluebird.d.ts
  61. 2 0
      node_modules/any-promise/register/bluebird.js
  62. 1 0
      node_modules/any-promise/register/es6-promise.d.ts
  63. 2 0
      node_modules/any-promise/register/es6-promise.js
  64. 1 0
      node_modules/any-promise/register/lie.d.ts
  65. 2 0
      node_modules/any-promise/register/lie.js
  66. 1 0
      node_modules/any-promise/register/native-promise-only.d.ts
  67. 2 0
      node_modules/any-promise/register/native-promise-only.js
  68. 1 0
      node_modules/any-promise/register/pinkie.d.ts
  69. 2 0
      node_modules/any-promise/register/pinkie.js
  70. 1 0
      node_modules/any-promise/register/promise.d.ts
  71. 2 0
      node_modules/any-promise/register/promise.js
  72. 1 0
      node_modules/any-promise/register/q.d.ts
  73. 2 0
      node_modules/any-promise/register/q.js
  74. 1 0
      node_modules/any-promise/register/rsvp.d.ts
  75. 2 0
      node_modules/any-promise/register/rsvp.js
  76. 1 0
      node_modules/any-promise/register/vow.d.ts
  77. 2 0
      node_modules/any-promise/register/vow.js
  78. 1 0
      node_modules/any-promise/register/when.d.ts
  79. 2 0
      node_modules/any-promise/register/when.js
  80. 4 0
      node_modules/archy/.travis.yml
  81. 18 0
      node_modules/archy/LICENSE
  82. 24 0
      node_modules/archy/examples/beep.js
  83. 25 0
      node_modules/archy/examples/multi_line.js
  84. 35 0
      node_modules/archy/index.js
  85. 114 0
      node_modules/archy/package.json
  86. 88 0
      node_modules/archy/readme.markdown
  87. 40 0
      node_modules/archy/test/beep.js
  88. 45 0
      node_modules/archy/test/multi_line.js
  89. 40 0
      node_modules/archy/test/non_unicode.js
  90. 62 0
      node_modules/array-uniq/index.js
  91. 21 0
      node_modules/array-uniq/license
  92. 105 0
      node_modules/array-uniq/package.json
  93. 30 0
      node_modules/array-uniq/readme.md
  94. 21 0
      node_modules/asynckit/LICENSE
  95. 233 0
      node_modules/asynckit/README.md
  96. 76 0
      node_modules/asynckit/bench.js
  97. 6 0
      node_modules/asynckit/index.js
  98. 29 0
      node_modules/asynckit/lib/abort.js
  99. 34 0
      node_modules/asynckit/lib/async.js
  100. 26 0
      node_modules/asynckit/lib/defer.js

+ 3 - 0
.vscode/settings.json

@@ -0,0 +1,3 @@
+{
+    "typescript.tsdk": "./node_modules/typescript/lib"
+}

+ 8 - 0
main.js

@@ -0,0 +1,8 @@
+"use strict";
+var XmlRpc = (function () {
+    function XmlRpc(helper) {
+        this.helper = helper;
+        console.log(helper);
+    }
+    return XmlRpc;
+}());

+ 10 - 0
main.ts

@@ -0,0 +1,10 @@
+import { XmlRpcHelper } from "./xmlrpc-helper";
+
+class XmlRpc {
+
+    constructor(
+        private helper: XmlRpcHelper
+    ) {
+        console.log(helper);
+    }
+}

+ 1 - 0
node_modules/.bin/loose-envify

@@ -0,0 +1 @@
+../loose-envify/cli.js

+ 1 - 0
node_modules/.bin/mkdirp

@@ -0,0 +1 @@
+../mkdirp/bin/cmd.js

+ 1 - 0
node_modules/.bin/nopt

@@ -0,0 +1 @@
+../nopt/bin/nopt.js

+ 1 - 0
node_modules/.bin/rc

@@ -0,0 +1 @@
+../rc/index.js

+ 1 - 0
node_modules/.bin/rimraf

@@ -0,0 +1 @@
+../rimraf/bin.js

+ 1 - 0
node_modules/.bin/semver

@@ -0,0 +1 @@
+../semver/bin/semver

+ 1 - 0
node_modules/.bin/strip-json-comments

@@ -0,0 +1 @@
+../strip-json-comments/cli.js

+ 1 - 0
node_modules/.bin/touch

@@ -0,0 +1 @@
+../touch/bin/touch.js

+ 1 - 0
node_modules/.bin/tsc

@@ -0,0 +1 @@
+../typescript/bin/tsc

+ 1 - 0
node_modules/.bin/tsserver

@@ -0,0 +1 @@
+../typescript/bin/tsserver

+ 1 - 0
node_modules/.bin/typings

@@ -0,0 +1 @@
+../typings/dist/bin.js

+ 15 - 0
node_modules/abbrev/LICENSE

@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

+ 23 - 0
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.

+ 62 - 0
node_modules/abbrev/abbrev.js

@@ -0,0 +1,62 @@
+
+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
+}

+ 89 - 0
node_modules/abbrev/package.json

@@ -0,0 +1,89 @@
+{
+  "_args": [
+    [
+      {
+        "raw": "abbrev@1",
+        "scope": null,
+        "escapedName": "abbrev",
+        "name": "abbrev",
+        "rawSpec": "1",
+        "spec": ">=1.0.0 <2.0.0",
+        "type": "range"
+      },
+      "/home/robert/workspace/xmlrpc/node_modules/nopt"
+    ]
+  ],
+  "_from": "abbrev@>=1.0.0 <2.0.0",
+  "_id": "abbrev@1.0.9",
+  "_inCache": true,
+  "_location": "/abbrev",
+  "_nodeVersion": "4.4.4",
+  "_npmOperationalInternal": {
+    "host": "packages-16-east.internal.npmjs.com",
+    "tmp": "tmp/abbrev-1.0.9.tgz_1466016055839_0.7825860097073019"
+  },
+  "_npmUser": {
+    "name": "isaacs",
+    "email": "i@izs.me"
+  },
+  "_npmVersion": "3.9.1",
+  "_phantomChildren": {},
+  "_requested": {
+    "raw": "abbrev@1",
+    "scope": null,
+    "escapedName": "abbrev",
+    "name": "abbrev",
+    "rawSpec": "1",
+    "spec": ">=1.0.0 <2.0.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/nopt"
+  ],
+  "_resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
+  "_shasum": "91b4792588a7738c25f35dd6f63752a2f8776135",
+  "_shrinkwrap": null,
+  "_spec": "abbrev@1",
+  "_where": "/home/robert/workspace/xmlrpc/node_modules/nopt",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/abbrev-js/issues"
+  },
+  "dependencies": {},
+  "description": "Like ruby's abbrev module, but in js",
+  "devDependencies": {
+    "tap": "^5.7.2"
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "91b4792588a7738c25f35dd6f63752a2f8776135",
+    "tarball": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz"
+  },
+  "files": [
+    "abbrev.js"
+  ],
+  "gitHead": "c386cd9dbb1d8d7581718c54d4ba944cc9298d6f",
+  "homepage": "https://github.com/isaacs/abbrev-js#readme",
+  "license": "ISC",
+  "main": "abbrev.js",
+  "maintainers": [
+    {
+      "name": "isaacs",
+      "email": "i@izs.me"
+    }
+  ],
+  "name": "abbrev",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/isaacs/abbrev-js.git"
+  },
+  "scripts": {
+    "test": "tap test.js --cov"
+  },
+  "version": "1.0.9"
+}

+ 1 - 0
node_modules/agent-base/.npmignore

@@ -0,0 +1 @@
+/node_modules

+ 8 - 0
node_modules/agent-base/.travis.yml

@@ -0,0 +1,8 @@
+language: node_js
+node_js:
+  - "0.8"
+  - "0.10"
+  - "0.12"
+before_install:
+  - '[ "${TRAVIS_NODE_VERSION}" != "0.8" ] || npm install -g npm@1.4.28'
+  - npm install -g npm@latest

+ 41 - 0
node_modules/agent-base/History.md

@@ -0,0 +1,41 @@
+
+2.0.1 / 2015-09-10
+==================
+
+  * package: update "semver" to v5.0.1 for WebPack (#1, @vhpoet)
+
+2.0.0 / 2015-07-10
+==================
+
+  * refactor to patch Node.js core for more consistent `opts` values
+  * ensure that HTTP(s) default port numbers are always given
+  * test: use ssl-cert-snakeoil SSL certs
+  * test: add tests for arbitrary options
+  * README: add API section
+  * README: make the Agent HTTP/HTTPS generic in the example
+  * README: use SVG for Travis-CI badge
+
+1.0.2 / 2015-06-27
+==================
+
+  * agent: set `req._hadError` to true after emitting "error"
+  * package: update "mocha" to v2
+  * test: add artificial HTTP GET request test
+  * test: add artificial data events test
+  * test: fix artifical GET response test on node > v0.11.3
+  * test: use a real timeout for the async error test
+
+1.0.1 / 2013-09-09
+==================
+
+  * Fix passing an "error" object to the callback function on the first tick
+
+1.0.0 / 2013-09-09
+==================
+
+  * New API: now you pass a callback function directly
+
+0.0.1 / 2013-07-09
+==================
+
+  * Initial release

+ 121 - 0
node_modules/agent-base/README.md

@@ -0,0 +1,121 @@
+agent-base
+==========
+### Turn a function into an `http.Agent` instance
+[![Build Status](https://travis-ci.org/TooTallNate/node-agent-base.svg?branch=master)](https://travis-ci.org/TooTallNate/node-agent-base)
+
+This module provides an `http.Agent` generator. That is, you pass it an async
+callback function, and it returns a new `http.Agent` instance that will invoke the
+given callback function when sending outbound HTTP requests.
+
+#### Some subclasses:
+
+Here's some more interesting uses of `agent-base`.
+Send a pull request to list yours!
+
+ * [`http-proxy-agent`][http-proxy-agent]: An HTTP(s) proxy `http.Agent` implementation for HTTP endpoints
+ * [`https-proxy-agent`][https-proxy-agent]: An HTTP(s) proxy `http.Agent` implementation for HTTPS endpoints
+ * [`pac-proxy-agent`][pac-proxy-agent]: A PAC file proxy `http.Agent` implementation for HTTP and HTTPS
+ * [`socks-proxy-agent`][socks-proxy-agent]: A SOCKS (v4a) proxy `http.Agent` implementation for HTTP and HTTPS
+
+
+Installation
+------------
+
+Install with `npm`:
+
+``` bash
+$ npm install agent-base
+```
+
+
+Example
+-------
+
+Here's a minimal example that creates a new `net.Socket` connection to the server
+for every HTTP request (i.e. the equivalent of `agent: false` option):
+
+``` js
+var net = require('net');
+var tls = require('tls');
+var url = require('url');
+var http = require('http');
+var agent = require('agent-base');
+
+var endpoint = 'http://nodejs.org/api/';
+var opts = url.parse(endpoint);
+
+// This is the important part!
+opts.agent = agent(function (req, opts, fn) {
+  var socket;
+  // `secureEndpoint` is true when using the https module
+  if (opts.secureEndpoint) {
+    socket = tls.connect(opts);
+  } else {
+    socket = net.connect(opts);
+  }
+  fn(null, socket);
+});
+
+// Everything else works just like normal...
+http.get(opts, function (res) {
+  console.log('"response" event!', res.headers);
+  res.pipe(process.stdout);
+});
+```
+
+API
+---
+
+## Agent(Function callback) → http.Agent
+
+Creates a base `http.Agent` that will execute the callback function `callback`
+for every HTTP request that it is used as the `agent` for. The callback function
+is responsible for creating a `stream.Duplex` instance of some kind that will be
+used as the underlying socket in the HTTP request.
+
+The callback function should have the following signature:
+
+### callback(http.ClientRequest req, Object options, Function cb) → undefined
+
+The ClientRequest `req` can be accessed to read request headers and
+and the path, etc. The `options` object contains the options passed
+to the `http.request()`/`https.request()` function call, and is formatted
+to be directly passed to `net.connect()`/`tls.connect()`, or however
+else you want a Socket to be created. Pass the created socket to
+the callback function `cb` once created, and the HTTP request will
+continue to proceed.
+
+If the `https` module is used to invoke the HTTP request, then the
+`secureEndpoint` property on `options` will be set to `true`.
+
+
+License
+-------
+
+(The MIT License)
+
+Copyright (c) 2013 Nathan Rajlich &lt;nathan@tootallnate.net&gt;
+
+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-proxy-agent]: https://github.com/TooTallNate/node-http-proxy-agent
+[https-proxy-agent]: https://github.com/TooTallNate/node-https-proxy-agent
+[pac-proxy-agent]: https://github.com/TooTallNate/node-pac-proxy-agent
+[socks-proxy-agent]: https://github.com/TooTallNate/node-socks-proxy-agent

+ 101 - 0
node_modules/agent-base/agent.js

@@ -0,0 +1,101 @@
+
+/**
+ * Module dependencies.
+ */
+
+require('./patch-core');
+var extend = require('extend');
+var inherits = require('util').inherits;
+var EventEmitter = require('events').EventEmitter;
+
+/**
+ * Module exports.
+ */
+
+module.exports = Agent;
+
+/**
+ * Base `http.Agent` implementation.
+ * No pooling/keep-alive is implemented by default.
+ *
+ * @param {Function} callback
+ * @api public
+ */
+
+function Agent (callback) {
+  if (!(this instanceof Agent)) return new Agent(callback);
+  if ('function' != typeof callback) throw new Error('Must pass a "callback function"');
+  EventEmitter.call(this);
+  this.callback = callback;
+}
+inherits(Agent, EventEmitter);
+
+/**
+ * Called by node-core's "_http_client.js" module when creating
+ * a new HTTP request with this Agent instance.
+ *
+ * @api public
+ */
+
+Agent.prototype.addRequest = function (req, host, port, localAddress) {
+  var opts;
+  if ('object' == typeof host) {
+    // >= v0.11.x API
+    opts = extend({}, req._options, host);
+  } else {
+    // <= v0.10.x API
+    opts = extend({}, req._options, { host: host, port: port });
+    if (null != localAddress) {
+      opts.localAddress = localAddress;
+    }
+  }
+
+  if (opts.host && opts.path) {
+    // if both a `host` and `path` are specified then it's most likely the
+    // result of a `url.parse()` call... we need to remove the `path` portion so
+    // that `net.connect()` doesn't attempt to open that as a unix socket file.
+    delete opts.path;
+  }
+
+  // set default `port` if none was explicitly specified
+  if (null == opts.port) {
+    opts.port = opts.secureEndpoint ? 443 : 80;
+  }
+
+  delete opts.agent;
+  delete opts.hostname;
+  delete opts._defaultAgent;
+  delete opts.defaultPort;
+  delete opts.createConnection;
+
+  // hint to use "Connection: close"
+  // XXX: non-documented `http` module API :(
+  req._last = true;
+  req.shouldKeepAlive = false;
+
+  // clean up a bit of memory since we're no longer using this
+  req._options = null;
+
+  // create the `net.Socket` instance
+  var sync = true;
+  this.callback(req, opts, function (err, socket) {
+    function emitErr () {
+      req.emit('error', err);
+      // For Safety. Some additional errors might fire later on
+      // and we need to make sure we don't double-fire the error event.
+      req._hadError = true;
+    }
+    if (err) {
+      if (sync) {
+        // need to defer the "error" event, when sync, because by now the `req`
+        // instance hasn't event been passed back to the user yet...
+        process.nextTick(emitErr);
+      } else {
+        emitErr();
+      }
+    } else {
+      req.onSocket(socket);
+    }
+  });
+  sync = false;
+};

+ 94 - 0
node_modules/agent-base/package.json

@@ -0,0 +1,94 @@
+{
+  "_args": [
+    [
+      {
+        "raw": "agent-base@2",
+        "scope": null,
+        "escapedName": "agent-base",
+        "name": "agent-base",
+        "rawSpec": "2",
+        "spec": ">=2.0.0 <3.0.0",
+        "type": "range"
+      },
+      "/home/robert/workspace/xmlrpc/node_modules/http-proxy-agent"
+    ]
+  ],
+  "_from": "agent-base@>=2.0.0 <3.0.0",
+  "_id": "agent-base@2.0.1",
+  "_inCache": true,
+  "_location": "/agent-base",
+  "_nodeVersion": "0.12.7",
+  "_npmUser": {
+    "name": "tootallnate",
+    "email": "nathan@tootallnate.net"
+  },
+  "_npmVersion": "2.11.3",
+  "_phantomChildren": {},
+  "_requested": {
+    "raw": "agent-base@2",
+    "scope": null,
+    "escapedName": "agent-base",
+    "name": "agent-base",
+    "rawSpec": "2",
+    "spec": ">=2.0.0 <3.0.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/http-proxy-agent",
+    "/https-proxy-agent"
+  ],
+  "_resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.0.1.tgz",
+  "_shasum": "bd8f9e86a8eb221fffa07bd14befd55df142815e",
+  "_shrinkwrap": null,
+  "_spec": "agent-base@2",
+  "_where": "/home/robert/workspace/xmlrpc/node_modules/http-proxy-agent",
+  "author": {
+    "name": "Nathan Rajlich",
+    "email": "nathan@tootallnate.net",
+    "url": "http://n8.io/"
+  },
+  "bugs": {
+    "url": "https://github.com/TooTallNate/node-agent-base/issues"
+  },
+  "dependencies": {
+    "extend": "~3.0.0",
+    "semver": "~5.0.1"
+  },
+  "description": "Turn a function into an `http.Agent` instance",
+  "devDependencies": {
+    "mocha": "2"
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "bd8f9e86a8eb221fffa07bd14befd55df142815e",
+    "tarball": "https://registry.npmjs.org/agent-base/-/agent-base-2.0.1.tgz"
+  },
+  "gitHead": "b46938339bcecd261939dc55798270d0398ad8f0",
+  "homepage": "https://github.com/TooTallNate/node-agent-base#readme",
+  "keywords": [
+    "http",
+    "agent",
+    "base",
+    "barebones",
+    "https"
+  ],
+  "license": "MIT",
+  "main": "agent.js",
+  "maintainers": [
+    {
+      "name": "tootallnate",
+      "email": "nathan@tootallnate.net"
+    }
+  ],
+  "name": "agent-base",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/TooTallNate/node-agent-base.git"
+  },
+  "scripts": {
+    "test": "mocha --reporter spec"
+  },
+  "version": "2.0.1"
+}

+ 54 - 0
node_modules/agent-base/patch-core.js

@@ -0,0 +1,54 @@
+var url = require('url');
+var http = require('http');
+var https = require('https');
+var semver = require('semver');
+var inherits = require('util').inherits;
+
+
+// we only need to patch the `http.request()` and
+// `http.ClientRequest` on older versions of Node.js
+if (semver.lt(process.version, '0.11.8')) {
+  // subclass the native ClientRequest to include the
+  // passed in `options` object.
+  http.ClientRequest = (function (_ClientRequest) {
+    function ClientRequest (options, cb) {
+      this._options = options;
+      _ClientRequest.call(this, options, cb);
+    }
+    inherits(ClientRequest, _ClientRequest);
+
+    return ClientRequest;
+  })(http.ClientRequest);
+
+
+  // need to re-define the `request()` method, since on node v0.8/v0.10
+  // the closure-local ClientRequest is used, rather than the monkey
+  // patched version we have created here.
+  http.request = (function (request) {
+    return function (options, cb) {
+      if (typeof options === 'string') {
+        options = url.parse(options);
+      }
+      if (options.protocol && options.protocol !== 'http:') {
+        throw new Error('Protocol:' + options.protocol + ' not supported.');
+      }
+      return new http.ClientRequest(options, cb);
+    };
+  })(http.request);
+}
+
+
+// this currently needs to be applied to all Node.js versions
+// (v0.8.x, v0.10.x, v0.12.x), in order to determine if the `req`
+// is an HTTP or HTTPS request. There is currently no PR attempting
+// to move this property upstream.
+https.request = (function (request) {
+  return function (options, cb) {
+    if (typeof options === 'string') {
+      options = url.parse(options);
+    }
+    if (null == options.port) options.port = 443;
+    options.secureEndpoint = true;
+    return request.call(https, options, cb);
+  };
+})(https.request);

+ 15 - 0
node_modules/agent-base/test/ssl-cert-snakeoil.key

@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICWwIBAAKBgQCzURxIqzer0ACAbX/lHdsn4Gd9PLKrf7EeDYfIdV0HZKPD8WDr
+bBx2/fBu0OW2sjnzv/SVZbJ0DAuPE/p0+eT0qb2qC10iz9iTD7ribd7gxhirVb8y
+b3fBjXsxc8V8p4Ny1LcvNSqCjwUbJqdRogfoJeTiqPM58z5sNzuv5iq7iwIDAQAB
+AoGAPMQy4olrP0UotlzlJ36bowLP70ffgHCwU+/f4NWs5fF78c3du0oSx1w820Dd
+Z7E0JF8bgnlJJTxjumPZz0RUCugrEHBKJmzEz3cxF5E3+7NvteZcjKn9D67RrM5x
+1/uSZ9cqKE9cYvY4fSuHx18diyZ4axR/wB1Pea2utjjDM+ECQQDb9ZbmmaWMiRpQ
+5Up+loxP7BZNPsEVsm+DVJmEFbaFgGfncWBqSIqnPNjMwTwj0OigTwCAEGPkfRVW
+T0pbYWCxAkEA0LK7SCTwzyDmhASUalk0x+3uCAA6ryFdwJf/wd8TRAvVOmkTEldX
+uJ7ldLvfrONYO3v56uKTU/SoNdZYzKtO+wJAX2KM4ctXYy5BXztPpr2acz4qHa1N
+Bh+vBAC34fOYhyQ76r3b1btHhWZ5jbFuZwm9F2erC94Ps5IaoqcX07DSwQJAPKGw
+h2U0EPkd/3zVIZCJJQya+vgWFIs9EZcXVtvYXQyTBkVApTN66MhBIYjzkub5205J
+bVQmOV37AKklY1DhwQJAA1wos0cYxro02edzatxd0DIR2r4qqOqLkw6BhYHhq6HJ
+ZvIcQkHqdSXzdETFc01I1znDGGIrJHcnvKWgBPoEUg==
+-----END RSA PRIVATE KEY-----

+ 12 - 0
node_modules/agent-base/test/ssl-cert-snakeoil.pem

@@ -0,0 +1,12 @@
+-----BEGIN CERTIFICATE-----
+MIIB1TCCAT4CCQDV5mPlzm9+izANBgkqhkiG9w0BAQUFADAvMS0wKwYDVQQDEyQ3
+NTI3YmQ3Ny1hYjNlLTQ3NGItYWNlNy1lZWQ2MDUzOTMxZTcwHhcNMTUwNzA2MjI0
+NTA3WhcNMjUwNzAzMjI0NTA3WjAvMS0wKwYDVQQDEyQ3NTI3YmQ3Ny1hYjNlLTQ3
+NGItYWNlNy1lZWQ2MDUzOTMxZTcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
+ALNRHEirN6vQAIBtf+Ud2yfgZ308sqt/sR4Nh8h1XQdko8PxYOtsHHb98G7Q5bay
+OfO/9JVlsnQMC48T+nT55PSpvaoLXSLP2JMPuuJt3uDGGKtVvzJvd8GNezFzxXyn
+g3LUty81KoKPBRsmp1GiB+gl5OKo8znzPmw3O6/mKruLAgMBAAEwDQYJKoZIhvcN
+AQEFBQADgYEACzoHUF8UV2Z6541Q2wKEA0UFUzmUjf/E1XwBO+1P15ZZ64uw34B4
+1RwMPtAo9RY/PmICTWtNxWGxkzwb2JtDWtnxVER/lF8k2XcXPE76fxTHJF/BKk9J
+QU8OTD1dd9gHCBviQB9TqntRZ5X7axjtuWjb2umY+owBYzAHZkp1HKI=
+-----END CERTIFICATE-----

+ 300 - 0
node_modules/agent-base/test/test.js

@@ -0,0 +1,300 @@
+
+/**
+ * Module dependencies.
+ */
+
+var fs = require('fs');
+var url = require('url');
+var net = require('net');
+var tls = require('tls');
+var http = require('http');
+var https = require('https');
+var assert = require('assert');
+var events = require('events');
+var Agent = require('../');
+
+describe('Agent', function () {
+  describe('"error" event', function () {
+    it('should be invoked on `http.ClientRequest` instance if passed to callback function on the first tick', function (done) {
+      var agent = new Agent(function (req, opts, fn) {
+        fn(new Error('is this caught?'));
+      });
+      var info = url.parse('http://127.0.0.1/foo');
+      info.agent = agent;
+      var req = http.get(info);
+      req.on('error', function (err) {
+        assert.equal('is this caught?', err.message);
+        done();
+      });
+    });
+    it('should be invoked on `http.ClientRequest` instance if passed to callback function after the first tick', function (done) {
+      var agent = new Agent(function (req, opts, fn) {
+        setTimeout(function () {
+          fn(new Error('is this caught?'));
+        }, 10);
+      });
+      var info = url.parse('http://127.0.0.1/foo');
+      info.agent = agent;
+      var req = http.get(info);
+      req.on('error', function (err) {
+        assert.equal('is this caught?', err.message);
+        done();
+      });
+    });
+  });
+  describe('artificial "streams"', function () {
+    it('should send a GET request', function (done) {
+      var stream = new events.EventEmitter();
+
+      // needed for the `http` module to call .write() on the stream
+      stream.writable = true;
+
+      stream.write = function (str) {
+        assert(0 == str.indexOf('GET / HTTP/1.1'));
+        done();
+      };
+
+      var opts = {
+        method: 'GET',
+        host: '127.0.0.1',
+        path: '/',
+        port: 80,
+        agent: new Agent(function (req, opts, fn) {
+          fn(null, stream);
+        })
+      };
+      var req = http.request(opts);
+      req.end();
+    });
+    it('should receive a GET response', function (done) {
+      var stream = new events.EventEmitter();
+      var opts = {
+        method: 'GET',
+        host: '127.0.0.1',
+        path: '/',
+        port: 80,
+        agent: new Agent(function (req, opts, fn) {
+          fn(null, stream);
+        })
+      };
+      var req = http.request(opts, function (res) {
+        assert.equal('0.9', res.httpVersion);
+        assert.equal(111, res.statusCode);
+        assert.equal('bar', res.headers.foo);
+        done();
+      });
+      req.end();
+
+      // have to nextTick() since `http.ClientRequest` doesn't *actually*
+      // attach the listeners to the "stream" until the next tick :\
+      process.nextTick(function () {
+        var buf = new Buffer('HTTP/0.9 111\r\n' +
+                             'Foo: bar\r\n' +
+                             'Set-Cookie: 1\r\n' +
+                             'Set-Cookie: 2\r\n\r\n');
+        if ('function' == typeof stream.ondata) {
+          // node <= v0.11.3
+          stream.ondata(buf, 0, buf.length);
+        } else {
+          // node > v0.11.3
+          stream.emit('data', buf);
+        }
+      });
+    });
+  });
+});
+
+describe('"http" module', function () {
+  var server;
+  var port;
+
+  // setup test HTTP server
+  before(function (done) {
+    server = http.createServer();
+    server.listen(0, function () {
+      port = server.address().port;
+      done();
+    });
+  });
+
+  // shut down test HTTP server
+  after(function (done) {
+    server.once('close', function () {
+      done();
+    });
+    server.close();
+  });
+
+  it('should work for basic HTTP requests', function (done) {
+    var called = false;
+    var agent = new Agent(function (req, opts, fn) {
+      called = true;
+      var socket = net.connect(opts);
+      fn(null, socket);
+    });
+
+    // add HTTP server "request" listener
+    var gotReq = false;
+    server.once('request', function (req, res) {
+      gotReq = true;
+      res.setHeader('X-Foo', 'bar');
+      res.setHeader('X-Url', req.url);
+      res.end();
+    });
+
+    var info = url.parse('http://127.0.0.1:' + port + '/foo');
+    info.agent = agent;
+    http.get(info, function (res) {
+      assert.equal('bar', res.headers['x-foo']);
+      assert.equal('/foo', res.headers['x-url']);
+      assert(gotReq);
+      assert(called);
+      done();
+    });
+  });
+
+  it('should set the `Connection: close` response header', function (done) {
+    var called = false;
+    var agent = new Agent(function (req, opts, fn) {
+      called = true;
+      var socket = net.connect(opts);
+      fn(null, socket);
+    });
+
+    // add HTTP server "request" listener
+    var gotReq = false;
+    server.once('request', function (req, res) {
+      gotReq = true;
+      res.setHeader('X-Url', req.url);
+      assert.equal('close', req.headers.connection);
+      res.end();
+    });
+
+    var info = url.parse('http://127.0.0.1:' + port + '/bar');
+    info.agent = agent;
+    http.get(info, function (res) {
+      assert.equal('/bar', res.headers['x-url']);
+      assert.equal('close', res.headers.connection);
+      assert(gotReq);
+      assert(called);
+      done();
+    });
+  });
+
+  it('should pass through options from `http.request()`', function (done) {
+    var agent = new Agent(function (req, opts, fn) {
+      assert.equal('google.com', opts.host);
+      assert.equal('bar', opts.foo);
+      done();
+    });
+
+    http.get({
+      host: 'google.com',
+      foo: 'bar',
+      agent: agent
+    });
+  });
+
+  it('should default to port 80', function (done) {
+    var agent = new Agent(function (req, opts, fn) {
+      assert.equal(80, opts.port);
+      done();
+    });
+
+    // (probably) not hitting a real HTTP server here,
+    // so no need to add a httpServer request listener
+    http.get({
+      host: '127.0.0.1',
+      path: '/foo',
+      agent: agent
+    });
+  });
+});
+
+describe('"https" module', function () {
+  var server;
+  var port;
+
+  // setup test HTTPS server
+  before(function (done) {
+    var options = {
+      key: fs.readFileSync(__dirname + '/ssl-cert-snakeoil.key'),
+      cert: fs.readFileSync(__dirname + '/ssl-cert-snakeoil.pem')
+    };
+    server = https.createServer(options);
+    server.listen(0, function () {
+      port = server.address().port;
+      done();
+    });
+  });
+
+  // shut down test HTTP server
+  after(function (done) {
+    server.once('close', function () {
+      done();
+    });
+    server.close();
+  });
+
+  it('should work for basic HTTPS requests', function (done) {
+    var called = false;
+    var agent = new Agent(function (req, opts, fn) {
+      called = true;
+      assert(opts.secureEndpoint);
+      var socket = tls.connect(opts);
+      fn(null, socket);
+    });
+
+    // add HTTPS server "request" listener
+    var gotReq = false;
+    server.once('request', function (req, res) {
+      gotReq = true;
+      res.setHeader('X-Foo', 'bar');
+      res.setHeader('X-Url', req.url);
+      res.end();
+    });
+
+    var info = url.parse('https://127.0.0.1:' + port + '/foo');
+    info.agent = agent;
+    info.rejectUnauthorized = false;
+    https.get(info, function (res) {
+      assert.equal('bar', res.headers['x-foo']);
+      assert.equal('/foo', res.headers['x-url']);
+      assert(gotReq);
+      assert(called);
+      done();
+    });
+  });
+
+  it('should pass through options from `https.request()`', function (done) {
+    var agent = new Agent(function (req, opts, fn) {
+      assert.equal('google.com', opts.host);
+      assert.equal('bar', opts.foo);
+      done();
+    });
+
+    https.get({
+      host: 'google.com',
+      foo: 'bar',
+      agent: agent
+    });
+  });
+
+  it('should default to port 443', function (done) {
+    var agent = new Agent(function (req, opts, fn) {
+      assert.equal(true, opts.secureEndpoint);
+      assert.equal(false, opts.rejectUnauthorized);
+      assert.equal(443, opts.port);
+      done();
+    });
+
+    // (probably) not hitting a real HTTPS server here,
+    // so no need to add a httpsServer request listener
+    https.get({
+      host: '127.0.0.1',
+      path: '/foo',
+      agent: agent,
+      rejectUnauthorized: false
+    });
+  });
+});

+ 21 - 0
node_modules/ansi-align/CHANGELOG.md

@@ -0,0 +1,21 @@
+# Change Log
+
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+<a name="1.1.0"></a>
+# [1.1.0](https://github.com/nexdrew/ansi-align/compare/v1.0.0...v1.1.0) (2016-06-06)
+
+
+### Features
+
+* support left-alignment as no-op ([#3](https://github.com/nexdrew/ansi-align/issues/3)) ([e581db6](https://github.com/nexdrew/ansi-align/commit/e581db6))
+
+
+
+<a name="1.0.0"></a>
+# 1.0.0 (2016-04-30)
+
+
+### Features
+
+* initial commit ([1914d90](https://github.com/nexdrew/ansi-align/commit/1914d90))

+ 13 - 0
node_modules/ansi-align/LICENSE

@@ -0,0 +1,13 @@
+Copyright (c) 2016, Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any purpose
+with or without fee is hereby granted, provided that the above copyright notice
+and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+THIS SOFTWARE.

+ 79 - 0
node_modules/ansi-align/README.md

@@ -0,0 +1,79 @@
+# ansi-align
+
+> align-text with ANSI support for CLIs
+
+[![Build Status](https://travis-ci.org/nexdrew/ansi-align.svg?branch=master)](https://travis-ci.org/nexdrew/ansi-align)
+[![Coverage Status](https://coveralls.io/repos/github/nexdrew/ansi-align/badge.svg?branch=master)](https://coveralls.io/github/nexdrew/ansi-align?branch=master)
+[![Standard Version](https://img.shields.io/badge/release-standard%20version-brightgreen.svg)](https://github.com/conventional-changelog/standard-version)
+
+Easily center- or right- align a block of text, carefully ignoring ANSI escape codes.
+
+E.g. turn this:
+
+<img width="281" alt="ansi text block no alignment :(" src="https://cloud.githubusercontent.com/assets/1929625/14937509/7c3076dc-0ed7-11e6-8c16-4f6a4ccc8346.png">
+
+Into this:
+
+<img width="278" alt="ansi text block center aligned!" src="https://cloud.githubusercontent.com/assets/1929625/14937510/7c3ca0b0-0ed7-11e6-8f0a-541ca39b6e0a.png">
+
+## Install
+
+```sh
+npm install --save ansi-align
+```
+
+```js
+var ansiAlign = require('ansi-align')
+```
+
+## API
+
+### `ansiAlign(text, [opts])`
+
+Align the given text per the line with the greatest [`string-width`](https://github.com/sindresorhus/string-width), returning a new string (or array).
+
+#### Arguments
+
+- `text`: required, string or array
+
+    The text to align. If a string is given, it will be split using either the `opts.split` value or `'\n'` by default. If an array is given, a different array of modified strings will be returned.
+
+- `opts`: optional, object
+
+    Options to change behavior, see below.
+
+#### Options
+
+- `opts.align`: string, default `'center'`
+
+   The alignment mode. Use `'center'` for center-alignment, `'right'` for right-alignment, or `'left'` for left-alignment. Note that the given `text` is assumed to be left-aligned already, so specifying `align: 'left'` just returns the `text` as is (no-op).
+
+- `opts.split`: string or RegExp, default `'\n'`
+
+    The separator to use when splitting the text. Only used if text is given as a string.
+
+- `opts.pad`: string, default `' '`
+
+    The value used to left-pad (prepend to) lines of lesser width. Will be repeated as necessary to adjust alignment to the line with the greatest width.
+
+### `ansiAlign.center(text)`
+
+Alias for `ansiAlign(text, { align: 'center' })`.
+
+### `ansiAlign.right(text)`
+
+Alias for `ansiAlign(text, { align: 'right' })`.
+
+### `ansiAlign.left(text)`
+
+Alias for `ansiAlign(text, { align: 'left' })`, which is a no-op.
+
+## Similar Packages
+
+- [`center-align`](https://github.com/jonschlinkert/center-align): Very close to this package, except it doesn't support ANSI codes.
+- [`left-pad`](https://github.com/camwest/left-pad): Great for left-padding but does not support center alignment or ANSI codes.
+- Pretty much anything by the [chalk](https://github.com/chalk) team
+
+## License
+
+ISC © Contributors

+ 61 - 0
node_modules/ansi-align/index.js

@@ -0,0 +1,61 @@
+'use strict'
+
+var stringWidth = require('string-width')
+
+function ansiAlign (text, opts) {
+  if (!text) return text
+
+  opts = opts || {}
+  var align = opts.align || 'center'
+
+  // short-circuit `align: 'left'` as no-op
+  if (align === 'left') return text
+
+  var split = opts.split || '\n'
+  var pad = opts.pad || ' '
+  var widthDiffFn = align !== 'right' ? halfDiff : fullDiff
+
+  var returnString = false
+  if (!Array.isArray(text)) {
+    returnString = true
+    text = String(text).split(split)
+  }
+
+  var width
+  var maxWidth = 0
+  text = text.map(function (str) {
+    str = String(str)
+    width = stringWidth(str)
+    maxWidth = Math.max(width, maxWidth)
+    return {
+      str: str,
+      width: width
+    }
+  }).map(function (obj) {
+    return new Array(widthDiffFn(maxWidth, obj.width) + 1).join(pad) + obj.str
+  })
+
+  return returnString ? text.join(split) : text
+}
+
+ansiAlign.left = function left (text) {
+  return ansiAlign(text, { align: 'left' })
+}
+
+ansiAlign.center = function center (text) {
+  return ansiAlign(text, { align: 'center' })
+}
+
+ansiAlign.right = function right (text) {
+  return ansiAlign(text, { align: 'right' })
+}
+
+module.exports = ansiAlign
+
+function halfDiff (maxWidth, curWidth) {
+  return Math.floor((maxWidth - curWidth) / 2)
+}
+
+function fullDiff (maxWidth, curWidth) {
+  return maxWidth - curWidth
+}

+ 105 - 0
node_modules/ansi-align/package.json

@@ -0,0 +1,105 @@
+{
+  "_args": [
+    [
+      {
+        "raw": "ansi-align@^1.1.0",
+        "scope": null,
+        "escapedName": "ansi-align",
+        "name": "ansi-align",
+        "rawSpec": "^1.1.0",
+        "spec": ">=1.1.0 <2.0.0",
+        "type": "range"
+      },
+      "/home/robert/workspace/xmlrpc/node_modules/boxen"
+    ]
+  ],
+  "_from": "ansi-align@>=1.1.0 <2.0.0",
+  "_id": "ansi-align@1.1.0",
+  "_inCache": true,
+  "_location": "/ansi-align",
+  "_nodeVersion": "5.11.0",
+  "_npmOperationalInternal": {
+    "host": "packages-16-east.internal.npmjs.com",
+    "tmp": "tmp/ansi-align-1.1.0.tgz_1465244078324_0.3411616289522499"
+  },
+  "_npmUser": {
+    "name": "nexdrew",
+    "email": "andrew@npmjs.com"
+  },
+  "_npmVersion": "3.8.8",
+  "_phantomChildren": {},
+  "_requested": {
+    "raw": "ansi-align@^1.1.0",
+    "scope": null,
+    "escapedName": "ansi-align",
+    "name": "ansi-align",
+    "rawSpec": "^1.1.0",
+    "spec": ">=1.1.0 <2.0.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/boxen"
+  ],
+  "_resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz",
+  "_shasum": "2f0c1658829739add5ebb15e6b0c6e3423f016ba",
+  "_shrinkwrap": null,
+  "_spec": "ansi-align@^1.1.0",
+  "_where": "/home/robert/workspace/xmlrpc/node_modules/boxen",
+  "author": {
+    "name": "nexdrew"
+  },
+  "bugs": {
+    "url": "https://github.com/nexdrew/ansi-align/issues"
+  },
+  "dependencies": {
+    "string-width": "^1.0.1"
+  },
+  "description": "align-text with ANSI support for CLIs",
+  "devDependencies": {
+    "ava": "^0.15.2",
+    "chalk": "^1.1.3",
+    "coveralls": "^2.11.9",
+    "nyc": "^6.4.4",
+    "standard": "^7.1.2",
+    "standard-version": "^2.3.0"
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "2f0c1658829739add5ebb15e6b0c6e3423f016ba",
+    "tarball": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz"
+  },
+  "files": [
+    "index.js"
+  ],
+  "gitHead": "839c4e214a5690d7463dda32cf76d2ac15826f7a",
+  "homepage": "https://github.com/nexdrew/ansi-align#readme",
+  "keywords": [
+    "ansi",
+    "align",
+    "cli",
+    "center",
+    "pad"
+  ],
+  "license": "ISC",
+  "main": "index.js",
+  "maintainers": [
+    {
+      "name": "nexdrew",
+      "email": "andrew@npmjs.com"
+    }
+  ],
+  "name": "ansi-align",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/nexdrew/ansi-align.git"
+  },
+  "scripts": {
+    "coverage": "nyc report --reporter=text-lcov | coveralls",
+    "pretest": "standard",
+    "release": "standard-version",
+    "test": "nyc ava"
+  },
+  "version": "1.1.0"
+}

+ 106 - 0
node_modules/ansi-escapes/index.js

@@ -0,0 +1,106 @@
+'use strict';
+var ESC = '\u001b[';
+var x = module.exports;
+
+x.cursorTo = function (x, y) {
+	if (arguments.length === 0) {
+		return ESC + 'H';
+	}
+
+	if (arguments.length === 1) {
+		return ESC + (x + 1) + 'G';
+	}
+
+	return ESC + (y + 1) + ';' + (x + 1) + 'H';
+};
+
+x.cursorMove = function (x, y) {
+	var ret = '';
+
+	if (x < 0) {
+		ret += ESC + (-x) + 'D';
+	} else if (x > 0) {
+		ret += ESC + x + 'C';
+	}
+
+	if (y < 0) {
+		ret += ESC + (-y) + 'A';
+	} else if (y > 0) {
+		ret += ESC + y + 'B';
+	}
+
+	return ret;
+};
+
+x.cursorUp = function (count) {
+	return ESC + (typeof count === 'number' ? count : 1) + 'A';
+};
+
+x.cursorDown = function (count) {
+	return ESC + (typeof count === 'number' ? count : 1) + 'B';
+};
+
+x.cursorForward = function (count) {
+	return ESC + (typeof count === 'number' ? count : 1) + 'C';
+};
+
+x.cursorBackward = function (count) {
+	return ESC + (typeof count === 'number' ? count : 1) + 'D';
+};
+
+x.cursorLeft = ESC + '1000D';
+x.cursorSavePosition = ESC + 's';
+x.cursorRestorePosition = ESC + 'u';
+x.cursorGetPosition = ESC + '6n';
+x.cursorNextLine = ESC + 'E';
+x.cursorPrevLine = ESC + 'F';
+x.cursorHide = ESC + '?25l';
+x.cursorShow = ESC + '?25h';
+
+x.eraseLines = function (count) {
+	var clear = '';
+
+	for (var i = 0; i < count; i++) {
+		clear += x.cursorLeft + x.eraseEndLine + (i < count - 1 ? x.cursorUp() : '');
+	}
+
+	return clear;
+};
+
+x.eraseEndLine = ESC + 'K';
+x.eraseStartLine = ESC + '1K';
+x.eraseLine = ESC + '2K';
+x.eraseDown = ESC + 'J';
+x.eraseUp = ESC + '1J';
+x.eraseScreen = ESC + '2J';
+x.scrollUp = ESC + 'S';
+x.scrollDown = ESC + 'T';
+
+x.clearScreen = '\u001bc';
+x.beep = '\u0007';
+
+x.image = function (buf, opts) {
+	opts = opts || {};
+
+	var ret = '\u001b]1337;File=inline=1';
+
+	if (opts.width) {
+		ret += ';width=' + opts.width;
+	}
+
+	if (opts.height) {
+		ret += ';height=' + opts.height;
+	}
+
+	if (opts.preserveAspectRatio === false) {
+		ret += ';preserveAspectRatio=0';
+	}
+
+	return ret + ':' + buf.toString('base64') + '\u0007';
+};
+
+x.iTerm = {};
+
+x.iTerm.setCwd = function (cwd) {
+	return '\u001b]50;CurrentDir=' + (cwd || process.cwd()) + '\u0007';
+};

+ 21 - 0
node_modules/ansi-escapes/license

@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+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.

+ 118 - 0
node_modules/ansi-escapes/package.json

@@ -0,0 +1,118 @@
+{
+  "_args": [
+    [
+      {
+        "raw": "ansi-escapes@^1.0.0",
+        "scope": null,
+        "escapedName": "ansi-escapes",
+        "name": "ansi-escapes",
+        "rawSpec": "^1.0.0",
+        "spec": ">=1.0.0 <2.0.0",
+        "type": "range"
+      },
+      "/home/robert/workspace/xmlrpc/node_modules/log-update"
+    ]
+  ],
+  "_from": "ansi-escapes@>=1.0.0 <2.0.0",
+  "_id": "ansi-escapes@1.4.0",
+  "_inCache": true,
+  "_location": "/ansi-escapes",
+  "_nodeVersion": "4.4.2",
+  "_npmOperationalInternal": {
+    "host": "packages-16-east.internal.npmjs.com",
+    "tmp": "tmp/ansi-escapes-1.4.0.tgz_1460925437568_0.228597579523921"
+  },
+  "_npmUser": {
+    "name": "sindresorhus",
+    "email": "sindresorhus@gmail.com"
+  },
+  "_npmVersion": "2.15.0",
+  "_phantomChildren": {},
+  "_requested": {
+    "raw": "ansi-escapes@^1.0.0",
+    "scope": null,
+    "escapedName": "ansi-escapes",
+    "name": "ansi-escapes",
+    "rawSpec": "^1.0.0",
+    "spec": ">=1.0.0 <2.0.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/log-update"
+  ],
+  "_resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
+  "_shasum": "d3a8a83b319aa67793662b13e761c7911422306e",
+  "_shrinkwrap": null,
+  "_spec": "ansi-escapes@^1.0.0",
+  "_where": "/home/robert/workspace/xmlrpc/node_modules/log-update",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/ansi-escapes/issues"
+  },
+  "dependencies": {},
+  "description": "ANSI escape codes for manipulating the terminal",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "d3a8a83b319aa67793662b13e761c7911422306e",
+    "tarball": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "gitHead": "763a11847148479dd315c2b9f81b001c94740415",
+  "homepage": "https://github.com/sindresorhus/ansi-escapes#readme",
+  "keywords": [
+    "ansi",
+    "terminal",
+    "console",
+    "cli",
+    "string",
+    "tty",
+    "escape",
+    "escapes",
+    "formatting",
+    "shell",
+    "xterm",
+    "log",
+    "logging",
+    "command-line",
+    "text",
+    "vt100",
+    "sequence",
+    "control",
+    "code",
+    "codes",
+    "cursor",
+    "iterm",
+    "iterm2"
+  ],
+  "license": "MIT",
+  "maintainers": [
+    {
+      "name": "sindresorhus",
+      "email": "sindresorhus@gmail.com"
+    }
+  ],
+  "name": "ansi-escapes",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/ansi-escapes.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "1.4.0"
+}

+ 176 - 0
node_modules/ansi-escapes/readme.md

@@ -0,0 +1,176 @@
+# ansi-escapes [![Build Status](https://travis-ci.org/sindresorhus/ansi-escapes.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-escapes)
+
+> [ANSI escape codes](http://www.termsys.demon.co.uk/vtansi.htm) for manipulating the terminal
+
+
+## Install
+
+```
+$ npm install --save ansi-escapes
+```
+
+
+## Usage
+
+```js
+const ansiEscapes = require('ansi-escapes');
+
+// moves the cursor two rows up and to the left
+process.stdout.write(ansiEscapes.cursorUp(2) + ansiEscapes.cursorLeft);
+//=> '\u001b[2A\u001b[1000D'
+```
+
+
+## API
+
+### cursorTo([x, [y]])
+
+Set the absolute position of the cursor. `x0` `y0` is the top left of the screen.
+
+Specify either both `x` & `y`, only `x`, or nothing.
+
+### cursorMove(x, [y])
+
+Set the position of the cursor relative to its current position.
+
+### cursorUp(count)
+
+Move cursor up a specific amount of rows. Default is `1`.
+
+### cursorDown(count)
+
+Move cursor down a specific amount of rows. Default is `1`.
+
+### cursorForward(count)
+
+Move cursor forward a specific amount of rows. Default is `1`.
+
+### cursorBackward(count)
+
+Move cursor backward a specific amount of rows. Default is `1`.
+
+### cursorLeft
+
+Move cursor to the left side.
+
+### cursorSavePosition
+
+Save cursor position.
+
+### cursorRestorePosition
+
+Restore saved cursor position.
+
+### cursorGetPosition
+
+Get cursor position.
+
+### cursorNextLine
+
+Move cursor to the next line.
+
+### cursorPrevLine
+
+Move cursor to the previous line.
+
+### cursorHide
+
+Hide cursor.
+
+### cursorShow
+
+Show cursor.
+
+### eraseLines(count)
+
+Erase from the current cursor position up the specified amount of rows.
+
+### eraseEndLine
+
+Erase from the current cursor position to the end of the current line.
+
+### eraseStartLine
+
+Erase from the current cursor position to the start of the current line.
+
+### eraseLine
+
+Erase the entire current line.
+
+### eraseDown
+
+Erase the screen from the current line down to the bottom of the screen.
+
+### eraseUp
+
+Erase the screen from the current line up to the top of the screen.
+
+### eraseScreen
+
+Erase the screen and move the cursor the top left position.
+
+### scrollUp
+
+Scroll display up one line.
+
+### scrollDown
+
+Scroll display down one line.
+
+### clearScreen
+
+Clear the terminal screen.
+
+### beep
+
+Output a beeping sound.
+
+### image(input, [options])
+
+Display an image.
+
+*Currently only supported on iTerm >=2.9.*
+
+See [term-img](https://github.com/sindresorhus/term-img) for a higher-level module.
+
+#### input
+
+Type: `buffer`
+
+Buffer of an image. Usually read in with `fs.readFile()`.
+
+#### options
+
+##### width
+##### height
+
+Type: `string` `number`
+
+The width and height are given as a number followed by a unit, or the word "auto".
+
+- `N`: N character cells.
+- `Npx`: N pixels.
+- `N%`: N percent of the session's width or height.
+- `auto`: The image's inherent size will be used to determine an appropriate dimension.
+
+##### preserveAspectRatio
+
+Type: `boolean`<br>
+Default: `true`
+
+### iTerm.setCwd([path])
+
+Type: `string`<br>
+Default: `process.cwd()`
+
+[Inform iTerm](https://www.iterm2.com/documentation-escape-codes.html) of the current directory to help semantic history and enable [Cmd-clicking relative paths](https://coderwall.com/p/b7e82q/quickly-open-files-in-iterm-with-cmd-click).
+
+
+## Related
+
+- [ansi-styles](https://github.com/chalk/ansi-styles) - ANSI escape codes for styling strings in the terminal
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)

+ 4 - 0
node_modules/ansi-regex/index.js

@@ -0,0 +1,4 @@
+'use strict';
+module.exports = function () {
+	return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-PRZcf-nqry=><]/g;
+};

+ 21 - 0
node_modules/ansi-regex/license

@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+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.

+ 132 - 0
node_modules/ansi-regex/package.json

@@ -0,0 +1,132 @@
+{
+  "_args": [
+    [
+      {
+        "raw": "ansi-regex@^2.0.0",
+        "scope": null,
+        "escapedName": "ansi-regex",
+        "name": "ansi-regex",
+        "rawSpec": "^2.0.0",
+        "spec": ">=2.0.0 <3.0.0",
+        "type": "range"
+      },
+      "/home/robert/workspace/xmlrpc/node_modules/has-ansi"
+    ]
+  ],
+  "_from": "ansi-regex@>=2.0.0 <3.0.0",
+  "_id": "ansi-regex@2.1.1",
+  "_inCache": true,
+  "_location": "/ansi-regex",
+  "_nodeVersion": "0.10.32",
+  "_npmOperationalInternal": {
+    "host": "packages-18-east.internal.npmjs.com",
+    "tmp": "tmp/ansi-regex-2.1.1.tgz_1484363378013_0.4482989883981645"
+  },
+  "_npmUser": {
+    "name": "qix",
+    "email": "i.am.qix@gmail.com"
+  },
+  "_npmVersion": "2.14.2",
+  "_phantomChildren": {},
+  "_requested": {
+    "raw": "ansi-regex@^2.0.0",
+    "scope": null,
+    "escapedName": "ansi-regex",
+    "name": "ansi-regex",
+    "rawSpec": "^2.0.0",
+    "spec": ">=2.0.0 <3.0.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/has-ansi",
+    "/strip-ansi"
+  ],
+  "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+  "_shasum": "c3b33ab5ee360d86e0e628f0468ae7ef27d654df",
+  "_shrinkwrap": null,
+  "_spec": "ansi-regex@^2.0.0",
+  "_where": "/home/robert/workspace/xmlrpc/node_modules/has-ansi",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/chalk/ansi-regex/issues"
+  },
+  "dependencies": {},
+  "description": "Regular expression for matching ANSI escape codes",
+  "devDependencies": {
+    "ava": "0.17.0",
+    "xo": "0.16.0"
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "c3b33ab5ee360d86e0e628f0468ae7ef27d654df",
+    "tarball": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "gitHead": "7c908e7b4eb6cd82bfe1295e33fdf6d166c7ed85",
+  "homepage": "https://github.com/chalk/ansi-regex#readme",
+  "keywords": [
+    "ansi",
+    "styles",
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "string",
+    "tty",
+    "escape",
+    "formatting",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "command-line",
+    "text",
+    "regex",
+    "regexp",
+    "re",
+    "match",
+    "test",
+    "find",
+    "pattern"
+  ],
+  "license": "MIT",
+  "maintainers": [
+    {
+      "name": "qix",
+      "email": "i.am.qix@gmail.com"
+    },
+    {
+      "name": "sindresorhus",
+      "email": "sindresorhus@gmail.com"
+    }
+  ],
+  "name": "ansi-regex",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/ansi-regex.git"
+  },
+  "scripts": {
+    "test": "xo && ava --verbose",
+    "view-supported": "node fixtures/view-codes.js"
+  },
+  "version": "2.1.1",
+  "xo": {
+    "rules": {
+      "guard-for-in": 0,
+      "no-loop-func": 0
+    }
+  }
+}

+ 39 - 0
node_modules/ansi-regex/readme.md

@@ -0,0 +1,39 @@
+# ansi-regex [![Build Status](https://travis-ci.org/chalk/ansi-regex.svg?branch=master)](https://travis-ci.org/chalk/ansi-regex)
+
+> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)
+
+
+## Install
+
+```
+$ npm install --save ansi-regex
+```
+
+
+## Usage
+
+```js
+const ansiRegex = require('ansi-regex');
+
+ansiRegex().test('\u001b[4mcake\u001b[0m');
+//=> true
+
+ansiRegex().test('cake');
+//=> false
+
+'\u001b[4mcake\u001b[0m'.match(ansiRegex());
+//=> ['\u001b[4m', '\u001b[0m']
+```
+
+## FAQ
+
+### Why do you test for codes not in the ECMA 48 standard?
+
+Some of the codes we run as a test are codes that we acquired finding various lists of non-standard or manufacturer specific codes. If I recall correctly, we test for both standard and non-standard codes, as most of them follow the same or similar format and can be safely matched in strings without the risk of removing actual string content. There are a few non-standard control codes that do not follow the traditional format (i.e. they end in numbers) thus forcing us to exclude them from the test because we cannot reliably match them.
+
+On the historical side, those ECMA standards were established in the early 90's whereas the VT100, for example, was designed in the mid/late 70's. At that point in time, control codes were still pretty ungoverned and engineers used them for a multitude of things, namely to activate hardware ports that may have been proprietary. Somewhere else you see a similar 'anarchy' of codes is in the x86 architecture for processors; there are a ton of "interrupts" that can mean different things on certain brands of processors, most of which have been phased out.
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)

+ 65 - 0
node_modules/ansi-styles/index.js

@@ -0,0 +1,65 @@
+'use strict';
+
+function assembleStyles () {
+	var styles = {
+		modifiers: {
+			reset: [0, 0],
+			bold: [1, 22], // 21 isn't widely supported and 22 does the same thing
+			dim: [2, 22],
+			italic: [3, 23],
+			underline: [4, 24],
+			inverse: [7, 27],
+			hidden: [8, 28],
+			strikethrough: [9, 29]
+		},
+		colors: {
+			black: [30, 39],
+			red: [31, 39],
+			green: [32, 39],
+			yellow: [33, 39],
+			blue: [34, 39],
+			magenta: [35, 39],
+			cyan: [36, 39],
+			white: [37, 39],
+			gray: [90, 39]
+		},
+		bgColors: {
+			bgBlack: [40, 49],
+			bgRed: [41, 49],
+			bgGreen: [42, 49],
+			bgYellow: [43, 49],
+			bgBlue: [44, 49],
+			bgMagenta: [45, 49],
+			bgCyan: [46, 49],
+			bgWhite: [47, 49]
+		}
+	};
+
+	// fix humans
+	styles.colors.grey = styles.colors.gray;
+
+	Object.keys(styles).forEach(function (groupName) {
+		var group = styles[groupName];
+
+		Object.keys(group).forEach(function (styleName) {
+			var style = group[styleName];
+
+			styles[styleName] = group[styleName] = {
+				open: '\u001b[' + style[0] + 'm',
+				close: '\u001b[' + style[1] + 'm'
+			};
+		});
+
+		Object.defineProperty(styles, groupName, {
+			value: group,
+			enumerable: false
+		});
+	});
+
+	return styles;
+}
+
+Object.defineProperty(module, 'exports', {
+	enumerable: true,
+	get: assembleStyles
+});

+ 21 - 0
node_modules/ansi-styles/license

@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+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.

+ 114 - 0
node_modules/ansi-styles/package.json

@@ -0,0 +1,114 @@
+{
+  "_args": [
+    [
+      {
+        "raw": "ansi-styles@^2.2.1",
+        "scope": null,
+        "escapedName": "ansi-styles",
+        "name": "ansi-styles",
+        "rawSpec": "^2.2.1",
+        "spec": ">=2.2.1 <3.0.0",
+        "type": "range"
+      },
+      "/home/robert/workspace/xmlrpc/node_modules/chalk"
+    ]
+  ],
+  "_from": "ansi-styles@>=2.2.1 <3.0.0",
+  "_id": "ansi-styles@2.2.1",
+  "_inCache": true,
+  "_location": "/ansi-styles",
+  "_nodeVersion": "4.3.0",
+  "_npmOperationalInternal": {
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/ansi-styles-2.2.1.tgz_1459197317833_0.9694824463222176"
+  },
+  "_npmUser": {
+    "name": "sindresorhus",
+    "email": "sindresorhus@gmail.com"
+  },
+  "_npmVersion": "3.8.3",
+  "_phantomChildren": {},
+  "_requested": {
+    "raw": "ansi-styles@^2.2.1",
+    "scope": null,
+    "escapedName": "ansi-styles",
+    "name": "ansi-styles",
+    "rawSpec": "^2.2.1",
+    "spec": ">=2.2.1 <3.0.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/chalk"
+  ],
+  "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+  "_shasum": "b432dd3358b634cf75e1e4664368240533c1ddbe",
+  "_shrinkwrap": null,
+  "_spec": "ansi-styles@^2.2.1",
+  "_where": "/home/robert/workspace/xmlrpc/node_modules/chalk",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/chalk/ansi-styles/issues"
+  },
+  "dependencies": {},
+  "description": "ANSI escape codes for styling strings in the terminal",
+  "devDependencies": {
+    "mocha": "*"
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "b432dd3358b634cf75e1e4664368240533c1ddbe",
+    "tarball": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "gitHead": "95c59b23be760108b6530ca1c89477c21b258032",
+  "homepage": "https://github.com/chalk/ansi-styles#readme",
+  "keywords": [
+    "ansi",
+    "styles",
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "string",
+    "tty",
+    "escape",
+    "formatting",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "log",
+    "logging",
+    "command-line",
+    "text"
+  ],
+  "license": "MIT",
+  "maintainers": [
+    {
+      "name": "sindresorhus",
+      "email": "sindresorhus@gmail.com"
+    }
+  ],
+  "name": "ansi-styles",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/ansi-styles.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "version": "2.2.1"
+}

+ 86 - 0
node_modules/ansi-styles/readme.md

@@ -0,0 +1,86 @@
+# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles)
+
+> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal
+
+You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings.
+
+![](screenshot.png)
+
+
+## Install
+
+```
+$ npm install --save ansi-styles
+```
+
+
+## Usage
+
+```js
+var ansi = require('ansi-styles');
+
+console.log(ansi.green.open + 'Hello world!' + ansi.green.close);
+```
+
+
+## API
+
+Each style has an `open` and `close` property.
+
+
+## Styles
+
+### Modifiers
+
+- `reset`
+- `bold`
+- `dim`
+- `italic` *(not widely supported)*
+- `underline`
+- `inverse`
+- `hidden`
+- `strikethrough` *(not widely supported)*
+
+### Colors
+
+- `black`
+- `red`
+- `green`
+- `yellow`
+- `blue`
+- `magenta`
+- `cyan`
+- `white`
+- `gray`
+
+### Background colors
+
+- `bgBlack`
+- `bgRed`
+- `bgGreen`
+- `bgYellow`
+- `bgBlue`
+- `bgMagenta`
+- `bgCyan`
+- `bgWhite`
+
+
+## Advanced usage
+
+By default you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module.
+
+- `ansi.modifiers`
+- `ansi.colors`
+- `ansi.bgColors`
+
+
+###### Example
+
+```js
+console.log(ansi.colors.green.open);
+```
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)

+ 4 - 0
node_modules/any-promise/.jshintrc

@@ -0,0 +1,4 @@
+{
+  "node":true,
+  "strict":true
+}

+ 7 - 0
node_modules/any-promise/.npmignore

@@ -0,0 +1,7 @@
+.git*
+test/
+test-browser/
+build/
+.travis.yml
+*.swp
+Makefile

+ 19 - 0
node_modules/any-promise/LICENSE

@@ -0,0 +1,19 @@
+Copyright (C) 2014-2016 Kevin Beaty
+
+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.

+ 161 - 0
node_modules/any-promise/README.md

@@ -0,0 +1,161 @@
+## Any Promise
+
+[![Build Status](https://secure.travis-ci.org/kevinbeaty/any-promise.svg)](http://travis-ci.org/kevinbeaty/any-promise)
+
+Let your library support any ES 2015 (ES6) compatible `Promise` and leave the choice to application authors. The application can *optionally* register its preferred `Promise` implementation and it will be exported when requiring `any-promise` from library code.
+
+If no preference is registered, defaults to the global `Promise` for newer Node.js versions. The browser version defaults to the window `Promise`, so polyfill or register as necessary.
+
+### Usage with global Promise:
+
+Assuming the global `Promise` is the desired implementation:
+
+```bash
+# Install any libraries depending on any-promise
+$ npm install mz
+```
+
+The installed libraries will use global Promise by default.
+
+```js
+// in library
+var Promise = require('any-promise')  // the global Promise
+
+function promiseReturningFunction(){
+    return new Promise(function(resolve, reject){...})
+}
+```
+
+### Usage with registration:
+
+Assuming `bluebird` is the desired Promise implementation:
+
+```bash
+# Install preferred promise library
+$ npm install bluebird
+# Install any-promise to allow registration
+$ npm install any-promise
+# Install any libraries you would like to use depending on any-promise
+$ npm install mz
+```
+
+Register your preference in the application entry point before any other `require` of packages that load `any-promise`:
+
+```javascript
+// top of application index.js or other entry point
+require('any-promise/register/bluebird')
+
+// -or- Equivalent to above, but allows customization of Promise library
+require('any-promise/register')('bluebird', {Promise: require('bluebird')})
+```
+
+Now that the implementation is registered, you can use any package depending on `any-promise`:
+
+
+```javascript
+var fsp = require('mz/fs') // mz/fs will use registered bluebird promises
+var Promise = require('any-promise')  // the registered bluebird promise 
+```
+
+It is safe to call `register` multiple times, but it must always be with the same implementation.
+
+Again, registration is *optional*. It should only be called by the application user if overriding the global `Promise` implementation is desired.
+
+### Optional Application Registration
+
+As an application author, you can *optionally* register a preferred `Promise` implementation on application startup (before any call to `require('any-promise')`:
+
+You must register your preference before any call to `require('any-promise')` (by you or required packages), and only one implementation can be registered. Typically, this registration would occur at the top of the application entry point.
+
+
+#### Registration shortcuts
+
+If you are using a known `Promise` implementation, you can register your preference with a shortcut:
+
+
+```js
+require('any-promise/register/bluebird')
+// -or-
+import 'any-promise/register/q';
+```
+
+Shortcut registration is the preferred registration method as it works in the browser and Node.js. It is also convenient for using with `import` and many test runners, that offer a `--require` flag:
+
+```
+$ ava --require=any-promise/register/bluebird test.js
+```
+
+Current known implementations include `bluebird`, `q`, `when`, `rsvp`, `es6-promise`, `promise`, `native-promise-only`, `pinkie`, `vow` and `lie`. If you are not using a known implementation, you can use another registration method described below.
+
+
+#### Basic Registration
+
+As an alternative to registration shortcuts, you can call the `register` function with the preferred `Promise` implementation. The benefit of this approach is that a `Promise` library can be required by name without being a known implementation.  This approach does NOT work in the browser. To use `any-promise` in the browser use either registration shortcuts or specify the `Promise` constructor using advanced registration (see below).
+
+```javascript
+require('any-promise/register')('when')
+// -or- require('any-promise/register')('any other ES6 compatible library (known or otherwise)')
+```
+
+This registration method will try to detect the `Promise` constructor from requiring the specified implementation.  If you would like to specify your own constructor, see advanced registration.
+
+
+#### Advanced Registration
+
+To use the browser version, you should either install a polyfill or explicitly register the `Promise` constructor:
+
+```javascript
+require('any-promise/register')('bluebird', {Promise: require('bluebird')})
+```
+
+This could also be used for registering a custom `Promise` implementation or subclass.
+
+Your preference will be registered globally, allowing a single registration even if multiple versions of `any-promise` are installed in the NPM dependency tree or are using multiple bundled JavaScript files in the browser. You can bypass this global registration in options:
+
+
+```javascript
+require('../register')('es6-promise', {Promise: require('es6-promise').Promise, global: false})
+```
+
+### Library Usage
+
+To use any `Promise` constructor, simply require it:
+
+```javascript
+var Promise = require('any-promise');
+
+return Promise
+  .all([xf, f, init, coll])
+  .then(fn);
+
+
+return new Promise(function(resolve, reject){
+  try {
+    resolve(item);
+  } catch(e){
+    reject(e);
+  }
+});
+
+```
+
+Except noted below, libraries using `any-promise` should only use [documented](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) functions as there is no guarantee which implementation will be chosen by the application author.  Libraries should never call `register`, only the application user should call if desired.
+
+
+#### Advanced Library Usage
+
+If your library needs to branch code based on the registered implementation, you can retrieve it using `var impl = require('any-promise/implementation')`, where `impl` will be the package name (`"bluebird"`, `"when"`, etc.) if registered, `"global.Promise"` if using the global version on Node.js, or `"window.Promise"` if using the browser version. You should always include a default case, as there is no guarantee what package may be registered.
+
+
+### Support for old Node.js versions
+
+Node.js versions prior to `v0.12` may have contained buggy versions of the global `Promise`. For this reason, the global `Promise` is not loaded automatically for these old versions.  If using `any-promise` in Node.js versions versions `<= v0.12`, the user should register a desired implementation.
+
+If an implementation is not registered, `any-promise` will attempt to discover an installed `Promise` implementation.  If no implementation can be found, an error will be thrown on `require('any-promise')`.  While the auto-discovery usually avoids errors, it is non-deterministic. It is recommended that the user always register a preferred implementation for older Node.js versions.
+
+This auto-discovery is only available for Node.jS versions prior to `v0.12`. Any newer versions will always default to the global `Promise` implementation.
+
+### Related
+
+- [any-observable](https://github.com/sindresorhus/any-observable) - `any-promise` for Observables.
+

+ 3 - 0
node_modules/any-promise/implementation.d.ts

@@ -0,0 +1,3 @@
+declare var implementation: string;
+
+export = implementation;

+ 1 - 0
node_modules/any-promise/implementation.js

@@ -0,0 +1 @@
+module.exports = require('./register')().implementation

+ 73 - 0
node_modules/any-promise/index.d.ts

@@ -0,0 +1,73 @@
+declare class Promise <R> implements Promise.Thenable <R> {
+  /**
+   * If you call resolve in the body of the callback passed to the constructor,
+   * your promise is fulfilled with result object passed to resolve.
+   * If you call reject your promise is rejected with the object passed to resolve.
+   * For consistency and debugging (eg stack traces), obj should be an instanceof Error.
+   * Any errors thrown in the constructor callback will be implicitly passed to reject().
+   */
+  constructor (callback: (resolve : (value?: R | Promise.Thenable<R>) => void, reject: (error?: any) => void) => void);
+
+  /**
+   * onFulfilled is called when/if "promise" resolves. onRejected is called when/if "promise" rejects.
+   * Both are optional, if either/both are omitted the next onFulfilled/onRejected in the chain is called.
+   * Both callbacks have a single parameter , the fulfillment value or rejection reason.
+   * "then" returns a new promise equivalent to the value you return from onFulfilled/onRejected after being passed through Promise.resolve.
+   * If an error is thrown in the callback, the returned promise rejects with that error.
+   *
+   * @param onFulfilled called when/if "promise" resolves
+   * @param onRejected called when/if "promise" rejects
+   */
+  then <U> (onFulfilled?: (value: R) => U | Promise.Thenable<U>, onRejected?: (error: any) => U | Promise.Thenable<U>): Promise<U>;
+  then <U> (onFulfilled?: (value: R) => U | Promise.Thenable<U>, onRejected?: (error: any) => void): Promise<U>;
+
+  /**
+   * Sugar for promise.then(undefined, onRejected)
+   *
+   * @param onRejected called when/if "promise" rejects
+   */
+  catch <U> (onRejected?: (error: any) => U | Promise.Thenable<U>): Promise<U>;
+
+  /**
+   * Make a new promise from the thenable.
+   * A thenable is promise-like in as far as it has a "then" method.
+   */
+  static resolve (): Promise<void>;
+  static resolve <R> (value: R | Promise.Thenable<R>): Promise<R>;
+
+  /**
+   * Make a promise that rejects to obj. For consistency and debugging (eg stack traces), obj should be an instanceof Error
+   */
+  static reject <R> (error: any): Promise<R>;
+
+  /**
+   * Make a promise that fulfills when every item in the array fulfills, and rejects if (and when) any item rejects.
+   * the array passed to all can be a mixture of promise-like objects and other objects.
+   * The fulfillment value is an array (in order) of fulfillment values. The rejection value is the first rejection value.
+   */
+  static all <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> (values: [T1 | Promise.Thenable<T1>, T2 | Promise.Thenable<T2>, T3 | Promise.Thenable<T3>, T4 | Promise.Thenable <T4>, T5 | Promise.Thenable<T5>, T6 | Promise.Thenable<T6>, T7 | Promise.Thenable<T7>, T8 | Promise.Thenable<T8>, T9 | Promise.Thenable<T9>, T10 | Promise.Thenable<T10>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>;
+  static all <T1, T2, T3, T4, T5, T6, T7, T8, T9> (values: [T1 | Promise.Thenable<T1>, T2 | Promise.Thenable<T2>, T3 | Promise.Thenable<T3>, T4 | Promise.Thenable <T4>, T5 | Promise.Thenable<T5>, T6 | Promise.Thenable<T6>, T7 | Promise.Thenable<T7>, T8 | Promise.Thenable<T8>, T9 | Promise.Thenable<T9>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>;
+  static all <T1, T2, T3, T4, T5, T6, T7, T8> (values: [T1 | Promise.Thenable<T1>, T2 | Promise.Thenable<T2>, T3 | Promise.Thenable<T3>, T4 | Promise.Thenable <T4>, T5 | Promise.Thenable<T5>, T6 | Promise.Thenable<T6>, T7 | Promise.Thenable<T7>, T8 | Promise.Thenable<T8>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>;
+  static all <T1, T2, T3, T4, T5, T6, T7> (values: [T1 | Promise.Thenable<T1>, T2 | Promise.Thenable<T2>, T3 | Promise.Thenable<T3>, T4 | Promise.Thenable <T4>, T5 | Promise.Thenable<T5>, T6 | Promise.Thenable<T6>, T7 | Promise.Thenable<T7>]): Promise<[T1, T2, T3, T4, T5, T6, T7]>;
+  static all <T1, T2, T3, T4, T5, T6> (values: [T1 | Promise.Thenable<T1>, T2 | Promise.Thenable<T2>, T3 | Promise.Thenable<T3>, T4 | Promise.Thenable <T4>, T5 | Promise.Thenable<T5>, T6 | Promise.Thenable<T6>]): Promise<[T1, T2, T3, T4, T5, T6]>;
+  static all <T1, T2, T3, T4, T5> (values: [T1 | Promise.Thenable<T1>, T2 | Promise.Thenable<T2>, T3 | Promise.Thenable<T3>, T4 | Promise.Thenable <T4>, T5 | Promise.Thenable<T5>]): Promise<[T1, T2, T3, T4, T5]>;
+  static all <T1, T2, T3, T4> (values: [T1 | Promise.Thenable<T1>, T2 | Promise.Thenable<T2>, T3 | Promise.Thenable<T3>, T4 | Promise.Thenable <T4>]): Promise<[T1, T2, T3, T4]>;
+  static all <T1, T2, T3> (values: [T1 | Promise.Thenable<T1>, T2 | Promise.Thenable<T2>, T3 | Promise.Thenable<T3>]): Promise<[T1, T2, T3]>;
+  static all <T1, T2> (values: [T1 | Promise.Thenable<T1>, T2 | Promise.Thenable<T2>]): Promise<[T1, T2]>;
+  static all <T1> (values: [T1 | Promise.Thenable<T1>]): Promise<[T1]>;
+  static all <TAll> (values: Array<TAll | Promise.Thenable<TAll>>): Promise<TAll[]>;
+
+  /**
+   * Make a Promise that fulfills when any item fulfills, and rejects if any item rejects.
+   */
+  static race <R> (promises: (R | Promise.Thenable<R>)[]): Promise<R>;
+}
+
+declare namespace Promise {
+  export interface Thenable <R> {
+    then <U> (onFulfilled?: (value: R) => U | Thenable<U>, onRejected?: (error: any) => U | Thenable<U>): Thenable<U>;
+    then <U> (onFulfilled?: (value: R) => U | Thenable<U>, onRejected?: (error: any) => void): Thenable<U>;
+  }
+}
+
+export = Promise;

+ 1 - 0
node_modules/any-promise/index.js

@@ -0,0 +1 @@
+module.exports = require('./register')().Promise

+ 78 - 0
node_modules/any-promise/loader.js

@@ -0,0 +1,78 @@
+"use strict"
+    // global key for user preferred registration
+var REGISTRATION_KEY = '@@any-promise/REGISTRATION',
+    // Prior registration (preferred or detected)
+    registered = null
+
+/**
+ * Registers the given implementation.  An implementation must
+ * be registered prior to any call to `require("any-promise")`,
+ * typically on application load.
+ *
+ * If called with no arguments, will return registration in
+ * following priority:
+ *
+ * For Node.js:
+ *
+ * 1. Previous registration
+ * 2. global.Promise if node.js version >= 0.12
+ * 3. Auto detected promise based on first sucessful require of
+ *    known promise libraries. Note this is a last resort, as the
+ *    loaded library is non-deterministic. node.js >= 0.12 will
+ *    always use global.Promise over this priority list.
+ * 4. Throws error.
+ *
+ * For Browser:
+ *
+ * 1. Previous registration
+ * 2. window.Promise
+ * 3. Throws error.
+ *
+ * Options:
+ *
+ * Promise: Desired Promise constructor
+ * global: Boolean - Should the registration be cached in a global variable to
+ * allow cross dependency/bundle registration?  (default true)
+ */
+module.exports = function(root, loadImplementation){
+  return function register(implementation, opts){
+    implementation = implementation || null
+    opts = opts || {}
+    // global registration unless explicitly  {global: false} in options (default true)
+    var registerGlobal = opts.global !== false;
+
+    // load any previous global registration
+    if(registered === null && registerGlobal){
+      registered = root[REGISTRATION_KEY] || null
+    }
+
+    if(registered !== null
+        && implementation !== null
+        && registered.implementation !== implementation){
+      // Throw error if attempting to redefine implementation
+      throw new Error('any-promise already defined as "'+registered.implementation+
+        '".  You can only register an implementation before the first '+
+        ' call to require("any-promise") and an implementation cannot be changed')
+    }
+
+    if(registered === null){
+      // use provided implementation
+      if(implementation !== null && typeof opts.Promise !== 'undefined'){
+        registered = {
+          Promise: opts.Promise,
+          implementation: implementation
+        }
+      } else {
+        // require implementation if implementation is specified but not provided
+        registered = loadImplementation(implementation)
+      }
+
+      if(registerGlobal){
+        // register preference globally in case multiple installations
+        root[REGISTRATION_KEY] = registered
+      }
+    }
+
+    return registered
+  }
+}

+ 6 - 0
node_modules/any-promise/optional.js

@@ -0,0 +1,6 @@
+"use strict";
+try {
+  module.exports = require('./register')().Promise || null
+} catch(e) {
+  module.exports = null
+}

+ 110 - 0
node_modules/any-promise/package.json

@@ -0,0 +1,110 @@
+{
+  "_args": [
+    [
+      {
+        "raw": "any-promise@^1.3.0",
+        "scope": null,
+        "escapedName": "any-promise",
+        "name": "any-promise",
+        "rawSpec": "^1.3.0",
+        "spec": ">=1.3.0 <2.0.0",
+        "type": "range"
+      },
+      "/home/robert/workspace/xmlrpc/node_modules/jspm-config"
+    ]
+  ],
+  "_from": "any-promise@>=1.3.0 <2.0.0",
+  "_id": "any-promise@1.3.0",
+  "_inCache": true,
+  "_location": "/any-promise",
+  "_nodeVersion": "6.0.0",
+  "_npmOperationalInternal": {
+    "host": "packages-16-east.internal.npmjs.com",
+    "tmp": "tmp/any-promise-1.3.0.tgz_1462709704988_0.08345960266888142"
+  },
+  "_npmUser": {
+    "name": "kevinbeaty",
+    "email": "kevin@simplectic.com"
+  },
+  "_npmVersion": "3.8.6",
+  "_phantomChildren": {},
+  "_requested": {
+    "raw": "any-promise@^1.3.0",
+    "scope": null,
+    "escapedName": "any-promise",
+    "name": "any-promise",
+    "rawSpec": "^1.3.0",
+    "spec": ">=1.3.0 <2.0.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/jspm-config",
+    "/popsicle-retry",
+    "/thenify",
+    "/typings-core/promise-finally"
+  ],
+  "_resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+  "_shasum": "abc6afeedcea52e809cdc0376aed3ce39635d17f",
+  "_shrinkwrap": null,
+  "_spec": "any-promise@^1.3.0",
+  "_where": "/home/robert/workspace/xmlrpc/node_modules/jspm-config",
+  "author": {
+    "name": "Kevin Beaty"
+  },
+  "browser": {
+    "./register.js": "./register-shim.js"
+  },
+  "bugs": {
+    "url": "https://github.com/kevinbeaty/any-promise/issues"
+  },
+  "dependencies": {},
+  "description": "Resolve any installed ES6 compatible promise",
+  "devDependencies": {
+    "ava": "^0.14.0",
+    "bluebird": "^3.0.0",
+    "es6-promise": "^3.0.0",
+    "is-promise": "^2.0.0",
+    "lie": "^3.0.0",
+    "mocha": "^2.0.0",
+    "native-promise-only": "^0.8.0",
+    "phantomjs-prebuilt": "^2.0.0",
+    "pinkie": "^2.0.0",
+    "promise": "^7.0.0",
+    "q": "^1.0.0",
+    "rsvp": "^3.0.0",
+    "vow": "^0.4.0",
+    "when": "^3.0.0",
+    "zuul": "^3.0.0"
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "abc6afeedcea52e809cdc0376aed3ce39635d17f",
+    "tarball": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz"
+  },
+  "gitHead": "39a1034e7345ca5f0f0a2e6cc82f3bf8e308b2cc",
+  "homepage": "http://github.com/kevinbeaty/any-promise",
+  "keywords": [
+    "promise",
+    "es6"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "maintainers": [
+    {
+      "name": "kevinbeaty",
+      "email": "kevin@simplectic.com"
+    }
+  ],
+  "name": "any-promise",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/kevinbeaty/any-promise.git"
+  },
+  "scripts": {
+    "test": "ava"
+  },
+  "typings": "index.d.ts",
+  "version": "1.3.0"
+}

+ 18 - 0
node_modules/any-promise/register-shim.js

@@ -0,0 +1,18 @@
+"use strict";
+module.exports = require('./loader')(window, loadImplementation)
+
+/**
+ * Browser specific loadImplementation.  Always uses `window.Promise`
+ *
+ * To register a custom implementation, must register with `Promise` option.
+ */
+function loadImplementation(){
+  if(typeof window.Promise === 'undefined'){
+    throw new Error("any-promise browser requires a polyfill or explicit registration"+
+      " e.g: require('any-promise/register/bluebird')")
+  }
+  return {
+    Promise: window.Promise,
+    implementation: 'window.Promise'
+  }
+}

+ 17 - 0
node_modules/any-promise/register.d.ts

@@ -0,0 +1,17 @@
+import Promise = require('./index');
+
+declare function register (module?: string, options?: register.Options): register.Register;
+
+declare namespace register {
+  export interface Register {
+    Promise: typeof Promise;
+    implementation: string;
+  }
+
+  export interface Options {
+      Promise?: typeof Promise;
+      global?: boolean
+  }
+}
+
+export = register;

+ 94 - 0
node_modules/any-promise/register.js

@@ -0,0 +1,94 @@
+"use strict"
+module.exports = require('./loader')(global, loadImplementation);
+
+/**
+ * Node.js version of loadImplementation.
+ *
+ * Requires the given implementation and returns the registration
+ * containing {Promise, implementation}
+ *
+ * If implementation is undefined or global.Promise, loads it
+ * Otherwise uses require
+ */
+function loadImplementation(implementation){
+  var impl = null
+
+  if(shouldPreferGlobalPromise(implementation)){
+    // if no implementation or env specified use global.Promise
+    impl = {
+      Promise: global.Promise,
+      implementation: 'global.Promise'
+    }
+  } else if(implementation){
+    // if implementation specified, require it
+    var lib = require(implementation)
+    impl = {
+      Promise: lib.Promise || lib,
+      implementation: implementation
+    }
+  } else {
+    // try to auto detect implementation. This is non-deterministic
+    // and should prefer other branches, but this is our last chance
+    // to load something without throwing error
+    impl = tryAutoDetect()
+  }
+
+  if(impl === null){
+    throw new Error('Cannot find any-promise implementation nor'+
+      ' global.Promise. You must install polyfill or call'+
+      ' require("any-promise/register") with your preferred'+
+      ' implementation, e.g. require("any-promise/register/bluebird")'+
+      ' on application load prior to any require("any-promise").')
+  }
+
+  return impl
+}
+
+/**
+ * Determines if the global.Promise should be preferred if an implementation
+ * has not been registered.
+ */
+function shouldPreferGlobalPromise(implementation){
+  if(implementation){
+    return implementation === 'global.Promise'
+  } else if(typeof global.Promise !== 'undefined'){
+    // Load global promise if implementation not specified
+    // Versions < 0.11 did not have global Promise
+    // Do not use for version < 0.12 as version 0.11 contained buggy versions
+    var version = (/v(\d+)\.(\d+)\.(\d+)/).exec(process.version)
+    return !(version && +version[1] == 0 && +version[2] < 12)
+  }
+
+  // do not have global.Promise or another implementation was specified
+  return false
+}
+
+/**
+ * Look for common libs as last resort there is no guarantee that
+ * this will return a desired implementation or even be deterministic.
+ * The priority is also nearly arbitrary. We are only doing this
+ * for older versions of Node.js <0.12 that do not have a reasonable
+ * global.Promise implementation and we the user has not registered
+ * the preference. This preserves the behavior of any-promise <= 0.1
+ * and may be deprecated or removed in the future
+ */
+function tryAutoDetect(){
+  var libs = [
+      "es6-promise",
+      "promise",
+      "native-promise-only",
+      "bluebird",
+      "rsvp",
+      "when",
+      "q",
+      "pinkie",
+      "lie",
+      "vow"]
+  var i = 0, len = libs.length
+  for(; i < len; i++){
+    try {
+      return loadImplementation(libs[i])
+    } catch(e){}
+  }
+  return null
+}

+ 1 - 0
node_modules/any-promise/register/bluebird.d.ts

@@ -0,0 +1 @@
+export {}

+ 2 - 0
node_modules/any-promise/register/bluebird.js

@@ -0,0 +1,2 @@
+'use strict';
+require('../register')('bluebird', {Promise: require('bluebird')})

+ 1 - 0
node_modules/any-promise/register/es6-promise.d.ts

@@ -0,0 +1 @@
+export {}

+ 2 - 0
node_modules/any-promise/register/es6-promise.js

@@ -0,0 +1,2 @@
+'use strict';
+require('../register')('es6-promise', {Promise: require('es6-promise').Promise})

+ 1 - 0
node_modules/any-promise/register/lie.d.ts

@@ -0,0 +1 @@
+export {}

+ 2 - 0
node_modules/any-promise/register/lie.js

@@ -0,0 +1,2 @@
+'use strict';
+require('../register')('lie', {Promise: require('lie')})

+ 1 - 0
node_modules/any-promise/register/native-promise-only.d.ts

@@ -0,0 +1 @@
+export {}

+ 2 - 0
node_modules/any-promise/register/native-promise-only.js

@@ -0,0 +1,2 @@
+'use strict';
+require('../register')('native-promise-only', {Promise: require('native-promise-only')})

+ 1 - 0
node_modules/any-promise/register/pinkie.d.ts

@@ -0,0 +1 @@
+export {}

+ 2 - 0
node_modules/any-promise/register/pinkie.js

@@ -0,0 +1,2 @@
+'use strict';
+require('../register')('pinkie', {Promise: require('pinkie')})

+ 1 - 0
node_modules/any-promise/register/promise.d.ts

@@ -0,0 +1 @@
+export {}

+ 2 - 0
node_modules/any-promise/register/promise.js

@@ -0,0 +1,2 @@
+'use strict';
+require('../register')('promise', {Promise: require('promise')})

+ 1 - 0
node_modules/any-promise/register/q.d.ts

@@ -0,0 +1 @@
+export {}

+ 2 - 0
node_modules/any-promise/register/q.js

@@ -0,0 +1,2 @@
+'use strict';
+require('../register')('q', {Promise: require('q').Promise})

+ 1 - 0
node_modules/any-promise/register/rsvp.d.ts

@@ -0,0 +1 @@
+export {}

+ 2 - 0
node_modules/any-promise/register/rsvp.js

@@ -0,0 +1,2 @@
+'use strict';
+require('../register')('rsvp', {Promise: require('rsvp').Promise})

+ 1 - 0
node_modules/any-promise/register/vow.d.ts

@@ -0,0 +1 @@
+export {}

+ 2 - 0
node_modules/any-promise/register/vow.js

@@ -0,0 +1,2 @@
+'use strict';
+require('../register')('vow', {Promise: require('vow').Promise})

+ 1 - 0
node_modules/any-promise/register/when.d.ts

@@ -0,0 +1 @@
+export {}

+ 2 - 0
node_modules/any-promise/register/when.js

@@ -0,0 +1,2 @@
+'use strict';
+require('../register')('when', {Promise: require('when').Promise})

+ 4 - 0
node_modules/archy/.travis.yml

@@ -0,0 +1,4 @@
+language: node_js
+node_js:
+  - 0.6
+  - 0.8

+ 18 - 0
node_modules/archy/LICENSE

@@ -0,0 +1,18 @@
+This software is released under the MIT license:
+
+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.

+ 24 - 0
node_modules/archy/examples/beep.js

@@ -0,0 +1,24 @@
+var archy = require('../');
+var s = archy({
+  label : 'beep',
+  nodes : [
+    'ity',
+    {
+      label : 'boop',
+      nodes : [
+        {
+          label : 'o_O',
+          nodes : [
+            {
+              label : 'oh',
+              nodes : [ 'hello', 'puny' ]
+            },
+            'human'
+          ]
+        },
+        'party\ntime!'
+      ]
+    }
+  ]
+});
+console.log(s);

+ 25 - 0
node_modules/archy/examples/multi_line.js

@@ -0,0 +1,25 @@
+var archy = require('../');
+
+var s = archy({
+  label : 'beep\none\ntwo',
+  nodes : [
+    'ity',
+    {
+      label : 'boop',
+      nodes : [
+        {
+          label : 'o_O\nwheee',
+          nodes : [
+            {
+              label : 'oh',
+              nodes : [ 'hello', 'puny\nmeat' ]
+            },
+            'creature'
+          ]
+        },
+        'party\ntime!'
+      ]
+    }
+  ]
+});
+console.log(s);

+ 35 - 0
node_modules/archy/index.js

@@ -0,0 +1,35 @@
+module.exports = function archy (obj, prefix, opts) {
+    if (prefix === undefined) prefix = '';
+    if (!opts) opts = {};
+    var chr = function (s) {
+        var chars = {
+            '│' : '|',
+            '└' : '`',
+            '├' : '+',
+            '─' : '-',
+            '┬' : '-'
+        };
+        return opts.unicode === false ? chars[s] : s;
+    };
+    
+    if (typeof obj === 'string') obj = { label : obj };
+    
+    var nodes = obj.nodes || [];
+    var lines = (obj.label || '').split('\n');
+    var splitter = '\n' + prefix + (nodes.length ? chr('│') : ' ') + ' ';
+    
+    return prefix
+        + lines.join(splitter) + '\n'
+        + nodes.map(function (node, ix) {
+            var last = ix === nodes.length - 1;
+            var more = node.nodes && node.nodes.length;
+            var prefix_ = prefix + (last ? ' ' : chr('│')) + ' ';
+            
+            return prefix
+                + (last ? chr('└') : chr('├')) + chr('─')
+                + (more ? chr('┬') : chr('─')) + ' '
+                + archy(node, prefix_, opts).slice(prefix.length + 2)
+            ;
+        }).join('')
+    ;
+};

+ 114 - 0
node_modules/archy/package.json

@@ -0,0 +1,114 @@
+{
+  "_args": [
+    [
+      {
+        "raw": "archy@^1.0.0",
+        "scope": null,
+        "escapedName": "archy",
+        "name": "archy",
+        "rawSpec": "^1.0.0",
+        "spec": ">=1.0.0 <2.0.0",
+        "type": "range"
+      },
+      "/home/robert/workspace/xmlrpc/node_modules/typings"
+    ]
+  ],
+  "_from": "archy@>=1.0.0 <2.0.0",
+  "_id": "archy@1.0.0",
+  "_inCache": true,
+  "_location": "/archy",
+  "_npmUser": {
+    "name": "substack",
+    "email": "mail@substack.net"
+  },
+  "_npmVersion": "1.4.25",
+  "_phantomChildren": {},
+  "_requested": {
+    "raw": "archy@^1.0.0",
+    "scope": null,
+    "escapedName": "archy",
+    "name": "archy",
+    "rawSpec": "^1.0.0",
+    "spec": ">=1.0.0 <2.0.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/typings"
+  ],
+  "_resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
+  "_shasum": "f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40",
+  "_shrinkwrap": null,
+  "_spec": "archy@^1.0.0",
+  "_where": "/home/robert/workspace/xmlrpc/node_modules/typings",
+  "author": {
+    "name": "James Halliday",
+    "email": "mail@substack.net",
+    "url": "http://substack.net"
+  },
+  "bugs": {
+    "url": "https://github.com/substack/node-archy/issues"
+  },
+  "dependencies": {},
+  "description": "render nested hierarchies `npm ls` style with unicode pipes",
+  "devDependencies": {
+    "tap": "~0.3.3",
+    "tape": "~0.1.1"
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40",
+    "tarball": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz"
+  },
+  "gitHead": "30223c16191e877bf027b15b12daf077b9b55b84",
+  "homepage": "https://github.com/substack/node-archy",
+  "keywords": [
+    "hierarchy",
+    "npm ls",
+    "unicode",
+    "pretty",
+    "print"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "maintainers": [
+    {
+      "name": "substack",
+      "email": "mail@substack.net"
+    }
+  ],
+  "name": "archy",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/substack/node-archy.git"
+  },
+  "scripts": {
+    "test": "tap test"
+  },
+  "testling": {
+    "files": "test/*.js",
+    "browsers": {
+      "iexplore": [
+        "6.0",
+        "7.0",
+        "8.0",
+        "9.0"
+      ],
+      "chrome": [
+        "20.0"
+      ],
+      "firefox": [
+        "10.0",
+        "15.0"
+      ],
+      "safari": [
+        "5.1"
+      ],
+      "opera": [
+        "12.0"
+      ]
+    }
+  },
+  "version": "1.0.0"
+}

+ 88 - 0
node_modules/archy/readme.markdown

@@ -0,0 +1,88 @@
+# archy
+
+Render nested hierarchies `npm ls` style with unicode pipes.
+
+[![browser support](http://ci.testling.com/substack/node-archy.png)](http://ci.testling.com/substack/node-archy)
+
+[![build status](https://secure.travis-ci.org/substack/node-archy.png)](http://travis-ci.org/substack/node-archy)
+
+# example
+
+``` js
+var archy = require('archy');
+var s = archy({
+  label : 'beep',
+  nodes : [
+    'ity',
+    {
+      label : 'boop',
+      nodes : [
+        {
+          label : 'o_O',
+          nodes : [
+            {
+              label : 'oh',
+              nodes : [ 'hello', 'puny' ]
+            },
+            'human'
+          ]
+        },
+        'party\ntime!'
+      ]
+    }
+  ]
+});
+console.log(s);
+```
+
+output
+
+```
+beep
+├── ity
+└─┬ boop
+  ├─┬ o_O
+  │ ├─┬ oh
+  │ │ ├── hello
+  │ │ └── puny
+  │ └── human
+  └── party
+      time!
+```
+
+# methods
+
+var archy = require('archy')
+
+## archy(obj, prefix='', opts={})
+
+Return a string representation of `obj` with unicode pipe characters like how
+`npm ls` looks.
+
+`obj` should be a tree of nested objects with `'label'` and `'nodes'` fields.
+`'label'` is a string of text to display at a node level and `'nodes'` is an
+array of the descendents of the current node.
+
+If a node is a string, that string will be used as the `'label'` and an empty
+array of `'nodes'` will be used.
+
+`prefix` gets prepended to all the lines and is used by the algorithm to
+recursively update.
+
+If `'label'` has newlines they will be indented at the present indentation level
+with the current prefix.
+
+To disable unicode results in favor of all-ansi output set `opts.unicode` to
+`false`.
+
+# install
+
+With [npm](http://npmjs.org) do:
+
+```
+npm install archy
+```
+
+# license
+
+MIT

+ 40 - 0
node_modules/archy/test/beep.js

@@ -0,0 +1,40 @@
+var test = require('tape');
+var archy = require('../');
+
+test('beep', function (t) {
+    var s = archy({
+      label : 'beep',
+      nodes : [
+        'ity',
+        {
+          label : 'boop',
+          nodes : [
+            {
+              label : 'o_O',
+              nodes : [
+                {
+                  label : 'oh',
+                  nodes : [ 'hello', 'puny' ]
+                },
+                'human'
+              ]
+            },
+            'party!'
+          ]
+        }
+      ]
+    });
+    t.equal(s, [
+        'beep',
+        '├── ity',
+        '└─┬ boop',
+        '  ├─┬ o_O',
+        '  │ ├─┬ oh',
+        '  │ │ ├── hello',
+        '  │ │ └── puny',
+        '  │ └── human',
+        '  └── party!',
+        ''
+    ].join('\n'));
+    t.end();
+});

+ 45 - 0
node_modules/archy/test/multi_line.js

@@ -0,0 +1,45 @@
+var test = require('tape');
+var archy = require('../');
+
+test('multi-line', function (t) {
+    var s = archy({
+      label : 'beep\none\ntwo',
+      nodes : [
+        'ity',
+        {
+          label : 'boop',
+          nodes : [
+            {
+              label : 'o_O\nwheee',
+              nodes : [
+                {
+                  label : 'oh',
+                  nodes : [ 'hello', 'puny\nmeat' ]
+                },
+                'creature'
+              ]
+            },
+            'party\ntime!'
+          ]
+        }
+      ]
+    });
+    t.equal(s, [
+        'beep',
+        '│ one',
+        '│ two',
+        '├── ity',
+        '└─┬ boop',
+        '  ├─┬ o_O',
+        '  │ │ wheee',
+        '  │ ├─┬ oh',
+        '  │ │ ├── hello',
+        '  │ │ └── puny',
+        '  │ │     meat',
+        '  │ └── creature',
+        '  └── party',
+        '      time!',
+        ''
+    ].join('\n'));
+    t.end();
+});

+ 40 - 0
node_modules/archy/test/non_unicode.js

@@ -0,0 +1,40 @@
+var test = require('tape');
+var archy = require('../');
+
+test('beep', function (t) {
+    var s = archy({
+      label : 'beep',
+      nodes : [
+        'ity',
+        {
+          label : 'boop',
+          nodes : [
+            {
+              label : 'o_O',
+              nodes : [
+                {
+                  label : 'oh',
+                  nodes : [ 'hello', 'puny' ]
+                },
+                'human'
+              ]
+            },
+            'party!'
+          ]
+        }
+      ]
+    }, '', { unicode : false });
+    t.equal(s, [
+        'beep',
+        '+-- ity',
+        '`-- boop',
+        '  +-- o_O',
+        '  | +-- oh',
+        '  | | +-- hello',
+        '  | | `-- puny',
+        '  | `-- human',
+        '  `-- party!',
+        ''
+    ].join('\n'));
+    t.end();
+});

+ 62 - 0
node_modules/array-uniq/index.js

@@ -0,0 +1,62 @@
+'use strict';
+
+// there's 3 implementations written in increasing order of efficiency
+
+// 1 - no Set type is defined
+function uniqNoSet(arr) {
+	var ret = [];
+
+	for (var i = 0; i < arr.length; i++) {
+		if (ret.indexOf(arr[i]) === -1) {
+			ret.push(arr[i]);
+		}
+	}
+
+	return ret;
+}
+
+// 2 - a simple Set type is defined
+function uniqSet(arr) {
+	var seen = new Set();
+	return arr.filter(function (el) {
+		if (!seen.has(el)) {
+			seen.add(el);
+			return true;
+		}
+
+		return false;
+	});
+}
+
+// 3 - a standard Set type is defined and it has a forEach method
+function uniqSetWithForEach(arr) {
+	var ret = [];
+
+	(new Set(arr)).forEach(function (el) {
+		ret.push(el);
+	});
+
+	return ret;
+}
+
+// V8 currently has a broken implementation
+// https://github.com/joyent/node/issues/8449
+function doesForEachActuallyWork() {
+	var ret = false;
+
+	(new Set([true])).forEach(function (el) {
+		ret = el;
+	});
+
+	return ret === true;
+}
+
+if ('Set' in global) {
+	if (typeof Set.prototype.forEach === 'function' && doesForEachActuallyWork()) {
+		module.exports = uniqSetWithForEach;
+	} else {
+		module.exports = uniqSet;
+	}
+} else {
+	module.exports = uniqNoSet;
+}

+ 21 - 0
node_modules/array-uniq/license

@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+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.

+ 105 - 0
node_modules/array-uniq/package.json

@@ -0,0 +1,105 @@
+{
+  "_args": [
+    [
+      {
+        "raw": "array-uniq@^1.0.2",
+        "scope": null,
+        "escapedName": "array-uniq",
+        "name": "array-uniq",
+        "rawSpec": "^1.0.2",
+        "spec": ">=1.0.2 <2.0.0",
+        "type": "range"
+      },
+      "/home/robert/workspace/xmlrpc/node_modules/typings-core"
+    ]
+  ],
+  "_from": "array-uniq@>=1.0.2 <2.0.0",
+  "_id": "array-uniq@1.0.3",
+  "_inCache": true,
+  "_location": "/array-uniq",
+  "_nodeVersion": "4.4.2",
+  "_npmOperationalInternal": {
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/array-uniq-1.0.3.tgz_1466079716839_0.9139188586268574"
+  },
+  "_npmUser": {
+    "name": "sindresorhus",
+    "email": "sindresorhus@gmail.com"
+  },
+  "_npmVersion": "2.15.0",
+  "_phantomChildren": {},
+  "_requested": {
+    "raw": "array-uniq@^1.0.2",
+    "scope": null,
+    "escapedName": "array-uniq",
+    "name": "array-uniq",
+    "rawSpec": "^1.0.2",
+    "spec": ">=1.0.2 <2.0.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/typings-core"
+  ],
+  "_resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+  "_shasum": "af6ac877a25cc7f74e058894753858dfdb24fdb6",
+  "_shrinkwrap": null,
+  "_spec": "array-uniq@^1.0.2",
+  "_where": "/home/robert/workspace/xmlrpc/node_modules/typings-core",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/array-uniq/issues"
+  },
+  "dependencies": {},
+  "description": "Create an array without duplicates",
+  "devDependencies": {
+    "ava": "*",
+    "es6-set": "^0.1.0",
+    "require-uncached": "^1.0.2",
+    "xo": "*"
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "af6ac877a25cc7f74e058894753858dfdb24fdb6",
+    "tarball": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "gitHead": "3b5bf5a90a585b3950284d575f33d09663f6083a",
+  "homepage": "https://github.com/sindresorhus/array-uniq#readme",
+  "keywords": [
+    "array",
+    "arr",
+    "set",
+    "uniq",
+    "unique",
+    "es6",
+    "duplicate",
+    "remove"
+  ],
+  "license": "MIT",
+  "maintainers": [
+    {
+      "name": "sindresorhus",
+      "email": "sindresorhus@gmail.com"
+    }
+  ],
+  "name": "array-uniq",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/array-uniq.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "1.0.3"
+}

+ 30 - 0
node_modules/array-uniq/readme.md

@@ -0,0 +1,30 @@
+# array-uniq [![Build Status](https://travis-ci.org/sindresorhus/array-uniq.svg?branch=master)](https://travis-ci.org/sindresorhus/array-uniq)
+
+> Create an array without duplicates
+
+It's already pretty fast, but will be much faster when [Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) becomes available in V8 (especially with large arrays).
+
+
+## Install
+
+```
+$ npm install --save array-uniq
+```
+
+
+## Usage
+
+```js
+const arrayUniq = require('array-uniq');
+
+arrayUniq([1, 1, 2, 3, 3]);
+//=> [1, 2, 3]
+
+arrayUniq(['foo', 'foo', 'bar', 'foo']);
+//=> ['foo', 'bar']
+```
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)

+ 21 - 0
node_modules/asynckit/LICENSE

@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 Alex Indigo
+
+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.

+ 233 - 0
node_modules/asynckit/README.md

@@ -0,0 +1,233 @@
+# asynckit [![NPM Module](https://img.shields.io/npm/v/asynckit.svg?style=flat)](https://www.npmjs.com/package/asynckit)
+
+Minimal async jobs utility library, with streams support.
+
+[![PhantomJS Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=browser&style=flat)](https://travis-ci.org/alexindigo/asynckit)
+[![Linux Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=linux:0.12-6.x&style=flat)](https://travis-ci.org/alexindigo/asynckit)
+[![Windows Build](https://img.shields.io/appveyor/ci/alexindigo/asynckit/v0.4.0.svg?label=windows:0.12-6.x&style=flat)](https://ci.appveyor.com/project/alexindigo/asynckit)
+
+[![Coverage Status](https://img.shields.io/coveralls/alexindigo/asynckit/v0.4.0.svg?label=code+coverage&style=flat)](https://coveralls.io/github/alexindigo/asynckit?branch=master)
+[![Dependency Status](https://img.shields.io/david/alexindigo/asynckit/v0.4.0.svg?style=flat)](https://david-dm.org/alexindigo/asynckit)
+[![bitHound Overall Score](https://www.bithound.io/github/alexindigo/asynckit/badges/score.svg)](https://www.bithound.io/github/alexindigo/asynckit)
+
+<!-- [![Readme](https://img.shields.io/badge/readme-tested-brightgreen.svg?style=flat)](https://www.npmjs.com/package/reamde) -->
+
+AsyncKit provides harness for `parallel` and `serial` iterators over list of items represented by arrays or objects.
+Optionally it accepts abort function (should be synchronously return by iterator for each item), and terminates left over jobs upon an error event. For specific iteration order built-in (`ascending` and `descending`) and custom sort helpers also supported, via `asynckit.serialOrdered` method.
+
+It ensures async operations to keep behavior more stable and prevent `Maximum call stack size exceeded` errors, from sync iterators.
+
+| compression        |     size |
+| :----------------- | -------: |
+| asynckit.js        | 12.34 kB |
+| asynckit.min.js    |  4.11 kB |
+| asynckit.min.js.gz |  1.47 kB |
+
+
+## Install
+
+```sh
+$ npm install --save asynckit
+```
+
+## Examples
+
+### Parallel Jobs
+
+Runs iterator over provided array in parallel. Stores output in the `result` array,
+on the matching positions. In unlikely event of an error from one of the jobs,
+will terminate rest of the active jobs (if abort function is provided)
+and return error along with salvaged data to the main callback function.
+
+#### Input Array
+
+```javascript
+var parallel = require('asynckit').parallel
+  , assert   = require('assert')
+  ;
+
+var source         = [ 1, 1, 4, 16, 64, 32, 8, 2 ]
+  , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ]
+  , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ]
+  , target         = []
+  ;
+
+parallel(source, asyncJob, function(err, result)
+{
+  assert.deepEqual(result, expectedResult);
+  assert.deepEqual(target, expectedTarget);
+});
+
+// async job accepts one element from the array
+// and a callback function
+function asyncJob(item, cb)
+{
+  // different delays (in ms) per item
+  var delay = item * 25;
+
+  // pretend different jobs take different time to finish
+  // and not in consequential order
+  var timeoutId = setTimeout(function() {
+    target.push(item);
+    cb(null, item * 2);
+  }, delay);
+
+  // allow to cancel "leftover" jobs upon error
+  // return function, invoking of which will abort this job
+  return clearTimeout.bind(null, timeoutId);
+}
+```
+
+More examples could be found in [test/test-parallel-array.js](test/test-parallel-array.js).
+
+#### Input Object
+
+Also it supports named jobs, listed via object.
+
+```javascript
+var parallel = require('asynckit/parallel')
+  , assert   = require('assert')
+  ;
+
+var source         = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 }
+  , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 }
+  , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ]
+  , expectedKeys   = [ 'first', 'one', 'two', 'four', 'eight', 'sixteen', 'thirtyTwo', 'sixtyFour' ]
+  , target         = []
+  , keys           = []
+  ;
+
+parallel(source, asyncJob, function(err, result)
+{
+  assert.deepEqual(result, expectedResult);
+  assert.deepEqual(target, expectedTarget);
+  assert.deepEqual(keys, expectedKeys);
+});
+
+// supports full value, key, callback (shortcut) interface
+function asyncJob(item, key, cb)
+{
+  // different delays (in ms) per item
+  var delay = item * 25;
+
+  // pretend different jobs take different time to finish
+  // and not in consequential order
+  var timeoutId = setTimeout(function() {
+    keys.push(key);
+    target.push(item);
+    cb(null, item * 2);
+  }, delay);
+
+  // allow to cancel "leftover" jobs upon error
+  // return function, invoking of which will abort this job
+  return clearTimeout.bind(null, timeoutId);
+}
+```
+
+More examples could be found in [test/test-parallel-object.js](test/test-parallel-object.js).
+
+### Serial Jobs
+
+Runs iterator over provided array sequentially. Stores output in the `result` array,
+on the matching positions. In unlikely event of an error from one of the jobs,
+will not proceed to the rest of the items in the list
+and return error along with salvaged data to the main callback function.
+
+#### Input Array
+
+```javascript
+var serial = require('asynckit/serial')
+  , assert = require('assert')
+  ;
+
+var source         = [ 1, 1, 4, 16, 64, 32, 8, 2 ]
+  , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ]
+  , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ]
+  , target         = []
+  ;
+
+serial(source, asyncJob, function(err, result)
+{
+  assert.deepEqual(result, expectedResult);
+  assert.deepEqual(target, expectedTarget);
+});
+
+// extended interface (item, key, callback)
+// also supported for arrays
+function asyncJob(item, key, cb)
+{
+  target.push(key);
+
+  // it will be automatically made async
+  // even it iterator "returns" in the same event loop
+  cb(null, item * 2);
+}
+```
+
+More examples could be found in [test/test-serial-array.js](test/test-serial-array.js).
+
+#### Input Object
+
+Also it supports named jobs, listed via object.
+
+```javascript
+var serial = require('asynckit').serial
+  , assert = require('assert')
+  ;
+
+var source         = [ 1, 1, 4, 16, 64, 32, 8, 2 ]
+  , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ]
+  , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ]
+  , target         = []
+  ;
+
+var source         = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 }
+  , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 }
+  , expectedTarget = [ 1, 1, 4, 16, 64, 32, 8, 2 ]
+  , target         = []
+  ;
+
+
+serial(source, asyncJob, function(err, result)
+{
+  assert.deepEqual(result, expectedResult);
+  assert.deepEqual(target, expectedTarget);
+});
+
+// shortcut interface (item, callback)
+// works for object as well as for the arrays
+function asyncJob(item, cb)
+{
+  target.push(item);
+
+  // it will be automatically made async
+  // even it iterator "returns" in the same event loop
+  cb(null, item * 2);
+}
+```
+
+More examples could be found in [test/test-serial-object.js](test/test-serial-object.js).
+
+_Note: Since _object_ is an _unordered_ collection of properties,
+it may produce unexpected results with sequential iterations.
+Whenever order of the jobs' execution is important please use `serialOrdered` method._
+
+### Ordered Serial Iterations
+
+TBD
+
+For example [compare-property](compare-property) package.
+
+### Streaming interface
+
+TBD
+
+## Want to Know More?
+
+More examples can be found in [test folder](test/).
+
+Or open an [issue](https://github.com/alexindigo/asynckit/issues) with questions and/or suggestions.
+
+## License
+
+AsyncKit is licensed under the MIT license.

+ 76 - 0
node_modules/asynckit/bench.js

@@ -0,0 +1,76 @@
+/* eslint no-console: "off" */
+
+var asynckit = require('./')
+  , async    = require('async')
+  , assert   = require('assert')
+  , expected = 0
+  ;
+
+var Benchmark = require('benchmark');
+var suite = new Benchmark.Suite;
+
+var source = [];
+for (var z = 1; z < 100; z++)
+{
+  source.push(z);
+  expected += z;
+}
+
+suite
+// add tests
+
+.add('async.map', function(deferred)
+{
+  var total = 0;
+
+  async.map(source,
+  function(i, cb)
+  {
+    setImmediate(function()
+    {
+      total += i;
+      cb(null, total);
+    });
+  },
+  function(err, result)
+  {
+    assert.ifError(err);
+    assert.equal(result[result.length - 1], expected);
+    deferred.resolve();
+  });
+}, {'defer': true})
+
+
+.add('asynckit.parallel', function(deferred)
+{
+  var total = 0;
+
+  asynckit.parallel(source,
+  function(i, cb)
+  {
+    setImmediate(function()
+    {
+      total += i;
+      cb(null, total);
+    });
+  },
+  function(err, result)
+  {
+    assert.ifError(err);
+    assert.equal(result[result.length - 1], expected);
+    deferred.resolve();
+  });
+}, {'defer': true})
+
+
+// add listeners
+.on('cycle', function(ev)
+{
+  console.log(String(ev.target));
+})
+.on('complete', function()
+{
+  console.log('Fastest is ' + this.filter('fastest').map('name'));
+})
+// run async
+.run({ 'async': true });

+ 6 - 0
node_modules/asynckit/index.js

@@ -0,0 +1,6 @@
+module.exports =
+{
+  parallel      : require('./parallel.js'),
+  serial        : require('./serial.js'),
+  serialOrdered : require('./serialOrdered.js')
+};

+ 29 - 0
node_modules/asynckit/lib/abort.js

@@ -0,0 +1,29 @@
+// API
+module.exports = abort;
+
+/**
+ * Aborts leftover active jobs
+ *
+ * @param {object} state - current state object
+ */
+function abort(state)
+{
+  Object.keys(state.jobs).forEach(clean.bind(state));
+
+  // reset leftover jobs
+  state.jobs = {};
+}
+
+/**
+ * Cleans up leftover job by invoking abort function for the provided job id
+ *
+ * @this  state
+ * @param {string|number} key - job id to abort
+ */
+function clean(key)
+{
+  if (typeof this.jobs[key] == 'function')
+  {
+    this.jobs[key]();
+  }
+}

+ 34 - 0
node_modules/asynckit/lib/async.js

@@ -0,0 +1,34 @@
+var defer = require('./defer.js');
+
+// API
+module.exports = async;
+
+/**
+ * Runs provided callback asynchronously
+ * even if callback itself is not
+ *
+ * @param   {function} callback - callback to invoke
+ * @returns {function} - augmented callback
+ */
+function async(callback)
+{
+  var isAsync = false;
+
+  // check if async happened
+  defer(function() { isAsync = true; });
+
+  return function async_callback(err, result)
+  {
+    if (isAsync)
+    {
+      callback(err, result);
+    }
+    else
+    {
+      defer(function nextTick_callback()
+      {
+        callback(err, result);
+      });
+    }
+  };
+}

+ 26 - 0
node_modules/asynckit/lib/defer.js

@@ -0,0 +1,26 @@
+module.exports = defer;
+
+/**
+ * Runs provided function on next iteration of the event loop
+ *
+ * @param {function} fn - function to run
+ */
+function defer(fn)
+{
+  var nextTick = typeof setImmediate == 'function'
+    ? setImmediate
+    : (
+      typeof process == 'object' && typeof process.nextTick == 'function'
+      ? process.nextTick
+      : null
+    );
+
+  if (nextTick)
+  {
+    nextTick(fn);
+  }
+  else
+  {
+    setTimeout(fn, 0);
+  }
+}

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.