From 5534fba31a9269080cc01297da3d0d3f6a6c14e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Walde=CC=81n=20=28Exp=29?= Date: Sat, 9 Apr 2022 13:48:07 +0200 Subject: [PATCH] replace url-parse lib with native URL interface --- CHANGELOG.md | 4 + lib/connect.js | 32 +- package-lock.json | 985 +++++++++------------------------------------- package.json | 5 +- test/connect.js | 143 ++++--- 5 files changed, 269 insertions(+), 900 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5426d6b2..6f00b497 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Change log for amqplib +## Unreleased + + * Replace url-parse lib with native URL interface + ## Changes in v0.8.0 git log v0.7.1..v0.8.0 diff --git a/lib/connect.js b/lib/connect.js index 478dd76c..57d034f0 100644 --- a/lib/connect.js +++ b/lib/connect.js @@ -6,7 +6,6 @@ 'use strict'; -var URL = require('url-parse'); var QS = require('querystring'); var Connection = require('./connection').Connection; var fmt = require('util').format; @@ -43,16 +42,16 @@ var CLIENT_PROPERTIES = { }; // Construct the main frames used in the opening handshake -function openFrames(vhost, query, credentials, extraClientProperties) { +function openFrames(vhost, searchParams, credentials, extraClientProperties) { if (!vhost) vhost = '/'; else vhost = QS.unescape(vhost); - var query = query || {}; + var searchParams = searchParams || new URLSearchParams(); function intOrDefault(val, def) { - return (val === undefined) ? def : parseInt(val); + return (val === null) ? def : parseInt(val); } var clientProperties = Object.create(CLIENT_PROPERTIES); @@ -62,12 +61,12 @@ function openFrames(vhost, query, credentials, extraClientProperties) { 'clientProperties': copyInto(extraClientProperties, clientProperties), 'mechanism': credentials.mechanism, 'response': credentials.response(), - 'locale': query.locale || 'en_US', + 'locale': searchParams.get('locale') || 'en_US', // tune-ok - 'channelMax': intOrDefault(query.channelMax, 0), - 'frameMax': intOrDefault(query.frameMax, 0x1000), - 'heartbeat': intOrDefault(query.heartbeat, 0), + 'channelMax': intOrDefault(searchParams.get('channelMax'), 0), + 'frameMax': intOrDefault(searchParams.get('frameMax'), 0x1000), + 'heartbeat': intOrDefault(searchParams.get('heartbeat'), 0), // open 'virtualHost': vhost, @@ -104,7 +103,7 @@ function connect(url, socketOptions, openCallback) { var protocol, fields; if (typeof url === 'object') { - protocol = (url.protocol || 'amqp') + ':'; + protocol = url.protocol || 'amqp:'; sockopts.host = url.hostname; sockopts.servername = url.hostname; sockopts.port = url.port || ((protocol === 'amqp:') ? 5672 : 5671); @@ -112,29 +111,22 @@ function connect(url, socketOptions, openCallback) { var user, pass; // Only default if both are missing, to have the same behaviour as // the stringly URL. - if (url.username == undefined && url.password == undefined) { + if (!url.username && !url.password) { user = 'guest'; pass = 'guest'; } else { user = url.username || ''; pass = url.password || ''; } - var config = { - locale: url.locale, - channelMax: url.channelMax, - frameMax: url.frameMax, - heartbeat: url.heartbeat, - }; - - fields = openFrames(url.vhost, config, sockopts.credentials || credentials.plain(user, pass), extraClientProperties); + fields = openFrames(url.vhost, url.searchParams, sockopts.credentials || credentials.plain(user, pass), extraClientProperties); } else { - var parts = URL(url, true); // yes, parse the query string + var parts = new URL(url); protocol = parts.protocol; sockopts.host = parts.hostname; sockopts.servername = parts.hostname; sockopts.port = parseInt(parts.port) || ((protocol === 'amqp:') ? 5672 : 5671); var vhost = parts.pathname ? parts.pathname.substr(1) : null; - fields = openFrames(vhost, parts.query, sockopts.credentials || credentialsFromUrl(parts), extraClientProperties); + fields = openFrames(vhost, parts.searchParams, sockopts.credentials || credentialsFromUrl(parts), extraClientProperties); } var sockok = false; diff --git a/package-lock.json b/package-lock.json index ecf991ad..0365bab6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,791 +1,19 @@ { "name": "amqplib", "version": "0.8.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "amqplib", - "version": "0.8.0", - "license": "MIT", - "dependencies": { - "bitsyntax": "~0.1.0", - "bluebird": "^3.7.2", - "buffer-more-ints": "~1.0.0", - "readable-stream": "1.x >=1.1.9", - "url-parse": "~1.5.10" - }, - "devDependencies": { - "claire": "0.4.1", - "istanbul": "0.1.x", - "mocha": "^3.5.3", - "uglify-js": "2.8.x" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/abbrev": { - "version": "1.0.9", - "dev": true, - "license": "ISC" - }, - "node_modules/align-text": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/amdefine": { - "version": "1.0.1", - "dev": true, - "license": "BSD-3-Clause OR MIT", - "engines": { - "node": ">=0.4.2" - } - }, - "node_modules/async": { - "version": "0.2.10", - "dev": true - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/bitsyntax": { - "version": "0.1.0", - "license": "MIT", - "dependencies": { - "buffer-more-ints": "~1.0.0", - "debug": "~2.6.9", - "safe-buffer": "~5.1.2" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/bitsyntax/node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT" - }, - "node_modules/bluebird": { - "version": "3.7.2", - "license": "MIT" - }, - "node_modules/boo": { - "version": "1.2.4", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.0", - "dev": true, - "license": "ISC" - }, - "node_modules/buffer-more-ints": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/camelcase": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/center-align": { - "version": "0.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/claire": { - "version": "0.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "boo": "~1.2.4", - "flaw": "~0.1.0", - "prelude-ls": "~0.6.0" - } - }, - "node_modules/cliui": { - "version": "2.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "node_modules/cliui/node_modules/wordwrap": { - "version": "0.0.2", - "dev": true, - "license": "MIT/X11", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/commander": { - "version": "2.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-readlink": ">= 1.0.0" - }, - "engines": { - "node": ">= 0.6.x" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/debug": { - "version": "2.6.9", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/diff": { - "version": "3.2.0", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "0.0.23", - "dev": true, - "dependencies": { - "esprima": "~1.0.2", - "estraverse": "~0.0.4" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=0.4.0" - }, - "optionalDependencies": { - "source-map": ">= 0.1.2" - } - }, - "node_modules/esprima": { - "version": "1.0.4", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/estraverse": { - "version": "0.0.4", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/fileset": { - "version": "0.1.8", - "dev": true, - "dependencies": { - "glob": "3.x", - "minimatch": "0.x" - } - }, - "node_modules/flaw": { - "version": "0.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/glob": { - "version": "3.2.11", - "dev": true, - "license": "BSD", - "dependencies": { - "inherits": "2", - "minimatch": "0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "0.3.0", - "deprecated": "Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue", - "dev": true, - "license": "MIT", - "dependencies": { - "lru-cache": "2", - "sigmund": "~1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/graceful-readlink": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/growl": { - "version": "1.9.2", - "dev": true, - "license": "MIT" - }, - "node_modules/handlebars": { - "version": "1.0.12", - "dev": true, - "dependencies": { - "optimist": "~0.3", - "uglify-js": "~2.3" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - } - }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.1.43", - "dev": true, - "dependencies": { - "amdefine": ">=0.0.4" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/handlebars/node_modules/uglify-js": { - "version": "2.3.6", - "dev": true, - "dependencies": { - "async": "~0.2.6", - "optimist": "~0.3.5", - "source-map": "~0.1.7" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/has-flag": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/he": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "dev": true, - "license": "MIT" - }, - "node_modules/isarray": { - "version": "0.0.1", - "license": "MIT" - }, - "node_modules/istanbul": { - "version": "0.1.46", - "deprecated": "This module is no longer maintained, try this instead:\n npm i nyc\nVisit https://istanbul.js.org/integrations for other alternatives.", - "dev": true, - "dependencies": { - "abbrev": "1.0.x", - "async": "0.2.x", - "escodegen": "0.0.23", - "esprima": "1.0.x", - "fileset": "0.1.x", - "handlebars": "1.0.x", - "mkdirp": "0.3.x", - "nopt": "2.1.x", - "resolve": "0.5.x", - "which": "1.0.x", - "wordwrap": "0.0.x" - }, - "bin": { - "istanbul": "lib/cli.js" - } - }, - "node_modules/json3": { - "version": "3.3.2", - "deprecated": "Please use the native JSON object instead of JSON 3", - "dev": true - }, - "node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lazy-cache": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lodash._baseassign": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash._basecopy": "^3.0.0", - "lodash.keys": "^3.0.0" - } - }, - "node_modules/lodash._basecopy": { - "version": "3.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash._basecreate": { - "version": "3.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash._getnative": { - "version": "3.9.1", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash._isiterateecall": { - "version": "3.0.9", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.create": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash._baseassign": "^3.0.0", - "lodash._basecreate": "^3.0.0", - "lodash._isiterateecall": "^3.0.0" - } - }, - "node_modules/lodash.isarguments": { - "version": "3.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isarray": { - "version": "3.0.4", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.keys": { - "version": "3.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, - "node_modules/longest": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lru-cache": { - "version": "2.7.3", - "dev": true, - "license": "ISC" - }, - "node_modules/minimatch": { - "version": "0.4.0", - "deprecated": "Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue", - "dev": true, - "license": "MIT", - "dependencies": { - "lru-cache": "2", - "sigmund": "~1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "0.0.8", - "dev": true, - "license": "MIT" - }, - "node_modules/mkdirp": { - "version": "0.3.5", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", - "dev": true, - "license": "MIT" - }, - "node_modules/mocha": { - "version": "3.5.3", - "dev": true, - "license": "MIT", - "dependencies": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.6.8", - "diff": "3.2.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.1", - "growl": "1.9.2", - "he": "1.1.1", - "json3": "3.3.2", - "lodash.create": "3.1.1", - "mkdirp": "0.5.1", - "supports-color": "3.1.2" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 0.10.x", - "npm": ">= 1.4.x" - } - }, - "node_modules/mocha/node_modules/debug": { - "version": "2.6.8", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/mocha/node_modules/glob": { - "version": "7.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "3.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mocha/node_modules/mkdirp": { - "version": "0.5.1", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "0.0.8" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/nopt": { - "version": "2.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/once": { - "version": "1.4.0", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optimist": { - "version": "0.3.7", - "dev": true, - "license": "MIT/X11", - "dependencies": { - "wordwrap": "~0.0.2" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/prelude-ls": { - "version": "0.6.0", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "license": "MIT" - }, - "node_modules/readable-stream": { - "version": "1.1.14", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/resolve": { - "version": "0.5.1", - "dev": true, - "license": "MIT" - }, - "node_modules/right-align": { - "version": "0.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "align-text": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sigmund": { - "version": "1.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/source-map": { - "version": "0.7.3", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/string_decoder": { - "version": "0.10.31", - "license": "MIT" - }, - "node_modules/supports-color": { - "version": "3.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^1.0.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uglify-js": { - "version": "2.8.29", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "source-map": "~0.5.1", - "yargs": "~3.10.0" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - }, - "optionalDependencies": { - "uglify-to-browserify": "~1.0.0" - } - }, - "node_modules/uglify-js/node_modules/source-map": { - "version": "0.5.7", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uglify-to-browserify": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/which": { - "version": "1.0.9", - "dev": true, - "license": "ISC", - "bin": { - "which": "bin/which" - } - }, - "node_modules/window-size": { - "version": "0.1.0", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/wordwrap": { - "version": "0.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "dev": true, - "license": "ISC" - }, - "node_modules/yargs": { - "version": "3.10.0", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - }, "dependencies": { "abbrev": { "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", "dev": true }, "align-text": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { "kind-of": "^3.0.2", @@ -795,18 +23,26 @@ }, "amdefine": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, "async": { "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", "dev": true }, "balanced-match": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, "bitsyntax": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bitsyntax/-/bitsyntax-0.1.0.tgz", + "integrity": "sha512-ikAdCnrloKmFOugAfxWws89/fPc+nw0OOG1IzIE72uSOg/A3cYptKCjSUhDTuj7fhsJtzkzlv7l3b8PzRHLN0Q==", "requires": { "buffer-more-ints": "~1.0.0", "debug": "~2.6.9", @@ -814,19 +50,27 @@ }, "dependencies": { "safe-buffer": { - "version": "5.1.2" + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, "bluebird": { - "version": "3.7.2" + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "boo": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/boo/-/boo-1.2.4.tgz", + "integrity": "sha1-szMxw2xK552C9P0ORJBgTLfFE7U=", "dev": true }, "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -835,17 +79,25 @@ }, "browser-stdout": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", "dev": true }, "buffer-more-ints": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz", + "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==" }, "camelcase": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "dev": true }, "center-align": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "requires": { "align-text": "^0.1.3", @@ -854,6 +106,8 @@ }, "claire": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/claire/-/claire-0.4.1.tgz", + "integrity": "sha1-ynDcEmHd2PJaGvq604BcOfziY7w=", "dev": true, "requires": { "boo": "~1.2.4", @@ -863,6 +117,8 @@ }, "cliui": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "requires": { "center-align": "^0.1.1", @@ -872,12 +128,16 @@ "dependencies": { "wordwrap": { "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "dev": true } } }, "commander": { "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { "graceful-readlink": ">= 1.0.0" @@ -885,31 +145,45 @@ }, "concat-map": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "core-util-is": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } }, "decamelize": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "diff": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", "dev": true }, "escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "escodegen": { "version": "0.0.23", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-0.0.23.tgz", + "integrity": "sha1-ms+XgWQ2jkInZXHxiDnII7OoRN8=", "dev": true, "requires": { "esprima": "~1.0.2", @@ -919,14 +193,20 @@ }, "esprima": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", "dev": true }, "estraverse": { "version": "0.0.4", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-0.0.4.tgz", + "integrity": "sha1-AaCTLf7ldGhKWYr1pnw7+bZCjbI=", "dev": true }, "fileset": { "version": "0.1.8", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-0.1.8.tgz", + "integrity": "sha1-UGuRqTluqn4y+0KoQHfHoMc2t0E=", "dev": true, "requires": { "glob": "3.x", @@ -935,14 +215,20 @@ }, "flaw": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/flaw/-/flaw-0.1.0.tgz", + "integrity": "sha1-wMPo+BYWdTh+2tofbOhNZ5sCUn8=", "dev": true }, "fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "glob": { "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", "dev": true, "requires": { "inherits": "2", @@ -951,6 +237,8 @@ "dependencies": { "minimatch": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", "dev": true, "requires": { "lru-cache": "2", @@ -961,14 +249,20 @@ }, "graceful-readlink": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", "dev": true }, "growl": { "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", "dev": true }, "handlebars": { "version": "1.0.12", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-1.0.12.tgz", + "integrity": "sha1-GMbTRAw16RsZs/9YK5FRq0mF1Pw=", "dev": true, "requires": { "optimist": "~0.3", @@ -977,6 +271,8 @@ "dependencies": { "source-map": { "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", "dev": true, "requires": { "amdefine": ">=0.0.4" @@ -984,6 +280,8 @@ }, "uglify-js": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz", + "integrity": "sha1-+gmEdwtCi3qbKoBY9GNV0U/vIRo=", "dev": true, "requires": { "async": "~0.2.6", @@ -995,14 +293,20 @@ }, "has-flag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, "he": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", "dev": true }, "inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "^1.3.0", @@ -1010,17 +314,25 @@ } }, "inherits": { - "version": "2.0.4" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "is-buffer": { "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "isarray": { - "version": "0.0.1" + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, "istanbul": { "version": "0.1.46", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.1.46.tgz", + "integrity": "sha1-zv6xx4fRJabbI70PY7Drk5CwtA0=", "dev": true, "requires": { "abbrev": "1.0.x", @@ -1038,10 +350,14 @@ }, "json3": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", "dev": true }, "kind-of": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -1049,10 +365,14 @@ }, "lazy-cache": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true }, "lodash._baseassign": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", "dev": true, "requires": { "lodash._basecopy": "^3.0.0", @@ -1061,22 +381,32 @@ }, "lodash._basecopy": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", "dev": true }, "lodash._basecreate": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", "dev": true }, "lodash._getnative": { "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", "dev": true }, "lodash._isiterateecall": { "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", "dev": true }, "lodash.create": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", "dev": true, "requires": { "lodash._baseassign": "^3.0.0", @@ -1086,14 +416,20 @@ }, "lodash.isarguments": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", "dev": true }, "lodash.isarray": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", "dev": true }, "lodash.keys": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", "dev": true, "requires": { "lodash._getnative": "^3.0.0", @@ -1103,14 +439,20 @@ }, "longest": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, "lru-cache": { "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", "dev": true }, "minimatch": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.4.0.tgz", + "integrity": "sha1-vSx9Bg0sjI/Xzefx8u0tWycP2xs=", "dev": true, "requires": { "lru-cache": "2", @@ -1119,14 +461,20 @@ }, "minimist": { "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mkdirp": { "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=", "dev": true }, "mocha": { "version": "3.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", + "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", "dev": true, "requires": { "browser-stdout": "1.3.0", @@ -1145,6 +493,8 @@ "dependencies": { "debug": { "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", "dev": true, "requires": { "ms": "2.0.0" @@ -1152,6 +502,8 @@ }, "glob": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -1164,6 +516,8 @@ }, "minimatch": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -1171,6 +525,8 @@ }, "mkdirp": { "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -1179,10 +535,14 @@ } }, "ms": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "nopt": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz", + "integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=", "dev": true, "requires": { "abbrev": "1" @@ -1190,6 +550,8 @@ }, "once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" @@ -1197,6 +559,8 @@ }, "optimist": { "version": "0.3.7", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", + "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", "dev": true, "requires": { "wordwrap": "~0.0.2" @@ -1204,17 +568,20 @@ }, "path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "prelude-ls": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-0.6.0.tgz", + "integrity": "sha1-z4JLS0fMc8vZb56YhQc7Q6rqqzs=", "dev": true }, - "querystringify": { - "version": "2.2.0" - }, "readable-stream": { "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -1224,17 +591,20 @@ }, "repeat-string": { "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, - "requires-port": { - "version": "1.0.0" - }, "resolve": { "version": "0.5.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.5.1.tgz", + "integrity": "sha1-FeSiIsQja81M+FRUQSwtD7ZSRXY=", "dev": true }, "right-align": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "requires": { "align-text": "^0.1.1" @@ -1242,18 +612,26 @@ }, "sigmund": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", "dev": true }, "source-map": { "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true, "optional": true }, "string_decoder": { - "version": "0.10.31" + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, "supports-color": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", "dev": true, "requires": { "has-flag": "^1.0.0" @@ -1261,6 +639,8 @@ }, "uglify-js": { "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "requires": { "source-map": "~0.5.1", @@ -1270,42 +650,47 @@ "dependencies": { "source-map": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true } } }, "uglify-to-browserify": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "dev": true, "optional": true }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "which": { "version": "1.0.9", + "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", + "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=", "dev": true }, "window-size": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "dev": true }, "wordwrap": { "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, "wrappy": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "yargs": { "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "requires": { "camelcase": "^1.0.2", diff --git a/package.json b/package.json index 41d517b9..a7f17317 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,7 @@ "bitsyntax": "~0.1.0", "bluebird": "^3.7.2", "buffer-more-ints": "~1.0.0", - "readable-stream": "1.x >=1.1.9", - "url-parse": "~1.5.10" + "readable-stream": "1.x >=1.1.9" }, "devDependencies": { "claire": "0.4.1", @@ -35,4 +34,4 @@ ], "author": "Michael Bridgen ", "license": "MIT" -} \ No newline at end of file +} diff --git a/test/connect.js b/test/connect.js index 5a0b2613..c1d8a895 100644 --- a/test/connect.js +++ b/test/connect.js @@ -6,14 +6,14 @@ var defs = require('../lib/defs'); var assert = require('assert'); var util = require('./util'); var net = require('net'); +var parseUrl = require('url').parse; var fail = util.fail, succeed = util.succeed, latch = util.latch, kCallback = util.kCallback, succeedIfAttributeEquals = util.succeedIfAttributeEquals; var format = require('util').format; -var URL = process.env.URL || 'amqp://localhost'; +var baseURL = process.env.URL || 'amqp://localhost'; -var urlparse = require('url-parse'); suite("Credentials", function() { @@ -29,27 +29,27 @@ suite("Credentials", function() { } test("no creds", function(done) { - var parts = urlparse('amqp://localhost'); + var parts = new URL('amqp://localhost'); var creds = credentialsFromUrl(parts); checkCreds(creds, 'guest', 'guest', done); }); test("usual user:pass", function(done) { - var parts = urlparse('amqp://user:pass@localhost') + var parts = new URL('amqp://user:pass@localhost') var creds = credentialsFromUrl(parts); checkCreds(creds, 'user', 'pass', done); }); test("missing user", function(done) { - var parts = urlparse('amqps://:password@localhost'); + var parts = new URL('amqps://:password@localhost'); var creds = credentialsFromUrl(parts); checkCreds(creds, '', 'password', done); }); test("missing password", function(done) { - var parts = urlparse('amqps://username:@localhost'); + var parts = new URL('amqps://username:@localhost'); var creds = credentialsFromUrl(parts); checkCreds(creds, 'username', '', done); }); test("escaped colons", function(done) { - var parts = urlparse('amqp://user%3Aname:pass%3Aword@localhost') + var parts = new URL('amqp://user%3Aname:pass%3Aword@localhost') var creds = credentialsFromUrl(parts); checkCreds(creds, 'user:name', 'pass:word', done); }); @@ -69,83 +69,72 @@ suite("Connect API", function() { }); }); - test("wrongly typed open option", function(done) { - var url = require('url'); - var parts = url.parse(URL, true); - var q = parts.query || {}; - q.frameMax = 'NOT A NUMBER'; - parts.query = q; - var u = url.format(parts); - connect(u, {}, kCallback(fail(done), succeed(done))); - }); - - test("serverProperties", function(done) { - var url = require('url'); - var parts = url.parse(URL, true); - var config = parts.query || {}; - connect(config, {}, function(err, connection) { - if (err) { return done(err); } - assert.equal(connection.serverProperties.product, 'RabbitMQ'); - done(); - }); - }); + [ + ["As instance of URL", url => url ], + ["As string", url => url.href ], + ].forEach(([suiteDescription, processURL]) => { + suite(suiteDescription, () => { + test("wrongly typed open option", function(done) { + var url = new URL(baseURL); + url.searchParams.set('frameMax', 'NOT A NUMBER'); + connect(processURL(url), {}, kCallback(fail(done), succeed(done))); + }); - test("using custom heartbeat option", function(done) { - var url = require('url'); - var parts = url.parse(URL, true); - var config = parts.query || {}; - config.heartbeat = 20; - connect(config, {}, kCallback(succeedIfAttributeEquals('heartbeat', 20, done), fail(done))); - }); + test("serverProperties", function(done) { + var url = new URL(baseURL); + connect(processURL(url), {}, function(err, connection) { + if (err) { return done(err); } + assert.equal(connection.serverProperties.product, 'RabbitMQ'); + done(); + }); + }); - test("wrongly typed heartbeat option", function(done) { - var url = require('url'); - var parts = url.parse(URL, true); - var config = parts.query || {}; - config.heartbeat = 'NOT A NUMBER'; - connect(config, {}, kCallback(fail(done), succeed(done))); - }); + test("using custom heartbeat option", function(done) { + var url = new URL(baseURL); + url.searchParams.set('heartbeat', 20); + connect(processURL(url), {}, kCallback(succeedIfAttributeEquals('heartbeat', 20, done), fail(done))); + }); - test("using plain credentials", function(done) { - var url = require('url'); - var parts = url.parse(URL, true); - var u = 'guest', p = 'guest'; - if (parts.auth) { - var auth = parts.auth.split(":"); - u = auth[0], p = auth[1]; - } - connect(URL, {credentials: require('../lib/credentials').plain(u, p)}, - kCallback(succeed(done), fail(done))); - }); + test("wrongly typed heartbeat option", function(done) { + var url = new URL(baseURL); + url.searchParams.set('heartbeat', 'NOT A NUMBER'); + connect(processURL(url), {}, kCallback(fail(done), succeed(done))); + }); - test("using amqplain credentials", function(done) { - var url = require('url'); - var parts = url.parse(URL, true); - var u = 'guest', p = 'guest'; - if (parts.auth) { - var auth = parts.auth.split(":"); - u = auth[0], p = auth[1]; - } - connect(URL, {credentials: require('../lib/credentials').amqplain(u, p)}, - kCallback(succeed(done), fail(done))); - }); + test("using plain credentials", function(done) { + var url = new URL(baseURL); + var u = url.username || 'guest'; + var p = url.password || 'guest'; + connect(processURL(url), {credentials: require('../lib/credentials').plain(u, p)}, + kCallback(succeed(done), fail(done))); + }); - test("using unsupported mechanism", function(done) { - var creds = { - mechanism: 'UNSUPPORTED', - response: function() { return Buffer.from(''); } - }; - connect(URL, {credentials: creds}, - kCallback(fail(done), succeed(done))); - }); + test("using amqplain credentials", function(done) { + var url = new URL(baseURL); + var u = url.username || 'guest'; + var p = url.password || 'guest'; + connect(processURL(url), {credentials: require('../lib/credentials').amqplain(u, p)}, + kCallback(succeed(done), fail(done))); + }); - test("with a given connection timeout", function(done) { - var timeoutServer = net.createServer(function() {}).listen(31991); + test("using unsupported mechanism", function(done) { + var creds = { + mechanism: 'UNSUPPORTED', + response: function() { return Buffer.from(''); } + }; + connect(processURL(baseURL), {credentials: creds}, + kCallback(fail(done), succeed(done))); + }); - connect('amqp://localhost:31991', {timeout: 50}, function(err, val) { - timeoutServer.close(); - if (val) done(new Error('Expected connection timeout, did not')); - else done(); + test("with a given connection timeout", function(done) { + var timeoutServer = net.createServer(function() {}).listen(31991); + var url = new URL('amqp://localhost:31991'); + connect(processURL(url), {timeout: 50}, function(err, val) { + timeoutServer.close(); + if (val) done(new Error('Expected connection timeout, did not')); + else done(); + }); + }); }); }); });