diff --git a/package-lock.json b/package-lock.json index ae3d60d7e904563a4a8c49fee260e003302d6c30..bf132a2b78bb0516af5fa3142d6f91f6fbaea6c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "matrix-appservice-discord", - "version": "0.0.1", + "version": "0.1.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -21,8 +21,8 @@ "integrity": "sha1-Q9UokqqZjhhaPePiR37bhXO+HXc=", "dev": true, "requires": { - "@types/chai": "3.5.2", - "@types/promises-a-plus": "0.0.27" + "@types/chai": "*", + "@types/promises-a-plus": "*" } }, "@types/mocha": { @@ -47,7 +47,21 @@ "resolved": "https://registry.npmjs.org/@types/sqlite3/-/sqlite3-2.2.33.tgz", "integrity": "sha1-jnqdYHRmcKQi32L3jcchqTZ22ck=", "requires": { - "@types/node": "7.0.55" + "@types/node": "*" + } + }, + "Base64": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz", + "integrity": "sha1-ujpCMHCOGGcFBl5mur3Uw1z2ACg=" + }, + "JSONStream": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", + "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" } }, "abbrev": { @@ -60,7 +74,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", "integrity": "sha1-5fHzkoxtlf2WVYw27D2dDeSm7Oo=", "requires": { - "mime-types": "2.1.17", + "mime-types": "~2.1.6", "negotiator": "0.5.3" } }, @@ -75,7 +89,7 @@ "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, "requires": { - "acorn": "3.3.0" + "acorn": "^3.0.4" }, "dependencies": { "acorn": { @@ -91,8 +105,8 @@ "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.3.0.tgz", "integrity": "sha512-efP54n3d1aLfjL2UMdaXa6DsswwzJeI5rqhbFvXMrKiJ6eJFpf+7R0zN7t8IC+XKn2YOAFAv6xbBNgHUkoHWLw==", "requires": { - "acorn": "5.4.1", - "xtend": "4.0.1" + "acorn": "^5.4.1", + "xtend": "^4.0.1" }, "dependencies": { "acorn": { @@ -108,8 +122,8 @@ "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" }, "dependencies": { "json-stable-stringify": { @@ -118,7 +132,7 @@ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "dev": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } } } @@ -135,9 +149,9 @@ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } }, "amdefine": { @@ -155,7 +169,7 @@ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "requires": { - "string-width": "2.1.1" + "string-width": "^2.0.0" }, "dependencies": { "ansi-regex": { @@ -173,8 +187,8 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -182,7 +196,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -192,7 +206,7 @@ "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-4.0.0.tgz", "integrity": "sha512-v+0wW9Wezwsyb0uF4aBVCjmSqit3Ru7PZFziGF0o2KwTvN2zWfTi3BRLq9EkJFdg3eBbyERXGTntVpBxH1J68Q==", "requires": { - "array-back": "2.0.0" + "array-back": "^2.0.0" } }, "ansi-escapes": { @@ -221,8 +235,8 @@ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.3" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" }, "dependencies": { "isarray": { @@ -235,13 +249,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "safe-buffer": { @@ -254,7 +268,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -264,7 +278,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "array-back": { @@ -272,7 +286,7 @@ "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", "requires": { - "typical": "2.6.1" + "typical": "^2.6.1" } }, "array-union": { @@ -281,7 +295,7 @@ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { @@ -306,9 +320,9 @@ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "requires": { - "bn.js": "4.11.8", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "assert": { @@ -335,7 +349,7 @@ "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz", "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=", "requires": { - "acorn": "4.0.13" + "acorn": "^4.0.3" } }, "async": { @@ -368,9 +382,9 @@ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" } }, "balanced-match": { @@ -378,11 +392,6 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, - "Base64": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz", - "integrity": "sha1-ujpCMHCOGGcFBl5mur3Uw1z2ACg=" - }, "base64-js": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", @@ -399,7 +408,7 @@ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "binary-search-tree": { @@ -407,7 +416,7 @@ "resolved": "https://registry.npmjs.org/binary-search-tree/-/binary-search-tree-0.2.5.tgz", "integrity": "sha1-fbs7IQ/coIJFDa0jNMMErzm9x4Q=", "requires": { - "underscore": "1.4.4" + "underscore": "~1.4.4" } }, "bl": { @@ -415,7 +424,7 @@ "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz", "integrity": "sha1-wGt5evCF6gC8Unr8jvzxHeIjIFQ=", "requires": { - "readable-stream": "1.0.34" + "readable-stream": "~1.0.26" } }, "bluebird": { @@ -434,14 +443,14 @@ "integrity": "sha1-CQcAxLoohiqFIO83g5X97l9hwik=", "requires": { "bytes": "1.0.0", - "content-type": "1.0.4", - "debug": "2.2.0", - "depd": "1.0.1", + "content-type": "~1.0.1", + "debug": "~2.2.0", + "depd": "~1.0.1", "iconv-lite": "0.4.8", - "on-finished": "2.2.1", + "on-finished": "~2.2.1", "qs": "2.4.2", - "raw-body": "2.0.2", - "type-is": "1.6.16" + "raw-body": "~2.0.1", + "type-is": "~1.6.2" } }, "boom": { @@ -449,7 +458,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "boxen": { @@ -457,13 +466,13 @@ "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.2.1.tgz", "integrity": "sha1-DxHn/jRO25OXl3/BPt5/ZNlWSB0=", "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.1.0", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "1.0.0" + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^1.0.0" }, "dependencies": { "ansi-regex": { @@ -476,7 +485,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "requires": { - "color-convert": "1.9.0" + "color-convert": "^1.9.0" } }, "chalk": { @@ -484,9 +493,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.2.1" + "ansi-styles": "^3.1.0", + "escape-string-regexp": "^1.0.5", + "supports-color": "^4.0.0" } }, "is-fullwidth-code-point": { @@ -499,8 +508,8 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -508,7 +517,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } }, "supports-color": { @@ -516,7 +525,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } } } @@ -526,7 +535,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -540,11 +549,11 @@ "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-5.0.1.tgz", "integrity": "sha1-QZdxmyDG4KqglFHFER5T77b7wY0=", "requires": { - "combine-source-map": "0.6.1", - "defined": "1.0.0", - "JSONStream": "1.3.2", - "through2": "1.1.1", - "umd": "3.0.1" + "JSONStream": "^1.0.3", + "combine-source-map": "~0.6.1", + "defined": "^1.0.0", + "through2": "^1.0.0", + "umd": "^3.0.0" } }, "browser-request": { @@ -578,55 +587,55 @@ "resolved": "https://registry.npmjs.org/browserify/-/browserify-10.2.6.tgz", "integrity": "sha1-3L/veU9Uj1+EmCFIFPaXpcUMCJY=", "requires": { - "assert": "1.3.0", - "browser-pack": "5.0.1", - "browser-resolve": "1.11.2", - "browserify-zlib": "0.1.4", - "buffer": "3.6.0", - "builtins": "0.0.7", + "JSONStream": "^1.0.3", + "assert": "~1.3.0", + "browser-pack": "^5.0.0", + "browser-resolve": "^1.7.1", + "browserify-zlib": "~0.1.2", + "buffer": "^3.0.0", + "builtins": "~0.0.3", "commondir": "0.0.1", - "concat-stream": "1.4.10", - "console-browserify": "1.1.0", - "constants-browserify": "0.0.1", - "crypto-browserify": "3.12.0", - "defined": "1.0.0", - "deps-sort": "1.3.9", - "domain-browser": "1.1.7", - "duplexer2": "0.0.2", - "events": "1.0.2", - "glob": "4.5.3", - "has": "1.0.1", - "htmlescape": "1.1.1", - "http-browserify": "1.7.0", - "https-browserify": "0.0.1", - "inherits": "2.0.3", - "insert-module-globals": "6.6.3", + "concat-stream": "~1.4.1", + "console-browserify": "^1.1.0", + "constants-browserify": "~0.0.1", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^1.3.7", + "domain-browser": "~1.1.0", + "duplexer2": "~0.0.2", + "events": "~1.0.0", + "glob": "^4.0.5", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "http-browserify": "^1.4.0", + "https-browserify": "~0.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^6.4.1", "isarray": "0.0.1", - "JSONStream": "1.3.2", - "labeled-stream-splicer": "1.0.2", - "module-deps": "3.9.1", - "os-browserify": "0.1.2", - "parents": "1.0.1", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "read-only-stream": "1.1.1", - "readable-stream": "1.1.14", - "resolve": "1.4.0", - "shasum": "1.0.2", - "shell-quote": "0.0.1", - "stream-browserify": "1.0.0", - "string_decoder": "0.10.31", - "subarg": "1.0.0", - "syntax-error": "1.4.0", - "through2": "1.1.1", - "timers-browserify": "1.4.2", - "tty-browserify": "0.0.1", - "url": "0.10.3", - "util": "0.10.3", - "vm-browserify": "0.0.4", - "xtend": "4.0.1" + "labeled-stream-splicer": "^1.0.0", + "module-deps": "^3.7.11", + "os-browserify": "~0.1.1", + "parents": "^1.0.1", + "path-browserify": "~0.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^1.1.1", + "readable-stream": "^1.1.13", + "resolve": "^1.1.4", + "shasum": "^1.0.0", + "shell-quote": "~0.0.1", + "stream-browserify": "^1.0.0", + "string_decoder": "~0.10.0", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^1.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "~0.0.0", + "url": "~0.10.1", + "util": "~0.10.1", + "vm-browserify": "~0.0.1", + "xtend": "^4.0.0" }, "dependencies": { "readable-stream": { @@ -634,10 +643,10 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } } } @@ -647,12 +656,12 @@ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "inherits": "2.0.3", - "safe-buffer": "5.0.1" + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "browserify-cipher": { @@ -660,9 +669,9 @@ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", "requires": { - "browserify-aes": "1.1.1", - "browserify-des": "1.0.0", - "evp_bytestokey": "1.0.3" + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, "browserify-des": { @@ -670,9 +679,9 @@ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", "requires": { - "cipher-base": "1.0.4", - "des.js": "1.0.0", - "inherits": "2.0.3" + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1" } }, "browserify-rsa": { @@ -680,8 +689,8 @@ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "requires": { - "bn.js": "4.11.8", - "randombytes": "2.0.6" + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" } }, "browserify-sign": { @@ -689,13 +698,13 @@ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "elliptic": "6.4.0", - "inherits": "2.0.3", - "parse-asn1": "5.1.0" + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" } }, "browserify-zlib": { @@ -703,7 +712,7 @@ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", "requires": { - "pako": "0.2.9" + "pako": "~0.2.0" } }, "buffer": { @@ -712,8 +721,8 @@ "integrity": "sha1-pyyTb3e5a/UvX357RnGAYoVR3vs=", "requires": { "base64-js": "0.0.8", - "ieee754": "1.1.8", - "isarray": "1.0.0" + "ieee754": "^1.1.4", + "isarray": "^1.0.0" }, "dependencies": { "isarray": { @@ -744,7 +753,7 @@ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", "dev": true, "requires": { - "callsites": "0.2.0" + "callsites": "^0.2.0" } }, "callsites": { @@ -775,8 +784,8 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, "chai": { @@ -785,9 +794,9 @@ "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", "dev": true, "requires": { - "assertion-error": "1.0.2", - "deep-eql": "0.1.3", - "type-detect": "1.0.0" + "assertion-error": "^1.0.1", + "deep-eql": "^0.1.3", + "type-detect": "^1.0.0" } }, "chai-as-promised": { @@ -796,7 +805,7 @@ "integrity": "sha1-GgKkM6byTa+sY7nJb6FoTbGqjaY=", "dev": true, "requires": { - "check-error": "1.0.2" + "check-error": "^1.0.2" } }, "chalk": { @@ -804,11 +813,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "check-error": { @@ -822,8 +831,8 @@ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.0.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "circular-json": { @@ -843,7 +852,7 @@ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", "dev": true, "requires": { - "restore-cursor": "1.0.1" + "restore-cursor": "^1.0.1" } }, "cli-width": { @@ -859,8 +868,8 @@ "dev": true, "optional": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", + "center-align": "^0.1.1", + "right-align": "^0.1.1", "wordwrap": "0.0.2" }, "dependencies": { @@ -888,7 +897,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", "requires": { - "color-name": "1.1.3" + "color-name": "^1.1.1" } }, "color-name": { @@ -906,10 +915,10 @@ "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.6.1.tgz", "integrity": "sha1-m0oJwxYDPXaODxHgKfonMOB5rZY=", "requires": { - "convert-source-map": "1.1.3", - "inline-source-map": "0.5.0", - "lodash.memoize": "3.0.4", - "source-map": "0.4.4" + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.5.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.4.2" } }, "combined-stream": { @@ -925,9 +934,9 @@ "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-4.0.7.tgz", "integrity": "sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA==", "requires": { - "array-back": "2.0.0", - "find-replace": "1.0.3", - "typical": "2.6.1" + "array-back": "^2.0.0", + "find-replace": "^1.0.3", + "typical": "^2.6.1" } }, "command-line-usage": { @@ -935,10 +944,10 @@ "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-4.1.0.tgz", "integrity": "sha512-MxS8Ad995KpdAC0Jopo/ovGIroV/m0KHwzKfXxKag6FHOkGsH8/lv5yjgablcRxCJJC0oJeUMuO/gmaq+Wq46g==", "requires": { - "ansi-escape-sequences": "4.0.0", - "array-back": "2.0.0", - "table-layout": "0.4.2", - "typical": "2.6.1" + "ansi-escape-sequences": "^4.0.0", + "array-back": "^2.0.0", + "table-layout": "^0.4.2", + "typical": "^2.6.1" } }, "commander": { @@ -947,7 +956,7 @@ "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "graceful-readlink": ">= 1.0.0" } }, "commondir": { @@ -965,9 +974,9 @@ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.10.tgz", "integrity": "sha1-rMO79WAsuMyYDGrIQPp9hgPj7zY=", "requires": { - "inherits": "2.0.3", - "readable-stream": "1.1.14", - "typedarray": "0.0.6" + "inherits": "~2.0.1", + "readable-stream": "~1.1.9", + "typedarray": "~0.0.5" }, "dependencies": { "readable-stream": { @@ -975,10 +984,10 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } } } @@ -988,12 +997,12 @@ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.1.11", - "make-dir": "1.0.0", - "unique-string": "1.0.0", - "write-file-atomic": "2.3.0", - "xdg-basedir": "3.0.0" + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, "console-browserify": { @@ -1001,7 +1010,7 @@ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "requires": { - "date-now": "0.1.4" + "date-now": "^0.1.4" } }, "console-control-strings": { @@ -1054,8 +1063,8 @@ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", "requires": { - "bn.js": "4.11.8", - "elliptic": "6.4.0" + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" } }, "create-error-class": { @@ -1063,7 +1072,7 @@ "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "requires": { - "capture-stack-trace": "1.0.0" + "capture-stack-trace": "^1.0.0" } }, "create-hash": { @@ -1071,10 +1080,10 @@ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "sha.js": "2.4.10" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "sha.js": "^2.4.0" } }, "create-hmac": { @@ -1082,12 +1091,12 @@ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", "requires": { - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "safe-buffer": "5.0.1", - "sha.js": "2.4.10" + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "cross-spawn": { @@ -1095,9 +1104,9 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "cryptiles": { @@ -1105,7 +1114,7 @@ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "crypto-browserify": { @@ -1113,17 +1122,17 @@ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "requires": { - "browserify-cipher": "1.0.0", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.0", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "diffie-hellman": "5.0.2", - "inherits": "2.0.3", - "pbkdf2": "3.0.14", - "public-encrypt": "4.0.0", - "randombytes": "2.0.6", - "randomfill": "1.0.4" + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" } }, "crypto-random-string": { @@ -1142,7 +1151,7 @@ "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { - "es5-ext": "0.10.29" + "es5-ext": "^0.10.9" } }, "dashdash": { @@ -1150,7 +1159,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -1219,13 +1228,13 @@ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", "dev": true, "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.1" + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" } }, "delayed-stream": { @@ -1248,10 +1257,10 @@ "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-1.3.9.tgz", "integrity": "sha1-Kd//U+F7Nq7K51MK27v2IsLtGnE=", "requires": { - "JSONStream": "1.3.2", - "shasum": "1.0.2", - "subarg": "1.0.0", - "through2": "1.1.1" + "JSONStream": "^1.0.3", + "shasum": "^1.0.0", + "subarg": "^1.0.0", + "through2": "^1.0.0" } }, "des.js": { @@ -1259,8 +1268,8 @@ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "destroy": { @@ -1273,8 +1282,8 @@ "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", "requires": { - "acorn": "5.4.1", - "defined": "1.0.0" + "acorn": "^5.2.1", + "defined": "^1.0.0" }, "dependencies": { "acorn": { @@ -1294,9 +1303,9 @@ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", "requires": { - "bn.js": "4.11.8", - "miller-rabin": "4.0.1", - "randombytes": "2.0.6" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" } }, "discord.js": { @@ -1304,11 +1313,11 @@ "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-11.3.0.tgz", "integrity": "sha512-xM3ydvb4urHjCP3N+Mgpw53a7ZGtmPwllwVgwPqdF2SHNPvTDr4So/+55VVx76s5eO9IMrOWpczsEuIr0/MAgQ==", "requires": { - "long": "3.2.0", - "prism-media": "0.0.1", - "snekfetch": "3.6.4", - "tweetnacl": "1.0.0", - "ws": "4.0.0" + "long": "^3.2.0", + "prism-media": "^0.0.1", + "snekfetch": "^3.6.1", + "tweetnacl": "^1.0.0", + "ws": "^4.0.0" }, "dependencies": { "tweetnacl": { @@ -1324,8 +1333,8 @@ "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", "dev": true, "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" + "esutils": "^2.0.2", + "isarray": "^1.0.0" }, "dependencies": { "isarray": { @@ -1346,7 +1355,7 @@ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "requires": { - "is-obj": "1.0.1" + "is-obj": "^1.0.0" } }, "duplexer2": { @@ -1354,7 +1363,7 @@ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", "requires": { - "readable-stream": "1.1.14" + "readable-stream": "~1.1.9" }, "dependencies": { "readable-stream": { @@ -1362,10 +1371,10 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } } } @@ -1381,7 +1390,7 @@ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "ee-first": { @@ -1394,13 +1403,13 @@ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0", - "hash.js": "1.1.3", - "hmac-drbg": "1.0.1", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" } }, "es5-ext": { @@ -1409,8 +1418,8 @@ "integrity": "sha512-KXla9NXo5sdaEkGSmbFPYgjH6m75kxsthL6GDRSug/Y2OiMoYm0I9giL39j4cgmaFmAbkIFJ6gG+SGKnLSmOvA==", "dev": true, "requires": { - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1" + "es6-iterator": "2", + "es6-symbol": "~3.1" } }, "es6-iterator": { @@ -1419,9 +1428,9 @@ "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.29", - "es6-symbol": "3.1.1" + "d": "1", + "es5-ext": "^0.10.14", + "es6-symbol": "^3.1" } }, "es6-map": { @@ -1430,12 +1439,12 @@ "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.29", - "es6-iterator": "2.0.1", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" } }, "es6-set": { @@ -1444,11 +1453,11 @@ "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.29", - "es6-iterator": "2.0.1", + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" + "event-emitter": "~0.3.5" } }, "es6-symbol": { @@ -1457,8 +1466,8 @@ "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.29" + "d": "1", + "es5-ext": "~0.10.14" } }, "es6-weak-map": { @@ -1467,16 +1476,16 @@ "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.29", - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1" + "d": "1", + "es5-ext": "^0.10.14", + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" } }, "escape-html": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz", - "integrity": "sha1-GBoobq05ejmpKFfPsdQwUuNWv/A=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, "escape-string-regexp": { "version": "1.0.5", @@ -1489,11 +1498,11 @@ "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", "dev": true, "requires": { - "esprima": "2.7.3", - "estraverse": "1.9.3", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.2.0" + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" }, "dependencies": { "esprima": { @@ -1515,7 +1524,7 @@ "dev": true, "optional": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } @@ -1526,10 +1535,10 @@ "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", "dev": true, "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.2.0", - "estraverse": "4.2.0" + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, "eslint": { @@ -1538,41 +1547,41 @@ "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "chalk": "1.1.3", - "concat-stream": "1.6.0", - "debug": "2.2.0", - "doctrine": "2.0.0", - "escope": "3.6.0", - "espree": "3.5.0", - "esquery": "1.0.0", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "glob": "7.1.2", - "globals": "9.18.0", - "ignore": "3.3.3", - "imurmurhash": "0.1.4", - "inquirer": "0.12.0", - "is-my-json-valid": "2.16.0", - "is-resolvable": "1.0.0", - "js-yaml": "3.10.0", - "json-stable-stringify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "1.2.1", - "progress": "1.1.8", - "require-uncached": "1.0.3", - "shelljs": "0.7.8", - "strip-bom": "3.0.0", - "strip-json-comments": "2.0.1", - "table": "3.8.3", - "text-table": "0.2.0", - "user-home": "2.0.0" + "babel-code-frame": "^6.16.0", + "chalk": "^1.1.3", + "concat-stream": "^1.5.2", + "debug": "^2.1.1", + "doctrine": "^2.0.0", + "escope": "^3.6.0", + "espree": "^3.4.0", + "esquery": "^1.0.0", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "glob": "^7.0.3", + "globals": "^9.14.0", + "ignore": "^3.2.0", + "imurmurhash": "^0.1.4", + "inquirer": "^0.12.0", + "is-my-json-valid": "^2.10.0", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.5.1", + "json-stable-stringify": "^1.0.0", + "levn": "^0.3.0", + "lodash": "^4.0.0", + "mkdirp": "^0.5.0", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.1", + "pluralize": "^1.2.1", + "progress": "^1.1.8", + "require-uncached": "^1.0.2", + "shelljs": "^0.7.5", + "strip-bom": "^3.0.0", + "strip-json-comments": "~2.0.1", + "table": "^3.7.8", + "text-table": "~0.2.0", + "user-home": "^2.0.0" }, "dependencies": { "concat-stream": { @@ -1581,9 +1590,9 @@ "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "typedarray": "0.0.6" + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, "glob": { @@ -1592,12 +1601,12 @@ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "isarray": { @@ -1612,7 +1621,7 @@ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "dev": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "minimatch": { @@ -1621,7 +1630,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "readable-stream": { @@ -1630,13 +1639,13 @@ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "safe-buffer": { @@ -1651,7 +1660,7 @@ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -1662,8 +1671,8 @@ "integrity": "sha1-mDWGJb3QVYYeon4oZ+pyn69GPY0=", "dev": true, "requires": { - "acorn": "5.1.1", - "acorn-jsx": "3.0.1" + "acorn": "^5.1.1", + "acorn-jsx": "^3.0.0" }, "dependencies": { "acorn": { @@ -1685,7 +1694,7 @@ "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.0.0" } }, "esrecurse": { @@ -1694,8 +1703,8 @@ "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", "dev": true, "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" + "estraverse": "^4.1.0", + "object-assign": "^4.0.1" } }, "estraverse": { @@ -1723,8 +1732,8 @@ "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.29" + "d": "1", + "es5-ext": "~0.10.14" } }, "events": { @@ -1737,8 +1746,8 @@ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "requires": { - "md5.js": "1.3.4", - "safe-buffer": "5.1.1" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" }, "dependencies": { "safe-buffer": { @@ -1753,13 +1762,13 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, "exit-hook": { @@ -1773,30 +1782,37 @@ "resolved": "https://registry.npmjs.org/express/-/express-4.12.4.tgz", "integrity": "sha1-j+wlECVbxrLlgQfEgjnA+jB8GqI=", "requires": { - "accepts": "1.2.13", + "accepts": "~1.2.7", "content-disposition": "0.5.0", - "content-type": "1.0.4", + "content-type": "~1.0.1", "cookie": "0.1.2", "cookie-signature": "1.0.6", - "debug": "2.2.0", - "depd": "1.0.1", + "debug": "~2.2.0", + "depd": "~1.0.1", "escape-html": "1.0.1", - "etag": "1.6.0", + "etag": "~1.6.0", "finalhandler": "0.3.6", "fresh": "0.2.4", "merge-descriptors": "1.0.0", - "methods": "1.1.2", - "on-finished": "2.2.1", - "parseurl": "1.3.2", + "methods": "~1.1.1", + "on-finished": "~2.2.1", + "parseurl": "~1.3.0", "path-to-regexp": "0.1.3", - "proxy-addr": "1.0.10", + "proxy-addr": "~1.0.8", "qs": "2.4.2", - "range-parser": "1.0.3", + "range-parser": "~1.0.2", "send": "0.12.3", - "serve-static": "1.9.3", - "type-is": "1.6.16", + "serve-static": "~1.9.3", + "type-is": "~1.6.2", "utils-merge": "1.0.0", - "vary": "1.0.1" + "vary": "~1.0.0" + }, + "dependencies": { + "escape-html": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz", + "integrity": "sha1-GBoobq05ejmpKFfPsdQwUuNWv/A=" + } } }, "extend": { @@ -1831,8 +1847,8 @@ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" } }, "file-entry-cache": { @@ -1841,8 +1857,8 @@ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", "dev": true, "requires": { - "flat-cache": "1.2.2", - "object-assign": "4.1.1" + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" } }, "fill-keys": { @@ -1851,8 +1867,8 @@ "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", "dev": true, "requires": { - "is-object": "1.0.1", - "merge-descriptors": "1.0.0" + "is-object": "~1.0.1", + "merge-descriptors": "~1.0.0" } }, "finalhandler": { @@ -1860,9 +1876,16 @@ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.3.6.tgz", "integrity": "sha1-2vnEFhsbBuABRmsUEd/baXO+E4s=", "requires": { - "debug": "2.2.0", + "debug": "~2.2.0", "escape-html": "1.0.1", - "on-finished": "2.2.1" + "on-finished": "~2.2.1" + }, + "dependencies": { + "escape-html": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz", + "integrity": "sha1-GBoobq05ejmpKFfPsdQwUuNWv/A=" + } } }, "find-replace": { @@ -1870,8 +1893,8 @@ "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz", "integrity": "sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A=", "requires": { - "array-back": "1.0.4", - "test-value": "2.1.0" + "array-back": "^1.0.4", + "test-value": "^2.1.0" }, "dependencies": { "array-back": { @@ -1879,7 +1902,7 @@ "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", "requires": { - "typical": "2.6.1" + "typical": "^2.6.0" } } } @@ -1889,7 +1912,7 @@ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", "requires": { - "glob": "5.0.15" + "glob": "~5.0.0" }, "dependencies": { "glob": { @@ -1897,11 +1920,11 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "2.0.10", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } } } @@ -1912,10 +1935,10 @@ "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", "dev": true, "requires": { - "circular-json": "0.3.3", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" + "circular-json": "^0.3.1", + "del": "^2.0.2", + "graceful-fs": "^4.1.2", + "write": "^0.2.1" } }, "forever-agent": { @@ -1928,9 +1951,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", "integrity": "sha1-Jvi8JtpkQOKZy9z7aQNcT3em5GY=", "requires": { - "async": "0.9.2", - "combined-stream": "0.0.7", - "mime-types": "2.0.14" + "async": "~0.9.0", + "combined-stream": "~0.0.4", + "mime-types": "~2.0.3" }, "dependencies": { "mime-db": { @@ -1943,7 +1966,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", "integrity": "sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY=", "requires": { - "mime-db": "1.12.0" + "mime-db": "~1.12.0" } } } @@ -1973,14 +1996,14 @@ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "requires": { - "aproba": "1.1.2", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, "generate-function": { @@ -1995,7 +2018,7 @@ "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", "dev": true, "requires": { - "is-property": "1.0.2" + "is-property": "^1.0.0" } }, "get-stream": { @@ -2008,7 +2031,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -2023,10 +2046,10 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "2.0.10", - "once": "1.4.0" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^2.0.1", + "once": "^1.3.0" } }, "globals": { @@ -2041,12 +2064,12 @@ "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", "dev": true, "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "dependencies": { "glob": { @@ -2055,12 +2078,12 @@ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "minimatch": { @@ -2069,7 +2092,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } } } @@ -2079,17 +2102,17 @@ "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "requires": { - "create-error-class": "3.0.2", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", - "safe-buffer": "5.0.1", - "timed-out": "4.0.1", - "unzip-response": "2.0.1", - "url-parse-lax": "1.0.0" + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" } }, "graceful-fs": { @@ -2115,10 +2138,10 @@ "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", "dev": true, "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" }, "dependencies": { "async": { @@ -2139,8 +2162,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^5.1.0", + "har-schema": "^2.0.0" }, "dependencies": { "ajv": { @@ -2148,10 +2171,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } } } @@ -2161,7 +2184,7 @@ "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", "requires": { - "function-bind": "1.1.1" + "function-bind": "^1.0.2" } }, "has-ansi": { @@ -2169,7 +2192,7 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -2187,7 +2210,7 @@ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", "requires": { - "inherits": "2.0.3" + "inherits": "^2.0.1" } }, "hash.js": { @@ -2195,8 +2218,8 @@ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" } }, "hawk": { @@ -2204,10 +2227,10 @@ "resolved": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz", "integrity": "sha1-HnMc45RH+h0PbXB/e87r7A/R7B8=", "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" } }, "he": { @@ -2221,9 +2244,9 @@ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "requires": { - "hash.js": "1.1.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, "hoek": { @@ -2241,8 +2264,8 @@ "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", "integrity": "sha1-M3la3nLfiKz7/TZ3PO/tp2RzWyA=", "requires": { - "Base64": "0.2.1", - "inherits": "2.0.3" + "Base64": "~0.2.0", + "inherits": "~2.0.1" } }, "http-signature": { @@ -2251,7 +2274,7 @@ "integrity": "sha1-T72sEyVZqoMjEh5UB3nAoBKyfmY=", "requires": { "asn1": "0.1.11", - "assert-plus": "0.1.5", + "assert-plus": "^0.1.5", "ctype": "0.5.3" } }, @@ -2301,8 +2324,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -2320,7 +2343,7 @@ "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.5.0.tgz", "integrity": "sha1-Skxd2OT7Xps82mDIIt+tyu5m4K8=", "requires": { - "source-map": "0.4.4" + "source-map": "~0.4.0" } }, "inquirer": { @@ -2329,19 +2352,19 @@ "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", "dev": true, "requires": { - "ansi-escapes": "1.4.0", - "ansi-regex": "2.1.1", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-width": "2.1.0", - "figures": "1.7.0", - "lodash": "4.17.4", - "readline2": "1.0.1", - "run-async": "0.1.0", - "rx-lite": "3.1.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "through": "2.3.8" + "ansi-escapes": "^1.1.0", + "ansi-regex": "^2.0.0", + "chalk": "^1.0.0", + "cli-cursor": "^1.0.1", + "cli-width": "^2.0.0", + "figures": "^1.3.5", + "lodash": "^4.3.0", + "readline2": "^1.0.1", + "run-async": "^0.1.0", + "rx-lite": "^3.1.2", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" } }, "insert-module-globals": { @@ -2349,14 +2372,14 @@ "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-6.6.3.tgz", "integrity": "sha1-IGOOKaMPntHKLjqCX7wsulJG3fw=", "requires": { - "combine-source-map": "0.6.1", - "concat-stream": "1.4.10", - "is-buffer": "1.1.5", - "JSONStream": "1.3.2", - "lexical-scope": "1.2.0", - "process": "0.11.10", - "through2": "1.1.1", - "xtend": "4.0.1" + "JSONStream": "^1.0.3", + "combine-source-map": "~0.6.1", + "concat-stream": "~1.4.1", + "is-buffer": "^1.1.0", + "lexical-scope": "^1.2.0", + "process": "~0.11.0", + "through2": "^1.0.0", + "xtend": "^4.0.0" } }, "interpret": { @@ -2380,7 +2403,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-my-json-valid": { @@ -2389,10 +2412,10 @@ "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", "dev": true, "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "jsonpointer": "^4.0.0", + "xtend": "^4.0.0" } }, "is-npm": { @@ -2423,7 +2446,7 @@ "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", "dev": true, "requires": { - "is-path-inside": "1.0.0" + "is-path-inside": "^1.0.0" } }, "is-path-inside": { @@ -2432,7 +2455,7 @@ "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", "dev": true, "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "is-property": { @@ -2452,7 +2475,7 @@ "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", "dev": true, "requires": { - "tryit": "1.0.3" + "tryit": "^1.0.1" } }, "is-retry-allowed": { @@ -2491,20 +2514,20 @@ "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", "dev": true, "requires": { - "abbrev": "1.0.9", - "async": "1.5.2", - "escodegen": "1.8.1", - "esprima": "2.7.3", - "glob": "5.0.15", - "handlebars": "4.0.10", - "js-yaml": "3.10.0", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "once": "1.4.0", - "resolve": "1.1.7", - "supports-color": "3.2.3", - "which": "1.3.0", - "wordwrap": "1.0.0" + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" }, "dependencies": { "abbrev": { @@ -2531,11 +2554,11 @@ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "2.0.10", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "has-flag": { @@ -2556,7 +2579,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } }, "wordwrap": { @@ -2572,7 +2595,7 @@ "resolved": "https://registry.npmjs.org/jayschema/-/jayschema-0.3.2.tgz", "integrity": "sha512-UHLk2ya7ItaLjmMVJWGE9b5t7jD3DZfmURdmz+rOVSiSYnrCtgcxvNXuQavcK7bhUBlXFmrXwRAPXkCMDxxANg==", "requires": { - "when": "3.4.6" + "when": "~3.4.6" } }, "js-tokens": { @@ -2585,8 +2608,8 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", "requires": { - "argparse": "1.0.10", - "esprima": "4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "jsbn": { @@ -2610,7 +2633,7 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stringify-safe": { @@ -2640,15 +2663,6 @@ "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", "dev": true }, - "JSONStream": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", - "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", - "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" - } - }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -2673,7 +2687,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "^1.1.5" } }, "labeled-stream-splicer": { @@ -2681,9 +2695,9 @@ "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-1.0.2.tgz", "integrity": "sha1-RhUzFTd4SYHo/SZOHzpDTE4N3WU=", "requires": { - "inherits": "2.0.3", - "isarray": "0.0.1", - "stream-splicer": "1.3.2" + "inherits": "^2.0.1", + "isarray": "~0.0.1", + "stream-splicer": "^1.1.0" } }, "latest-version": { @@ -2691,7 +2705,7 @@ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", "requires": { - "package-json": "4.0.1" + "package-json": "^4.0.0" } }, "lazy-cache": { @@ -2707,8 +2721,8 @@ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, "lexical-scope": { @@ -2716,7 +2730,7 @@ "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz", "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=", "requires": { - "astw": "2.2.0" + "astw": "^2.0.0" } }, "lie": { @@ -2724,7 +2738,7 @@ "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", "requires": { - "immediate": "3.0.6" + "immediate": "~3.0.5" } }, "localforage": { @@ -2747,8 +2761,8 @@ "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", "dev": true, "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" } }, "lodash._basecopy": { @@ -2781,9 +2795,9 @@ "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", "dev": true, "requires": { - "lodash._baseassign": "3.2.0", - "lodash._basecreate": "3.0.3", - "lodash._isiterateecall": "3.0.9" + "lodash._baseassign": "^3.0.0", + "lodash._basecreate": "^3.0.0", + "lodash._isiterateecall": "^3.0.0" } }, "lodash.isarguments": { @@ -2804,9 +2818,9 @@ "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", "dev": true, "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" } }, "lodash.memoize": { @@ -2840,8 +2854,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "make-dir": { @@ -2849,7 +2863,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=", "requires": { - "pify": "2.3.0" + "pify": "^2.3.0" } }, "marked": { @@ -2862,11 +2876,11 @@ "resolved": "https://registry.npmjs.org/matrix-appservice/-/matrix-appservice-0.3.4.tgz", "integrity": "sha1-M4ab3PMVJ0uUJUzDnZZdY8nLEyM=", "requires": { - "body-parser": "1.12.4", - "express": "4.12.4", - "js-yaml": "3.10.0", - "morgan": "1.5.3", - "request": "2.53.0" + "body-parser": "~1.12.0", + "express": "~4.12.0", + "js-yaml": "^3.2.7", + "morgan": "~1.5.1", + "request": "~2.53.0" }, "dependencies": { "mime-db": { @@ -2879,7 +2893,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", "integrity": "sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY=", "requires": { - "mime-db": "1.12.0" + "mime-db": "~1.12.0" } }, "qs": { @@ -2892,23 +2906,23 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.53.0.tgz", "integrity": "sha1-GAo66St7Y5gC5PlUXdj83rcddgw=", "requires": { - "aws-sign2": "0.5.0", - "bl": "0.9.5", - "caseless": "0.9.0", - "combined-stream": "0.0.7", - "forever-agent": "0.5.2", - "form-data": "0.2.0", - "hawk": "2.3.1", - "http-signature": "0.10.1", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.0.14", - "node-uuid": "1.4.8", - "oauth-sign": "0.6.0", - "qs": "2.3.3", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.4.3" + "aws-sign2": "~0.5.0", + "bl": "~0.9.0", + "caseless": "~0.9.0", + "combined-stream": "~0.0.5", + "forever-agent": "~0.5.0", + "form-data": "~0.2.0", + "hawk": "~2.3.0", + "http-signature": "~0.10.0", + "isstream": "~0.1.1", + "json-stringify-safe": "~5.0.0", + "mime-types": "~2.0.1", + "node-uuid": "~1.4.0", + "oauth-sign": "~0.6.0", + "qs": "~2.3.1", + "stringstream": "~0.0.4", + "tough-cookie": ">=0.12.0", + "tunnel-agent": "~0.4.0" } } } @@ -2918,15 +2932,15 @@ "resolved": "https://registry.npmjs.org/matrix-appservice-bridge/-/matrix-appservice-bridge-1.4.0.tgz", "integrity": "sha1-RBaJH5FGFkcAOcg6epJ/ZtcHQ8Y=", "requires": { - "bluebird": "2.11.0", - "extend": "3.0.1", - "jayschema": "0.3.2", - "js-yaml": "3.10.0", - "matrix-appservice": "0.3.4", + "bluebird": "^2.9.34", + "extend": "^3.0.0", + "jayschema": "^0.3.1", + "js-yaml": "^3.4.0", + "matrix-appservice": "^0.3.3", "matrix-js-sdk": "0.7.3", - "nedb": "1.8.0", - "nopt": "3.0.6", - "request": "2.83.0" + "nedb": "^1.1.3", + "nopt": "^3.0.3", + "request": "^2.61.0" }, "dependencies": { "bluebird": { @@ -2941,12 +2955,12 @@ "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-0.7.3.tgz", "integrity": "sha1-H7NI3MFUK+yu16jnBFQrPtRNMn8=", "requires": { - "another-json": "0.2.0", - "browser-request": "0.3.3", - "browserify": "10.2.6", + "another-json": "^0.2.0", + "browser-request": "^0.3.3", + "browserify": "^10.2.3", "olm": "https://matrix.org/packages/npm/olm/olm-2.1.0.tgz", - "q": "1.5.1", - "request": "2.83.0" + "q": "^1.4.1", + "request": "^2.53.0" } }, "md5.js": { @@ -2954,8 +2968,8 @@ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" + "hash-base": "^3.0.0", + "inherits": "^2.0.1" }, "dependencies": { "hash-base": { @@ -2963,8 +2977,8 @@ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.0.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } } } @@ -2989,8 +3003,8 @@ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" } }, "mime": { @@ -3008,7 +3022,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", "requires": { - "mime-db": "1.30.0" + "mime-db": "~1.30.0" } }, "minimalistic-assert": { @@ -3026,7 +3040,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.0.0" } }, "minimist": { @@ -3090,12 +3104,12 @@ "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "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" } }, "has-flag": { @@ -3110,7 +3124,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "ms": { @@ -3125,7 +3139,7 @@ "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -3135,20 +3149,20 @@ "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-3.9.1.tgz", "integrity": "sha1-6nXK+RmQkNJbDVUStaysuW5/h/M=", "requires": { - "browser-resolve": "1.11.2", - "concat-stream": "1.4.10", - "defined": "1.0.0", - "detective": "4.7.1", + "JSONStream": "^1.0.3", + "browser-resolve": "^1.7.0", + "concat-stream": "~1.4.5", + "defined": "^1.0.0", + "detective": "^4.0.0", "duplexer2": "0.0.2", - "inherits": "2.0.3", - "JSONStream": "1.3.2", - "parents": "1.0.1", - "readable-stream": "1.1.14", - "resolve": "1.4.0", - "stream-combiner2": "1.0.2", - "subarg": "1.0.0", - "through2": "1.1.1", - "xtend": "4.0.1" + "inherits": "^2.0.1", + "parents": "^1.0.0", + "readable-stream": "^1.1.13", + "resolve": "^1.1.3", + "stream-combiner2": "~1.0.0", + "subarg": "^1.0.0", + "through2": "^1.0.0", + "xtend": "^4.0.0" }, "dependencies": { "readable-stream": { @@ -3156,10 +3170,10 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } } } @@ -3175,10 +3189,10 @@ "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.5.3.tgz", "integrity": "sha1-ittOcvnlxUNuXZP0KRCDX3nan98=", "requires": { - "basic-auth": "1.0.4", - "debug": "2.2.0", - "depd": "1.0.1", - "on-finished": "2.2.1" + "basic-auth": "~1.0.1", + "debug": "~2.2.0", + "depd": "~1.0.1", + "on-finished": "~2.2.1" } }, "ms": { @@ -3210,9 +3224,9 @@ "requires": { "async": "0.2.10", "binary-search-tree": "0.2.5", - "localforage": "1.5.6", - "mkdirp": "0.5.1", - "underscore": "1.4.4" + "localforage": "^1.3.0", + "mkdirp": "~0.5.1", + "underscore": "~1.4.4" }, "dependencies": { "async": { @@ -3237,7 +3251,7 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "requires": { - "abbrev": "1.1.0" + "abbrev": "1" } }, "npm-run-path": { @@ -3245,7 +3259,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" } }, "npmlog": { @@ -3253,10 +3267,10 @@ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "number-is-nan": { @@ -3276,7 +3290,7 @@ }, "olm": { "version": "https://matrix.org/packages/npm/olm/olm-2.1.0.tgz", - "integrity": "sha1-s96jhKAYCHvKGljvNul5jyXQmpk=", + "integrity": "sha512-OonRG3CfqT0UiUEDJ4T105z40dLKMxrAW8+CRhW07v9K/PYQ1F3mOlaJn8bdFX9BFJJMZxoqDzX8ojsek32nOA==", "optional": true }, "on-finished": { @@ -3292,7 +3306,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "onetime": { @@ -3306,8 +3320,8 @@ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "requires": { - "minimist": "0.0.10", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" }, "dependencies": { "minimist": { @@ -3323,12 +3337,12 @@ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" }, "dependencies": { "wordwrap": { @@ -3360,10 +3374,10 @@ "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", "requires": { - "got": "6.7.1", - "registry-auth-token": "3.3.1", - "registry-url": "3.1.0", - "semver": "5.4.1" + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" } }, "pako": { @@ -3376,7 +3390,7 @@ "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", "requires": { - "path-platform": "0.11.15" + "path-platform": "~0.11.15" } }, "parse-asn1": { @@ -3384,11 +3398,11 @@ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", "requires": { - "asn1.js": "4.10.1", - "browserify-aes": "1.1.1", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.14" + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" } }, "parseurl": { @@ -3437,11 +3451,11 @@ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", "requires": { - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "ripemd160": "2.0.1", - "safe-buffer": "5.0.1", - "sha.js": "2.4.10" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "performance-now": { @@ -3466,7 +3480,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "pluralize": { @@ -3512,7 +3526,7 @@ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", "integrity": "sha1-DUCoL4Afw1VWfS7LZe/j8HfxIcU=", "requires": { - "forwarded": "0.1.2", + "forwarded": "~0.1.0", "ipaddr.js": "1.0.5" } }, @@ -3522,9 +3536,9 @@ "integrity": "sha1-AtUUpb7ZhvBMuyCTrxZ0FTX3ntw=", "dev": true, "requires": { - "fill-keys": "1.0.2", - "module-not-found-error": "1.0.1", - "resolve": "1.1.7" + "fill-keys": "^1.0.2", + "module-not-found-error": "^1.0.0", + "resolve": "~1.1.7" }, "dependencies": { "resolve": { @@ -3545,11 +3559,11 @@ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "parse-asn1": "5.1.0", - "randombytes": "2.0.6" + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" } }, "punycode": { @@ -3582,7 +3596,7 @@ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.1.0" }, "dependencies": { "safe-buffer": { @@ -3597,8 +3611,8 @@ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "requires": { - "randombytes": "2.0.6", - "safe-buffer": "5.1.1" + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" }, "dependencies": { "safe-buffer": { @@ -3634,10 +3648,10 @@ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "deep-extend": { @@ -3652,8 +3666,8 @@ "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-1.1.1.tgz", "integrity": "sha1-Xad8eZ7ROI0++IoYRxu1kk+KC6E=", "requires": { - "readable-stream": "1.0.34", - "readable-wrap": "1.0.0" + "readable-stream": "^1.0.31", + "readable-wrap": "^1.0.0" } }, "readable-stream": { @@ -3661,10 +3675,10 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "readable-wrap": { @@ -3672,7 +3686,7 @@ "resolved": "https://registry.npmjs.org/readable-wrap/-/readable-wrap-1.0.0.tgz", "integrity": "sha1-O1ohHGMeEjA6VJkcgGwX564ga/8=", "requires": { - "readable-stream": "1.1.14" + "readable-stream": "^1.1.13-1" }, "dependencies": { "readable-stream": { @@ -3680,10 +3694,10 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } } } @@ -3694,8 +3708,8 @@ "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", "mute-stream": "0.0.5" } }, @@ -3705,7 +3719,7 @@ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "dev": true, "requires": { - "resolve": "1.4.0" + "resolve": "^1.1.6" } }, "reduce-flatten": { @@ -3718,8 +3732,8 @@ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", "requires": { - "rc": "1.2.1", - "safe-buffer": "5.0.1" + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" } }, "registry-url": { @@ -3727,7 +3741,7 @@ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "requires": { - "rc": "1.2.1" + "rc": "^1.0.1" } }, "repeat-string": { @@ -3741,28 +3755,28 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "hawk": "~6.0.2", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "stringstream": "~0.0.5", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" }, "dependencies": { "assert-plus": { @@ -3780,7 +3794,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "requires": { - "hoek": "4.2.1" + "hoek": "4.x.x" } }, "caseless": { @@ -3793,7 +3807,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "cryptiles": { @@ -3801,7 +3815,7 @@ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "requires": { - "boom": "5.2.0" + "boom": "5.x.x" }, "dependencies": { "boom": { @@ -3809,7 +3823,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "requires": { - "hoek": "4.2.1" + "hoek": "4.x.x" } } } @@ -3829,9 +3843,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "asynckit": "0.4.0", + "asynckit": "^0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.17" + "mime-types": "^2.1.12" } }, "hawk": { @@ -3839,10 +3853,10 @@ "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.1", - "sntp": "2.1.0" + "boom": "4.x.x", + "cryptiles": "3.x.x", + "hoek": "4.x.x", + "sntp": "2.x.x" } }, "hoek": { @@ -3855,9 +3869,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "oauth-sign": { @@ -3880,7 +3894,7 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", "requires": { - "hoek": "4.2.1" + "hoek": "4.x.x" } }, "tunnel-agent": { @@ -3888,7 +3902,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.0.1" } }, "uuid": { @@ -3904,8 +3918,8 @@ "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", "dev": true, "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" } }, "resolve": { @@ -3913,7 +3927,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } }, "resolve-from": { @@ -3928,8 +3942,8 @@ "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", "dev": true, "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" } }, "right-align": { @@ -3939,7 +3953,7 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4" + "align-text": "^0.1.1" } }, "rimraf": { @@ -3948,7 +3962,7 @@ "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" }, "dependencies": { "glob": { @@ -3957,12 +3971,12 @@ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "minimatch": { @@ -3971,7 +3985,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } } } @@ -3981,8 +3995,8 @@ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", "requires": { - "hash-base": "2.0.2", - "inherits": "2.0.3" + "hash-base": "^2.0.0", + "inherits": "^2.0.1" } }, "run-async": { @@ -3991,7 +4005,7 @@ "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", "dev": true, "requires": { - "once": "1.4.0" + "once": "^1.3.0" } }, "rx-lite": { @@ -4015,7 +4029,7 @@ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "requires": { - "semver": "5.4.1" + "semver": "^5.0.3" } }, "send": { @@ -4023,18 +4037,23 @@ "resolved": "https://registry.npmjs.org/send/-/send-0.12.3.tgz", "integrity": "sha1-zRLcWP3iHk+RkCs5sv2gWnptm9w=", "requires": { - "debug": "2.2.0", - "depd": "1.0.1", + "debug": "~2.2.0", + "depd": "~1.0.1", "destroy": "1.0.3", "escape-html": "1.0.1", - "etag": "1.6.0", + "etag": "~1.6.0", "fresh": "0.2.4", "mime": "1.3.4", "ms": "0.7.1", - "on-finished": "2.2.1", - "range-parser": "1.0.3" + "on-finished": "~2.2.1", + "range-parser": "~1.0.2" }, "dependencies": { + "escape-html": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz", + "integrity": "sha1-GBoobq05ejmpKFfPsdQwUuNWv/A=" + }, "mime": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", @@ -4048,9 +4067,16 @@ "integrity": "sha1-X42gcyOtOF/z3FQfGnkXsuQ261c=", "requires": { "escape-html": "1.0.1", - "parseurl": "1.3.2", + "parseurl": "~1.3.0", "send": "0.12.3", "utils-merge": "1.0.0" + }, + "dependencies": { + "escape-html": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz", + "integrity": "sha1-GBoobq05ejmpKFfPsdQwUuNWv/A=" + } } }, "set-blocking": { @@ -4063,8 +4089,8 @@ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz", "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.0.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "shasum": { @@ -4072,8 +4098,8 @@ "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", "requires": { - "json-stable-stringify": "0.0.1", - "sha.js": "2.4.10" + "json-stable-stringify": "~0.0.0", + "sha.js": "~2.4.4" } }, "shebang-command": { @@ -4081,7 +4107,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -4100,9 +4126,9 @@ "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", "dev": true, "requires": { - "glob": "7.1.2", - "interpret": "1.0.3", - "rechoir": "0.6.2" + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" }, "dependencies": { "glob": { @@ -4111,12 +4137,12 @@ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "minimatch": { @@ -4125,7 +4151,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } } } @@ -4151,7 +4177,7 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "source-map": { @@ -4159,7 +4185,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } }, "sprintf-js": { @@ -4172,8 +4198,8 @@ "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-3.1.13.tgz", "integrity": "sha512-JxXKPJnkZ6NuHRojq+g2WXWBt3M1G9sjZaYiHEWSTGijDM3cwju/0T2XbWqMXFmPqDgw+iB7zKQvnns4bvzXlw==", "requires": { - "nan": "2.7.0", - "node-pre-gyp": "0.6.38" + "nan": "~2.7.0", + "node-pre-gyp": "~0.6.38" }, "dependencies": { "abbrev": { @@ -4184,8 +4210,8 @@ "version": "4.11.8", "bundled": true, "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } }, "ansi-regex": { @@ -4200,8 +4226,8 @@ "version": "1.1.4", "bundled": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.3" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, "asn1": { @@ -4233,28 +4259,28 @@ "bundled": true, "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "block-stream": { "version": "0.0.9", "bundled": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "boom": { "version": "2.10.1", "bundled": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "brace-expansion": { "version": "1.1.8", "bundled": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -4274,7 +4300,7 @@ "version": "1.0.5", "bundled": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "concat-map": { @@ -4293,14 +4319,14 @@ "version": "2.0.5", "bundled": true, "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "dashdash": { "version": "1.14.1", "bundled": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -4333,7 +4359,7 @@ "bundled": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "extend": { @@ -4352,9 +4378,9 @@ "version": "2.1.4", "bundled": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "fs.realpath": { @@ -4365,40 +4391,40 @@ "version": "1.0.11", "bundled": true, "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" } }, "fstream-ignore": { "version": "1.0.5", "bundled": true, "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" + "fstream": "^1.0.0", + "inherits": "2", + "minimatch": "^3.0.0" } }, "gauge": { "version": "2.7.4", "bundled": true, "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, "getpass": { "version": "0.1.7", "bundled": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -4411,12 +4437,12 @@ "version": "7.1.2", "bundled": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "graceful-fs": { @@ -4431,8 +4457,8 @@ "version": "4.2.1", "bundled": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "^4.9.1", + "har-schema": "^1.0.5" } }, "has-unicode": { @@ -4443,10 +4469,10 @@ "version": "3.1.3", "bundled": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" } }, "hoek": { @@ -4457,17 +4483,17 @@ "version": "1.1.1", "bundled": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "inflight": { "version": "1.0.6", "bundled": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -4482,7 +4508,7 @@ "version": "1.0.0", "bundled": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-typedarray": { @@ -4510,7 +4536,7 @@ "version": "1.0.1", "bundled": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stringify-safe": { @@ -4545,14 +4571,14 @@ "version": "2.1.17", "bundled": true, "requires": { - "mime-db": "1.30.0" + "mime-db": "~1.30.0" } }, "minimatch": { "version": "3.0.4", "bundled": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -4575,33 +4601,33 @@ "bundled": true, "requires": { "hawk": "3.1.3", - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.2", - "rc": "1.2.1", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.0.2", + "rc": "^1.1.7", "request": "2.81.0", - "rimraf": "2.6.2", - "semver": "5.4.1", - "tar": "2.2.1", - "tar-pack": "3.4.0" + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^2.2.1", + "tar-pack": "^3.4.0" } }, "nopt": { "version": "4.0.1", "bundled": true, "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.4" + "abbrev": "1", + "osenv": "^0.1.4" } }, "npmlog": { "version": "4.1.2", "bundled": true, "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "number-is-nan": { @@ -4620,7 +4646,7 @@ "version": "1.4.0", "bundled": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os-homedir": { @@ -4635,8 +4661,8 @@ "version": "0.1.4", "bundled": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, "path-is-absolute": { @@ -4663,10 +4689,10 @@ "version": "1.2.1", "bundled": true, "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { @@ -4679,48 +4705,48 @@ "version": "2.3.3", "bundled": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "request": { "version": "2.81.0", "bundled": true, "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" } }, "rimraf": { "version": "2.6.2", "bundled": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { @@ -4743,21 +4769,21 @@ "version": "1.0.9", "bundled": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "sshpk": { "version": "1.13.1", "bundled": true, "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" }, "dependencies": { "assert-plus": { @@ -4766,20 +4792,20 @@ } } }, - "string_decoder": { - "version": "1.0.3", + "string-width": { + "version": "1.0.2", "bundled": true, "requires": { - "safe-buffer": "5.1.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, - "string-width": { - "version": "1.0.2", + "string_decoder": { + "version": "1.0.3", "bundled": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "safe-buffer": "~5.1.0" } }, "stringstream": { @@ -4790,7 +4816,7 @@ "version": "3.0.1", "bundled": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-json-comments": { @@ -4801,37 +4827,37 @@ "version": "2.2.1", "bundled": true, "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" } }, "tar-pack": { "version": "3.4.0", "bundled": true, "requires": { - "debug": "2.6.9", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.3.3", - "rimraf": "2.6.2", - "tar": "2.2.1", - "uid-number": "0.0.6" + "debug": "^2.2.0", + "fstream": "^1.0.10", + "fstream-ignore": "^1.0.5", + "once": "^1.3.3", + "readable-stream": "^2.1.4", + "rimraf": "^2.5.1", + "tar": "^2.2.1", + "uid-number": "^0.0.6" } }, "tough-cookie": { "version": "2.3.3", "bundled": true, "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "tunnel-agent": { "version": "0.6.0", "bundled": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -4855,9 +4881,9 @@ "version": "1.10.0", "bundled": true, "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" }, "dependencies": { "assert-plus": { @@ -4870,7 +4896,7 @@ "version": "1.1.2", "bundled": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" } }, "wrappy": { @@ -4884,14 +4910,14 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" }, "dependencies": { "asn1": { @@ -4911,8 +4937,8 @@ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", "integrity": "sha1-v5tKv7QrJ011FHnkTg/yZWtvEZM=", "requires": { - "inherits": "2.0.3", - "readable-stream": "1.0.34" + "inherits": "~2.0.1", + "readable-stream": "^1.0.27-1" } }, "stream-combiner2": { @@ -4920,8 +4946,8 @@ "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.0.2.tgz", "integrity": "sha1-unKmtQy/q/qVD8i8h2BL0B62BnE=", "requires": { - "duplexer2": "0.0.2", - "through2": "0.5.1" + "duplexer2": "~0.0.2", + "through2": "~0.5.1" }, "dependencies": { "through2": { @@ -4929,8 +4955,8 @@ "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", "integrity": "sha1-390BLrnHAOIyP9M084rGIqs3Lac=", "requires": { - "readable-stream": "1.0.34", - "xtend": "3.0.0" + "readable-stream": "~1.0.17", + "xtend": "~3.0.0" } }, "xtend": { @@ -4946,11 +4972,11 @@ "integrity": "sha1-PARBvhW5v04iYnXm3IOWR0VUZmE=", "requires": { "indexof": "0.0.1", - "inherits": "2.0.3", - "isarray": "0.0.1", - "readable-stream": "1.1.14", - "readable-wrap": "1.0.0", - "through2": "1.1.1" + "inherits": "^2.0.1", + "isarray": "~0.0.1", + "readable-stream": "^1.1.13-1", + "readable-wrap": "^1.0.0", + "through2": "^1.0.0" }, "dependencies": { "readable-stream": { @@ -4958,29 +4984,29 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } } } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", @@ -4991,7 +5017,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -5015,7 +5041,7 @@ "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", "requires": { - "minimist": "1.2.0" + "minimist": "^1.1.0" } }, "supports-color": { @@ -5028,7 +5054,7 @@ "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", "requires": { - "acorn-node": "1.3.0" + "acorn-node": "^1.2.0" } }, "table": { @@ -5037,12 +5063,12 @@ "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", "dev": true, "requires": { - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "chalk": "1.1.3", - "lodash": "4.17.4", + "ajv": "^4.7.0", + "ajv-keywords": "^1.0.0", + "chalk": "^1.1.1", + "lodash": "^4.0.0", "slice-ansi": "0.0.4", - "string-width": "2.1.1" + "string-width": "^2.0.0" }, "dependencies": { "ansi-regex": { @@ -5063,8 +5089,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -5073,7 +5099,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -5083,11 +5109,11 @@ "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.4.2.tgz", "integrity": "sha512-tygyl5+eSHj4chpq5Zfy6cpc7MOUBClAW9ozghFH7hg9bAUzShOYn+/vUzTRkKOSLJWKfgYtP2tAU2c0oAD8eg==", "requires": { - "array-back": "2.0.0", - "deep-extend": "0.5.0", - "lodash.padend": "4.6.1", - "typical": "2.6.1", - "wordwrapjs": "3.0.0" + "array-back": "^2.0.0", + "deep-extend": "~0.5.0", + "lodash.padend": "^4.6.1", + "typical": "^2.6.1", + "wordwrapjs": "^3.0.0" } }, "term-size": { @@ -5095,7 +5121,7 @@ "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", "requires": { - "execa": "0.7.0" + "execa": "^0.7.0" } }, "test-value": { @@ -5103,8 +5129,8 @@ "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz", "integrity": "sha1-Edpv9nDzRxpztiXKTz/c97t0gpE=", "requires": { - "array-back": "1.0.4", - "typical": "2.6.1" + "array-back": "^1.0.3", + "typical": "^2.6.0" }, "dependencies": { "array-back": { @@ -5112,7 +5138,7 @@ "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", "requires": { - "typical": "2.6.1" + "typical": "^2.6.0" } } } @@ -5133,8 +5159,8 @@ "resolved": "https://registry.npmjs.org/through2/-/through2-1.1.1.tgz", "integrity": "sha1-CEfLxESfNAVXTb3M2buEG4OsNUU=", "requires": { - "readable-stream": "1.1.14", - "xtend": "4.0.1" + "readable-stream": ">=1.1.13-1 <1.2.0-0", + "xtend": ">=4.0.0 <4.1.0-0" }, "dependencies": { "readable-stream": { @@ -5142,10 +5168,10 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } } } @@ -5160,7 +5186,7 @@ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", "requires": { - "process": "0.11.10" + "process": "~0.11.0" } }, "tough-cookie": { @@ -5168,7 +5194,7 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "tryit": { @@ -5182,15 +5208,15 @@ "resolved": "https://registry.npmjs.org/tslint/-/tslint-4.5.1.tgz", "integrity": "sha1-BTVocb7yOkNJBnNABvwYgza6gks=", "requires": { - "babel-code-frame": "6.26.0", - "colors": "1.1.2", - "diff": "3.3.0", - "findup-sync": "0.3.0", - "glob": "7.1.2", - "optimist": "0.6.1", - "resolve": "1.4.0", - "tsutils": "1.9.1", - "update-notifier": "2.2.0" + "babel-code-frame": "^6.20.0", + "colors": "^1.1.2", + "diff": "^3.0.1", + "findup-sync": "~0.3.0", + "glob": "^7.1.1", + "optimist": "~0.6.0", + "resolve": "^1.1.7", + "tsutils": "^1.1.0", + "update-notifier": "^2.0.0" }, "dependencies": { "glob": { @@ -5198,12 +5224,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "minimatch": { @@ -5211,7 +5237,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } } } @@ -5243,7 +5269,7 @@ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "prelude-ls": "1.1.2" + "prelude-ls": "~1.1.2" } }, "type-detect": { @@ -5258,7 +5284,7 @@ "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.18" + "mime-types": "~2.1.18" }, "dependencies": { "mime-db": { @@ -5271,7 +5297,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "1.33.0" + "mime-db": "~1.33.0" } } } @@ -5298,9 +5324,9 @@ "dev": true, "optional": true, "requires": { - "source-map": "0.5.6", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" }, "dependencies": { "source-map": { @@ -5339,7 +5365,7 @@ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", "requires": { - "crypto-random-string": "1.0.0" + "crypto-random-string": "^1.0.0" } }, "unzip-response": { @@ -5352,14 +5378,14 @@ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.2.0.tgz", "integrity": "sha1-G1g3z5DAc22IYncytmHBOPht5y8=", "requires": { - "boxen": "1.2.1", - "chalk": "1.1.3", - "configstore": "3.1.1", - "import-lazy": "2.1.0", - "is-npm": "1.0.0", - "latest-version": "3.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "3.0.0" + "boxen": "^1.0.0", + "chalk": "^1.0.0", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, "url": { @@ -5383,7 +5409,7 @@ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "requires": { - "prepend-http": "1.0.4" + "prepend-http": "^1.0.1" } }, "user-home": { @@ -5392,7 +5418,7 @@ "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", "dev": true, "requires": { - "os-homedir": "1.0.2" + "os-homedir": "^1.0.0" } }, "util": { @@ -5430,9 +5456,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" }, "dependencies": { "assert-plus": { @@ -5460,7 +5486,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "wide-align": { @@ -5468,7 +5494,7 @@ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" } }, "widest-line": { @@ -5476,7 +5502,7 @@ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.1" } }, "window-size": { @@ -5496,8 +5522,8 @@ "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-3.0.0.tgz", "integrity": "sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==", "requires": { - "reduce-flatten": "1.0.1", - "typical": "2.6.1" + "reduce-flatten": "^1.0.1", + "typical": "^2.6.1" } }, "wrappy": { @@ -5511,7 +5537,7 @@ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", "dev": true, "requires": { - "mkdirp": "0.5.1" + "mkdirp": "^0.5.1" } }, "write-file-atomic": { @@ -5519,9 +5545,9 @@ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" } }, "ws": { @@ -5529,9 +5555,9 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-4.0.0.tgz", "integrity": "sha512-QYslsH44bH8O7/W2815u5DpnCpXWpEK44FmaHffNwgJI4JMaSZONgPBTOfrxJ29mXKbXak+LsJ2uAkDTYq2ptQ==", "requires": { - "async-limiter": "1.0.0", - "safe-buffer": "5.1.1", - "ultron": "1.1.1" + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" }, "dependencies": { "safe-buffer": { @@ -5563,9 +5589,9 @@ "dev": true, "optional": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" }, "dependencies": { diff --git a/src/bot.ts b/src/bot.ts index c1804ce55b1a1475a1175062cc40f363c2199c0a..ed6288719cd2a42a10826bfc28a6bade143c756a 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -6,6 +6,7 @@ import { DbEvent } from "./db/dbdataevent"; import { MatrixUser, RemoteUser, Bridge, Entry } from "matrix-appservice-bridge"; import { Util } from "./util"; import { MessageProcessor, MessageProcessorOpts } from "./messageprocessor"; +import { MatrixEventProcessor, MatrixEventProcessorOpts } from "./matrixeventprocessor"; import { PresenceHandler } from "./presencehandler"; import * as Discord from "discord.js"; import * as log from "npmlog"; @@ -37,15 +38,19 @@ export class DiscordBot { private presenceInterval: any; private sentMessages: string[]; private msgProcessor: MessageProcessor; + private mxEventProcessor: MatrixEventProcessor; private presenceHandler: PresenceHandler; + constructor(config: DiscordBridgeConfig, store: DiscordStore, private provisioner: Provisioner) { this.config = config; this.store = store; this.sentMessages = []; this.clientFactory = new DiscordClientFactory(store, config.auth); this.msgProcessor = new MessageProcessor( - new MessageProcessorOpts(this.config.bridge.domain), - this, + new MessageProcessorOpts(this.config.bridge.domain, this), + ); + this.mxEventProcessor = new MatrixEventProcessor( + new MatrixEventProcessorOpts(this.config, this.bridge), ); this.presenceHandler = new PresenceHandler(this); } @@ -62,7 +67,7 @@ export class DiscordBot { return this.bridge.getIntentFromLocalpart(`_discord_${member.id}`); } - public run (): Promise<null> { + public run (): Promise<void> { return this.clientFactory.init().then(() => { return this.clientFactory.getClient(); }).then((client: any) => { @@ -160,41 +165,6 @@ export class DiscordBot { }); } - public MatrixEventToEmbed(event: any, profile: any, channel: Discord.TextChannel): Discord.RichEmbed { - const body = this.config.bridge.disableDiscordMentions ? event.content.body : - this.msgProcessor.FindMentionsInPlainBody( - event.content.body, - channel.members.array(), - ); - if (profile) { - profile.displayname = profile.displayname || event.sender; - if (profile.avatar_url) { - const mxClient = this.bridge.getClientFactory().getClientAs(); - profile.avatar_url = mxClient.mxcUrlToHttp(profile.avatar_url, AVATAR_SIZE, AVATAR_SIZE, "scale"); - } - /* See issue #82 - const isMarkdown = (event.content.format === "org.matrix.custom.html"); - if (!isMarkdown) { - body = "\\" + body; - } - if (event.content.msgtype === "m.emote") { - body = `*${body}*`; - } - */ - return new Discord.RichEmbed({ - author: { - name: profile.displayname.substring(DISCORD_NAME_START, MAX_DISCORD_NAME_LENGTH), - icon_url: profile.avatar_url, - url: `https://matrix.to/#/${event.sender}`, - }, - description: body, - }); - } - return new Discord.RichEmbed({ - description: body, - }); - } - public async ProcessMatrixMsgEvent(event: any, guildId: string, channelId: string): Promise<null> { const mxClient = this.bridge.getClientFactory().getClientAs(); log.verbose("DiscordBot", `Looking up ${guildId}_${channelId}`); @@ -209,7 +179,7 @@ export class DiscordBot { log.warn("DiscordBot", `User ${event.sender} has no member state. That's odd.`); } } - const embed = this.MatrixEventToEmbed(event, profile, chan); + const embed = this.mxEventProcessor.EventToEmbed(event, profile, chan); const opts: Discord.MessageOptions = {}; const hasAttachment = ["m.image", "m.audio", "m.video", "m.file"].indexOf(event.content.msgtype) !== -1; if (hasAttachment) { diff --git a/src/config.ts b/src/config.ts index 3730acf6ba642c58cd712d797e6eaf1f76bfad22..1488f307fce28c7683a0fbc13ff928d4557e810f 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,11 +1,11 @@ /** Type annotations for config/config.schema.yaml */ export class DiscordBridgeConfig { - public bridge: DiscordBridgeConfigBridge; - public auth: DiscordBridgeConfigAuth; - public logging: DiscordBridgeConfigLogging; - public database: DiscordBridgeConfigDatabase; - public room: DiscordBridgeConfigRoom; + public bridge: DiscordBridgeConfigBridge = new DiscordBridgeConfigBridge(); + public auth: DiscordBridgeConfigAuth = new DiscordBridgeConfigAuth(); + public logging: DiscordBridgeConfigLogging = new DiscordBridgeConfigLogging(); + public database: DiscordBridgeConfigDatabase = new DiscordBridgeConfigDatabase(); + public room: DiscordBridgeConfigRoom = new DiscordBridgeConfigRoom(); } class DiscordBridgeConfigBridge { @@ -17,6 +17,8 @@ class DiscordBridgeConfigBridge { public disableDiscordMentions: boolean; public disableDeletionForwarding: boolean; public enableSelfServiceBridging: boolean; + public disableEveryoneMention: boolean = false; + public disableHereMention: boolean = false; } class DiscordBridgeConfigDatabase { diff --git a/src/db/schema/dbschema.ts b/src/db/schema/dbschema.ts index 814e4a4c47007f4a362e1f6e6ab408603a51a41e..563aeae5ae1b0d9032635741fc2dfa897a1f4c5a 100644 --- a/src/db/schema/dbschema.ts +++ b/src/db/schema/dbschema.ts @@ -1,6 +1,6 @@ import { DiscordStore } from "../../store"; export interface IDbSchema { description: string; - run(store: DiscordStore): Promise<null>; - rollBack(store: DiscordStore): Promise<null>; + run(store: DiscordStore): Promise<null|void|Error|Error[]>; + rollBack(store: DiscordStore): Promise<null|void|Error|Error[]>; } diff --git a/src/db/schema/v1.ts b/src/db/schema/v1.ts index 32446f98d75155cc187dd3e70b42570f6519c6b1..1dcf17f9828b03d53113ed896a8a5e43953fd3ce 100644 --- a/src/db/schema/v1.ts +++ b/src/db/schema/v1.ts @@ -2,7 +2,7 @@ import {IDbSchema} from "./dbschema"; import {DiscordStore} from "../../store"; export class Schema implements IDbSchema { public description = "Schema, Client Auth Table"; - public run(store: DiscordStore): Promise<null> { + public run(store: DiscordStore): Promise<Error> { return store.create_table(` CREATE TABLE schema ( version INTEGER UNIQUE NOT NULL @@ -16,7 +16,7 @@ export class Schema implements IDbSchema { );`, "user_tokens"); }); } - public rollBack(store: DiscordStore): Promise<null> { + public rollBack(store: DiscordStore): Promise<Error> { return store.db.execAsync( `DROP TABLE IF EXISTS schema; DROP TABLE IF EXISTS user_tokens`, diff --git a/src/db/schema/v2.ts b/src/db/schema/v2.ts index be22b682d5399bfb4a6e1f1ef804136fd556edc9..26969a1058b19f0c16b55234de4c67850e44abe1 100644 --- a/src/db/schema/v2.ts +++ b/src/db/schema/v2.ts @@ -2,7 +2,7 @@ import {IDbSchema} from "./dbschema"; import {DiscordStore} from "../../store"; export class Schema implements IDbSchema { public description = "Create DM Table, User Options"; - public run(store: DiscordStore): Promise<null> { + public run(store: DiscordStore): Promise<Error[]> { return Promise.all([ store.create_table(` CREATE TABLE dm_rooms ( @@ -17,7 +17,7 @@ export class Schema implements IDbSchema { );`, "client_options", )]); } - public rollBack(store: DiscordStore): Promise<null> { + public rollBack(store: DiscordStore): Promise<Error> { return store.db.execAsync( `DROP TABLE IF EXISTS dm_rooms; DROP TABLE IF EXISTS client_options;`, diff --git a/src/db/schema/v3.ts b/src/db/schema/v3.ts index 88de6e9be802c524d7fd5a87fe49fb15587091fd..81b7f7386e0dfecba9ec3319d0179161267e0208 100644 --- a/src/db/schema/v3.ts +++ b/src/db/schema/v3.ts @@ -34,12 +34,14 @@ export class Schema implements IDbSchema { }); } - public rollBack(store: DiscordStore): Promise <null> { + public rollBack(store: DiscordStore): Promise <void> { return Promise.all([store.db.execAsync( `DROP TABLE IF EXISTS user_id_discord_id;`, ), store.db.execAsync( `DROP TABLE IF EXISTS discord_id_token;`, - )]); + )]).then(() => { + + }); } private async moveUserIds(store: DiscordStore): Promise <null> { diff --git a/src/db/schema/v4.ts b/src/db/schema/v4.ts index 4e097c8cde096df08352bcd8ccb5eb0e24fbf1f5..fa493e3423a615ce15906b9c532f1c6e29a8e27c 100644 --- a/src/db/schema/v4.ts +++ b/src/db/schema/v4.ts @@ -6,7 +6,7 @@ import * as Bluebird from "bluebird"; export class Schema implements IDbSchema { public description = "create guild emoji table"; - public run(store: DiscordStore): Promise<null> { + public run(store: DiscordStore): Promise<Error> { return store.create_table(` CREATE TABLE guild_emoji ( emoji_id TEXT NOT NULL, @@ -19,7 +19,7 @@ export class Schema implements IDbSchema { );`, "guild_emoji"); } - public rollBack(store: DiscordStore): Promise <null> { + public rollBack(store: DiscordStore): Promise <Error> { return store.db.execAsync( `DROP TABLE IF EXISTS guild_emoji;`, ); diff --git a/src/db/schema/v5.ts b/src/db/schema/v5.ts index 8d6320dd3413d1772b6268463db24951ec4f176b..e99eea4bd7f58a20eb428b4d3e2701af37049fd0 100644 --- a/src/db/schema/v5.ts +++ b/src/db/schema/v5.ts @@ -6,7 +6,7 @@ import * as Bluebird from "bluebird"; export class Schema implements IDbSchema { public description = "create event_store table"; - public run(store: DiscordStore): Promise<null> { + public run(store: DiscordStore): Promise<Error> { return store.create_table(` CREATE TABLE event_store ( matrix_id TEXT NOT NULL, @@ -15,7 +15,7 @@ export class Schema implements IDbSchema { );`, "event_store"); } - public rollBack(store: DiscordStore): Promise <null> { + public rollBack(store: DiscordStore): Promise <Error> { return store.db.execAsync( `DROP TABLE IF EXISTS event_store;`, ); diff --git a/src/matrixeventprocessor.ts b/src/matrixeventprocessor.ts new file mode 100644 index 0000000000000000000000000000000000000000..3a4abb9ca3d28de944f9397aed631ec2ba15c82d --- /dev/null +++ b/src/matrixeventprocessor.ts @@ -0,0 +1,88 @@ +import * as Discord from "discord.js"; +import {MessageProcessorOpts, MessageProcessor} from "./messageprocessor"; +import {DiscordBot} from "./bot"; +import {DiscordBridgeConfig} from "./config"; +import * as escapeStringRegexp from "escape-string-regexp"; + +export class MatrixEventProcessorOpts { + constructor( + readonly config: DiscordBridgeConfig, + readonly bridge: any, + ) { + + } +} + +export class MatrixEventProcessor { + private config: DiscordBridgeConfig; + private bridge: any; + + constructor (opts: MatrixEventProcessorOpts) { + this.config = opts.config; + this.bridge = opts.bridge; + } + + public EventToEmbed(event: any, profile: any|null, channel: Discord.TextChannel): Discord.RichEmbed { + let body = this.config.bridge.disableDiscordMentions ? event.content.body : + this.FindMentionsInPlainBody( + event.content.body, + channel.members.array(), + ); + + // Replace @everyone + if (this.config.bridge.disableEveryoneMention) { + body = body.replace(new RegExp(`@everyone`, "g"), "@ everyone"); + } + + // Replace @here + if (this.config.bridge.disableHereMention) { + body = body.replace(new RegExp(`@here`, "g"), "@ here"); + } + + if (profile) { + profile.displayname = profile.displayname || event.sender; + if (profile.avatar_url) { + const mxClient = this.bridge.getClientFactory().getClientAs(); + profile.avatar_url = mxClient.mxcUrlToHttp(profile.avatar_url); + } + /* See issue #82 + const isMarkdown = (event.content.format === "org.matrix.custom.html"); + if (!isMarkdown) { + body = "\\" + body; + } + if (event.content.msgtype === "m.emote") { + body = `*${body}*`; + } + */ + return new Discord.RichEmbed({ + author: { + name: profile.displayname, + icon_url: profile.avatar_url, + url: `https://matrix.to/#/${event.sender}`, + }, + description: body, + }); + } + return new Discord.RichEmbed({ + author: { + name: event.sender, + url: `https://matrix.to/#/${event.sender}`, + }, + description: body, + }); + } + + public FindMentionsInPlainBody(body: string, members: Discord.GuildMember[]): string { + for (const member of members) { + const matcher = escapeStringRegexp(member.user.username + "#" + member.user.discriminator) + "|" + + escapeStringRegexp(member.displayName); + body = body.replace( + new RegExp( + `\\b(${matcher})(?=\\b)` + , "mig"), `<@!${member.id}>`, + ); + } + return body; + } + +} diff --git a/src/messageprocessor.ts b/src/messageprocessor.ts index a65ab975fb2389c0adbfaeb902f44c01358beb23..6dac01a2fc0eb803ce06111fb6144c835c6f1c51 100644 --- a/src/messageprocessor.ts +++ b/src/messageprocessor.ts @@ -2,7 +2,6 @@ import * as Discord from "discord.js"; import * as marked from "marked"; import * as log from "npmlog"; import { DiscordBot } from "./bot"; -import * as escapeStringRegexp from "escape-string-regexp"; import * as escapeHtml from "escape-html"; const USER_REGEX = /<@!?([0-9]*)>/g; @@ -23,9 +22,8 @@ marked.setOptions({ }); export class MessageProcessorOpts { - public domain: string; - constructor (domain: string) { - this.domain = domain; + constructor (readonly domain: string, readonly bot: DiscordBot = null) { + } } @@ -37,10 +35,13 @@ export class MessageProcessorMatrixResult { export class MessageProcessor { private readonly opts: MessageProcessorOpts; - private readonly bot: DiscordBot; - constructor (opts: MessageProcessorOpts, bot: DiscordBot) { - this.opts = opts; - this.bot = bot; + constructor (opts: MessageProcessorOpts, bot: DiscordBot = null) { + // Backwards compat + if (bot != null) { + this.opts = new MessageProcessorOpts(opts.domain, bot); + } else { + this.opts = opts; + } } public async FormatDiscordMessage(msg: Discord.Message): Promise<MessageProcessorMatrixResult> { @@ -148,8 +149,8 @@ export class MessageProcessor { const name = results[NAME_EMOJI_REGEX_GROUP]; const id = results[ID_EMOJI_REGEX_GROUP]; try { - // we still fetch the mxcUrl to check if the emoji is valid - const mxcUrl = await this.bot.GetEmoji(name, animated, id); + // we still fetch the mxcUrl to check if the emoji is valid= + const mxcUrl = await this.opts.bot.GetEmoji(name, animated, id); content = content.replace(results[0], `:${name}:`); } catch (ex) { log.warn("MessageProcessor", @@ -168,7 +169,7 @@ export class MessageProcessor { const name = escapeHtml(results[NAME_EMOJI_REGEX_GROUP]); const id = results[ID_EMOJI_REGEX_GROUP]; try { - const mxcUrl = await this.bot.GetEmoji(name, animated, id); + const mxcUrl = await this.opts.bot.GetEmoji(name, animated, id); content = content.replace(results[0], `<img alt="${name}" src="${mxcUrl}" style="height: ${EMOJI_SIZE};"/>`); } catch (ex) { @@ -180,17 +181,4 @@ export class MessageProcessor { } return content; } - - public FindMentionsInPlainBody(body: string, members: Discord.GuildMember[]): string { - for (const member of members) { - const matcher = escapeStringRegexp(member.user.username + "#" + member.user.discriminator) + "|" + - escapeStringRegexp(member.displayName); - body = body.replace( - new RegExp( - `\\b(${matcher})(?=\\b)` - , "mig"), `<@!${member.id}>`, - ); - } - return body; - } } diff --git a/src/store.ts b/src/store.ts index 2cd2517931a140a928263cda9c6c2dc58b9c0a23..6bb4ec47129243d6775658c5c837b9482bf3f5dd 100644 --- a/src/store.ts +++ b/src/store.ts @@ -20,7 +20,7 @@ export class DiscordStore { this.filepath = filepath; } - public backup_database(): Promise<null> { + public backup_database(): Promise<void|{}> { if (this.filepath === ":memory:") { log.info("DiscordStore", "Can't backup a :memory: database."); return Promise.resolve(); @@ -37,7 +37,6 @@ export class DiscordStore { if (!result) { log.warn("DiscordStore", "NOT backing up database while a file already exists"); resolve(true); - return; } const rd = fs.createReadStream(this.filepath); rd.on("error", reject); @@ -52,7 +51,7 @@ export class DiscordStore { /** * Checks the database has all the tables needed. */ - public async init (overrideSchema: number = 0) { + public async init (overrideSchema: number = 0): Promise<void> { log.info("DiscordStore", "Starting DB Init"); await this.open_database(); let version = await this.getSchemaVersion(); @@ -95,7 +94,7 @@ export class DiscordStore { }); } - public add_user_token(userId: string, discordId: string, token: string): Promise<null> { + public add_user_token(userId: string, discordId: string, token: string): Promise<any> { log.silly("SQL", "add_user_token => %s", userId); return Promise.all([ this.db.runAsync( @@ -227,7 +226,7 @@ export class DiscordStore { }); } - public Get<T extends IDbData>(dbType: {new(): T; }, params: any): Promise<T> { + public Get<T extends IDbData>(dbType: {new(): T; }, params: any): Promise<T|null> { const dType = new dbType(); log.silly("DiscordStore", `get <${dType.constructor.name} with params ${params}>`); return dType.RunQuery(this, params).then(() => { @@ -235,20 +234,21 @@ export class DiscordStore { return dType; }).catch((ex) => { log.warn("DiscordStore", `get <${dType.constructor.name} with params ${params} FAILED with exception ${ex}>`); + return null; }); } - public Insert<T extends IDbData>(data: T): Promise<null> { + public Insert<T extends IDbData>(data: T): Promise<Error> { log.silly("DiscordStore", `insert <${data.constructor.name}>`); return data.Insert(this); } - public Update<T extends IDbData>(data: T): Promise<null> { + public Update<T extends IDbData>(data: T): Promise<Error> { log.silly("DiscordStore", `insert <${data.constructor.name}>`); return data.Update(this); } - public Delete<T extends IDbData>(data: T): Promise<null> { + public Delete<T extends IDbData>(data: T): Promise<Error> { log.silly("DiscordStore", `insert <${data.constructor.name}>`); return data.Delete(this); } diff --git a/test/mocks/channel.ts b/test/mocks/channel.ts new file mode 100644 index 0000000000000000000000000000000000000000..c9669f94ec275ffd3e035b3a57074639e5816b5c --- /dev/null +++ b/test/mocks/channel.ts @@ -0,0 +1,9 @@ +import {MockUser} from "./user"; +import * as Discord from "discord.js"; +import {MockMember} from "./member"; +import {MockCollection} from "./collection"; + +// Mocking TextChannel +export class MockChannel { + public members = new MockCollection<string, MockMember>(); +} diff --git a/test/mocks/discordclientfactory.ts b/test/mocks/discordclientfactory.ts index 9894f5e24d200d836464e2e7580c6173ce77cace..99bb5b2e47e6fd4ffc5becc86a9e5f1a6082cff6 100644 --- a/test/mocks/discordclientfactory.ts +++ b/test/mocks/discordclientfactory.ts @@ -5,7 +5,7 @@ export class DiscordClientFactory { ; } - public init(): Promise<null> { + public init(): Promise<void> { return Promise.resolve(); } diff --git a/test/mocks/guild.ts b/test/mocks/guild.ts index d79fd8823165274d9679c7c227b6ecf400095a55..30c85a23decfc45a89aaa5903a8ded6896cee95a 100644 --- a/test/mocks/guild.ts +++ b/test/mocks/guild.ts @@ -1,8 +1,9 @@ import {MockCollection} from "./collection"; import {MockMember} from "./member"; +import {Channel} from "discord.js"; export class MockGuild { - public channels = new MockCollection<string, any>(); + public channels = new MockCollection<string, Channel>(); public members = new MockCollection<string, MockMember>(); public id: string; constructor(id: string, channels: any[]) { diff --git a/test/mocks/member.ts b/test/mocks/member.ts index b614c9650032effe5f9b855550bcaddace0942f4..60227bf68e47f3d4eb124d65c013b4837d6c9411 100644 --- a/test/mocks/member.ts +++ b/test/mocks/member.ts @@ -5,10 +5,12 @@ export class MockMember { public id = ""; public presence: Discord.Presence; public user: MockUser; + public displayName: string; constructor(id: string, username: string) { this.id = id; this.presence = new Discord.Presence({}); this.user = new MockUser(this.id, username); + this.displayName = username; } public MockSetPresence(presence: Discord.Presence) { diff --git a/test/test_matrixeventprocessor.ts b/test/test_matrixeventprocessor.ts new file mode 100644 index 0000000000000000000000000000000000000000..bec92ad263f26894c0b1f3971dc1e52fae1c528a --- /dev/null +++ b/test/test_matrixeventprocessor.ts @@ -0,0 +1,238 @@ +import * as Chai from "chai"; +import * as ChaiAsPromised from "chai-as-promised"; +import * as log from "npmlog"; +import * as Discord from "discord.js"; +import * as Proxyquire from "proxyquire"; + +// import * as Proxyquire from "proxyquire"; +import { PresenceHandler } from "../src/presencehandler"; +import { DiscordBot } from "../src/bot"; +import { MockGuild } from "./mocks/guild"; +import { MockMember } from "./mocks/member"; +import {MatrixEventProcessor, MatrixEventProcessorOpts} from "../src/matrixeventprocessor"; +import {DiscordBridgeConfig} from "../src/config"; +import {MessageProcessor, MessageProcessorOpts} from "../src/messageprocessor"; +import {MockChannel} from "./mocks/channel"; + +Chai.use(ChaiAsPromised); +const expect = Chai.expect; +// const assert = Chai.assert; +const bot = { + GetIntentFromDiscordMember: (member) => { + return { + getClient: () => { + return { + + }; + }, + }; + }, +}; + +function createMatrixEventProcessor + (disableMentions: boolean = false, disableEveryone = false, disableHere = false): MatrixEventProcessor { + const bridge = { + getClientFactory: () => { + return { + getClientAs: () => { + return { + mxcUrlToHttp: () => { + return "https://madeup.com"; + }, + }; + }, + }; + }, + }; + const config = new DiscordBridgeConfig(); + config.bridge.disableDiscordMentions = disableMentions; + config.bridge.disableEveryoneMention = disableEveryone; + config.bridge.disableHereMention = disableHere; + return new MatrixEventProcessor( + new MatrixEventProcessorOpts( + config, + bridge, + )); +} +const mockChannel = new MockChannel(); +mockChannel.members.set("12345", new MockMember("12345", "testuser2")); + +describe("MatrixEventProcessor", () => { + describe("EventToEmbed", () => { + it("Should contain a profile.", () => { + const processor = createMatrixEventProcessor(); + const evt = processor.EventToEmbed({ + sender: "@test:localhost", + content: { + body: "testcontent", + }, + }, { + displayname: "Test User", + avatar_url: "mxc://localhost/avatarurl", + }, mockChannel as any); + Chai.assert.equal(evt.author.name, "Test User"); + Chai.assert.equal(evt.author.icon_url, "https://madeup.com"); + Chai.assert.equal(evt.author.url, "https://matrix.to/#/@test:localhost"); + }); + + it("Should should contain the users displayname if it exists.", () => { + const processor = createMatrixEventProcessor(); + const evt = processor.EventToEmbed({ + sender: "@test:localhost", + content: { + body: "testcontent", + }, + }, { + displayname: "Test User"}, mockChannel as any); + Chai.assert.equal(evt.author.name, "Test User"); + Chai.assert.isUndefined(evt.author.icon_url); + Chai.assert.equal(evt.author.url, "https://matrix.to/#/@test:localhost"); + }); + + it("Should should contain the users userid if the displayname is not set.", () => { + const processor = createMatrixEventProcessor(); + const evt = processor.EventToEmbed({ + sender: "@test:localhost", + content: { + body: "testcontent", + }, + }, null, mockChannel as any); + Chai.assert.equal(evt.author.name, "@test:localhost"); + Chai.assert.isUndefined(evt.author.icon_url); + Chai.assert.equal(evt.author.url, "https://matrix.to/#/@test:localhost"); + }); + + it("Should should contain the users avatar if it exists.", () => { + const processor = createMatrixEventProcessor(); + const evt = processor.EventToEmbed({ + sender: "@test:localhost", + content: { + body: "testcontent", + }, + }, {avatar_url: "test"}, mockChannel as any); + Chai.assert.equal(evt.author.name, "@test:localhost"); + Chai.assert.equal(evt.author.icon_url, "https://madeup.com"); + Chai.assert.equal(evt.author.url, "https://matrix.to/#/@test:localhost"); + }); + + it("Should enable mentions if configured.", () => { + const processor = createMatrixEventProcessor(); + const evt = processor.EventToEmbed({ + sender: "@test:localhost", + content: { + body: "@testuser2 Hello!", + }, + }, {avatar_url: "test"}, mockChannel as any); + Chai.assert.equal(evt.description, "@<@!12345> Hello!"); + }); + + it("Should disable mentions if configured.", () => { + const processor = createMatrixEventProcessor(true); + const evt = processor.EventToEmbed({ + sender: "@test:localhost", + content: { + body: "@testuser2 Hello!", + }, + }, {avatar_url: "test"}, mockChannel as any); + Chai.assert.equal(evt.description, "@testuser2 Hello!"); + }); + + it("Should remove everyone mentions if configured.", () => { + const processor = createMatrixEventProcessor(false, true); + const evt = processor.EventToEmbed({ + sender: "@test:localhost", + content: { + body: "@everyone Hello!", + }, + }, {avatar_url: "test"}, mockChannel as any); + Chai.assert.equal(evt.description, "@ everyone Hello!"); + }); + + it("Should remove here mentions if configured.", () => { + const processor = createMatrixEventProcessor(false, false, true); + const evt = processor.EventToEmbed({ + sender: "@test:localhost", + content: { + body: "@here Hello!", + }, + }, {avatar_url: "test"}, mockChannel as any); + Chai.assert.equal(evt.description, "@ here Hello!"); + }); + }); + describe("FindMentionsInPlainBody", () => { + it("processes mentioned username correctly", async () => { + const processor = createMatrixEventProcessor(); + const guild: any = new MockGuild("123", []); + const members: Discord.GuildMember[] = [new Discord.GuildMember(guild, { + user: { + username: "TestUsername", + id: "12345", + discriminator: "54321", + }, + })]; + Chai.assert.equal( + processor.FindMentionsInPlainBody("Hello TestUsername", members), + "Hello <@!12345>", + ); + Chai.assert.equal( + processor.FindMentionsInPlainBody("Hello TestUsername#54321", members), + "Hello <@!12345>", + ); + }); + it("processes mentioned nickname correctly", async () => { + const processor = createMatrixEventProcessor(); + const guild: any = new MockGuild("123", []); + const members: Discord.GuildMember[] = [new Discord.GuildMember(guild, { + nick: "Test", + user: { + username: "Test", + id: "54321", + }, + }), new Discord.GuildMember(guild, { + nick: "TestNickname", + user: { + username: "TestUsername", + id: "12345", + }, + })]; + Chai.assert.equal(processor.FindMentionsInPlainBody("Hello TestNickname", members), "Hello <@!12345>"); + Chai.assert.equal(processor.FindMentionsInPlainBody("TestNickname: Hello", members), "<@!12345>: Hello"); + Chai.assert.equal(processor.FindMentionsInPlainBody("TestNickname, Hello", members), "<@!12345>, Hello"); + Chai.assert.equal(processor.FindMentionsInPlainBody("TestNickname Hello", members), "<@!12345> Hello"); + Chai.assert.equal(processor.FindMentionsInPlainBody("testNicKName Hello", members), "<@!12345> Hello"); + Chai.assert.equal( + processor.FindMentionsInPlainBody("I wish TestNickname was here", members), + "I wish <@!12345> was here", + ); + Chai.assert.equal( + processor.FindMentionsInPlainBody("I wish TestNickname was here, TestNickname is cool", members), + "I wish <@!12345> was here, <@!12345> is cool", + ); + Chai.assert.equal( + processor.FindMentionsInPlainBody("TestNickname was here with Test", members), + "<@!12345> was here with <@!54321>", + ); + }); + it("processes non-mentions correctly", async () => { + const processor = createMatrixEventProcessor(); + const guild: any = new MockGuild("123", []); + const members: Discord.GuildMember[] = [new Discord.GuildMember(guild, { + nick: "that", + user: { + username: "TestUsername", + id: "12345", + }, + }), + new Discord.GuildMember(guild, { + nick: "testingstring", + user: { + username: "that", + id: "12345", + }, + })]; + const msg = "Welcome thatman"; + const content = processor.FindMentionsInPlainBody(msg, members); + Chai.assert.equal(content, "Welcome thatman"); + }); + }); +}); diff --git a/test/test_messageprocessor.ts b/test/test_messageprocessor.ts index 3383a8be00fbc891ef4e8709634326abaef38e58..063a29d80d226e4ca9dde2557ebc5ced1c0c87c4 100644 --- a/test/test_messageprocessor.ts +++ b/test/test_messageprocessor.ts @@ -181,82 +181,6 @@ describe("MessageProcessor", () => { Chai.assert.equal(content, "Hello <img alt=\"hello\" src=\"mxc://image\" style=\"height: 1em;\"/>"); }); }); - describe("FindMentionsInPlainBody", () => { - it("processes mentioned username correctly", async () => { - const processor = new MessageProcessor(new MessageProcessorOpts("localhost"), <DiscordBot> bot); - const guild: any = new MockGuild("123", []); - const members: Discord.GuildMember[] = [new Discord.GuildMember(guild, { - user: { - username: "TestUsername", - id: "12345", - discriminator: "54321", - }, - })]; - Chai.assert.equal( - processor.FindMentionsInPlainBody("Hello TestUsername", members), - "Hello <@!12345>", - ); - Chai.assert.equal( - processor.FindMentionsInPlainBody("Hello TestUsername#54321", members), - "Hello <@!12345>", - ); - }); - it("processes mentioned nickname correctly", async () => { - const processor = new MessageProcessor(new MessageProcessorOpts("localhost"), <DiscordBot> bot); - const guild: any = new MockGuild("123", []); - const members: Discord.GuildMember[] = [new Discord.GuildMember(guild, { - nick: "Test", - user: { - username: "Test", - id: "54321", - }, - }), new Discord.GuildMember(guild, { - nick: "TestNickname", - user: { - username: "TestUsername", - id: "12345", - }, - })]; - Chai.assert.equal(processor.FindMentionsInPlainBody("Hello TestNickname", members), "Hello <@!12345>"); - Chai.assert.equal(processor.FindMentionsInPlainBody("TestNickname: Hello", members), "<@!12345>: Hello"); - Chai.assert.equal(processor.FindMentionsInPlainBody("TestNickname, Hello", members), "<@!12345>, Hello"); - Chai.assert.equal(processor.FindMentionsInPlainBody("TestNickname Hello", members), "<@!12345> Hello"); - Chai.assert.equal(processor.FindMentionsInPlainBody("testNicKName Hello", members), "<@!12345> Hello"); - Chai.assert.equal( - processor.FindMentionsInPlainBody("I wish TestNickname was here", members), - "I wish <@!12345> was here", - ); - Chai.assert.equal( - processor.FindMentionsInPlainBody("I wish TestNickname was here, TestNickname is cool", members), - "I wish <@!12345> was here, <@!12345> is cool", - ); - Chai.assert.equal( - processor.FindMentionsInPlainBody("TestNickname was here with Test", members), - "<@!12345> was here with <@!54321>", - ); - }); - it("processes non-mentions correctly", async () => { - const processor = new MessageProcessor(new MessageProcessorOpts("localhost"), <DiscordBot> bot); - const guild: any = new MockGuild("123", []); - const members: Discord.GuildMember[] = [new Discord.GuildMember(guild, { - nick: "that", - user: { - username: "TestUsername", - id: "12345", - }, - }), - new Discord.GuildMember(guild, { - nick: "testingstring", - user: { - username: "that", - id: "12345", - }, - })]; - const msg = "Welcome thatman"; - const content = processor.FindMentionsInPlainBody(msg, members); - Chai.assert.equal(content, "Welcome thatman"); - }); - }); describe("InsertEmbeds", () => { it("processes titleless embeds properly", () => { const processor = new MessageProcessor(new MessageProcessorOpts("localhost"), <DiscordBot> bot);