From cea91c0f5236e6e69e58aecd0569bc5a5520d2c5 Mon Sep 17 00:00:00 2001 From: Christopher Christou Date: Thu, 18 Oct 2018 12:50:12 -0700 Subject: [PATCH 1/8] Utility class to detect Typescript functions that can possibly be used as Lambda Function Handlers. --- package-lock.json | 3413 +++++++++-------- package.json | 3 +- src/shared/lambdaHandlerSearch.ts | 23 + src/shared/typescriptLambdaHandlerSearch.ts | 116 + src/test/samples/javascript/sampleClasses.js | 24 + .../samples/javascript/sampleFunctions.js | 31 + src/test/samples/typescript/sampleClasses.ts | 28 + .../samples/typescript/sampleFunctions.ts | 33 + .../samples/typescript/sampleInterfaces.ts | 22 + .../typescriptLambdaHandlerSearch.test.ts | 123 + 10 files changed, 2112 insertions(+), 1704 deletions(-) create mode 100644 src/shared/lambdaHandlerSearch.ts create mode 100644 src/shared/typescriptLambdaHandlerSearch.ts create mode 100644 src/test/samples/javascript/sampleClasses.js create mode 100644 src/test/samples/javascript/sampleFunctions.js create mode 100644 src/test/samples/typescript/sampleClasses.ts create mode 100644 src/test/samples/typescript/sampleFunctions.ts create mode 100644 src/test/samples/typescript/sampleInterfaces.ts create mode 100644 src/test/typescriptLambdaHandlerSearch.test.ts diff --git a/package-lock.json b/package-lock.json index 461dbf2551d..5a65a1505a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "integrity": "sha512-y6qRq6raBuu965clKgx6FHuiPu3oHdtmzMPXi8Uahsjdq1L6DL5fS/aY5/s71YwM7k6K1QIWvem5vNwlnNGIkQ==", "dev": true, "requires": { - "@types/glob": "7.1.1" + "@types/glob": "*" } }, "@types/events": { @@ -37,7 +37,7 @@ "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", "dev": true, "requires": { - "@types/node": "7.0.63" + "@types/node": "*" } }, "@types/fs-extra": { @@ -46,7 +46,7 @@ "integrity": "sha512-DsknoBvD8s+RFfSGjmERJ7ZOP1HI0UZRA3FSI+Zakhrc/Gy26YQsLI+m5V5DHxroHRJqCDLKJp7Hixn8zyaF7g==", "dev": true, "requires": { - "@types/node": "7.0.63" + "@types/node": "*" } }, "@types/glob": { @@ -55,9 +55,9 @@ "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", "dev": true, "requires": { - "@types/events": "1.2.0", - "@types/minimatch": "3.0.3", - "@types/node": "7.0.63" + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" } }, "@types/handlebars": { @@ -98,7 +98,7 @@ "resolved": "https://registry.npmjs.org/@types/opn/-/opn-5.1.0.tgz", "integrity": "sha512-TNPrB7Y1xl06zDI0aGyqkgxjhIev3oJ+cdqlZ52MTAHauWpEL/gIUdHebIfRHFZk9IqSBpE2ci1DT48iZH81yg==", "requires": { - "@types/node": "7.0.63" + "@types/node": "*" } }, "@types/request": { @@ -107,10 +107,10 @@ "integrity": "sha512-TV3XLvDjQbIeVxJ1Z3oCTDk/KuYwwcNKVwz2YaT0F5u86Prgc4syDAp6P96rkTQQ4bIdh+VswQIC9zS6NjY7/g==", "dev": true, "requires": { - "@types/caseless": "0.12.1", - "@types/form-data": "2.2.1", - "@types/node": "7.0.63", - "@types/tough-cookie": "2.3.3" + "@types/caseless": "*", + "@types/form-data": "*", + "@types/node": "*", + "@types/tough-cookie": "*" } }, "@types/tough-cookie": { @@ -119,14 +119,22 @@ "integrity": "sha512-MDQLxNFRLasqS4UlkWMSACMKeSm1x4Q3TxzUC7KQUsh6RK1ZrQ0VEyE3yzXcBu+K8ejVj4wuX32eUG02yNp+YQ==", "dev": true }, + "@types/typescript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/typescript/-/typescript-2.0.0.tgz", + "integrity": "sha1-xDNTnJi64oaCswfqp6D9IRW4PCg=", + "requires": { + "typescript": "*" + } + }, "@types/xml2js": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.3.tgz", "integrity": "sha512-Pv2HGRE4gWLs31In7nsyXEH4uVVsd0HNV9i2dyASvtDIlOtSTr1eczPLDpdEuyv5LWH5LT20GIXwPjkshKWI1g==", "dev": true, "requires": { - "@types/events": "1.2.0", - "@types/node": "7.0.63" + "@types/events": "*", + "@types/node": "*" } }, "abbrev": { @@ -140,10 +148,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.1.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" } }, "amdefine": { @@ -202,7 +210,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" } }, "arr-diff": { @@ -211,8 +219,8 @@ "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", "dev": true, "requires": { - "arr-flatten": "1.1.0", - "array-slice": "0.2.3" + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" } }, "arr-flatten": { @@ -245,7 +253,7 @@ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { @@ -271,7 +279,7 @@ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": "~2.1.0" } }, "assert-plus": { @@ -284,7 +292,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", "requires": { - "lodash": "4.17.10" + "lodash": "^4.17.10" } }, "async-lock": { @@ -336,9 +344,9 @@ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "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" }, "dependencies": { "chalk": { @@ -347,11 +355,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "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" } } } @@ -373,7 +381,7 @@ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "beeper": { @@ -388,7 +396,7 @@ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "boolbase": { @@ -403,7 +411,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -413,9 +421,9 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.3" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "browser-stdout": { @@ -429,9 +437,9 @@ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "requires": { - "base64-js": "1.3.0", - "ieee754": "1.1.8", - "isarray": "1.0.0" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, "buffer-crc32": { @@ -475,9 +483,9 @@ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.5.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "dependencies": { "ansi-styles": { @@ -486,7 +494,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "supports-color": { @@ -495,7 +503,7 @@ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } @@ -506,12 +514,12 @@ "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", "dev": true, "requires": { - "css-select": "1.2.0", - "dom-serializer": "0.1.0", - "entities": "1.1.1", - "htmlparser2": "3.9.2", - "lodash": "4.17.10", - "parse5": "3.0.3" + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash": "^4.15.0", + "parse5": "^3.0.1" } }, "cliui": { @@ -520,9 +528,9 @@ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" }, "dependencies": { "ansi-regex": { @@ -537,7 +545,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -566,9 +574,9 @@ "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", "dev": true, "requires": { - "inherits": "2.0.3", - "process-nextick-args": "2.0.0", - "readable-stream": "2.3.6" + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" } }, "cloudformation-schema-js-yaml": { @@ -613,7 +621,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { @@ -644,9 +652,9 @@ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "4.1.3", - "shebang-command": "1.2.0", - "which": "1.3.1" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "css-select": { @@ -655,10 +663,10 @@ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "dev": true, "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.0", + "boolbase": "~1.0.0", + "css-what": "2.1", "domutils": "1.5.1", - "nth-check": "1.0.1" + "nth-check": "~1.0.1" } }, "css-what": { @@ -672,7 +680,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" } }, "dateformat": { @@ -696,7 +704,7 @@ "integrity": "sha1-b232uF1+fEQQqTL/wmSJt46azRM=", "dev": true, "requires": { - "callsite": "1.0.0" + "callsite": "^1.0.0" } }, "decamelize": { @@ -711,7 +719,7 @@ "integrity": "sha1-sJJ0O+hCfcYh6gBnzex+cN0Z83s=", "dev": true, "requires": { - "is-obj": "1.0.1" + "is-obj": "^1.0.0" } }, "deep-is": { @@ -726,12 +734,12 @@ "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", "dev": true, "requires": { - "globby": "6.1.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.1", - "p-map": "1.2.0", - "pify": "3.0.0", - "rimraf": "2.6.2" + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" } }, "delayed-stream": { @@ -757,7 +765,7 @@ "integrity": "sha1-fLhgNZujvpDgQLJrcpzkv6ZUxSM=", "dev": true, "requires": { - "esutils": "1.1.6", + "esutils": "^1.1.6", "isarray": "0.0.1" }, "dependencies": { @@ -781,8 +789,8 @@ "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "dev": true, "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" + "domelementtype": "~1.1.1", + "entities": "~1.1.1" }, "dependencies": { "domelementtype": { @@ -805,7 +813,7 @@ "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "dev": true, "requires": { - "domelementtype": "1.3.0" + "domelementtype": "1" } }, "domutils": { @@ -814,8 +822,8 @@ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "dev": true, "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" + "dom-serializer": "0", + "domelementtype": "1" } }, "duplexer": { @@ -830,7 +838,7 @@ "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", "dev": true, "requires": { - "readable-stream": "1.1.14" + "readable-stream": "~1.1.9" }, "dependencies": { "isarray": { @@ -845,10 +853,10 @@ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "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": { @@ -865,10 +873,10 @@ "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", "dev": true, "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, "ecc-jsbn": { @@ -877,8 +885,8 @@ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "optional": true, "requires": { - "jsbn": "0.1.1", - "safer-buffer": "2.1.2" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "end-of-stream": { @@ -887,7 +895,7 @@ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "entities": { @@ -908,11 +916,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": { @@ -928,7 +936,7 @@ "dev": true, "optional": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } @@ -956,13 +964,13 @@ "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", "dev": true, "requires": { - "duplexer": "0.1.1", - "from": "0.1.7", - "map-stream": "0.1.0", + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", "pause-stream": "0.0.11", - "split": "0.3.3", - "stream-combiner": "0.0.4", - "through": "2.3.8" + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" } }, "events": { @@ -976,13 +984,13 @@ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "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" } }, "expand-brackets": { @@ -991,7 +999,7 @@ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "expand-range": { @@ -1000,7 +1008,7 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "2.2.4" + "fill-range": "^2.1.0" } }, "extend": { @@ -1014,7 +1022,7 @@ "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", "dev": true, "requires": { - "kind-of": "1.1.0" + "kind-of": "^1.1.0" } }, "extglob": { @@ -1023,7 +1031,7 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" }, "dependencies": { "is-extglob": { @@ -1045,9 +1053,9 @@ "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", "dev": true, "requires": { - "ansi-gray": "0.1.1", - "color-support": "1.1.3", - "time-stamp": "1.1.0" + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "time-stamp": "^1.0.0" } }, "fast-deep-equal": { @@ -1072,7 +1080,7 @@ "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", "dev": true, "requires": { - "pend": "1.2.0" + "pend": "~1.2.0" } }, "filename-regex": { @@ -1087,11 +1095,11 @@ "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "dev": true, "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "3.1.0", - "repeat-element": "1.1.3", - "repeat-string": "1.6.1" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, "find-up": { @@ -1100,7 +1108,7 @@ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } }, "first-chunk-stream": { @@ -1121,7 +1129,7 @@ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "forever-agent": { @@ -1134,9 +1142,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.20" + "mime-types": "^2.1.12" }, "dependencies": { "combined-stream": { @@ -1144,7 +1152,7 @@ "resolved": "http://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" } } } @@ -1160,9 +1168,9 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "universalify": "0.1.2" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "fs.realpath": { @@ -1177,10 +1185,10 @@ "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "dev": 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" } }, "get-caller-file": { @@ -1200,7 +1208,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" } }, "glob": { @@ -1209,12 +1217,12 @@ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "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" } }, "glob-base": { @@ -1223,8 +1231,8 @@ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" }, "dependencies": { "glob-parent": { @@ -1233,7 +1241,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "is-extglob": { @@ -1248,7 +1256,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } } } @@ -1259,8 +1267,8 @@ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" } }, "glob-stream": { @@ -1269,14 +1277,14 @@ "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", "dev": true, "requires": { - "extend": "3.0.2", - "glob": "5.0.15", - "glob-parent": "3.1.0", - "micromatch": "2.3.11", - "ordered-read-streams": "0.3.0", - "through2": "0.6.5", - "to-absolute-glob": "0.1.1", - "unique-stream": "2.2.1" + "extend": "^3.0.0", + "glob": "^5.0.3", + "glob-parent": "^3.0.0", + "micromatch": "^2.3.7", + "ordered-read-streams": "^0.3.0", + "through2": "^0.6.0", + "to-absolute-glob": "^0.1.1", + "unique-stream": "^2.0.2" }, "dependencies": { "glob": { @@ -1285,11 +1293,11 @@ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "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" } }, "isarray": { @@ -1304,10 +1312,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "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": { @@ -1322,8 +1330,8 @@ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" } } } @@ -1334,11 +1342,11 @@ "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "dev": true, "requires": { - "array-union": "1.0.2", - "glob": "7.1.3", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "dependencies": { "pify": { @@ -1355,7 +1363,7 @@ "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==", "dev": true, "requires": { - "sparkles": "1.0.1" + "sparkles": "^1.0.0" } }, "graceful-fs": { @@ -1375,9 +1383,9 @@ "integrity": "sha1-AMOQuSigeZslGsz2MaoJ4BzGKZw=", "dev": true, "requires": { - "deep-assign": "1.0.0", - "stat-mode": "0.2.2", - "through2": "2.0.3" + "deep-assign": "^1.0.0", + "stat-mode": "^0.2.0", + "through2": "^2.0.0" } }, "gulp-filter": { @@ -1386,9 +1394,9 @@ "integrity": "sha1-oF4Rr/sHz33PQafeHLe2OsN4PnM=", "dev": true, "requires": { - "multimatch": "2.1.0", - "plugin-error": "0.1.2", - "streamfilter": "1.0.7" + "multimatch": "^2.0.0", + "plugin-error": "^0.1.2", + "streamfilter": "^1.0.5" } }, "gulp-gunzip": { @@ -1397,8 +1405,8 @@ "integrity": "sha1-FbdBFF6Dqcb1CIYkG1fMWHHxUak=", "dev": true, "requires": { - "through2": "0.6.5", - "vinyl": "0.4.6" + "through2": "~0.6.5", + "vinyl": "~0.4.6" }, "dependencies": { "isarray": { @@ -1413,10 +1421,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "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": { @@ -1431,8 +1439,8 @@ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" } } } @@ -1443,11 +1451,11 @@ "integrity": "sha512-/9vtSk9eI9DEWCqzGieglPqmx0WUQ9pwPHyHFpKmfxqdgqGJC2l0vFMdYs54hLdDsMDEZFLDL2J4ikjc4hQ5HQ==", "dev": true, "requires": { - "event-stream": "3.3.4", - "node.extend": "1.1.6", - "request": "2.88.0", - "through2": "2.0.3", - "vinyl": "2.2.0" + "event-stream": "^3.3.4", + "node.extend": "^1.1.2", + "request": "^2.79.0", + "through2": "^2.0.3", + "vinyl": "^2.0.1" }, "dependencies": { "clone": { @@ -1468,12 +1476,12 @@ "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", "dev": true, "requires": { - "clone": "2.1.2", - "clone-buffer": "1.0.0", - "clone-stats": "1.0.0", - "cloneable-readable": "1.1.2", - "remove-trailing-separator": "1.1.0", - "replace-ext": "1.0.0" + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" } } } @@ -1484,11 +1492,11 @@ "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", "dev": true, "requires": { - "convert-source-map": "1.5.1", - "graceful-fs": "4.1.11", - "strip-bom": "2.0.0", - "through2": "2.0.3", - "vinyl": "1.2.0" + "convert-source-map": "^1.1.1", + "graceful-fs": "^4.1.2", + "strip-bom": "^2.0.0", + "through2": "^2.0.0", + "vinyl": "^1.0.0" }, "dependencies": { "clone": { @@ -1509,8 +1517,8 @@ "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", "dev": true, "requires": { - "clone": "1.0.4", - "clone-stats": "0.0.1", + "clone": "^1.0.0", + "clone-stats": "^0.0.1", "replace-ext": "0.0.1" } } @@ -1522,10 +1530,10 @@ "integrity": "sha1-wWUyBzLRks5W/ZQnH/oSMjS/KuA=", "dev": true, "requires": { - "event-stream": "3.3.4", - "mkdirp": "0.5.1", - "queue": "3.1.0", - "vinyl-fs": "2.4.4" + "event-stream": "^3.3.1", + "mkdirp": "^0.5.1", + "queue": "^3.1.0", + "vinyl-fs": "^2.4.3" } }, "gulp-untar": { @@ -1534,11 +1542,11 @@ "integrity": "sha512-0QfbCH2a1k2qkTLWPqTX+QO4qNsHn3kC546YhAP3/n0h+nvtyGITDuDrYBMDZeW4WnFijmkOvBWa5HshTic1tw==", "dev": true, "requires": { - "event-stream": "3.3.4", - "streamifier": "0.1.1", - "tar": "2.2.1", - "through2": "2.0.3", - "vinyl": "1.2.0" + "event-stream": "~3.3.4", + "streamifier": "~0.1.1", + "tar": "^2.2.1", + "through2": "~2.0.3", + "vinyl": "^1.2.0" }, "dependencies": { "clone": { @@ -1559,8 +1567,8 @@ "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", "dev": true, "requires": { - "clone": "1.0.4", - "clone-stats": "0.0.1", + "clone": "^1.0.0", + "clone-stats": "^0.0.1", "replace-ext": "0.0.1" } } @@ -1572,24 +1580,24 @@ "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", "dev": true, "requires": { - "array-differ": "1.0.0", - "array-uniq": "1.0.3", - "beeper": "1.1.1", - "chalk": "1.1.3", - "dateformat": "2.2.0", - "fancy-log": "1.3.2", - "gulplog": "1.0.0", - "has-gulplog": "0.1.0", - "lodash._reescape": "3.0.0", - "lodash._reevaluate": "3.0.0", - "lodash._reinterpolate": "3.0.0", - "lodash.template": "3.6.2", - "minimist": "1.2.0", - "multipipe": "0.1.2", - "object-assign": "3.0.0", + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^2.0.0", + "fancy-log": "^1.1.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.0.0", + "minimist": "^1.1.0", + "multipipe": "^0.1.2", + "object-assign": "^3.0.0", "replace-ext": "0.0.1", - "through2": "2.0.3", - "vinyl": "0.5.3" + "through2": "^2.0.0", + "vinyl": "^0.5.0" }, "dependencies": { "chalk": { @@ -1598,11 +1606,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "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" } }, "clone": { @@ -1635,8 +1643,8 @@ "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", "dev": true, "requires": { - "clone": "1.0.4", - "clone-stats": "0.0.1", + "clone": "^1.0.0", + "clone-stats": "^0.0.1", "replace-ext": "0.0.1" } } @@ -1648,13 +1656,13 @@ "integrity": "sha1-JOQGhdwFtxSZlSRQmeBZAmO+ja0=", "dev": true, "requires": { - "event-stream": "3.3.4", - "queue": "4.5.0", - "through2": "2.0.3", - "vinyl": "2.2.0", - "vinyl-fs": "2.4.4", - "yauzl": "2.10.0", - "yazl": "2.4.3" + "event-stream": "^3.3.1", + "queue": "^4.2.1", + "through2": "^2.0.3", + "vinyl": "^2.0.2", + "vinyl-fs": "^2.0.0", + "yauzl": "^2.2.1", + "yazl": "^2.2.1" }, "dependencies": { "clone": { @@ -1675,7 +1683,7 @@ "integrity": "sha512-DwxpAnqJuoQa+wyDgQuwkSshkhlqIlWEvwvdAY27fDPunZ2cVJzXU4JyjY+5l7zs7oGLaYAQm4MbLOVFAHFBzA==", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "vinyl": { @@ -1684,12 +1692,12 @@ "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", "dev": true, "requires": { - "clone": "2.1.2", - "clone-buffer": "1.0.0", - "clone-stats": "1.0.0", - "cloneable-readable": "1.1.2", - "remove-trailing-separator": "1.1.0", - "replace-ext": "1.0.0" + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" } } } @@ -1700,7 +1708,7 @@ "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", "dev": true, "requires": { - "glogg": "1.0.1" + "glogg": "^1.0.0" } }, "handlebars": { @@ -1708,10 +1716,10 @@ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz", "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==", "requires": { - "async": "2.6.1", - "optimist": "0.6.1", - "source-map": "0.6.1", - "uglify-js": "3.4.9" + "async": "^2.5.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" } }, "har-schema": { @@ -1724,8 +1732,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^5.3.0", + "har-schema": "^2.0.0" } }, "has-ansi": { @@ -1734,7 +1742,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -1749,7 +1757,7 @@ "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", "dev": true, "requires": { - "sparkles": "1.0.1" + "sparkles": "^1.0.0" } }, "he": { @@ -1764,12 +1772,12 @@ "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", "dev": true, "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.4.2", - "domutils": "1.5.1", - "entities": "1.1.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "domelementtype": "^1.3.0", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" } }, "http-signature": { @@ -1777,9 +1785,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.14.2" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "iconv-lite": { @@ -1788,7 +1796,7 @@ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": ">= 2.1.2 < 3" } }, "ieee754": { @@ -1802,8 +1810,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -1842,7 +1850,7 @@ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-extendable": { @@ -1869,7 +1877,7 @@ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.0" } }, "is-number": { @@ -1878,7 +1886,7 @@ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -1887,7 +1895,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -1910,7 +1918,7 @@ "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", "dev": true, "requires": { - "is-path-inside": "1.0.1" + "is-path-inside": "^1.0.0" } }, "is-path-inside": { @@ -1919,7 +1927,7 @@ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "is-posix-bracket": { @@ -1993,20 +2001,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.12", - "js-yaml": "3.12.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.1", - "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": { "async": { @@ -2027,11 +2035,11 @@ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "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": { @@ -2052,7 +2060,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } }, "wordwrap": { @@ -2079,8 +2087,8 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", "requires": { - "argparse": "1.0.10", - "esprima": "4.0.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "jsbn": { @@ -2105,7 +2113,7 @@ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "dev": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stringify-safe": { @@ -2118,7 +2126,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.6" } }, "jsonify": { @@ -2150,7 +2158,7 @@ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", "dev": true, "requires": { - "readable-stream": "2.3.6" + "readable-stream": "^2.0.5" } }, "lcid": { @@ -2159,7 +2167,7 @@ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "levn": { @@ -2168,8 +2176,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" } }, "linkify-it": { @@ -2178,7 +2186,7 @@ "integrity": "sha1-2UpGSPmxwXnWT6lykSaL22zpQ08=", "dev": true, "requires": { - "uc.micro": "1.0.5" + "uc.micro": "^1.0.1" } }, "locate-path": { @@ -2187,8 +2195,8 @@ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, "lodash": { @@ -2256,7 +2264,7 @@ "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", "dev": true, "requires": { - "lodash._root": "3.0.1" + "lodash._root": "^3.0.0" } }, "lodash.isarguments": { @@ -2283,9 +2291,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.restparam": { @@ -2300,15 +2308,15 @@ "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", "dev": true, "requires": { - "lodash._basecopy": "3.0.1", - "lodash._basetostring": "3.0.1", - "lodash._basevalues": "3.0.0", - "lodash._isiterateecall": "3.0.9", - "lodash._reinterpolate": "3.0.0", - "lodash.escape": "3.2.0", - "lodash.keys": "3.1.2", - "lodash.restparam": "3.6.1", - "lodash.templatesettings": "3.1.1" + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" } }, "lodash.templatesettings": { @@ -2317,8 +2325,8 @@ "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", "dev": true, "requires": { - "lodash._reinterpolate": "3.0.0", - "lodash.escape": "3.2.0" + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0" } }, "lru-cache": { @@ -2327,8 +2335,8 @@ "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "map-stream": { @@ -2343,11 +2351,11 @@ "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", "dev": true, "requires": { - "argparse": "1.0.10", - "entities": "1.1.1", - "linkify-it": "2.0.3", - "mdurl": "1.0.1", - "uc.micro": "1.0.5" + "argparse": "^1.0.7", + "entities": "~1.1.1", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" } }, "math-random": { @@ -2368,7 +2376,7 @@ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "merge-stream": { @@ -2377,7 +2385,7 @@ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "dev": true, "requires": { - "readable-stream": "2.3.6" + "readable-stream": "^2.0.1" } }, "micromatch": { @@ -2386,19 +2394,19 @@ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" }, "dependencies": { "arr-diff": { @@ -2407,7 +2415,7 @@ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "is-extglob": { @@ -2422,7 +2430,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "kind-of": { @@ -2431,7 +2439,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2452,7 +2460,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", "requires": { - "mime-db": "1.36.0" + "mime-db": "~1.36.0" } }, "mimic-fn": { @@ -2467,7 +2475,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -2515,12 +2523,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" } }, "supports-color": { @@ -2529,7 +2537,7 @@ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } @@ -2546,10 +2554,10 @@ "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", "dev": true, "requires": { - "array-differ": "1.0.0", - "array-union": "1.0.2", - "arrify": "1.0.1", - "minimatch": "3.0.4" + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" } }, "multipipe": { @@ -2573,7 +2581,7 @@ "integrity": "sha1-p7iCyC1sk6SGOlUEvV3o7IYli5Y=", "dev": true, "requires": { - "is": "3.2.1" + "is": "^3.1.0" } }, "nopt": { @@ -2582,7 +2590,7 @@ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "dev": true, "requires": { - "abbrev": "1.0.9" + "abbrev": "1" } }, "normalize-path": { @@ -2591,7 +2599,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "npm": { @@ -2599,125 +2607,125 @@ "resolved": "https://registry.npmjs.org/npm/-/npm-6.1.0.tgz", "integrity": "sha512-e38cCtJ0lEjLXXpc4twEfj8Xw5hDLolc2Py87ueWnUhJfZ8GA/5RVIeD+XbSr1+aVRGsRsdtLdzUNO63PvQJ1w==", "requires": { - "JSONStream": "1.3.2", - "abbrev": "1.1.1", - "ansi-regex": "3.0.0", - "ansicolors": "0.3.2", - "ansistyles": "0.1.3", - "aproba": "1.2.0", - "archy": "1.0.0", - "bin-links": "1.1.2", - "bluebird": "3.5.1", - "byte-size": "4.0.3", - "cacache": "11.0.2", - "call-limit": "1.1.0", - "chownr": "1.0.1", - "cli-columns": "3.1.2", - "cli-table2": "0.2.0", - "cmd-shim": "2.0.2", - "columnify": "1.5.4", - "config-chain": "1.1.11", - "debuglog": "1.0.1", - "detect-indent": "5.0.0", - "detect-newline": "2.1.0", - "dezalgo": "1.0.3", - "editor": "1.0.0", - "figgy-pudding": "3.1.0", - "find-npm-prefix": "1.0.2", - "fs-vacuum": "1.2.10", - "fs-write-stream-atomic": "1.0.10", - "gentle-fs": "2.0.1", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "has-unicode": "2.0.1", - "hosted-git-info": "2.6.0", - "iferr": "1.0.0", - "imurmurhash": "0.1.4", - "inflight": "1.0.6", - "inherits": "2.0.3", - "ini": "1.3.5", - "init-package-json": "1.10.3", - "is-cidr": "2.0.5", - "json-parse-better-errors": "1.0.2", - "lazy-property": "1.0.0", - "libcipm": "1.6.2", - "libnpmhook": "4.0.1", - "libnpx": "10.2.0", - "lock-verify": "2.0.2", - "lockfile": "1.0.4", - "lodash._baseindexof": "3.1.0", - "lodash._baseuniq": "4.6.0", - "lodash._bindcallback": "3.0.1", - "lodash._cacheindexof": "3.0.2", - "lodash._createcache": "3.1.2", - "lodash._getnative": "3.9.1", - "lodash.clonedeep": "4.5.0", - "lodash.restparam": "3.6.1", - "lodash.union": "4.6.0", - "lodash.uniq": "4.5.0", - "lodash.without": "4.4.0", - "lru-cache": "4.1.3", - "meant": "1.0.1", - "mississippi": "3.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "node-gyp": "3.6.2", - "nopt": "4.0.1", - "normalize-package-data": "2.4.0", - "npm-audit-report": "1.2.1", - "npm-cache-filename": "1.0.2", - "npm-install-checks": "3.0.0", - "npm-lifecycle": "2.0.3", - "npm-package-arg": "6.1.0", - "npm-packlist": "1.1.10", - "npm-pick-manifest": "2.1.0", - "npm-profile": "3.0.1", - "npm-registry-client": "8.5.1", - "npm-registry-fetch": "1.1.0", - "npm-user-validate": "1.0.0", - "npmlog": "4.1.2", - "once": "1.4.0", - "opener": "1.4.3", - "osenv": "0.1.5", - "pacote": "8.1.5", - "path-is-inside": "1.0.2", - "promise-inflight": "1.0.1", - "qrcode-terminal": "0.12.0", - "query-string": "6.1.0", - "qw": "1.0.1", - "read": "1.0.7", - "read-cmd-shim": "1.0.1", - "read-installed": "4.0.3", - "read-package-json": "2.0.13", - "read-package-tree": "5.2.1", - "readable-stream": "2.3.6", - "readdir-scoped-modules": "1.0.2", - "request": "2.86.0", - "retry": "0.12.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.2", - "semver": "5.5.0", - "sha": "2.0.1", - "slide": "1.1.6", - "sorted-object": "2.0.1", - "sorted-union-stream": "2.1.3", - "ssri": "6.0.0", - "strip-ansi": "4.0.0", - "tar": "4.4.1", - "text-table": "0.2.0", - "tiny-relative-date": "1.3.0", + "JSONStream": "^1.3.2", + "abbrev": "~1.1.1", + "ansi-regex": "~3.0.0", + "ansicolors": "~0.3.2", + "ansistyles": "~0.1.3", + "aproba": "~1.2.0", + "archy": "~1.0.0", + "bin-links": "^1.1.2", + "bluebird": "~3.5.1", + "byte-size": "^4.0.3", + "cacache": "^11.0.2", + "call-limit": "~1.1.0", + "chownr": "~1.0.1", + "cli-columns": "^3.1.2", + "cli-table2": "~0.2.0", + "cmd-shim": "~2.0.2", + "columnify": "~1.5.4", + "config-chain": "~1.1.11", + "debuglog": "*", + "detect-indent": "~5.0.0", + "detect-newline": "^2.1.0", + "dezalgo": "~1.0.3", + "editor": "~1.0.0", + "figgy-pudding": "^3.1.0", + "find-npm-prefix": "^1.0.2", + "fs-vacuum": "~1.2.10", + "fs-write-stream-atomic": "~1.0.10", + "gentle-fs": "^2.0.1", + "glob": "~7.1.2", + "graceful-fs": "~4.1.11", + "has-unicode": "~2.0.1", + "hosted-git-info": "^2.6.0", + "iferr": "^1.0.0", + "imurmurhash": "*", + "inflight": "~1.0.6", + "inherits": "~2.0.3", + "ini": "^1.3.5", + "init-package-json": "^1.10.3", + "is-cidr": "^2.0.5", + "json-parse-better-errors": "^1.0.2", + "lazy-property": "~1.0.0", + "libcipm": "^1.6.2", + "libnpmhook": "^4.0.1", + "libnpx": "^10.2.0", + "lock-verify": "^2.0.2", + "lockfile": "^1.0.4", + "lodash._baseindexof": "*", + "lodash._baseuniq": "~4.6.0", + "lodash._bindcallback": "*", + "lodash._cacheindexof": "*", + "lodash._createcache": "*", + "lodash._getnative": "*", + "lodash.clonedeep": "~4.5.0", + "lodash.restparam": "*", + "lodash.union": "~4.6.0", + "lodash.uniq": "~4.5.0", + "lodash.without": "~4.4.0", + "lru-cache": "^4.1.3", + "meant": "~1.0.1", + "mississippi": "^3.0.0", + "mkdirp": "~0.5.1", + "move-concurrently": "^1.0.1", + "node-gyp": "^3.6.2", + "nopt": "~4.0.1", + "normalize-package-data": "~2.4.0", + "npm-audit-report": "^1.2.1", + "npm-cache-filename": "~1.0.2", + "npm-install-checks": "~3.0.0", + "npm-lifecycle": "^2.0.3", + "npm-package-arg": "^6.1.0", + "npm-packlist": "~1.1.10", + "npm-pick-manifest": "^2.1.0", + "npm-profile": "^3.0.1", + "npm-registry-client": "^8.5.1", + "npm-registry-fetch": "^1.1.0", + "npm-user-validate": "~1.0.0", + "npmlog": "~4.1.2", + "once": "~1.4.0", + "opener": "~1.4.3", + "osenv": "^0.1.5", + "pacote": "^8.1.5", + "path-is-inside": "~1.0.2", + "promise-inflight": "~1.0.1", + "qrcode-terminal": "^0.12.0", + "query-string": "^6.1.0", + "qw": "~1.0.1", + "read": "~1.0.7", + "read-cmd-shim": "~1.0.1", + "read-installed": "~4.0.3", + "read-package-json": "^2.0.13", + "read-package-tree": "^5.2.1", + "readable-stream": "^2.3.6", + "readdir-scoped-modules": "*", + "request": "^2.86.0", + "retry": "^0.12.0", + "rimraf": "~2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.5.0", + "sha": "~2.0.1", + "slide": "~1.1.6", + "sorted-object": "~2.0.1", + "sorted-union-stream": "~2.1.3", + "ssri": "^6.0.0", + "strip-ansi": "~4.0.0", + "tar": "^4.4.1", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", "uid-number": "0.0.6", - "umask": "1.1.0", - "unique-filename": "1.1.0", - "unpipe": "1.0.0", - "update-notifier": "2.5.0", - "uuid": "3.2.1", - "validate-npm-package-license": "3.0.3", - "validate-npm-package-name": "3.0.0", - "which": "1.3.0", - "worker-farm": "1.6.0", - "wrappy": "1.0.2", - "write-file-atomic": "2.3.0" + "umask": "~1.1.0", + "unique-filename": "~1.1.0", + "unpipe": "~1.0.0", + "update-notifier": "^2.5.0", + "uuid": "^3.2.1", + "validate-npm-package-license": "^3.0.3", + "validate-npm-package-name": "~3.0.0", + "which": "~1.3.0", + "worker-farm": "^1.6.0", + "wrappy": "~1.0.2", + "write-file-atomic": "^2.3.0" }, "dependencies": { "JSONStream": { @@ -2725,8 +2733,8 @@ "resolved": false, "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" }, "dependencies": { "jsonparse": { @@ -2776,11 +2784,11 @@ "resolved": false, "integrity": "sha512-8eEHVgYP03nILphilltWjeIjMbKyJo3wvp9K816pHbhP301ismzw15mxAAEVQ/USUwcP++1uNrbERbp8lOA6Fg==", "requires": { - "bluebird": "3.5.1", - "cmd-shim": "2.0.2", - "gentle-fs": "2.0.1", - "graceful-fs": "4.1.11", - "write-file-atomic": "2.3.0" + "bluebird": "^3.5.0", + "cmd-shim": "^2.0.2", + "gentle-fs": "^2.0.0", + "graceful-fs": "^4.1.11", + "write-file-atomic": "^2.3.0" } }, "bluebird": { @@ -2798,20 +2806,20 @@ "resolved": false, "integrity": "sha512-hMiz7LN4w8sdfmKsvNs80ao/vf2JCGWWdpu95JyY90AJZRbZJmgE71dCefRiNf8OCqiZQDcUBfYiLlUNu4/j5A==", "requires": { - "bluebird": "3.5.1", - "chownr": "1.0.1", - "figgy-pudding": "3.1.0", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lru-cache": "4.1.3", - "mississippi": "3.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "6.0.0", - "unique-filename": "1.1.0", - "y18n": "4.0.0" + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "figgy-pudding": "^3.1.0", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.2", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^6.0.0", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" }, "dependencies": { "y18n": { @@ -2836,8 +2844,8 @@ "resolved": false, "integrity": "sha1-ZzLZcpee/CrkRKHwjgj6E5yWoY4=", "requires": { - "string-width": "2.1.1", - "strip-ansi": "3.0.1" + "string-width": "^2.0.0", + "strip-ansi": "^3.0.1" }, "dependencies": { "string-width": { @@ -2845,8 +2853,8 @@ "resolved": false, "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" }, "dependencies": { "is-fullwidth-code-point": { @@ -2859,7 +2867,7 @@ "resolved": false, "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -2869,7 +2877,7 @@ "resolved": false, "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" }, "dependencies": { "ansi-regex": { @@ -2886,9 +2894,9 @@ "resolved": false, "integrity": "sha1-LR738hig54biFFQFYtS9F3/jLZc=", "requires": { - "colors": "1.1.2", - "lodash": "3.10.1", - "string-width": "1.0.2" + "colors": "^1.1.2", + "lodash": "^3.10.1", + "string-width": "^1.0.1" }, "dependencies": { "colors": { @@ -2907,9 +2915,9 @@ "resolved": false, "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" }, "dependencies": { "code-point-at": { @@ -2922,7 +2930,7 @@ "resolved": false, "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" }, "dependencies": { "number-is-nan": { @@ -2937,7 +2945,7 @@ "resolved": false, "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" }, "dependencies": { "ansi-regex": { @@ -2956,8 +2964,8 @@ "resolved": false, "integrity": "sha1-b8vamUg6j9FdfTChlspp1oii79s=", "requires": { - "graceful-fs": "4.1.11", - "mkdirp": "0.5.1" + "graceful-fs": "^4.1.2", + "mkdirp": "~0.5.0" } }, "columnify": { @@ -2965,8 +2973,8 @@ "resolved": false, "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", "requires": { - "strip-ansi": "3.0.1", - "wcwidth": "1.0.1" + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" }, "dependencies": { "strip-ansi": { @@ -2974,7 +2982,7 @@ "resolved": false, "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" }, "dependencies": { "ansi-regex": { @@ -2989,7 +2997,7 @@ "resolved": false, "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", "requires": { - "defaults": "1.0.3" + "defaults": "^1.0.3" }, "dependencies": { "defaults": { @@ -2997,7 +3005,7 @@ "resolved": false, "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", "requires": { - "clone": "1.0.2" + "clone": "^1.0.2" }, "dependencies": { "clone": { @@ -3016,8 +3024,8 @@ "resolved": false, "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", "requires": { - "ini": "1.3.5", - "proto-list": "1.2.4" + "ini": "^1.3.4", + "proto-list": "~1.2.1" }, "dependencies": { "proto-list": { @@ -3047,8 +3055,8 @@ "resolved": false, "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", "requires": { - "asap": "2.0.5", - "wrappy": "1.0.2" + "asap": "^2.0.0", + "wrappy": "1" }, "dependencies": { "asap": { @@ -3078,9 +3086,9 @@ "resolved": false, "integrity": "sha1-t2Kb7AekAxolSP35n17PHMizHjY=", "requires": { - "graceful-fs": "4.1.11", - "path-is-inside": "1.0.2", - "rimraf": "2.6.2" + "graceful-fs": "^4.1.2", + "path-is-inside": "^1.0.1", + "rimraf": "^2.5.2" } }, "fs-write-stream-atomic": { @@ -3088,10 +3096,10 @@ "resolved": false, "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", "requires": { - "graceful-fs": "4.1.11", - "iferr": "0.1.5", - "imurmurhash": "0.1.4", - "readable-stream": "2.3.6" + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" }, "dependencies": { "iferr": { @@ -3106,14 +3114,14 @@ "resolved": false, "integrity": "sha512-cEng5+3fuARewXktTEGbwsktcldA+YsnUEaXZwcK/3pjSE1X9ObnTs+/8rYf8s+RnIcQm2D5x3rwpN7Zom8Bew==", "requires": { - "aproba": "1.2.0", - "fs-vacuum": "1.2.10", - "graceful-fs": "4.1.11", - "iferr": "0.1.5", - "mkdirp": "0.5.1", - "path-is-inside": "1.0.2", - "read-cmd-shim": "1.0.1", - "slide": "1.1.6" + "aproba": "^1.1.2", + "fs-vacuum": "^1.2.10", + "graceful-fs": "^4.1.11", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "path-is-inside": "^1.0.2", + "read-cmd-shim": "^1.0.1", + "slide": "^1.1.6" }, "dependencies": { "iferr": { @@ -3128,12 +3136,12 @@ "resolved": false, "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" }, "dependencies": { "fs.realpath": { @@ -3146,7 +3154,7 @@ "resolved": false, "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" }, "dependencies": { "brace-expansion": { @@ -3154,7 +3162,7 @@ "resolved": false, "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" }, "dependencies": { @@ -3209,8 +3217,8 @@ "resolved": false, "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -3228,14 +3236,14 @@ "resolved": false, "integrity": "sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw==", "requires": { - "glob": "7.1.2", - "npm-package-arg": "6.1.0", - "promzard": "0.3.0", - "read": "1.0.7", - "read-package-json": "2.0.13", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3", - "validate-npm-package-name": "3.0.0" + "glob": "^7.1.1", + "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "1 || 2", + "semver": "2.x || 3.x || 4 || 5", + "validate-npm-package-license": "^3.0.1", + "validate-npm-package-name": "^3.0.0" }, "dependencies": { "promzard": { @@ -3243,7 +3251,7 @@ "resolved": false, "integrity": "sha1-JqXW7ox97kyxIggwWs+5O6OCqe4=", "requires": { - "read": "1.0.7" + "read": "1" } } } @@ -3253,7 +3261,7 @@ "resolved": false, "integrity": "sha512-KUGux04sdwBgpr/YREUyuefs4s1Ib4mRmOCIX1KdPnxjUCZMg13BXEp68Uw5IiDl3N4ZZtStDgPu4MWJxNBpKQ==", "requires": { - "cidr-regex": "2.0.8" + "cidr-regex": "^2.0.8" }, "dependencies": { "cidr-regex": { @@ -3261,7 +3269,7 @@ "resolved": false, "integrity": "sha512-3r0E5P6Oeg4SCvEERX7W5fPkPz8nKWwGzU6RJ/VvROOsqiq5g6sf43c/g+sUpA29Htc7R0SG15P/Scr5lfap4g==", "requires": { - "ip-regex": "2.1.0" + "ip-regex": "^2.1.0" }, "dependencies": { "ip-regex": { @@ -3288,19 +3296,19 @@ "resolved": false, "integrity": "sha512-3Dy9bcOfe/+F9ZVFwjjSVtYXasAoGim1IYX3B6gfOe1hFFOcXLHZcXJPRNgUSVpu9WxshQnFs2n6L0zVPEJKCQ==", "requires": { - "bin-links": "1.1.2", - "bluebird": "3.5.1", - "find-npm-prefix": "1.0.2", - "graceful-fs": "4.1.11", - "lock-verify": "2.0.2", - "npm-lifecycle": "2.0.3", - "npm-logical-tree": "1.2.1", - "npm-package-arg": "6.1.0", - "pacote": "7.6.1", - "protoduck": "5.0.0", - "read-package-json": "2.0.13", - "rimraf": "2.6.2", - "worker-farm": "1.6.0" + "bin-links": "^1.1.0", + "bluebird": "^3.5.1", + "find-npm-prefix": "^1.0.2", + "graceful-fs": "^4.1.11", + "lock-verify": "^2.0.0", + "npm-lifecycle": "^2.0.0", + "npm-logical-tree": "^1.2.1", + "npm-package-arg": "^6.0.0", + "pacote": "^7.5.1", + "protoduck": "^5.0.0", + "read-package-json": "^2.0.12", + "rimraf": "^2.6.2", + "worker-farm": "^1.5.4" }, "dependencies": { "npm-logical-tree": { @@ -3313,30 +3321,30 @@ "resolved": false, "integrity": "sha512-2kRIsHxjuYC1KRUIK80AFIXKWy0IgtFj76nKcaunozKAOSlfT+DFh3EfeaaKvNHCWixgi0G0rLg11lJeyEnp/Q==", "requires": { - "bluebird": "3.5.1", - "cacache": "10.0.4", - "get-stream": "3.0.0", - "glob": "7.1.2", - "lru-cache": "4.1.3", - "make-fetch-happen": "2.6.0", - "minimatch": "3.0.4", - "mississippi": "3.0.0", - "mkdirp": "0.5.1", - "normalize-package-data": "2.4.0", - "npm-package-arg": "6.1.0", - "npm-packlist": "1.1.10", - "npm-pick-manifest": "2.1.0", - "osenv": "0.1.5", - "promise-inflight": "1.0.1", - "promise-retry": "1.1.1", - "protoduck": "5.0.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.2", - "semver": "5.5.0", - "ssri": "5.3.0", - "tar": "4.4.1", - "unique-filename": "1.1.0", - "which": "1.3.0" + "bluebird": "^3.5.1", + "cacache": "^10.0.4", + "get-stream": "^3.0.0", + "glob": "^7.1.2", + "lru-cache": "^4.1.1", + "make-fetch-happen": "^2.6.0", + "minimatch": "^3.0.4", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.0.0", + "npm-packlist": "^1.1.10", + "npm-pick-manifest": "^2.1.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.0", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.1", + "semver": "^5.5.0", + "ssri": "^5.2.4", + "tar": "^4.4.0", + "unique-filename": "^1.1.0", + "which": "^1.3.0" }, "dependencies": { "cacache": { @@ -3344,19 +3352,19 @@ "resolved": false, "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", "requires": { - "bluebird": "3.5.1", - "chownr": "1.0.1", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lru-cache": "4.1.3", - "mississippi": "2.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "5.3.0", - "unique-filename": "1.1.0", - "y18n": "4.0.0" + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" }, "dependencies": { "mississippi": { @@ -3364,16 +3372,16 @@ "resolved": false, "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", "requires": { - "concat-stream": "1.6.2", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.3", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "2.0.1", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" }, "dependencies": { "concat-stream": { @@ -3381,10 +3389,10 @@ "resolved": false, "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "requires": { - "buffer-from": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" }, "dependencies": { "buffer-from": { @@ -3404,10 +3412,10 @@ "resolved": false, "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" }, "dependencies": { "stream-shift": { @@ -3422,7 +3430,7 @@ "resolved": false, "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "flush-write-stream": { @@ -3430,8 +3438,8 @@ "resolved": false, "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" } }, "from2": { @@ -3439,8 +3447,8 @@ "resolved": false, "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, "parallel-transform": { @@ -3448,9 +3456,9 @@ "resolved": false, "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" }, "dependencies": { "cyclist": { @@ -3465,8 +3473,8 @@ "resolved": false, "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, "pumpify": { @@ -3474,9 +3482,9 @@ "resolved": false, "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" + "duplexify": "^3.5.3", + "inherits": "^2.0.3", + "pump": "^2.0.0" } }, "stream-each": { @@ -3484,8 +3492,8 @@ "resolved": false, "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" }, "dependencies": { "stream-shift": { @@ -3500,8 +3508,8 @@ "resolved": false, "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" }, "dependencies": { "xtend": { @@ -3530,17 +3538,17 @@ "resolved": false, "integrity": "sha512-FFq0lNI0ax+n9IWzWpH8A4JdgYiAp2DDYIZ3rsaav8JDe8I+72CzK6PQW/oom15YDZpV5bYW/9INd6nIJ2ZfZw==", "requires": { - "agentkeepalive": "3.4.1", - "cacache": "10.0.4", - "http-cache-semantics": "3.8.1", - "http-proxy-agent": "2.1.0", - "https-proxy-agent": "2.2.1", - "lru-cache": "4.1.3", - "mississippi": "1.3.1", - "node-fetch-npm": "2.0.2", - "promise-retry": "1.1.1", - "socks-proxy-agent": "3.0.1", - "ssri": "5.3.0" + "agentkeepalive": "^3.3.0", + "cacache": "^10.0.0", + "http-cache-semantics": "^3.8.0", + "http-proxy-agent": "^2.0.0", + "https-proxy-agent": "^2.1.0", + "lru-cache": "^4.1.1", + "mississippi": "^1.2.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^3.0.1", + "ssri": "^5.0.0" }, "dependencies": { "agentkeepalive": { @@ -3548,7 +3556,7 @@ "resolved": false, "integrity": "sha512-MPIwsZU9PP9kOrZpyu2042kYA8Fdt/AedQYkYXucHgF9QoD9dXVp0ypuGnHXSR0hTstBxdt85Xkh4JolYfK5wg==", "requires": { - "humanize-ms": "1.2.1" + "humanize-ms": "^1.2.1" }, "dependencies": { "humanize-ms": { @@ -3556,7 +3564,7 @@ "resolved": false, "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", "requires": { - "ms": "2.1.1" + "ms": "^2.0.0" }, "dependencies": { "ms": { @@ -3578,7 +3586,7 @@ "resolved": false, "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", "requires": { - "agent-base": "4.2.0", + "agent-base": "4", "debug": "3.1.0" }, "dependencies": { @@ -3587,7 +3595,7 @@ "resolved": false, "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" }, "dependencies": { "es6-promisify": { @@ -3595,7 +3603,7 @@ "resolved": false, "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { - "es6-promise": "4.2.4" + "es6-promise": "^4.0.3" }, "dependencies": { "es6-promise": { @@ -3629,8 +3637,8 @@ "resolved": false, "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" + "agent-base": "^4.1.0", + "debug": "^3.1.0" }, "dependencies": { "agent-base": { @@ -3638,7 +3646,7 @@ "resolved": false, "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" }, "dependencies": { "es6-promisify": { @@ -3646,7 +3654,7 @@ "resolved": false, "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { - "es6-promise": "4.2.4" + "es6-promise": "^4.0.3" }, "dependencies": { "es6-promise": { @@ -3680,16 +3688,16 @@ "resolved": false, "integrity": "sha512-/6rB8YXFbAtsUVRphIRQqB0+9c7VaPHCjVtvto+JqwVxgz8Zz+I+f68/JgQ+Pb4VlZb2svA9OtdXnHHsZz7ltg==", "requires": { - "concat-stream": "1.6.2", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.3", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "1.0.3", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^1.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" }, "dependencies": { "concat-stream": { @@ -3697,10 +3705,10 @@ "resolved": false, "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "requires": { - "buffer-from": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" }, "dependencies": { "buffer-from": { @@ -3720,10 +3728,10 @@ "resolved": false, "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" }, "dependencies": { "stream-shift": { @@ -3738,7 +3746,7 @@ "resolved": false, "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "flush-write-stream": { @@ -3746,8 +3754,8 @@ "resolved": false, "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" } }, "from2": { @@ -3755,8 +3763,8 @@ "resolved": false, "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, "parallel-transform": { @@ -3764,9 +3772,9 @@ "resolved": false, "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" }, "dependencies": { "cyclist": { @@ -3781,8 +3789,8 @@ "resolved": false, "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, "pumpify": { @@ -3790,9 +3798,9 @@ "resolved": false, "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" + "duplexify": "^3.5.3", + "inherits": "^2.0.3", + "pump": "^2.0.0" }, "dependencies": { "pump": { @@ -3800,8 +3808,8 @@ "resolved": false, "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } } } @@ -3811,8 +3819,8 @@ "resolved": false, "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" }, "dependencies": { "stream-shift": { @@ -3827,8 +3835,8 @@ "resolved": false, "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" }, "dependencies": { "xtend": { @@ -3845,9 +3853,9 @@ "resolved": false, "integrity": "sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw==", "requires": { - "encoding": "0.1.12", - "json-parse-better-errors": "1.0.2", - "safe-buffer": "5.1.2" + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" }, "dependencies": { "encoding": { @@ -3855,7 +3863,7 @@ "resolved": false, "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "0.4.21" + "iconv-lite": "~0.4.13" }, "dependencies": { "iconv-lite": { @@ -3863,7 +3871,7 @@ "resolved": false, "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": "^2.1.0" }, "dependencies": { "safer-buffer": { @@ -3882,8 +3890,8 @@ "resolved": false, "integrity": "sha512-ZwEDymm204mTzvdqyUqOdovVr2YRd2NYskrYrF2LXyZ9qDiMAoFESGK8CRphiO7rtbo2Y757k2Nia3x2hGtalA==", "requires": { - "agent-base": "4.2.0", - "socks": "1.1.10" + "agent-base": "^4.1.0", + "socks": "^1.1.10" }, "dependencies": { "agent-base": { @@ -3891,7 +3899,7 @@ "resolved": false, "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" }, "dependencies": { "es6-promisify": { @@ -3899,7 +3907,7 @@ "resolved": false, "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { - "es6-promise": "4.2.4" + "es6-promise": "^4.0.3" }, "dependencies": { "es6-promise": { @@ -3916,8 +3924,8 @@ "resolved": false, "integrity": "sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=", "requires": { - "ip": "1.1.5", - "smart-buffer": "1.1.15" + "ip": "^1.1.4", + "smart-buffer": "^1.0.13" }, "dependencies": { "ip": { @@ -3941,7 +3949,7 @@ "resolved": false, "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" }, "dependencies": { "brace-expansion": { @@ -3949,7 +3957,7 @@ "resolved": false, "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" }, "dependencies": { @@ -3972,8 +3980,8 @@ "resolved": false, "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", "requires": { - "err-code": "1.1.2", - "retry": "0.10.1" + "err-code": "^1.0.0", + "retry": "^0.10.0" }, "dependencies": { "err-code": { @@ -3993,7 +4001,7 @@ "resolved": false, "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.1.1" } } } @@ -4003,7 +4011,7 @@ "resolved": false, "integrity": "sha512-agsGWD8/RZrS4ga6v82Fxb0RHIS2RZnbsSue6A9/MBRhB/jcqOANAMNrqM9900b8duj+Gx+T/JMy5IowDoO/hQ==", "requires": { - "genfun": "4.0.1" + "genfun": "^4.0.1" }, "dependencies": { "genfun": { @@ -4020,8 +4028,8 @@ "resolved": false, "integrity": "sha512-3qqpfqvBD1712WA6iGe0stkG40WwAeoWcujA6BlC0Be1JArQbqwabnEnZ0CRcD05Tf1fPYJYdCbSfcfedEJCOg==", "requires": { - "figgy-pudding": "3.1.0", - "npm-registry-fetch": "3.1.1" + "figgy-pudding": "^3.1.0", + "npm-registry-fetch": "^3.0.0" }, "dependencies": { "npm-registry-fetch": { @@ -4029,11 +4037,11 @@ "resolved": false, "integrity": "sha512-xBobENeenvjIG8PgQ1dy77AXTI25IbYhmA3DusMIfw/4EL5BaQ5e1V9trkPrqHvyjR3/T0cnH6o0Wt/IzcI5Ag==", "requires": { - "bluebird": "3.5.1", - "figgy-pudding": "3.1.0", - "lru-cache": "4.1.3", - "make-fetch-happen": "4.0.1", - "npm-package-arg": "6.1.0" + "bluebird": "^3.5.1", + "figgy-pudding": "^3.1.0", + "lru-cache": "^4.1.2", + "make-fetch-happen": "^4.0.0", + "npm-package-arg": "^6.0.0" }, "dependencies": { "make-fetch-happen": { @@ -4041,17 +4049,17 @@ "resolved": false, "integrity": "sha512-7R5ivfy9ilRJ1EMKIOziwrns9fGeAD4bAha8EB7BIiBBLHm2KeTUGCrICFt2rbHfzheTLynv50GnNTK1zDTrcQ==", "requires": { - "agentkeepalive": "3.4.1", - "cacache": "11.0.2", - "http-cache-semantics": "3.8.1", - "http-proxy-agent": "2.1.0", - "https-proxy-agent": "2.2.1", - "lru-cache": "4.1.3", - "mississippi": "3.0.0", - "node-fetch-npm": "2.0.2", - "promise-retry": "1.1.1", - "socks-proxy-agent": "4.0.0", - "ssri": "6.0.0" + "agentkeepalive": "^3.4.1", + "cacache": "^11.0.1", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^4.1.2", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" }, "dependencies": { "agentkeepalive": { @@ -4059,7 +4067,7 @@ "resolved": false, "integrity": "sha512-MPIwsZU9PP9kOrZpyu2042kYA8Fdt/AedQYkYXucHgF9QoD9dXVp0ypuGnHXSR0hTstBxdt85Xkh4JolYfK5wg==", "requires": { - "humanize-ms": "1.2.1" + "humanize-ms": "^1.2.1" }, "dependencies": { "humanize-ms": { @@ -4067,7 +4075,7 @@ "resolved": false, "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", "requires": { - "ms": "2.1.1" + "ms": "^2.0.0" }, "dependencies": { "ms": { @@ -4089,7 +4097,7 @@ "resolved": false, "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", "requires": { - "agent-base": "4.2.0", + "agent-base": "4", "debug": "3.1.0" }, "dependencies": { @@ -4098,7 +4106,7 @@ "resolved": false, "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" }, "dependencies": { "es6-promisify": { @@ -4106,7 +4114,7 @@ "resolved": false, "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { - "es6-promise": "4.2.4" + "es6-promise": "^4.0.3" }, "dependencies": { "es6-promise": { @@ -4140,8 +4148,8 @@ "resolved": false, "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" + "agent-base": "^4.1.0", + "debug": "^3.1.0" }, "dependencies": { "agent-base": { @@ -4149,7 +4157,7 @@ "resolved": false, "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" }, "dependencies": { "es6-promisify": { @@ -4157,7 +4165,7 @@ "resolved": false, "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { - "es6-promise": "4.2.4" + "es6-promise": "^4.0.3" }, "dependencies": { "es6-promise": { @@ -4191,9 +4199,9 @@ "resolved": false, "integrity": "sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw==", "requires": { - "encoding": "0.1.12", - "json-parse-better-errors": "1.0.2", - "safe-buffer": "5.1.2" + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" }, "dependencies": { "encoding": { @@ -4201,7 +4209,7 @@ "resolved": false, "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "0.4.21" + "iconv-lite": "~0.4.13" }, "dependencies": { "iconv-lite": { @@ -4209,7 +4217,7 @@ "resolved": false, "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": "^2.1.0" }, "dependencies": { "safer-buffer": { @@ -4228,8 +4236,8 @@ "resolved": false, "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", "requires": { - "err-code": "1.1.2", - "retry": "0.10.1" + "err-code": "^1.0.0", + "retry": "^0.10.0" }, "dependencies": { "err-code": { @@ -4249,8 +4257,8 @@ "resolved": false, "integrity": "sha512-M0x7LYYRzKOEn5NchNPkUeVQ98hvUgwKI6URgnzB9L1Xwe1PBzX8pnThw5JYumzdLWW4qiY1XtBH7iFN21859A==", "requires": { - "agent-base": "4.1.2", - "socks": "2.1.6" + "agent-base": "~4.1.0", + "socks": "~2.1.6" }, "dependencies": { "agent-base": { @@ -4258,7 +4266,7 @@ "resolved": false, "integrity": "sha512-VE6QoEdaugY86BohRtfGmTDabxdU5sCKOkbcPA6PXKJsRzEi/7A3RCTxJal1ft/4qSfPht5/iQLhMh/wzSkkNw==", "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" }, "dependencies": { "es6-promisify": { @@ -4266,7 +4274,7 @@ "resolved": false, "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { - "es6-promise": "4.2.4" + "es6-promise": "^4.0.3" }, "dependencies": { "es6-promise": { @@ -4283,8 +4291,8 @@ "resolved": false, "integrity": "sha512-cHaaOUfK1FIyUv5T9Tg5y7apRqluAjgCzCeOg9Eg3E4ooGJocGgQ+BEHp5o4ev2DBjkmroNjWl1njijx0epv4Q==", "requires": { - "ip": "1.1.5", - "smart-buffer": "4.0.1" + "ip": "^1.1.5", + "smart-buffer": "^4.0.1" }, "dependencies": { "ip": { @@ -4312,14 +4320,14 @@ "resolved": false, "integrity": "sha512-X28coei8/XRCt15cYStbLBph+KGhFra4VQhRBPuH/HHMkC5dxM8v24RVgUsvODKCrUZ0eTgiTqJp6zbl0sskQQ==", "requires": { - "dotenv": "5.0.1", - "npm-package-arg": "6.1.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.2", - "update-notifier": "2.5.0", - "which": "1.3.0", - "y18n": "4.0.0", - "yargs": "11.0.0" + "dotenv": "^5.0.1", + "npm-package-arg": "^6.0.0", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.0", + "update-notifier": "^2.3.0", + "which": "^1.3.0", + "y18n": "^4.0.0", + "yargs": "^11.0.0" }, "dependencies": { "dotenv": { @@ -4337,18 +4345,18 @@ "resolved": false, "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", "requires": { - "cliui": "4.0.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "9.0.2" + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" }, "dependencies": { "cliui": { @@ -4356,9 +4364,9 @@ "resolved": false, "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" }, "dependencies": { "wrap-ansi": { @@ -4366,8 +4374,8 @@ "resolved": false, "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { "string-width": { @@ -4375,9 +4383,9 @@ "resolved": false, "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" }, "dependencies": { "code-point-at": { @@ -4390,7 +4398,7 @@ "resolved": false, "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" }, "dependencies": { "number-is-nan": { @@ -4407,7 +4415,7 @@ "resolved": false, "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" }, "dependencies": { "ansi-regex": { @@ -4431,7 +4439,7 @@ "resolved": false, "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" }, "dependencies": { "locate-path": { @@ -4439,8 +4447,8 @@ "resolved": false, "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" }, "dependencies": { "p-locate": { @@ -4448,7 +4456,7 @@ "resolved": false, "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { - "p-limit": "1.2.0" + "p-limit": "^1.1.0" }, "dependencies": { "p-limit": { @@ -4456,7 +4464,7 @@ "resolved": false, "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", "requires": { - "p-try": "1.0.0" + "p-try": "^1.0.0" }, "dependencies": { "p-try": { @@ -4487,9 +4495,9 @@ "resolved": false, "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" }, "dependencies": { "execa": { @@ -4497,13 +4505,13 @@ "resolved": false, "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" }, "dependencies": { "cross-spawn": { @@ -4511,9 +4519,9 @@ "resolved": false, "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { - "lru-cache": "4.1.3", - "shebang-command": "1.2.0", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" }, "dependencies": { "shebang-command": { @@ -4521,7 +4529,7 @@ "resolved": false, "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" }, "dependencies": { "shebang-regex": { @@ -4548,7 +4556,7 @@ "resolved": false, "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" }, "dependencies": { "path-key": { @@ -4580,7 +4588,7 @@ "resolved": false, "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" }, "dependencies": { "invert-kv": { @@ -4595,7 +4603,7 @@ "resolved": false, "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" }, "dependencies": { "mimic-fn": { @@ -4627,8 +4635,8 @@ "resolved": false, "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" }, "dependencies": { "is-fullwidth-code-point": { @@ -4653,7 +4661,7 @@ "resolved": false, "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" }, "dependencies": { "camelcase": { @@ -4672,8 +4680,8 @@ "resolved": false, "integrity": "sha512-QNVwK0EGZBS4R3YQ7F1Ox8p41Po9VGl2QG/2GsuvTbkJZYSsPeWHKMbbH6iZMCHWSMww5nrJroZYnGzI4cePuw==", "requires": { - "npm-package-arg": "6.1.0", - "semver": "5.5.0" + "npm-package-arg": "^5.1.2 || 6", + "semver": "^5.4.1" } }, "lockfile": { @@ -4681,7 +4689,7 @@ "resolved": false, "integrity": "sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==", "requires": { - "signal-exit": "3.0.2" + "signal-exit": "^3.0.2" }, "dependencies": { "signal-exit": { @@ -4701,8 +4709,8 @@ "resolved": false, "integrity": "sha1-DrtE5FaBSveQXGIS+iybLVG4Qeg=", "requires": { - "lodash._createset": "4.0.3", - "lodash._root": "3.0.1" + "lodash._createset": "~4.0.0", + "lodash._root": "~3.0.0" }, "dependencies": { "lodash._createset": { @@ -4732,7 +4740,7 @@ "resolved": false, "integrity": "sha1-VtagZAF2JeeevKa4AY4XRAvc8JM=", "requires": { - "lodash._getnative": "3.9.1" + "lodash._getnative": "^3.0.0" } }, "lodash._getnative": { @@ -4770,8 +4778,8 @@ "resolved": false, "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" }, "dependencies": { "pseudomap": { @@ -4796,16 +4804,16 @@ "resolved": false, "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", "requires": { - "concat-stream": "1.6.1", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.2", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "3.0.0", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" }, "dependencies": { "concat-stream": { @@ -4813,9 +4821,9 @@ "resolved": false, "integrity": "sha512-gslSSJx03QKa59cIKqeJO9HQ/WZMotvYJCuaUULrLpjj8oG40kV2Z+gz82pVxlTkOADi4PJxQPPfhl1ELYrrXw==", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" }, "dependencies": { "typedarray": { @@ -4830,10 +4838,10 @@ "resolved": false, "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" }, "dependencies": { "stream-shift": { @@ -4848,7 +4856,7 @@ "resolved": false, "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "flush-write-stream": { @@ -4856,8 +4864,8 @@ "resolved": false, "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" } }, "from2": { @@ -4865,8 +4873,8 @@ "resolved": false, "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, "parallel-transform": { @@ -4874,9 +4882,9 @@ "resolved": false, "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" }, "dependencies": { "cyclist": { @@ -4891,8 +4899,8 @@ "resolved": false, "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, "pumpify": { @@ -4900,9 +4908,9 @@ "resolved": false, "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" + "duplexify": "^3.5.3", + "inherits": "^2.0.3", + "pump": "^2.0.0" }, "dependencies": { "pump": { @@ -4910,8 +4918,8 @@ "resolved": false, "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } } } @@ -4921,8 +4929,8 @@ "resolved": false, "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" }, "dependencies": { "stream-shift": { @@ -4937,8 +4945,8 @@ "resolved": false, "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" }, "dependencies": { "xtend": { @@ -4970,12 +4978,12 @@ "resolved": false, "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", "requires": { - "aproba": "1.2.0", - "copy-concurrently": "1.0.5", - "fs-write-stream-atomic": "1.0.10", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" }, "dependencies": { "copy-concurrently": { @@ -4983,12 +4991,12 @@ "resolved": false, "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", "requires": { - "aproba": "1.2.0", - "fs-write-stream-atomic": "1.0.10", - "iferr": "0.1.5", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" }, "dependencies": { "iferr": { @@ -5003,7 +5011,7 @@ "resolved": false, "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", "requires": { - "aproba": "1.2.0" + "aproba": "^1.1.1" } } } @@ -5013,19 +5021,19 @@ "resolved": false, "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", "requires": { - "fstream": "1.0.11", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "npmlog": "4.1.2", - "osenv": "0.1.5", - "request": "2.86.0", - "rimraf": "2.6.2", - "semver": "5.3.0", - "tar": "2.2.1", - "which": "1.3.0" + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "2", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" }, "dependencies": { "fstream": { @@ -5033,10 +5041,10 @@ "resolved": false, "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "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" } }, "minimatch": { @@ -5044,7 +5052,7 @@ "resolved": false, "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" }, "dependencies": { "brace-expansion": { @@ -5052,7 +5060,7 @@ "resolved": false, "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" }, "dependencies": { @@ -5075,7 +5083,7 @@ "resolved": false, "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } }, "semver": { @@ -5088,9 +5096,9 @@ "resolved": false, "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" }, "dependencies": { "block-stream": { @@ -5098,7 +5106,7 @@ "resolved": false, "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } } } @@ -5110,8 +5118,8 @@ "resolved": false, "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" + "abbrev": "1", + "osenv": "^0.1.4" } }, "normalize-package-data": { @@ -5119,10 +5127,10 @@ "resolved": false, "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "requires": { - "hosted-git-info": "2.6.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" }, "dependencies": { "is-builtin-module": { @@ -5130,7 +5138,7 @@ "resolved": false, "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" }, "dependencies": { "builtin-modules": { @@ -5147,8 +5155,8 @@ "resolved": false, "integrity": "sha512-1eh6z0FivYQkLIU5xYcal8ssiGAgn0817u56EcF751HJD0m1PbAxurM/mc9WmAm3vhNZGkExleU/55VN/WRjFw==", "requires": { - "cli-table2": "0.2.0", - "console-control-strings": "1.1.0" + "cli-table2": "^0.2.0", + "console-control-strings": "^1.1.0" }, "dependencies": { "console-control-strings": { @@ -5168,7 +5176,7 @@ "resolved": false, "integrity": "sha1-1K7N/VGlPjcjt7L5Oy7ijjB7wNc=", "requires": { - "semver": "5.5.0" + "semver": "^2.3.0 || 3.x || 4 || 5" } }, "npm-lifecycle": { @@ -5176,14 +5184,14 @@ "resolved": false, "integrity": "sha512-0U4Iim5ix2NHUT672G7FBpldJX0N2xKBjJqRTAzioEJjb6I6KpQXq+y1sB5EDSjKaAX8VCC9qPK31Jy+p3ix5A==", "requires": { - "byline": "5.0.0", - "graceful-fs": "4.1.11", - "node-gyp": "3.6.2", - "resolve-from": "4.0.0", - "slide": "1.1.6", + "byline": "^5.0.0", + "graceful-fs": "^4.1.11", + "node-gyp": "^3.6.2", + "resolve-from": "^4.0.0", + "slide": "^1.1.6", "uid-number": "0.0.6", - "umask": "1.1.0", - "which": "1.3.0" + "umask": "^1.1.0", + "which": "^1.3.0" }, "dependencies": { "byline": { @@ -5203,10 +5211,10 @@ "resolved": false, "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", "requires": { - "hosted-git-info": "2.6.0", - "osenv": "0.1.5", - "semver": "5.5.0", - "validate-npm-package-name": "3.0.0" + "hosted-git-info": "^2.6.0", + "osenv": "^0.1.5", + "semver": "^5.5.0", + "validate-npm-package-name": "^3.0.0" } }, "npm-packlist": { @@ -5214,8 +5222,8 @@ "resolved": false, "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", "requires": { - "ignore-walk": "3.0.1", - "npm-bundled": "1.0.3" + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" }, "dependencies": { "ignore-walk": { @@ -5223,7 +5231,7 @@ "resolved": false, "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "requires": { - "minimatch": "3.0.4" + "minimatch": "^3.0.4" }, "dependencies": { "minimatch": { @@ -5231,7 +5239,7 @@ "resolved": false, "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" }, "dependencies": { "brace-expansion": { @@ -5239,7 +5247,7 @@ "resolved": false, "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" }, "dependencies": { @@ -5271,8 +5279,8 @@ "resolved": false, "integrity": "sha512-q9zLP8cTr8xKPmMZN3naxp1k/NxVFsjxN6uWuO1tiw9gxg7wZWQ/b5UTfzD0ANw2q1lQxdLKTeCCksq+bPSgbQ==", "requires": { - "npm-package-arg": "6.1.0", - "semver": "5.5.0" + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" } }, "npm-profile": { @@ -5280,8 +5288,8 @@ "resolved": false, "integrity": "sha512-U/jvnERvBRYgIdHkPURsa8mjLCOiImdA8fw1FzzCF//PKro4w1QANCmXiQex8f/Id1h939lqOiUT+ywKL0AG4Q==", "requires": { - "aproba": "1.2.0", - "make-fetch-happen": "2.6.0" + "aproba": "^1.1.2", + "make-fetch-happen": "^2.5.0" }, "dependencies": { "make-fetch-happen": { @@ -5289,17 +5297,17 @@ "resolved": false, "integrity": "sha512-FFq0lNI0ax+n9IWzWpH8A4JdgYiAp2DDYIZ3rsaav8JDe8I+72CzK6PQW/oom15YDZpV5bYW/9INd6nIJ2ZfZw==", "requires": { - "agentkeepalive": "3.3.0", - "cacache": "10.0.4", - "http-cache-semantics": "3.8.1", - "http-proxy-agent": "2.1.0", - "https-proxy-agent": "2.2.1", - "lru-cache": "4.1.3", - "mississippi": "1.3.1", - "node-fetch-npm": "2.0.2", - "promise-retry": "1.1.1", - "socks-proxy-agent": "3.0.1", - "ssri": "5.3.0" + "agentkeepalive": "^3.3.0", + "cacache": "^10.0.0", + "http-cache-semantics": "^3.8.0", + "http-proxy-agent": "^2.0.0", + "https-proxy-agent": "^2.1.0", + "lru-cache": "^4.1.1", + "mississippi": "^1.2.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^3.0.1", + "ssri": "^5.0.0" }, "dependencies": { "agentkeepalive": { @@ -5307,7 +5315,7 @@ "resolved": false, "integrity": "sha512-9yhcpXti2ZQE7bxuCsjjWNIZoQOd9sZ1ZBovHG0YeCRohFv73SLvcm73PC9T3olM4GyozaQb+4MGdQpcD8m7NQ==", "requires": { - "humanize-ms": "1.2.1" + "humanize-ms": "^1.2.1" }, "dependencies": { "humanize-ms": { @@ -5315,7 +5323,7 @@ "resolved": false, "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", "requires": { - "ms": "2.1.1" + "ms": "^2.0.0" }, "dependencies": { "ms": { @@ -5332,19 +5340,19 @@ "resolved": false, "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", "requires": { - "bluebird": "3.5.1", - "chownr": "1.0.1", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lru-cache": "4.1.3", - "mississippi": "2.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "5.3.0", - "unique-filename": "1.1.0", - "y18n": "4.0.0" + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" }, "dependencies": { "mississippi": { @@ -5352,16 +5360,16 @@ "resolved": false, "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", "requires": { - "concat-stream": "1.6.2", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.3", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "2.0.1", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" }, "dependencies": { "concat-stream": { @@ -5369,10 +5377,10 @@ "resolved": false, "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "requires": { - "buffer-from": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" }, "dependencies": { "buffer-from": { @@ -5392,10 +5400,10 @@ "resolved": false, "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" }, "dependencies": { "stream-shift": { @@ -5410,7 +5418,7 @@ "resolved": false, "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "flush-write-stream": { @@ -5418,8 +5426,8 @@ "resolved": false, "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" } }, "from2": { @@ -5427,8 +5435,8 @@ "resolved": false, "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, "parallel-transform": { @@ -5436,9 +5444,9 @@ "resolved": false, "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" }, "dependencies": { "cyclist": { @@ -5453,8 +5461,8 @@ "resolved": false, "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, "pumpify": { @@ -5462,9 +5470,9 @@ "resolved": false, "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" + "duplexify": "^3.5.3", + "inherits": "^2.0.3", + "pump": "^2.0.0" } }, "stream-each": { @@ -5472,8 +5480,8 @@ "resolved": false, "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" }, "dependencies": { "stream-shift": { @@ -5488,8 +5496,8 @@ "resolved": false, "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" }, "dependencies": { "xtend": { @@ -5518,7 +5526,7 @@ "resolved": false, "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", "requires": { - "agent-base": "4.2.0", + "agent-base": "4", "debug": "3.1.0" }, "dependencies": { @@ -5527,7 +5535,7 @@ "resolved": false, "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" }, "dependencies": { "es6-promisify": { @@ -5535,7 +5543,7 @@ "resolved": false, "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { - "es6-promise": "4.2.4" + "es6-promise": "^4.0.3" }, "dependencies": { "es6-promise": { @@ -5569,8 +5577,8 @@ "resolved": false, "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" + "agent-base": "^4.1.0", + "debug": "^3.1.0" }, "dependencies": { "agent-base": { @@ -5578,7 +5586,7 @@ "resolved": false, "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" }, "dependencies": { "es6-promisify": { @@ -5586,7 +5594,7 @@ "resolved": false, "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { - "es6-promise": "4.2.4" + "es6-promise": "^4.0.3" }, "dependencies": { "es6-promise": { @@ -5620,16 +5628,16 @@ "resolved": false, "integrity": "sha512-/6rB8YXFbAtsUVRphIRQqB0+9c7VaPHCjVtvto+JqwVxgz8Zz+I+f68/JgQ+Pb4VlZb2svA9OtdXnHHsZz7ltg==", "requires": { - "concat-stream": "1.6.0", - "duplexify": "3.5.3", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.2", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "1.0.3", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^1.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" }, "dependencies": { "concat-stream": { @@ -5637,9 +5645,9 @@ "resolved": false, "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" }, "dependencies": { "typedarray": { @@ -5654,10 +5662,10 @@ "resolved": false, "integrity": "sha512-g8ID9OroF9hKt2POf8YLayy+9594PzmM3scI00/uBXocX3TWNgoB67hjzkFe9ITAbQOne/lLdBxHXvYUM4ZgGA==", "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" }, "dependencies": { "stream-shift": { @@ -5672,7 +5680,7 @@ "resolved": false, "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "flush-write-stream": { @@ -5680,8 +5688,8 @@ "resolved": false, "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" } }, "from2": { @@ -5689,8 +5697,8 @@ "resolved": false, "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, "parallel-transform": { @@ -5698,9 +5706,9 @@ "resolved": false, "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" }, "dependencies": { "cyclist": { @@ -5715,8 +5723,8 @@ "resolved": false, "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, "pumpify": { @@ -5724,9 +5732,9 @@ "resolved": false, "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", "requires": { - "duplexify": "3.5.3", - "inherits": "2.0.3", - "pump": "2.0.1" + "duplexify": "^3.5.3", + "inherits": "^2.0.3", + "pump": "^2.0.0" }, "dependencies": { "pump": { @@ -5734,8 +5742,8 @@ "resolved": false, "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } } } @@ -5745,8 +5753,8 @@ "resolved": false, "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" }, "dependencies": { "stream-shift": { @@ -5761,8 +5769,8 @@ "resolved": false, "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" }, "dependencies": { "xtend": { @@ -5779,9 +5787,9 @@ "resolved": false, "integrity": "sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw==", "requires": { - "encoding": "0.1.12", - "json-parse-better-errors": "1.0.1", - "safe-buffer": "5.1.2" + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" }, "dependencies": { "encoding": { @@ -5789,7 +5797,7 @@ "resolved": false, "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "0.4.19" + "iconv-lite": "~0.4.13" }, "dependencies": { "iconv-lite": { @@ -5811,8 +5819,8 @@ "resolved": false, "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", "requires": { - "err-code": "1.1.2", - "retry": "0.10.1" + "err-code": "^1.0.0", + "retry": "^0.10.0" }, "dependencies": { "err-code": { @@ -5832,8 +5840,8 @@ "resolved": false, "integrity": "sha512-ZwEDymm204mTzvdqyUqOdovVr2YRd2NYskrYrF2LXyZ9qDiMAoFESGK8CRphiO7rtbo2Y757k2Nia3x2hGtalA==", "requires": { - "agent-base": "4.2.0", - "socks": "1.1.10" + "agent-base": "^4.1.0", + "socks": "^1.1.10" }, "dependencies": { "agent-base": { @@ -5841,7 +5849,7 @@ "resolved": false, "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" }, "dependencies": { "es6-promisify": { @@ -5849,7 +5857,7 @@ "resolved": false, "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { - "es6-promise": "4.2.4" + "es6-promise": "^4.0.3" }, "dependencies": { "es6-promise": { @@ -5866,8 +5874,8 @@ "resolved": false, "integrity": "sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=", "requires": { - "ip": "1.1.5", - "smart-buffer": "1.1.15" + "ip": "^1.1.4", + "smart-buffer": "^1.0.13" }, "dependencies": { "ip": { @@ -5889,7 +5897,7 @@ "resolved": false, "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.1.1" } } } @@ -5901,18 +5909,18 @@ "resolved": false, "integrity": "sha512-7rjGF2eA7hKDidGyEWmHTiKfXkbrcQAsGL/Rh4Rt3x3YNRNHhwaTzVJfW3aNvvlhg4G62VCluif0sLCb/i51Hg==", "requires": { - "concat-stream": "1.6.1", - "graceful-fs": "4.1.11", - "normalize-package-data": "2.4.0", - "npm-package-arg": "6.1.0", - "npmlog": "4.1.2", - "once": "1.4.0", - "request": "2.86.0", - "retry": "0.10.1", - "safe-buffer": "5.1.2", - "semver": "5.5.0", - "slide": "1.1.6", - "ssri": "5.3.0" + "concat-stream": "^1.5.2", + "graceful-fs": "^4.1.6", + "normalize-package-data": "~1.0.1 || ^2.0.0", + "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", + "npmlog": "2 || ^3.1.0 || ^4.0.0", + "once": "^1.3.3", + "request": "^2.74.0", + "retry": "^0.10.0", + "safe-buffer": "^5.1.1", + "semver": "2 >=2.2.1 || 3.x || 4 || 5", + "slide": "^1.1.3", + "ssri": "^5.2.4" }, "dependencies": { "concat-stream": { @@ -5920,9 +5928,9 @@ "resolved": false, "integrity": "sha512-gslSSJx03QKa59cIKqeJO9HQ/WZMotvYJCuaUULrLpjj8oG40kV2Z+gz82pVxlTkOADi4PJxQPPfhl1ELYrrXw==", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" }, "dependencies": { "typedarray": { @@ -5942,7 +5950,7 @@ "resolved": false, "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.1.1" } } } @@ -5952,12 +5960,12 @@ "resolved": false, "integrity": "sha512-XJPIBfMtgaooRtZmuA42xCeLf3tkxdIX0xqRsGWwNrcVvJ9UYFccD7Ho7QWCzvkM3i/QrkUC37Hu0a+vDBmt5g==", "requires": { - "bluebird": "3.5.1", - "figgy-pudding": "2.0.1", - "lru-cache": "4.1.3", - "make-fetch-happen": "3.0.0", - "npm-package-arg": "6.1.0", - "safe-buffer": "5.1.2" + "bluebird": "^3.5.1", + "figgy-pudding": "^2.0.1", + "lru-cache": "^4.1.2", + "make-fetch-happen": "^3.0.0", + "npm-package-arg": "^6.0.0", + "safe-buffer": "^5.1.1" }, "dependencies": { "figgy-pudding": { @@ -5970,17 +5978,17 @@ "resolved": false, "integrity": "sha512-FmWY7gC0mL6Z4N86vE14+m719JKE4H0A+pyiOH18B025gF/C113pyfb4gHDDYP5cqnRMHOz06JGdmffC/SES+w==", "requires": { - "agentkeepalive": "3.4.1", - "cacache": "10.0.4", - "http-cache-semantics": "3.8.1", - "http-proxy-agent": "2.1.0", - "https-proxy-agent": "2.2.1", - "lru-cache": "4.1.3", - "mississippi": "3.0.0", - "node-fetch-npm": "2.0.2", - "promise-retry": "1.1.1", - "socks-proxy-agent": "3.0.1", - "ssri": "5.3.0" + "agentkeepalive": "^3.4.1", + "cacache": "^10.0.4", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.0", + "lru-cache": "^4.1.2", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^3.0.1", + "ssri": "^5.2.4" }, "dependencies": { "agentkeepalive": { @@ -5988,7 +5996,7 @@ "resolved": false, "integrity": "sha512-MPIwsZU9PP9kOrZpyu2042kYA8Fdt/AedQYkYXucHgF9QoD9dXVp0ypuGnHXSR0hTstBxdt85Xkh4JolYfK5wg==", "requires": { - "humanize-ms": "1.2.1" + "humanize-ms": "^1.2.1" }, "dependencies": { "humanize-ms": { @@ -5996,7 +6004,7 @@ "resolved": false, "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", "requires": { - "ms": "2.1.1" + "ms": "^2.0.0" }, "dependencies": { "ms": { @@ -6013,19 +6021,19 @@ "resolved": false, "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", "requires": { - "bluebird": "3.5.1", - "chownr": "1.0.1", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lru-cache": "4.1.3", - "mississippi": "2.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "5.3.0", - "unique-filename": "1.1.0", - "y18n": "4.0.0" + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" }, "dependencies": { "mississippi": { @@ -6033,16 +6041,16 @@ "resolved": false, "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", "requires": { - "concat-stream": "1.6.2", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.3", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "2.0.1", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" }, "dependencies": { "concat-stream": { @@ -6050,10 +6058,10 @@ "resolved": false, "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "requires": { - "buffer-from": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" }, "dependencies": { "buffer-from": { @@ -6073,10 +6081,10 @@ "resolved": false, "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" }, "dependencies": { "stream-shift": { @@ -6091,7 +6099,7 @@ "resolved": false, "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "flush-write-stream": { @@ -6099,8 +6107,8 @@ "resolved": false, "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" } }, "from2": { @@ -6108,8 +6116,8 @@ "resolved": false, "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, "parallel-transform": { @@ -6117,9 +6125,9 @@ "resolved": false, "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" }, "dependencies": { "cyclist": { @@ -6134,8 +6142,8 @@ "resolved": false, "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, "pumpify": { @@ -6143,9 +6151,9 @@ "resolved": false, "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" + "duplexify": "^3.5.3", + "inherits": "^2.0.3", + "pump": "^2.0.0" } }, "stream-each": { @@ -6153,8 +6161,8 @@ "resolved": false, "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" }, "dependencies": { "stream-shift": { @@ -6169,8 +6177,8 @@ "resolved": false, "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" }, "dependencies": { "xtend": { @@ -6199,7 +6207,7 @@ "resolved": false, "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", "requires": { - "agent-base": "4.2.0", + "agent-base": "4", "debug": "3.1.0" }, "dependencies": { @@ -6208,7 +6216,7 @@ "resolved": false, "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" }, "dependencies": { "es6-promisify": { @@ -6216,7 +6224,7 @@ "resolved": false, "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { - "es6-promise": "4.2.4" + "es6-promise": "^4.0.3" }, "dependencies": { "es6-promise": { @@ -6250,8 +6258,8 @@ "resolved": false, "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" + "agent-base": "^4.1.0", + "debug": "^3.1.0" }, "dependencies": { "agent-base": { @@ -6259,7 +6267,7 @@ "resolved": false, "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" }, "dependencies": { "es6-promisify": { @@ -6267,7 +6275,7 @@ "resolved": false, "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { - "es6-promise": "4.2.4" + "es6-promise": "^4.0.3" }, "dependencies": { "es6-promise": { @@ -6301,9 +6309,9 @@ "resolved": false, "integrity": "sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw==", "requires": { - "encoding": "0.1.12", - "json-parse-better-errors": "1.0.2", - "safe-buffer": "5.1.2" + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" }, "dependencies": { "encoding": { @@ -6311,7 +6319,7 @@ "resolved": false, "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "0.4.21" + "iconv-lite": "~0.4.13" }, "dependencies": { "iconv-lite": { @@ -6319,7 +6327,7 @@ "resolved": false, "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": "^2.1.0" }, "dependencies": { "safer-buffer": { @@ -6338,8 +6346,8 @@ "resolved": false, "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", "requires": { - "err-code": "1.1.2", - "retry": "0.10.1" + "err-code": "^1.0.0", + "retry": "^0.10.0" }, "dependencies": { "err-code": { @@ -6359,8 +6367,8 @@ "resolved": false, "integrity": "sha512-ZwEDymm204mTzvdqyUqOdovVr2YRd2NYskrYrF2LXyZ9qDiMAoFESGK8CRphiO7rtbo2Y757k2Nia3x2hGtalA==", "requires": { - "agent-base": "4.2.0", - "socks": "1.1.10" + "agent-base": "^4.1.0", + "socks": "^1.1.10" }, "dependencies": { "agent-base": { @@ -6368,7 +6376,7 @@ "resolved": false, "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" }, "dependencies": { "es6-promisify": { @@ -6376,7 +6384,7 @@ "resolved": false, "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { - "es6-promise": "4.2.4" + "es6-promise": "^4.0.3" }, "dependencies": { "es6-promise": { @@ -6393,8 +6401,8 @@ "resolved": false, "integrity": "sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=", "requires": { - "ip": "1.1.5", - "smart-buffer": "1.1.15" + "ip": "^1.1.4", + "smart-buffer": "^1.0.13" }, "dependencies": { "ip": { @@ -6416,7 +6424,7 @@ "resolved": false, "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.1.1" } } } @@ -6433,10 +6441,10 @@ "resolved": false, "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" }, "dependencies": { "are-we-there-yet": { @@ -6444,8 +6452,8 @@ "resolved": false, "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" }, "dependencies": { "delegates": { @@ -6465,14 +6473,14 @@ "resolved": false, "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "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" }, "dependencies": { "object-assign": { @@ -6490,9 +6498,9 @@ "resolved": false, "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" }, "dependencies": { "code-point-at": { @@ -6505,7 +6513,7 @@ "resolved": false, "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" }, "dependencies": { "number-is-nan": { @@ -6522,7 +6530,7 @@ "resolved": false, "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" }, "dependencies": { "ansi-regex": { @@ -6537,7 +6545,7 @@ "resolved": false, "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" } } } @@ -6554,7 +6562,7 @@ "resolved": false, "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "opener": { @@ -6567,8 +6575,8 @@ "resolved": false, "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" }, "dependencies": { "os-homedir": { @@ -6588,31 +6596,31 @@ "resolved": false, "integrity": "sha512-gf0D3OXSRh9T9spo7sE2tfuyauuPnK1uVz0WPEhLfmuWZ0o6o9jrt3u8VZwCBKZBPGVZnBPXBkUDQd0avo14tQ==", "requires": { - "bluebird": "3.5.1", - "cacache": "11.0.2", - "get-stream": "3.0.0", - "glob": "7.1.2", - "lru-cache": "4.1.3", - "make-fetch-happen": "4.0.1", - "minimatch": "3.0.4", - "minipass": "2.3.3", - "mississippi": "3.0.0", - "mkdirp": "0.5.1", - "normalize-package-data": "2.4.0", - "npm-package-arg": "6.1.0", - "npm-packlist": "1.1.10", - "npm-pick-manifest": "2.1.0", - "osenv": "0.1.5", - "promise-inflight": "1.0.1", - "promise-retry": "1.1.1", - "protoduck": "5.0.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.2", - "semver": "5.5.0", - "ssri": "6.0.0", + "bluebird": "^3.5.1", + "cacache": "^11.0.2", + "get-stream": "^3.0.0", + "glob": "^7.1.2", + "lru-cache": "^4.1.3", + "make-fetch-happen": "^4.0.1", + "minimatch": "^3.0.4", + "minipass": "^2.3.3", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.10", + "npm-pick-manifest": "^2.1.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.0", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.5.0", + "ssri": "^6.0.0", "tar": "4.4.1", - "unique-filename": "1.1.0", - "which": "1.3.0" + "unique-filename": "^1.1.0", + "which": "^1.3.0" }, "dependencies": { "get-stream": { @@ -6625,17 +6633,17 @@ "resolved": false, "integrity": "sha512-7R5ivfy9ilRJ1EMKIOziwrns9fGeAD4bAha8EB7BIiBBLHm2KeTUGCrICFt2rbHfzheTLynv50GnNTK1zDTrcQ==", "requires": { - "agentkeepalive": "3.4.1", - "cacache": "11.0.2", - "http-cache-semantics": "3.8.1", - "http-proxy-agent": "2.1.0", - "https-proxy-agent": "2.2.1", - "lru-cache": "4.1.3", - "mississippi": "3.0.0", - "node-fetch-npm": "2.0.2", - "promise-retry": "1.1.1", - "socks-proxy-agent": "4.0.1", - "ssri": "6.0.0" + "agentkeepalive": "^3.4.1", + "cacache": "^11.0.1", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^4.1.2", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" }, "dependencies": { "agentkeepalive": { @@ -6643,7 +6651,7 @@ "resolved": false, "integrity": "sha512-MPIwsZU9PP9kOrZpyu2042kYA8Fdt/AedQYkYXucHgF9QoD9dXVp0ypuGnHXSR0hTstBxdt85Xkh4JolYfK5wg==", "requires": { - "humanize-ms": "1.2.1" + "humanize-ms": "^1.2.1" }, "dependencies": { "humanize-ms": { @@ -6651,7 +6659,7 @@ "resolved": false, "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", "requires": { - "ms": "2.1.1" + "ms": "^2.0.0" }, "dependencies": { "ms": { @@ -6673,7 +6681,7 @@ "resolved": false, "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", "requires": { - "agent-base": "4.2.0", + "agent-base": "4", "debug": "3.1.0" }, "dependencies": { @@ -6682,7 +6690,7 @@ "resolved": false, "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" }, "dependencies": { "es6-promisify": { @@ -6690,7 +6698,7 @@ "resolved": false, "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { - "es6-promise": "4.2.4" + "es6-promise": "^4.0.3" }, "dependencies": { "es6-promise": { @@ -6724,8 +6732,8 @@ "resolved": false, "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" + "agent-base": "^4.1.0", + "debug": "^3.1.0" }, "dependencies": { "agent-base": { @@ -6733,7 +6741,7 @@ "resolved": false, "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" }, "dependencies": { "es6-promisify": { @@ -6741,7 +6749,7 @@ "resolved": false, "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { - "es6-promise": "4.2.4" + "es6-promise": "^4.0.3" }, "dependencies": { "es6-promise": { @@ -6775,9 +6783,9 @@ "resolved": false, "integrity": "sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw==", "requires": { - "encoding": "0.1.12", - "json-parse-better-errors": "1.0.2", - "safe-buffer": "5.1.2" + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" }, "dependencies": { "encoding": { @@ -6785,7 +6793,7 @@ "resolved": false, "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "0.4.23" + "iconv-lite": "~0.4.13" }, "dependencies": { "iconv-lite": { @@ -6793,7 +6801,7 @@ "resolved": false, "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": ">= 2.1.2 < 3" }, "dependencies": { "safer-buffer": { @@ -6812,8 +6820,8 @@ "resolved": false, "integrity": "sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw==", "requires": { - "agent-base": "4.2.0", - "socks": "2.2.0" + "agent-base": "~4.2.0", + "socks": "~2.2.0" }, "dependencies": { "agent-base": { @@ -6821,7 +6829,7 @@ "resolved": false, "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" }, "dependencies": { "es6-promisify": { @@ -6829,7 +6837,7 @@ "resolved": false, "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { - "es6-promise": "4.2.4" + "es6-promise": "^4.0.3" }, "dependencies": { "es6-promise": { @@ -6846,8 +6854,8 @@ "resolved": false, "integrity": "sha512-uRKV9uXQ9ytMbGm2+DilS1jB7N3AC0mmusmW5TVWjNuBZjxS8+lX38fasKVY9I4opv/bY/iqTbcpFFaTwpfwRg==", "requires": { - "ip": "1.1.5", - "smart-buffer": "4.0.1" + "ip": "^1.1.5", + "smart-buffer": "^4.0.1" }, "dependencies": { "ip": { @@ -6871,7 +6879,7 @@ "resolved": false, "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" }, "dependencies": { "brace-expansion": { @@ -6879,7 +6887,7 @@ "resolved": false, "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" }, "dependencies": { @@ -6902,8 +6910,8 @@ "resolved": false, "integrity": "sha512-/jAn9/tEX4gnpyRATxgHEOV6xbcyxgT7iUnxo9Y3+OB0zX00TgKIv/2FZCf5brBbICcwbLqVv2ImjvWWrQMSYw==", "requires": { - "safe-buffer": "5.1.2", - "yallist": "3.0.2" + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" }, "dependencies": { "yallist": { @@ -6918,8 +6926,8 @@ "resolved": false, "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", "requires": { - "err-code": "1.1.2", - "retry": "0.10.1" + "err-code": "^1.0.0", + "retry": "^0.10.0" }, "dependencies": { "err-code": { @@ -6939,7 +6947,7 @@ "resolved": false, "integrity": "sha512-agsGWD8/RZrS4ga6v82Fxb0RHIS2RZnbsSue6A9/MBRhB/jcqOANAMNrqM9900b8duj+Gx+T/JMy5IowDoO/hQ==", "requires": { - "genfun": "4.0.1" + "genfun": "^4.0.1" }, "dependencies": { "genfun": { @@ -6971,8 +6979,8 @@ "resolved": false, "integrity": "sha512-pNB/Gr8SA8ff8KpUFM36o/WFAlthgaThka5bV19AD9PNTH20Pwq5Zxodif2YyHwrctp6SkL4GqlOot0qR/wGaw==", "requires": { - "decode-uri-component": "0.2.0", - "strict-uri-encode": "2.0.0" + "decode-uri-component": "^0.2.0", + "strict-uri-encode": "^2.0.0" }, "dependencies": { "decode-uri-component": { @@ -6997,7 +7005,7 @@ "resolved": false, "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", "requires": { - "mute-stream": "0.0.7" + "mute-stream": "~0.0.4" }, "dependencies": { "mute-stream": { @@ -7012,7 +7020,7 @@ "resolved": false, "integrity": "sha1-LV0Vd4ajfAVdIgd8MsU/gynpHHs=", "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.2" } }, "read-installed": { @@ -7020,13 +7028,13 @@ "resolved": false, "integrity": "sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc=", "requires": { - "debuglog": "1.0.1", - "graceful-fs": "4.1.11", - "read-package-json": "2.0.13", - "readdir-scoped-modules": "1.0.2", - "semver": "5.5.0", - "slide": "1.1.6", - "util-extend": "1.0.3" + "debuglog": "^1.0.1", + "graceful-fs": "^4.1.2", + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "slide": "~1.1.3", + "util-extend": "^1.0.1" }, "dependencies": { "util-extend": { @@ -7041,11 +7049,11 @@ "resolved": false, "integrity": "sha512-/1dZ7TRZvGrYqE0UAfN6qQb5GYBsNcqS1C0tNK601CFOJmtHI7NIGXwetEPU/OtoFHZL3hDxm4rolFFVE9Bnmg==", "requires": { - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "json-parse-better-errors": "1.0.1", - "normalize-package-data": "2.4.0", - "slash": "1.0.0" + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "json-parse-better-errors": "^1.0.1", + "normalize-package-data": "^2.0.0", + "slash": "^1.0.0" }, "dependencies": { "json-parse-better-errors": { @@ -7065,11 +7073,11 @@ "resolved": false, "integrity": "sha512-2CNoRoh95LxY47LvqrehIAfUVda2JbuFE/HaGYs42bNrGG+ojbw1h3zOcPcQ+1GQ3+rkzNndZn85u1XyZ3UsIA==", "requires": { - "debuglog": "1.0.1", - "dezalgo": "1.0.3", - "once": "1.4.0", - "read-package-json": "2.0.13", - "readdir-scoped-modules": "1.0.2" + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "once": "^1.3.0", + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0" } }, "readable-stream": { @@ -7077,13 +7085,13 @@ "resolved": false, "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" }, "dependencies": { "core-util-is": { @@ -7106,7 +7114,7 @@ "resolved": false, "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } }, "util-deprecate": { @@ -7121,10 +7129,10 @@ "resolved": false, "integrity": "sha1-n6+jfShr5dksuuve4DDcm19AZ0c=", "requires": { - "debuglog": "1.0.1", - "dezalgo": "1.0.3", - "graceful-fs": "4.1.11", - "once": "1.4.0" + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" } }, "request": { @@ -7132,27 +7140,27 @@ "resolved": false, "integrity": "sha512-BQZih67o9r+Ys94tcIW4S7Uu8pthjrQVxhsZ/weOwHbDfACxvIyvnAbzFQxjy1jMtvFSzv5zf4my6cZsJBbVzw==", "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.7.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.18", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.2", - "tough-cookie": "2.3.4", - "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", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" }, "dependencies": { "aws-sign2": { @@ -7175,7 +7183,7 @@ "resolved": false, "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" }, "dependencies": { "delayed-stream": { @@ -7200,9 +7208,9 @@ "resolved": false, "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "asynckit": "0.4.0", + "asynckit": "^0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "mime-types": "^2.1.12" }, "dependencies": { "asynckit": { @@ -7217,8 +7225,8 @@ "resolved": false, "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": { @@ -7226,10 +7234,10 @@ "resolved": false, "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.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" }, "dependencies": { "co": { @@ -7266,10 +7274,10 @@ "resolved": false, "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" }, "dependencies": { "boom": { @@ -7277,7 +7285,7 @@ "resolved": false, "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "requires": { - "hoek": "4.2.1" + "hoek": "4.x.x" } }, "cryptiles": { @@ -7285,7 +7293,7 @@ "resolved": false, "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "requires": { - "boom": "5.2.0" + "boom": "5.x.x" }, "dependencies": { "boom": { @@ -7293,7 +7301,7 @@ "resolved": false, "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "requires": { - "hoek": "4.2.1" + "hoek": "4.x.x" } } } @@ -7308,7 +7316,7 @@ "resolved": false, "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", "requires": { - "hoek": "4.2.1" + "hoek": "4.x.x" } } } @@ -7318,9 +7326,9 @@ "resolved": false, "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" }, "dependencies": { "assert-plus": { @@ -7354,9 +7362,9 @@ "resolved": false, "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": { "core-util-is": { @@ -7373,14 +7381,14 @@ "resolved": false, "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", "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": { @@ -7394,7 +7402,7 @@ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "dashdash": { @@ -7402,7 +7410,7 @@ "resolved": false, "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "ecc-jsbn": { @@ -7411,7 +7419,7 @@ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "getpass": { @@ -7419,7 +7427,7 @@ "resolved": false, "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "jsbn": { @@ -7458,7 +7466,7 @@ "resolved": false, "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "1.33.0" + "mime-db": "~1.33.0" }, "dependencies": { "mime-db": { @@ -7488,7 +7496,7 @@ "resolved": false, "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" }, "dependencies": { "punycode": { @@ -7503,7 +7511,7 @@ "resolved": false, "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } } } @@ -7518,7 +7526,7 @@ "resolved": false, "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { @@ -7536,8 +7544,8 @@ "resolved": false, "integrity": "sha1-YDCCL70smCOUn49y7WQR7lzyWq4=", "requires": { - "graceful-fs": "4.1.11", - "readable-stream": "2.3.6" + "graceful-fs": "^4.1.2", + "readable-stream": "^2.0.2" } }, "slide": { @@ -7555,8 +7563,8 @@ "resolved": false, "integrity": "sha1-x3lMfgd4gAUv9xqNSi27Sppjisc=", "requires": { - "from2": "1.3.0", - "stream-iterate": "1.2.0" + "from2": "^1.3.0", + "stream-iterate": "^1.1.0" }, "dependencies": { "from2": { @@ -7564,8 +7572,8 @@ "resolved": false, "integrity": "sha1-iEE7qqX5pZfP3pIh2GmGzTwGHf0=", "requires": { - "inherits": "2.0.3", - "readable-stream": "1.1.14" + "inherits": "~2.0.1", + "readable-stream": "~1.1.10" }, "dependencies": { "readable-stream": { @@ -7573,10 +7581,10 @@ "resolved": false, "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" }, "dependencies": { "core-util-is": { @@ -7603,8 +7611,8 @@ "resolved": false, "integrity": "sha1-K9fHcpbBcCpGSIuK1B95hl7s1OE=", "requires": { - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" + "readable-stream": "^2.1.5", + "stream-shift": "^1.0.0" }, "dependencies": { "stream-shift": { @@ -7626,7 +7634,7 @@ "resolved": false, "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" }, "dependencies": { "ansi-regex": { @@ -7641,13 +7649,13 @@ "resolved": false, "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==", "requires": { - "chownr": "1.0.1", - "fs-minipass": "1.2.5", - "minipass": "2.3.1", - "minizlib": "1.1.0", - "mkdirp": "0.5.1", - "safe-buffer": "5.1.2", - "yallist": "3.0.2" + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" }, "dependencies": { "fs-minipass": { @@ -7655,7 +7663,7 @@ "resolved": false, "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "requires": { - "minipass": "2.3.1" + "minipass": "^2.2.1" } }, "minipass": { @@ -7663,8 +7671,8 @@ "resolved": false, "integrity": "sha512-liT0Gjaz7OHXg2qsfefVFfryBE9uAsqVFWQ6wVf4KNMzI2edsrCDjdGDpTxRaykbxhSKHu/SDtRRcMEcCcTQ2g==", "requires": { - "safe-buffer": "5.1.2", - "yallist": "3.0.2" + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" } }, "minizlib": { @@ -7672,7 +7680,7 @@ "resolved": false, "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", "requires": { - "minipass": "2.3.1" + "minipass": "^2.2.1" } }, "yallist": { @@ -7707,7 +7715,7 @@ "resolved": false, "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", "requires": { - "unique-slug": "2.0.0" + "unique-slug": "^2.0.0" }, "dependencies": { "unique-slug": { @@ -7715,7 +7723,7 @@ "resolved": false, "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", "requires": { - "imurmurhash": "0.1.4" + "imurmurhash": "^0.1.4" } } } @@ -7730,16 +7738,16 @@ "resolved": false, "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", "requires": { - "boxen": "1.3.0", - "chalk": "2.4.1", - "configstore": "3.1.2", - "import-lazy": "2.1.0", - "is-ci": "1.1.0", - "is-installed-globally": "0.1.0", - "is-npm": "1.0.0", - "latest-version": "3.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "3.0.0" + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" }, "dependencies": { "boxen": { @@ -7747,13 +7755,13 @@ "resolved": false, "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.4.1", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "2.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": "^2.0.0" }, "dependencies": { "ansi-align": { @@ -7761,7 +7769,7 @@ "resolved": false, "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "requires": { - "string-width": "2.1.1" + "string-width": "^2.0.0" } }, "camelcase": { @@ -7779,8 +7787,8 @@ "resolved": false, "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" }, "dependencies": { "is-fullwidth-code-point": { @@ -7795,7 +7803,7 @@ "resolved": false, "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", "requires": { - "execa": "0.7.0" + "execa": "^0.7.0" }, "dependencies": { "execa": { @@ -7803,13 +7811,13 @@ "resolved": false, "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" }, "dependencies": { "cross-spawn": { @@ -7817,9 +7825,9 @@ "resolved": false, "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { - "lru-cache": "4.1.3", - "shebang-command": "1.2.0", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" }, "dependencies": { "shebang-command": { @@ -7827,7 +7835,7 @@ "resolved": false, "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" }, "dependencies": { "shebang-regex": { @@ -7854,7 +7862,7 @@ "resolved": false, "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" }, "dependencies": { "path-key": { @@ -7888,7 +7896,7 @@ "resolved": false, "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", "requires": { - "string-width": "2.1.1" + "string-width": "^2.1.1" } } } @@ -7898,9 +7906,9 @@ "resolved": false, "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "dependencies": { "ansi-styles": { @@ -7908,7 +7916,7 @@ "resolved": false, "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "1.9.1" + "color-convert": "^1.9.0" }, "dependencies": { "color-convert": { @@ -7916,7 +7924,7 @@ "resolved": false, "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "requires": { - "color-name": "1.1.3" + "color-name": "^1.1.1" }, "dependencies": { "color-name": { @@ -7938,7 +7946,7 @@ "resolved": false, "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" }, "dependencies": { "has-flag": { @@ -7955,12 +7963,12 @@ "resolved": false, "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.1.11", - "make-dir": "1.2.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" }, "dependencies": { "dot-prop": { @@ -7968,7 +7976,7 @@ "resolved": false, "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "requires": { - "is-obj": "1.0.1" + "is-obj": "^1.0.0" }, "dependencies": { "is-obj": { @@ -7983,7 +7991,7 @@ "resolved": false, "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" }, "dependencies": { "pify": { @@ -7998,7 +8006,7 @@ "resolved": false, "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", "requires": { - "crypto-random-string": "1.0.0" + "crypto-random-string": "^1.0.0" }, "dependencies": { "crypto-random-string": { @@ -8020,7 +8028,7 @@ "resolved": false, "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", "requires": { - "ci-info": "1.1.3" + "ci-info": "^1.0.0" }, "dependencies": { "ci-info": { @@ -8035,8 +8043,8 @@ "resolved": false, "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", "requires": { - "global-dirs": "0.1.1", - "is-path-inside": "1.0.1" + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" }, "dependencies": { "global-dirs": { @@ -8044,7 +8052,7 @@ "resolved": false, "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "requires": { - "ini": "1.3.5" + "ini": "^1.3.4" } }, "is-path-inside": { @@ -8052,7 +8060,7 @@ "resolved": false, "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } } } @@ -8067,7 +8075,7 @@ "resolved": false, "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", "requires": { - "package-json": "4.0.1" + "package-json": "^4.0.0" }, "dependencies": { "package-json": { @@ -8075,10 +8083,10 @@ "resolved": false, "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", "requires": { - "got": "6.7.1", - "registry-auth-token": "3.3.2", - "registry-url": "3.1.0", - "semver": "5.5.0" + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" }, "dependencies": { "got": { @@ -8086,17 +8094,17 @@ "resolved": false, "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.1", - "safe-buffer": "5.1.2", - "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" }, "dependencies": { "create-error-class": { @@ -8104,7 +8112,7 @@ "resolved": false, "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "requires": { - "capture-stack-trace": "1.0.0" + "capture-stack-trace": "^1.0.0" }, "dependencies": { "capture-stack-trace": { @@ -8159,7 +8167,7 @@ "resolved": false, "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "requires": { - "prepend-http": "1.0.4" + "prepend-http": "^1.0.1" }, "dependencies": { "prepend-http": { @@ -8176,8 +8184,8 @@ "resolved": false, "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "requires": { - "rc": "1.2.7", - "safe-buffer": "5.1.2" + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" }, "dependencies": { "rc": { @@ -8185,10 +8193,10 @@ "resolved": false, "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "deep-extend": { @@ -8215,7 +8223,7 @@ "resolved": false, "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "requires": { - "rc": "1.2.7" + "rc": "^1.0.1" }, "dependencies": { "rc": { @@ -8223,10 +8231,10 @@ "resolved": false, "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "deep-extend": { @@ -8257,7 +8265,7 @@ "resolved": false, "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "requires": { - "semver": "5.5.0" + "semver": "^5.0.3" } }, "xdg-basedir": { @@ -8277,8 +8285,8 @@ "resolved": false, "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" }, "dependencies": { "spdx-correct": { @@ -8286,8 +8294,8 @@ "resolved": false, "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" }, "dependencies": { "spdx-license-ids": { @@ -8302,8 +8310,8 @@ "resolved": false, "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" }, "dependencies": { "spdx-exceptions": { @@ -8325,7 +8333,7 @@ "resolved": false, "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", "requires": { - "builtins": "1.0.3" + "builtins": "^1.0.3" }, "dependencies": { "builtins": { @@ -8340,7 +8348,7 @@ "resolved": false, "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" }, "dependencies": { "isexe": { @@ -8355,7 +8363,7 @@ "resolved": false, "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", "requires": { - "errno": "0.1.7" + "errno": "~0.1.7" }, "dependencies": { "errno": { @@ -8363,7 +8371,7 @@ "resolved": false, "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "requires": { - "prr": "1.0.1" + "prr": "~1.0.1" }, "dependencies": { "prr": { @@ -8385,9 +8393,9 @@ "resolved": false, "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" }, "dependencies": { "signal-exit": { @@ -8405,7 +8413,7 @@ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" } }, "nth-check": { @@ -8414,7 +8422,7 @@ "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", "dev": true, "requires": { - "boolbase": "1.0.0" + "boolbase": "~1.0.0" } }, "number-is-nan": { @@ -8440,8 +8448,8 @@ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "once": { @@ -8450,7 +8458,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "opn": { @@ -8458,7 +8466,7 @@ "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", "requires": { - "is-wsl": "1.1.0" + "is-wsl": "^1.1.0" } }, "optimist": { @@ -8466,8 +8474,8 @@ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" } }, "optionator": { @@ -8476,12 +8484,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": { @@ -8498,8 +8506,8 @@ "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", "dev": true, "requires": { - "is-stream": "1.1.0", - "readable-stream": "2.3.6" + "is-stream": "^1.0.1", + "readable-stream": "^2.0.1" } }, "os-homedir": { @@ -8514,9 +8522,9 @@ "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, "os-tmpdir": { @@ -8531,8 +8539,8 @@ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, "p-finally": { @@ -8547,7 +8555,7 @@ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { - "p-try": "1.0.0" + "p-try": "^1.0.0" } }, "p-locate": { @@ -8556,7 +8564,7 @@ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "1.3.0" + "p-limit": "^1.1.0" } }, "p-map": { @@ -8577,10 +8585,10 @@ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" }, "dependencies": { "is-extglob": { @@ -8595,7 +8603,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } } } @@ -8606,7 +8614,7 @@ "integrity": "sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg=", "dev": true, "requires": { - "semver": "5.5.0" + "semver": "^5.1.0" } }, "parse5": { @@ -8615,7 +8623,7 @@ "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", "dev": true, "requires": { - "@types/node": "7.0.63" + "@types/node": "*" } }, "path-dirname": { @@ -8660,7 +8668,7 @@ "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "dev": true, "requires": { - "through": "2.3.8" + "through": "~2.3" } }, "pend": { @@ -8692,7 +8700,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "plugin-error": { @@ -8701,11 +8709,11 @@ "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", "dev": true, "requires": { - "ansi-cyan": "0.1.1", - "ansi-red": "0.1.1", - "arr-diff": "1.1.0", - "arr-union": "2.1.0", - "extend-shallow": "1.1.4" + "ansi-cyan": "^0.1.1", + "ansi-red": "^0.1.1", + "arr-diff": "^1.0.1", + "arr-union": "^2.0.1", + "extend-shallow": "^1.1.2" } }, "prelude-ls": { @@ -8770,7 +8778,7 @@ "integrity": "sha1-bEnQHwCeIlZ4h4nyv/rGuLmZBYU=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "randomatic": { @@ -8779,9 +8787,9 @@ "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==", "dev": true, "requires": { - "is-number": "4.0.0", - "kind-of": "6.0.2", - "math-random": "1.0.1" + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" }, "dependencies": { "is-number": { @@ -8804,7 +8812,7 @@ "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", "dev": true, "requires": { - "mute-stream": "0.0.7" + "mute-stream": "~0.0.4" } }, "readable-stream": { @@ -8813,13 +8821,13 @@ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "regex-cache": { @@ -8828,7 +8836,7 @@ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "remap-istanbul": { @@ -8837,11 +8845,11 @@ "integrity": "sha512-lpA+zkWfT7v81k76asd+w82+dnbBTmBEsyuBVQ28armnOqsZZO23uI4ZCBGd8TtIb9Tq4CauswB+A44cbkuiMA==", "dev": true, "requires": { - "amdefine": "1.0.1", + "amdefine": "^1.0.0", "istanbul": "0.4.5", - "minimatch": "3.0.4", - "plugin-error": "0.1.2", - "source-map": "0.6.1", + "minimatch": "^3.0.3", + "plugin-error": "^0.1.2", + "source-map": "^0.6.1", "through2": "2.0.1" }, "dependencies": { @@ -8857,12 +8865,12 @@ "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -8877,8 +8885,8 @@ "integrity": "sha1-OE51MU1J8y3hLuu4E2uOtrXVnak=", "dev": true, "requires": { - "readable-stream": "2.0.6", - "xtend": "4.0.1" + "readable-stream": "~2.0.0", + "xtend": "~4.0.0" } } } @@ -8912,26 +8920,26 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.8.0", - "caseless": "0.12.0", - "combined-stream": "1.0.7", - "extend": "3.0.2", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.1.0", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.20", - "oauth-sign": "0.9.0", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.2", - "tough-cookie": "2.4.3", - "tunnel-agent": "0.6.0", - "uuid": "3.3.2" + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" } }, "require-directory": { @@ -8958,7 +8966,7 @@ "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", "dev": true, "requires": { - "path-parse": "1.0.6" + "path-parse": "^1.0.5" } }, "rimraf": { @@ -8967,7 +8975,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.1.3" + "glob": "^7.0.5" } }, "safe-buffer": { @@ -9009,7 +9017,7 @@ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -9035,8 +9043,8 @@ "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", "dev": true, "requires": { - "buffer-from": "1.1.1", - "source-map": "0.6.1" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, "sparkles": { @@ -9051,7 +9059,7 @@ "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", "dev": true, "requires": { - "through": "2.3.8" + "through": "2" } }, "sprintf-js": { @@ -9064,15 +9072,15 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", "requires": { - "asn1": "0.2.4", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.2", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.2", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "safer-buffer": "2.1.2", - "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", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" } }, "stat-mode": { @@ -9087,7 +9095,7 @@ "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", "dev": true, "requires": { - "duplexer": "0.1.1" + "duplexer": "~0.1.1" } }, "stream-shift": { @@ -9102,7 +9110,7 @@ "integrity": "sha512-Gk6KZM+yNA1JpW0KzlZIhjo3EaBJDkYfXtYSbOwNIQ7Zd6006E6+sCFlW1NDvFG/vnXhKmw6TJJgiEQg/8lXfQ==", "dev": true, "requires": { - "readable-stream": "2.3.6" + "readable-stream": "^2.0.2" } }, "streamifier": { @@ -9117,8 +9125,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" }, "dependencies": { "ansi-regex": { @@ -9133,7 +9141,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -9144,7 +9152,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } }, "strip-ansi": { @@ -9153,7 +9161,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -9162,7 +9170,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "strip-bom-stream": { @@ -9171,8 +9179,8 @@ "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", "dev": true, "requires": { - "first-chunk-stream": "1.0.0", - "strip-bom": "2.0.0" + "first-chunk-stream": "^1.0.0", + "strip-bom": "^2.0.0" } }, "strip-eof": { @@ -9193,9 +9201,9 @@ "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" } }, "through": { @@ -9210,8 +9218,8 @@ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" } }, "through2-filter": { @@ -9220,8 +9228,8 @@ "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", "dev": true, "requires": { - "through2": "2.0.3", - "xtend": "4.0.1" + "through2": "~2.0.0", + "xtend": "~4.0.0" } }, "time-stamp": { @@ -9236,7 +9244,7 @@ "integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=", "dev": true, "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.1" } }, "to-absolute-glob": { @@ -9245,7 +9253,7 @@ "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", "dev": true, "requires": { - "extend-shallow": "2.0.1" + "extend-shallow": "^2.0.1" }, "dependencies": { "extend-shallow": { @@ -9254,7 +9262,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -9264,8 +9272,8 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "requires": { - "psl": "1.1.29", - "punycode": "1.4.1" + "psl": "^1.1.24", + "punycode": "^1.4.1" } }, "tslib": { @@ -9280,18 +9288,18 @@ "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "builtin-modules": "1.1.1", - "chalk": "2.4.1", - "commander": "2.17.1", - "diff": "3.5.0", - "glob": "7.1.3", - "js-yaml": "3.12.0", - "minimatch": "3.0.4", - "resolve": "1.8.1", - "semver": "5.5.0", - "tslib": "1.9.3", - "tsutils": "2.29.0" + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.27.2" } }, "tslint-eslint-rules": { @@ -9302,7 +9310,7 @@ "requires": { "doctrine": "0.7.2", "tslib": "1.9.0", - "tsutils": "3.0.0" + "tsutils": "^3.0.0" }, "dependencies": { "tslib": { @@ -9317,7 +9325,7 @@ "integrity": "sha512-LjHBWR0vWAUHWdIAoTjoqi56Kz+FDKBgVEuL+gVPG/Pv7QW5IdaDDeK9Txlr6U0Cmckp5EgCIq1T25qe3J6hyw==", "dev": true, "requires": { - "tslib": "1.9.0" + "tslib": "^1.8.1" } } } @@ -9334,7 +9342,7 @@ "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", "dev": true, "requires": { - "tslib": "1.9.3" + "tslib": "^1.8.1" } }, "tunnel": { @@ -9348,7 +9356,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -9363,7 +9371,7 @@ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "prelude-ls": "1.1.2" + "prelude-ls": "~1.1.2" } }, "typed-rest-client": { @@ -9385,10 +9393,9 @@ } }, "typescript": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.1.tgz", - "integrity": "sha512-zQIMOmC+372pC/CCVLqnQ0zSBiY7HHodU7mpQdjiZddek4GMj31I3dUJ7gAs9o65X7mnRma6OokOkc6f9jjfBg==", - "dev": true + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.3.tgz", + "integrity": "sha512-+81MUSyX+BaSo+u2RbozuQk/UWx6hfG0a5gHu4ANEM4sU96XbuIyAB+rWBW1u70c6a5QuZfuYICn3s2UjuHUpA==" }, "uc.micro": { "version": "1.0.5", @@ -9402,8 +9409,8 @@ "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", "optional": true, "requires": { - "commander": "2.17.1", - "source-map": "0.6.1" + "commander": "~2.17.1", + "source-map": "~0.6.1" } }, "underscore": { @@ -9418,8 +9425,8 @@ "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", "dev": true, "requires": { - "json-stable-stringify": "1.0.1", - "through2-filter": "2.0.0" + "json-stable-stringify": "^1.0.0", + "through2-filter": "^2.0.0" } }, "universalify": { @@ -9455,8 +9462,8 @@ "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==", "dev": true, "requires": { - "querystringify": "2.0.0", - "requires-port": "1.0.0" + "querystringify": "^2.0.0", + "requires-port": "^1.0.0" } }, "util-deprecate": { @@ -9481,9 +9488,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" } }, "vinyl": { @@ -9492,8 +9499,8 @@ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", "dev": true, "requires": { - "clone": "0.2.0", - "clone-stats": "0.0.1" + "clone": "^0.2.0", + "clone-stats": "^0.0.1" } }, "vinyl-fs": { @@ -9502,23 +9509,23 @@ "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", "dev": true, "requires": { - "duplexify": "3.6.0", - "glob-stream": "5.3.5", - "graceful-fs": "4.1.11", + "duplexify": "^3.2.0", + "glob-stream": "^5.3.2", + "graceful-fs": "^4.0.0", "gulp-sourcemaps": "1.6.0", - "is-valid-glob": "0.3.0", - "lazystream": "1.0.0", - "lodash.isequal": "4.5.0", - "merge-stream": "1.0.1", - "mkdirp": "0.5.1", - "object-assign": "4.1.1", - "readable-stream": "2.3.6", - "strip-bom": "2.0.0", - "strip-bom-stream": "1.0.0", - "through2": "2.0.3", - "through2-filter": "2.0.0", - "vali-date": "1.0.0", - "vinyl": "1.2.0" + "is-valid-glob": "^0.3.0", + "lazystream": "^1.0.0", + "lodash.isequal": "^4.0.0", + "merge-stream": "^1.0.0", + "mkdirp": "^0.5.0", + "object-assign": "^4.0.0", + "readable-stream": "^2.0.4", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^1.0.0", + "through2": "^2.0.0", + "through2-filter": "^2.0.0", + "vali-date": "^1.0.0", + "vinyl": "^1.0.0" }, "dependencies": { "clone": { @@ -9539,8 +9546,8 @@ "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", "dev": true, "requires": { - "clone": "1.0.4", - "clone-stats": "0.0.1", + "clone": "^1.0.0", + "clone-stats": "^0.0.1", "replace-ext": "0.0.1" } } @@ -9552,8 +9559,8 @@ "integrity": "sha1-YrU6E1YQqJbpjKlr7jqH8Aio54A=", "dev": true, "requires": { - "through2": "2.0.3", - "vinyl": "0.4.6" + "through2": "^2.0.3", + "vinyl": "^0.4.3" } }, "vsce": { @@ -9562,23 +9569,23 @@ "integrity": "sha512-Hf2HE9O/MRQHxUUgWHAm7mOkz0K5swuF2smaE/sP7+OWp/5DdIPFwmLEYCCZHxG25l3GBRoO0dAL8S5w//et+g==", "dev": true, "requires": { - "cheerio": "1.0.0-rc.2", - "commander": "2.17.1", - "denodeify": "1.2.1", - "glob": "7.1.3", - "lodash": "4.17.10", - "markdown-it": "8.4.2", - "mime": "1.6.0", - "minimatch": "3.0.4", - "osenv": "0.1.5", - "parse-semver": "1.1.1", - "read": "1.0.7", - "semver": "5.5.0", + "cheerio": "^1.0.0-rc.1", + "commander": "^2.8.1", + "denodeify": "^1.2.1", + "glob": "^7.0.6", + "lodash": "^4.17.10", + "markdown-it": "^8.3.1", + "mime": "^1.3.4", + "minimatch": "^3.0.3", + "osenv": "^0.1.3", + "parse-semver": "^1.1.1", + "read": "^1.0.7", + "semver": "^5.1.0", "tmp": "0.0.29", - "url-join": "1.1.0", + "url-join": "^1.1.0", "vso-node-api": "6.1.2-preview", - "yauzl": "2.10.0", - "yazl": "2.4.3" + "yauzl": "^2.3.1", + "yazl": "^2.2.2" } }, "vscode": { @@ -9587,20 +9594,20 @@ "integrity": "sha512-tJl9eL15ZMm6vzCYYeQ26sSYRuXGMGPsaeIAmG2rOOYRn01jdaDg6I4b9G5Ed6FISdmn6egpKThk4o4om8Ax/A==", "dev": true, "requires": { - "glob": "7.1.3", - "gulp-chmod": "2.0.0", - "gulp-filter": "5.1.0", + "glob": "^7.1.2", + "gulp-chmod": "^2.0.0", + "gulp-filter": "^5.0.1", "gulp-gunzip": "1.0.0", - "gulp-remote-src-vscode": "0.5.0", - "gulp-symdest": "1.1.0", - "gulp-untar": "0.0.7", - "gulp-vinyl-zip": "2.1.0", - "mocha": "4.1.0", - "request": "2.88.0", - "semver": "5.5.0", - "source-map-support": "0.5.9", - "url-parse": "1.4.3", - "vinyl-source-stream": "1.1.2" + "gulp-remote-src-vscode": "^0.5.0", + "gulp-symdest": "^1.1.0", + "gulp-untar": "^0.0.7", + "gulp-vinyl-zip": "^2.1.0", + "mocha": "^4.0.1", + "request": "^2.83.0", + "semver": "^5.4.1", + "source-map-support": "^0.5.0", + "url-parse": "^1.4.3", + "vinyl-source-stream": "^1.1.0" }, "dependencies": { "browser-stdout": { @@ -9657,12 +9664,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" } } } @@ -9673,7 +9680,7 @@ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } } } @@ -9689,17 +9696,17 @@ "integrity": "sha512-6XyESZOyNowLza/fV6Kfmwx0+0iNwa4OkTsBRepwP+eaR7JYnf/ohPaFDX7Egqe4330swtRDCbqr+7i3Q9/TvA==", "dev": true, "requires": { - "clone": "2.1.2", - "event-stream": "3.3.4", - "glob": "7.1.3", - "gulp-util": "3.0.8", - "iconv-lite": "0.4.24", - "is": "3.2.1", - "source-map": "0.6.1", - "typescript": "2.9.2", - "vinyl": "2.2.0", - "xml2js": "0.4.19", - "yargs": "10.1.2" + "clone": "^2.1.1", + "event-stream": "^3.3.4", + "glob": "^7.1.2", + "gulp-util": "^3.0.8", + "iconv-lite": "^0.4.19", + "is": "^3.2.1", + "source-map": "^0.6.1", + "typescript": "^2.6.2", + "vinyl": "^2.1.0", + "xml2js": "^0.4.19", + "yargs": "^10.1.1" }, "dependencies": { "clone": { @@ -9726,12 +9733,12 @@ "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", "dev": true, "requires": { - "clone": "2.1.2", - "clone-buffer": "1.0.0", - "clone-stats": "1.0.0", - "cloneable-readable": "1.1.2", - "remove-trailing-separator": "1.1.0", - "replace-ext": "1.0.0" + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" } }, "xml2js": { @@ -9740,8 +9747,8 @@ "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", "dev": true, "requires": { - "sax": "1.2.1", - "xmlbuilder": "9.0.7" + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" } }, "xmlbuilder": { @@ -9758,10 +9765,10 @@ "integrity": "sha1-qrNUbfJFHs2JTgcbuZtd8Zxfp48=", "dev": true, "requires": { - "q": "1.5.1", + "q": "^1.0.1", "tunnel": "0.0.4", - "typed-rest-client": "0.9.0", - "underscore": "1.9.1" + "typed-rest-client": "^0.9.0", + "underscore": "^1.8.3" } }, "vue": { @@ -9775,7 +9782,7 @@ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { @@ -9795,8 +9802,8 @@ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { "is-fullwidth-code-point": { @@ -9805,7 +9812,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "string-width": { @@ -9814,9 +9821,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "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" } } } @@ -9832,8 +9839,8 @@ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", "requires": { - "sax": "1.2.1", - "xmlbuilder": "9.0.7" + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" } }, "xmlbuilder": { @@ -9865,18 +9872,18 @@ "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", "dev": true, "requires": { - "cliui": "4.1.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.3", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "8.1.0" + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^8.1.0" } }, "yargs-parser": { @@ -9885,7 +9892,7 @@ "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" } }, "yauzl": { @@ -9894,8 +9901,8 @@ "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", "dev": true, "requires": { - "buffer-crc32": "0.2.13", - "fd-slicer": "1.1.0" + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" } }, "yazl": { @@ -9904,7 +9911,7 @@ "integrity": "sha1-7CblzIfVYBud+EMtvdPNLlFzoHE=", "dev": true, "requires": { - "buffer-crc32": "0.2.13" + "buffer-crc32": "~0.2.3" } } } diff --git a/package.json b/package.json index 5ddb70cf260..126f84a50d4 100644 --- a/package.json +++ b/package.json @@ -214,7 +214,6 @@ "tslint": "^5.11.0", "tslint-eslint-rules": "^5.4.0", "tslint-no-circular-imports": "^0.6.1", - "typescript": "^3.0.1", "vsce": "^1.51.1", "vscode": "^1.1.21", "vscode-nls-dev": "^3.2.2" @@ -223,6 +222,7 @@ "@types/handlebars": "^4.0.39", "@types/js-yaml": "^3.11.2", "@types/opn": "^5.1.0", + "@types/typescript": "^2.0.0", "async-lock": "^1.1.3", "aws-sdk": "^2.317.0", "cloudformation-schema-js-yaml": "^1.0.1", @@ -233,6 +233,7 @@ "npm": "^6.1.0", "opn": "^5.4.0", "request": "^2.88.0", + "typescript": "^3.1.3", "vscode-nls": "^3.2.4", "vue": "^2.5.16", "xml2js": "^0.4.19" diff --git a/src/shared/lambdaHandlerSearch.ts b/src/shared/lambdaHandlerSearch.ts new file mode 100644 index 00000000000..7a2c888782f --- /dev/null +++ b/src/shared/lambdaHandlerSearch.ts @@ -0,0 +1,23 @@ +/*! + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +'use strict' + +export interface LambdaHandlerCandidate { + handlerName: string, + filename: string, + // Represents all of the component names that are used in a handler name (eg: filename, assembly, class, function) + handlerStack: string[], +} + +export interface LambdaHandlerSearch { + + /** + * @description Looks for functions that appear to be valid Lambda Function Handlers. + * @returns A collection of information for each detected candidate. + */ + findCandidateLambdaHandlers(): Promise + +} diff --git a/src/shared/typescriptLambdaHandlerSearch.ts b/src/shared/typescriptLambdaHandlerSearch.ts new file mode 100644 index 00000000000..4a1016cba8c --- /dev/null +++ b/src/shared/typescriptLambdaHandlerSearch.ts @@ -0,0 +1,116 @@ +/*! + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +'use strict' + +import * as path from 'path' +import * as ts from 'typescript' +import * as vscode from 'vscode' +import * as filesystem from './filesystem' +import { LambdaHandlerCandidate, LambdaHandlerSearch } from './lambdaHandlerSearch' + +/** + * Detects functions that could possibly be used as Lambda Function Handlers from a Typescript file. + */ +export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { + + private _uri!: vscode.Uri + + public constructor(uri: vscode.Uri) { + this._uri = uri + } + + /** + * @description Looks for functions that appear to be valid Lambda Function Handlers. + * @returns A collection of information for each detected candidate. + */ + public async findCandidateLambdaHandlers(): Promise { + return await this.getCandidateHandlers(this._uri.fsPath) + } + + private async getCandidateHandlers(filename: string): Promise { + const fileContents = await filesystem.readFileAsyncAsString(filename) + + const sourceFile = ts.createSourceFile(filename, fileContents, ts.ScriptTarget.Latest, true) + + const handlers: LambdaHandlerCandidate[] = [] + + sourceFile.forEachChild( + childNode => { + const foundHandlers = TypescriptLambdaHandlerSearch.visitSourceFileChild( + childNode, + filename + ) + handlers.push(...foundHandlers) + } + ) + + return handlers + } + + /** + * @description looks for Lambda Handler candidates in given node. + * Lambda Handler candidates are top level exported methods/functions. + * + * @param node SourceFile child node to visit + * @param filename filename of the loaded SourceFile + * @returns Collection of candidate Lambda handler information, empty array otherwise + */ + private static visitSourceFileChild(node: ts.Node, filename: string): LambdaHandlerCandidate[] { + const handlers: LambdaHandlerCandidate[] = [] + + if (this.isNodeExported(node)) { + const baseFilename = path.parse(filename).name + + if (ts.isMethodDeclaration(node)) { + if (this.isMethodLambdaHandlerCandidate(node)) { + const handlerStack = [baseFilename, node.name!.getText()] + handlers.push({ + filename: filename, + handlerName: handlerStack.join('.'), + handlerStack: handlerStack + }) + } + } else if (ts.isFunctionDeclaration(node)) { + if (this.isFunctionLambdaHandlerCandidate(node)) { + const handlerStack = [baseFilename, node.name!.getText()] + handlers.push({ + filename: filename, + handlerName: handlerStack.join('.'), + handlerStack: handlerStack + }) + } + } + } + + return handlers + } + + /** + * @description Indicates whether or not a node is marked as visible outside this file + * @param node Node to check + * @returns true if node is exported, false otherwise + */ + private static isNodeExported(node: ts.Node): boolean { + // tslint:disable-next-line:no-bitwise + return ((ts.getCombinedModifierFlags(node as ts.Declaration) & ts.ModifierFlags.Export) !== 0) + } + + /** + * @description Indicates whether or not a method could be a Lambda Handler + * @param node Method Node to check + */ + private static isMethodLambdaHandlerCandidate(node: ts.MethodDeclaration): boolean { + return node.parameters.length <= 3 + } + + /** + * @description Indicates whether or not a function could be a Lambda Handler + * @param node Function Node to check + */ + private static isFunctionLambdaHandlerCandidate(node: ts.FunctionDeclaration): boolean { + return node.parameters.length <= 3 && !!node.name + } +} diff --git a/src/test/samples/javascript/sampleClasses.js b/src/test/samples/javascript/sampleClasses.js new file mode 100644 index 00000000000..9a3126865e0 --- /dev/null +++ b/src/test/samples/javascript/sampleClasses.js @@ -0,0 +1,24 @@ +/*! + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +'use strict' + +class NonExportedClass { + publicMethod() { } + privateMethod() { } +} + +class ExportedClass { + publicMethod() { } + privateMethod() { } + + static publicStaticMethod() { } +} +exports.ExportedClass = ExportedClass + +function functionWithNoArgs() { } + +function exportedFunctionWithNoArgs() { } +exports.exportedFunctionWithNoArgs = exportedFunctionWithNoArgs \ No newline at end of file diff --git a/src/test/samples/javascript/sampleFunctions.js b/src/test/samples/javascript/sampleFunctions.js new file mode 100644 index 00000000000..143e31006fa --- /dev/null +++ b/src/test/samples/javascript/sampleFunctions.js @@ -0,0 +1,31 @@ +/*! + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +'use strict' + +function functionWithNoArgs() { } + +export function exportedFunctionWithNoArgs() { } +exports.exportedFunctionWithNoArgs = exportedFunctionWithNoArgs + +function functionWithOneArg(arg1) { } + +export function exportedFunctionWithOneArg(arg1) { } +exports.exportedFunctionWithOneArg = exportedFunctionWithOneArg + +function functionWithTwoArgs(arg1, arg2) { } + +export function exportedFunctionWithTwoArgs(arg1, arg2) { } +exports.exportedFunctionWithTwoArgs = exportedFunctionWithTwoArgs + +function functionWithThreeArgs(arg1, arg2, arg3) { } + +export function exportedFunctionWithThreeArgs(arg1, arg2, arg3) { } +exports.exportedFunctionWithThreeArgs = exportedFunctionWithThreeArgs + +function functionWithFourArgs(arg1, arg2, arg3, arg4) { } + +export function exportedFunctionWithFourArgs(arg1, arg2, arg3, arg4) { } +exports.exportedFunctionWithFourArgs = exportedFunctionWithFourArgs diff --git a/src/test/samples/typescript/sampleClasses.ts b/src/test/samples/typescript/sampleClasses.ts new file mode 100644 index 00000000000..fb553cf0819 --- /dev/null +++ b/src/test/samples/typescript/sampleClasses.ts @@ -0,0 +1,28 @@ +/*! + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +'use strict' + +/* tslint:disable:no-unused-variable */ + +// @ts-ignore +class NonExportedClass { + public publicMethod(): void { } + // @ts-ignore + private privateMethod(): void { } +} + +export class ExportedClass { + public publicMethod(): void { } + // @ts-ignore + private privateMethod(): void { } + + public static publicStaticMethod(): void { } +} + +// @ts-ignore +function functionWithNoArgs(): void { } + +export function exportedFunctionWithNoArgs(): void { } diff --git a/src/test/samples/typescript/sampleFunctions.ts b/src/test/samples/typescript/sampleFunctions.ts new file mode 100644 index 00000000000..aa77e41471e --- /dev/null +++ b/src/test/samples/typescript/sampleFunctions.ts @@ -0,0 +1,33 @@ +/*! + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +'use strict' + +/* tslint:disable:no-unused-variable */ + +// @ts-ignore +function functionWithNoArgs(): void { } + +export function exportedFunctionWithNoArgs(): void { } + +// @ts-ignore +function functionWithOneArg(arg1: string): void { } + +export function exportedFunctionWithOneArg(arg1: string): void { } + +// @ts-ignore +function functionWithTwoArgs(arg1: string, arg2: string): void { } + +export function exportedFunctionWithTwoArgs(arg1: string, arg2: string): void { } + +// @ts-ignore +function functionWithThreeArgs(arg1: string, arg2: string, arg3: string): void { } + +export function exportedFunctionWithThreeArgs(arg1: string, arg2: string, arg3: string): void { } + +// @ts-ignore +function functionWithFourArgs(arg1: string, arg2: string, arg3: string, arg4: string): void { } + +export function exportedFunctionWithFourArgs(arg1: string, arg2: string, arg3: string, arg4: string): void { } diff --git a/src/test/samples/typescript/sampleInterfaces.ts b/src/test/samples/typescript/sampleInterfaces.ts new file mode 100644 index 00000000000..a89795db34e --- /dev/null +++ b/src/test/samples/typescript/sampleInterfaces.ts @@ -0,0 +1,22 @@ +/*! + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +'use strict' + +/* tslint:disable:no-unused-variable */ + +// @ts-ignore +interface NonExportedInterface { + method(): void +} + +export interface ExportedInterface { + method(): void +} + +// @ts-ignore +function functionWithNoArgs(): void { } + +export function exportedFunctionWithNoArgs(): void { } diff --git a/src/test/typescriptLambdaHandlerSearch.test.ts b/src/test/typescriptLambdaHandlerSearch.test.ts new file mode 100644 index 00000000000..5d5c0e1fa8a --- /dev/null +++ b/src/test/typescriptLambdaHandlerSearch.test.ts @@ -0,0 +1,123 @@ +/*! + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +'use strict' + +import * as assert from 'assert' +import * as path from 'path' +import * as vscode from 'vscode' +import { LambdaHandlerCandidate } from '../shared/lambdaHandlerSearch' +import { TypescriptLambdaHandlerSearch } from '../shared/typescriptLambdaHandlerSearch' + +describe('TypescriptLambdaHandlerSearch Tests', () => { + + describe('Typescript code', () => { + + it('finds exported functions', async () => { + const filename: string = path.join( + getSamplesFolder(), + 'typescript', + 'sampleFunctions.ts') + + const expectedHandlerNames: Set = new Set([ + 'sampleFunctions.exportedFunctionWithNoArgs', + 'sampleFunctions.exportedFunctionWithOneArg', + 'sampleFunctions.exportedFunctionWithTwoArgs', + 'sampleFunctions.exportedFunctionWithThreeArgs' + ]) + + testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) + }) + + it('ignores class functions', async () => { + const filename: string = path.join( + getSamplesFolder(), + 'typescript', + 'sampleClasses.ts') + + const expectedHandlerNames: Set = new Set([ + 'sampleClasses.exportedFunctionWithNoArgs', + ]) + + testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) + }) + + it('ignores interface functions', async () => { + const filename: string = path.join( + getSamplesFolder(), + 'typescript', + 'sampleInterfaces.ts') + + const expectedHandlerNames: Set = new Set([ + 'sampleInterfaces.exportedFunctionWithNoArgs', + ]) + + testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) + }) + + }) + + describe('Javascript code', () => { + + it('finds exported functions', async () => { + const filename: string = path.join( + getSamplesFolder(), + 'javascript', + 'sampleFunctions.js') + + const expectedHandlerNames: Set = new Set([ + 'sampleFunctions.exportedFunctionWithNoArgs', + 'sampleFunctions.exportedFunctionWithOneArg', + 'sampleFunctions.exportedFunctionWithTwoArgs', + 'sampleFunctions.exportedFunctionWithThreeArgs' + ]) + + testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) + }) + + it('ignores class functions', async () => { + const filename: string = path.join( + getSamplesFolder(), + 'javascript', + 'sampleClasses.js') + + const expectedHandlerNames: Set = new Set([ + 'sampleClasses.exportedFunctionWithNoArgs', + ]) + + testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) + }) + + }) + + async function testTypescriptLambdaHandlerSearch( + filename: string, + expectedHandlerNames: Set + ): Promise { + const search: TypescriptLambdaHandlerSearch = new TypescriptLambdaHandlerSearch( + vscode.Uri.file(filename) + ) + + const handlers: LambdaHandlerCandidate[] = await search.findCandidateLambdaHandlers() + + assertCandidateHandlers(handlers, expectedHandlerNames) + } + + function getSamplesFolder(): string { + return path.join( + __dirname, + '..', '..', '..', + 'src', 'test', 'samples') + } + + function assertCandidateHandlers(actual: LambdaHandlerCandidate[], expectedHandlerNames: Set) { + assert.equal(actual.length, expectedHandlerNames.size) + assert.equal( + actual + .map(handler => handler.handlerName) + .every(handlerName => expectedHandlerNames.has(handlerName)), + true) + } +}) From c816599e51f006a322afaa13253299240a34f9dd Mon Sep 17 00:00:00 2001 From: Christopher Christou Date: Tue, 23 Oct 2018 17:27:26 -0700 Subject: [PATCH 2/8] Feedback Changes --- package-lock.json | 8 -------- package.json | 1 - src/shared/typescriptLambdaHandlerSearch.ts | 2 +- 3 files changed, 1 insertion(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5a65a1505a0..55d44f46a5d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -119,14 +119,6 @@ "integrity": "sha512-MDQLxNFRLasqS4UlkWMSACMKeSm1x4Q3TxzUC7KQUsh6RK1ZrQ0VEyE3yzXcBu+K8ejVj4wuX32eUG02yNp+YQ==", "dev": true }, - "@types/typescript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/typescript/-/typescript-2.0.0.tgz", - "integrity": "sha1-xDNTnJi64oaCswfqp6D9IRW4PCg=", - "requires": { - "typescript": "*" - } - }, "@types/xml2js": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.3.tgz", diff --git a/package.json b/package.json index 126f84a50d4..53bcea94dca 100644 --- a/package.json +++ b/package.json @@ -222,7 +222,6 @@ "@types/handlebars": "^4.0.39", "@types/js-yaml": "^3.11.2", "@types/opn": "^5.1.0", - "@types/typescript": "^2.0.0", "async-lock": "^1.1.3", "aws-sdk": "^2.317.0", "cloudformation-schema-js-yaml": "^1.0.1", diff --git a/src/shared/typescriptLambdaHandlerSearch.ts b/src/shared/typescriptLambdaHandlerSearch.ts index 4a1016cba8c..730659af69a 100644 --- a/src/shared/typescriptLambdaHandlerSearch.ts +++ b/src/shared/typescriptLambdaHandlerSearch.ts @@ -66,7 +66,7 @@ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { if (ts.isMethodDeclaration(node)) { if (this.isMethodLambdaHandlerCandidate(node)) { - const handlerStack = [baseFilename, node.name!.getText()] + const handlerStack = [baseFilename, node.name.getText()] handlers.push({ filename: filename, handlerName: handlerStack.join('.'), From 0a52fcd7e752049c07330cabd2bd252a6ea86959 Mon Sep 17 00:00:00 2001 From: Christopher Christou Date: Wed, 24 Oct 2018 10:26:02 -0700 Subject: [PATCH 3/8] Feedback and build fixes --- src/shared/typescriptLambdaHandlerSearch.ts | 2 +- src/test/samples/javascript/sampleClasses.js | 2 -- src/test/typescriptLambdaHandlerSearch.test.ts | 12 ++++++------ 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/shared/typescriptLambdaHandlerSearch.ts b/src/shared/typescriptLambdaHandlerSearch.ts index 730659af69a..98e26022c10 100644 --- a/src/shared/typescriptLambdaHandlerSearch.ts +++ b/src/shared/typescriptLambdaHandlerSearch.ts @@ -16,7 +16,7 @@ import { LambdaHandlerCandidate, LambdaHandlerSearch } from './lambdaHandlerSear */ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { - private _uri!: vscode.Uri + private readonly _uri!: vscode.Uri public constructor(uri: vscode.Uri) { this._uri = uri diff --git a/src/test/samples/javascript/sampleClasses.js b/src/test/samples/javascript/sampleClasses.js index 9a3126865e0..f412131c05a 100644 --- a/src/test/samples/javascript/sampleClasses.js +++ b/src/test/samples/javascript/sampleClasses.js @@ -7,12 +7,10 @@ class NonExportedClass { publicMethod() { } - privateMethod() { } } class ExportedClass { publicMethod() { } - privateMethod() { } static publicStaticMethod() { } } diff --git a/src/test/typescriptLambdaHandlerSearch.test.ts b/src/test/typescriptLambdaHandlerSearch.test.ts index 5d5c0e1fa8a..6815c2022ae 100644 --- a/src/test/typescriptLambdaHandlerSearch.test.ts +++ b/src/test/typescriptLambdaHandlerSearch.test.ts @@ -11,7 +11,7 @@ import * as vscode from 'vscode' import { LambdaHandlerCandidate } from '../shared/lambdaHandlerSearch' import { TypescriptLambdaHandlerSearch } from '../shared/typescriptLambdaHandlerSearch' -describe('TypescriptLambdaHandlerSearch Tests', () => { +describe('TypescriptLambdaHandlerSearch', () => { describe('Typescript code', () => { @@ -28,7 +28,7 @@ describe('TypescriptLambdaHandlerSearch Tests', () => { 'sampleFunctions.exportedFunctionWithThreeArgs' ]) - testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) + await testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) }) it('ignores class functions', async () => { @@ -41,7 +41,7 @@ describe('TypescriptLambdaHandlerSearch Tests', () => { 'sampleClasses.exportedFunctionWithNoArgs', ]) - testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) + await testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) }) it('ignores interface functions', async () => { @@ -54,7 +54,7 @@ describe('TypescriptLambdaHandlerSearch Tests', () => { 'sampleInterfaces.exportedFunctionWithNoArgs', ]) - testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) + await testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) }) }) @@ -74,7 +74,7 @@ describe('TypescriptLambdaHandlerSearch Tests', () => { 'sampleFunctions.exportedFunctionWithThreeArgs' ]) - testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) + await testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) }) it('ignores class functions', async () => { @@ -87,7 +87,7 @@ describe('TypescriptLambdaHandlerSearch Tests', () => { 'sampleClasses.exportedFunctionWithNoArgs', ]) - testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) + await testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) }) }) From 77cfffe6cb7087337d5b8a827a96cacc26312e03 Mon Sep 17 00:00:00 2001 From: Christopher Christou Date: Wed, 24 Oct 2018 16:21:47 -0700 Subject: [PATCH 4/8] Updated processing to find eligible TS (export) and JS (exports) handlers --- src/shared/typescriptLambdaHandlerSearch.ts | 223 ++++++++++++++---- .../samples/javascript/sampleFunctions.js | 33 +-- .../typescriptLambdaHandlerSearch.test.ts | 7 +- 3 files changed, 204 insertions(+), 59 deletions(-) diff --git a/src/shared/typescriptLambdaHandlerSearch.ts b/src/shared/typescriptLambdaHandlerSearch.ts index 98e26022c10..ada69c1c470 100644 --- a/src/shared/typescriptLambdaHandlerSearch.ts +++ b/src/shared/typescriptLambdaHandlerSearch.ts @@ -16,6 +16,8 @@ import { LambdaHandlerCandidate, LambdaHandlerSearch } from './lambdaHandlerSear */ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { + public static readonly MAXIMUM_FUNCTION_PARAMETERS: number = 3 + private readonly _uri!: vscode.Uri public constructor(uri: vscode.Uri) { @@ -35,59 +37,202 @@ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { const sourceFile = ts.createSourceFile(filename, fileContents, ts.ScriptTarget.Latest, true) - const handlers: LambdaHandlerCandidate[] = [] - - sourceFile.forEachChild( - childNode => { - const foundHandlers = TypescriptLambdaHandlerSearch.visitSourceFileChild( - childNode, - filename - ) - handlers.push(...foundHandlers) - } - ) + const handlers: LambdaHandlerCandidate[] = this.processSourceFile(sourceFile, filename) return handlers } /** - * @description looks for Lambda Handler candidates in given node. + * @description looks for Lambda Handler candidates in the given source file * Lambda Handler candidates are top level exported methods/functions. * - * @param node SourceFile child node to visit + * @param sourceFile SourceFile child node to process * @param filename filename of the loaded SourceFile * @returns Collection of candidate Lambda handler information, empty array otherwise */ - private static visitSourceFileChild(node: ts.Node, filename: string): LambdaHandlerCandidate[] { + private processSourceFile(sourceFile: ts.SourceFile, filename: string): LambdaHandlerCandidate[] { + // functionDeclarations - each top level function declared + const functionDeclarations: ts.SignatureDeclaration[] = [] + // expressionStatements - all statements like "exports.handler = ..." + const expressionStatements: ts.ExpressionStatement[] = [] + // exportNodes - all "export function Xyz()" + const exportNodes: ts.Node[] = [] + + // look for nodes of interest + sourceFile.forEachChild((node: ts.Node) => { + if (ts.isFunctionLike(node)) { + functionDeclarations.push(node) + } + + if (ts.isExpressionStatement(node) && (ts.isBinaryExpression(node.expression))) { + expressionStatements.push(node) + } + + if (TypescriptLambdaHandlerSearch.isNodeExported(node)) { + exportNodes.push(node) + } + }) + const handlers: LambdaHandlerCandidate[] = [] - if (this.isNodeExported(node)) { - const baseFilename = path.parse(filename).name + handlers.push(...TypescriptLambdaHandlerSearch.findJavascriptHandlerCandidates( + functionDeclarations, + expressionStatements, + filename + )) - if (ts.isMethodDeclaration(node)) { - if (this.isMethodLambdaHandlerCandidate(node)) { - const handlerStack = [baseFilename, node.name.getText()] - handlers.push({ - filename: filename, - handlerName: handlerStack.join('.'), - handlerStack: handlerStack - }) - } - } else if (ts.isFunctionDeclaration(node)) { - if (this.isFunctionLambdaHandlerCandidate(node)) { - const handlerStack = [baseFilename, node.name!.getText()] + handlers.push(...TypescriptLambdaHandlerSearch.findTypescriptHandlerCandidates( + exportNodes, + filename + )) + + return handlers + } + + /** + * @description Looks at function declaration and module.exports assignments to find candidate Lamdba handlers + * @param functionDeclarations - Function declaration nodes + * @param expressionStatements - assignment expressions + * @param filename filename of the file containing these nodes + */ + private static findJavascriptHandlerCandidates( + functionDeclarations: ts.SignatureDeclaration[], + expressionStatements: ts.ExpressionStatement[], + filename: string + ): LambdaHandlerCandidate[] { + const baseFilename = path.parse(filename).name + + // Determine the candidate function declarations + const functionHandlerNames: string[] = functionDeclarations + .filter(fn => fn.parameters.length <= TypescriptLambdaHandlerSearch.MAXIMUM_FUNCTION_PARAMETERS) + .filter(fn => !!fn.name) + .map(fn => fn.name!.getText()) + + // Determine the candidate module exports assignments + const candidateExpressionStatements: ts.ExpressionStatement[] = expressionStatements + .filter(TypescriptLambdaHandlerSearch.isModuleExportsAssignment) + .filter(stmt => { + return TypescriptLambdaHandlerSearch.isEligibleLambdaHandlerAssignment(stmt, functionHandlerNames) + }) + + // Join to find actual module.exports assignments of interest + const handlers: LambdaHandlerCandidate[] = [] + + candidateExpressionStatements.forEach(candidate => { + // 'module.exports.xyz' => ['module', 'exports', 'xyz'] + const lhsComponents: string[] = (candidate.expression as ts.BinaryExpression) + .left.getText().split('.').map(x => x.trim()) + + const exportsTarget: string = lhsComponents[0] === 'exports' ? lhsComponents[1] : lhsComponents[2] + + handlers.push({ + filename: filename, + handlerName: `${baseFilename}.${exportsTarget}`, + handlerStack: [] + }) + }) + + return handlers + } + + /** + * @description Looks at export function declarations to find candidate Lamdba handlers + * @param exportNodes - nodes that 'export' something + * @param filename filename of the file containing these nodes + */ + private static findTypescriptHandlerCandidates( + exportNodes: ts.Node[], + filename: string + ): LambdaHandlerCandidate[] { + const baseFilename = path.parse(filename).name + + const handlers: LambdaHandlerCandidate[] = [] + + exportNodes.forEach(exportNode => { + if (ts.isFunctionLike(exportNode) + && (TypescriptLambdaHandlerSearch.isFunctionLambdaHandlerCandidate(exportNode))) { + + if (!!exportNode.name) { handlers.push({ filename: filename, - handlerName: handlerStack.join('.'), - handlerStack: handlerStack + handlerName: `${baseFilename}.${exportNode.name.getText()}`, + handlerStack: [] }) } } - } + }) return handlers } + /** + * @description Whether or not the given expression is attempting to assign to '[module.]exports.foo' + * @param expressionStatement Expression node to evaluate + */ + private static isModuleExportsAssignment(expressionStatement: ts.ExpressionStatement): boolean { + if (ts.isBinaryExpression(expressionStatement.expression)) { + const lhsComponents: string[] = expressionStatement.expression.left.getText().split('.').map(x => x.trim()) + + return (lhsComponents.length === 3 && lhsComponents[0] === 'module' && lhsComponents[1] === 'exports') + || (lhsComponents.length === 2 && lhsComponents[0] === 'exports') + } + + return false + } + + /** + * @description Whether or not the given expression appears to be assigning a candidate Lambda Handler + * Expression could be one of: + * [module.]exports.foo = alreadyDeclaredFunction + * [module.]exports.foo = (event, context) => { ... } + * @param expressionStatement Expression node to evaluate + * @param functionHandlerNames Names of declared functions considered to be Handler Candidates + */ + private static isEligibleLambdaHandlerAssignment( + expressionStatement: ts.ExpressionStatement, + functionHandlerNames: string[] + ): boolean { + if (ts.isBinaryExpression(expressionStatement.expression)) { + return this.isTargetFunctionReference(expressionStatement.expression.right, functionHandlerNames) + || this.isValidFunctionAssignment(expressionStatement.expression.right) + } + + return false + } + + /** + * @description Whether or not the given expression appears to contain a function of interest on the right hand side + * + * Example expression: + * something = alreadyDeclaredFunction + * @param expression Expression node to evaluate + * @param targetFunctionNames Names of functions of interest + */ + private static isTargetFunctionReference(expression: ts.Expression, targetFunctionNames: string[]): boolean { + if (ts.isIdentifier(expression)) { + return (targetFunctionNames.indexOf(expression.text) !== -1) + } + + return false + } + + /** + * @description Whether or not the given expression appears to have a function that could be a valid Lambda handler + * on the right hand side. + * + * Example expression: + * something = (event, context) => { } + * @param expression Expression node to evaluate + * @param targetFunctionNames Names of functions of interest + */ + private static isValidFunctionAssignment(expression: ts.Expression): boolean { + if (ts.isFunctionLike(expression)) { + return expression.parameters.length <= TypescriptLambdaHandlerSearch.MAXIMUM_FUNCTION_PARAMETERS + } + + return false + } + /** * @description Indicates whether or not a node is marked as visible outside this file * @param node Node to check @@ -99,18 +244,10 @@ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { } /** - * @description Indicates whether or not a method could be a Lambda Handler - * @param node Method Node to check - */ - private static isMethodLambdaHandlerCandidate(node: ts.MethodDeclaration): boolean { - return node.parameters.length <= 3 - } - - /** - * @description Indicates whether or not a function could be a Lambda Handler - * @param node Function Node to check + * @description Indicates whether or not a function/method could be a Lambda Handler + * @param node Signature Declaration Node to check */ - private static isFunctionLambdaHandlerCandidate(node: ts.FunctionDeclaration): boolean { - return node.parameters.length <= 3 && !!node.name + private static isFunctionLambdaHandlerCandidate(node: ts.SignatureDeclaration): boolean { + return node.parameters.length <= TypescriptLambdaHandlerSearch.MAXIMUM_FUNCTION_PARAMETERS && !!node.name } } diff --git a/src/test/samples/javascript/sampleFunctions.js b/src/test/samples/javascript/sampleFunctions.js index 143e31006fa..cd28e3a6519 100644 --- a/src/test/samples/javascript/sampleFunctions.js +++ b/src/test/samples/javascript/sampleFunctions.js @@ -6,26 +6,29 @@ 'use strict' function functionWithNoArgs() { } - -export function exportedFunctionWithNoArgs() { } -exports.exportedFunctionWithNoArgs = exportedFunctionWithNoArgs +exports.exportedFunctionWithNoArgs = functionWithNoArgs function functionWithOneArg(arg1) { } - -export function exportedFunctionWithOneArg(arg1) { } -exports.exportedFunctionWithOneArg = exportedFunctionWithOneArg +exports.exportedFunctionWithOneArg = functionWithOneArg function functionWithTwoArgs(arg1, arg2) { } - -export function exportedFunctionWithTwoArgs(arg1, arg2) { } -exports.exportedFunctionWithTwoArgs = exportedFunctionWithTwoArgs +exports.exportedFunctionWithTwoArgs = functionWithTwoArgs function functionWithThreeArgs(arg1, arg2, arg3) { } +exports.exportedFunctionWithThreeArgs = functionWithThreeArgs -export function exportedFunctionWithThreeArgs(arg1, arg2, arg3) { } -exports.exportedFunctionWithThreeArgs = exportedFunctionWithThreeArgs - +// 4 args shouldn't be considered a lambda handler function functionWithFourArgs(arg1, arg2, arg3, arg4) { } - -export function exportedFunctionWithFourArgs(arg1, arg2, arg3, arg4) { } -exports.exportedFunctionWithFourArgs = exportedFunctionWithFourArgs +exports.exportedFunctionWithFourArgs = functionWithFourArgs + +// module.exports assignments +module.exports.anotherExportedFunctionWithNoArgs = functionWithNoArgs +module.exports.directExportsArrowFunction = (name) => { console.log(name) } +module.exports.directExportsArrowFunctionAsync = async (name) => { console.log(name) } +module.exports.directExportsFunction = function (name) { console.log(name) } +module.exports.directExportsFunctionAsync = async function (name) { console.log(name) } + +// module.!exports checks +module.fooFunction = () => { } +module.fooData = {} +module.fooStr = 'foo' diff --git a/src/test/typescriptLambdaHandlerSearch.test.ts b/src/test/typescriptLambdaHandlerSearch.test.ts index 6815c2022ae..387a3d8597f 100644 --- a/src/test/typescriptLambdaHandlerSearch.test.ts +++ b/src/test/typescriptLambdaHandlerSearch.test.ts @@ -71,7 +71,12 @@ describe('TypescriptLambdaHandlerSearch', () => { 'sampleFunctions.exportedFunctionWithNoArgs', 'sampleFunctions.exportedFunctionWithOneArg', 'sampleFunctions.exportedFunctionWithTwoArgs', - 'sampleFunctions.exportedFunctionWithThreeArgs' + 'sampleFunctions.exportedFunctionWithThreeArgs', + 'sampleFunctions.anotherExportedFunctionWithNoArgs', + 'sampleFunctions.directExportsArrowFunction', + 'sampleFunctions.directExportsArrowFunctionAsync', + 'sampleFunctions.directExportsFunction', + 'sampleFunctions.directExportsFunctionAsync', ]) await testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) From 1e7811e6a423006cc8407f2ee53b36667a5e62d2 Mon Sep 17 00:00:00 2001 From: Christopher Christou Date: Wed, 24 Oct 2018 16:30:17 -0700 Subject: [PATCH 5/8] feedback changes --- src/shared/lambdaHandlerSearch.ts | 2 -- src/shared/typescriptLambdaHandlerSearch.ts | 2 -- 2 files changed, 4 deletions(-) diff --git a/src/shared/lambdaHandlerSearch.ts b/src/shared/lambdaHandlerSearch.ts index 7a2c888782f..54f1682af46 100644 --- a/src/shared/lambdaHandlerSearch.ts +++ b/src/shared/lambdaHandlerSearch.ts @@ -8,8 +8,6 @@ export interface LambdaHandlerCandidate { handlerName: string, filename: string, - // Represents all of the component names that are used in a handler name (eg: filename, assembly, class, function) - handlerStack: string[], } export interface LambdaHandlerSearch { diff --git a/src/shared/typescriptLambdaHandlerSearch.ts b/src/shared/typescriptLambdaHandlerSearch.ts index ada69c1c470..ad294f0f25e 100644 --- a/src/shared/typescriptLambdaHandlerSearch.ts +++ b/src/shared/typescriptLambdaHandlerSearch.ts @@ -128,7 +128,6 @@ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { handlers.push({ filename: filename, handlerName: `${baseFilename}.${exportsTarget}`, - handlerStack: [] }) }) @@ -156,7 +155,6 @@ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { handlers.push({ filename: filename, handlerName: `${baseFilename}.${exportNode.name.getText()}`, - handlerStack: [] }) } } From fee34450ac1c8f9950b94a3cd2311123c4f5bc8c Mon Sep 17 00:00:00 2001 From: Christopher Christou Date: Wed, 24 Oct 2018 16:58:47 -0700 Subject: [PATCH 6/8] Feedback changes --- src/shared/typescriptLambdaHandlerSearch.ts | 8 +- .../typescriptLambdaHandlerSearch.test.ts | 148 +++++++++--------- 2 files changed, 74 insertions(+), 82 deletions(-) diff --git a/src/shared/typescriptLambdaHandlerSearch.ts b/src/shared/typescriptLambdaHandlerSearch.ts index ad294f0f25e..88373f59b37 100644 --- a/src/shared/typescriptLambdaHandlerSearch.ts +++ b/src/shared/typescriptLambdaHandlerSearch.ts @@ -75,13 +75,13 @@ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { const handlers: LambdaHandlerCandidate[] = [] - handlers.push(...TypescriptLambdaHandlerSearch.findJavascriptHandlerCandidates( + handlers.push(...TypescriptLambdaHandlerSearch.findModuleExportsRelatedHandlerCandidates( functionDeclarations, expressionStatements, filename )) - handlers.push(...TypescriptLambdaHandlerSearch.findTypescriptHandlerCandidates( + handlers.push(...TypescriptLambdaHandlerSearch.findExportRelatedHandlerCandidates( exportNodes, filename )) @@ -95,7 +95,7 @@ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { * @param expressionStatements - assignment expressions * @param filename filename of the file containing these nodes */ - private static findJavascriptHandlerCandidates( + private static findModuleExportsRelatedHandlerCandidates( functionDeclarations: ts.SignatureDeclaration[], expressionStatements: ts.ExpressionStatement[], filename: string @@ -139,7 +139,7 @@ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { * @param exportNodes - nodes that 'export' something * @param filename filename of the file containing these nodes */ - private static findTypescriptHandlerCandidates( + private static findExportRelatedHandlerCandidates( exportNodes: ts.Node[], filename: string ): LambdaHandlerCandidate[] { diff --git a/src/test/typescriptLambdaHandlerSearch.test.ts b/src/test/typescriptLambdaHandlerSearch.test.ts index 387a3d8597f..37ecb564783 100644 --- a/src/test/typescriptLambdaHandlerSearch.test.ts +++ b/src/test/typescriptLambdaHandlerSearch.test.ts @@ -13,88 +13,80 @@ import { TypescriptLambdaHandlerSearch } from '../shared/typescriptLambdaHandler describe('TypescriptLambdaHandlerSearch', () => { - describe('Typescript code', () => { - - it('finds exported functions', async () => { - const filename: string = path.join( - getSamplesFolder(), - 'typescript', - 'sampleFunctions.ts') - - const expectedHandlerNames: Set = new Set([ - 'sampleFunctions.exportedFunctionWithNoArgs', - 'sampleFunctions.exportedFunctionWithOneArg', - 'sampleFunctions.exportedFunctionWithTwoArgs', - 'sampleFunctions.exportedFunctionWithThreeArgs' - ]) - - await testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) - }) - - it('ignores class functions', async () => { - const filename: string = path.join( - getSamplesFolder(), - 'typescript', - 'sampleClasses.ts') - - const expectedHandlerNames: Set = new Set([ - 'sampleClasses.exportedFunctionWithNoArgs', - ]) - - await testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) - }) - - it('ignores interface functions', async () => { - const filename: string = path.join( - getSamplesFolder(), - 'typescript', - 'sampleInterfaces.ts') - - const expectedHandlerNames: Set = new Set([ - 'sampleInterfaces.exportedFunctionWithNoArgs', - ]) - - await testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) - }) + it('finds export declared functions in Typescript code', async () => { + const filename: string = path.join( + getSamplesFolder(), + 'typescript', + 'sampleFunctions.ts') + + const expectedHandlerNames: Set = new Set([ + 'sampleFunctions.exportedFunctionWithNoArgs', + 'sampleFunctions.exportedFunctionWithOneArg', + 'sampleFunctions.exportedFunctionWithTwoArgs', + 'sampleFunctions.exportedFunctionWithThreeArgs' + ]) + + await testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) + }) + + it('ignores class declarations in Typescript code', async () => { + const filename: string = path.join( + getSamplesFolder(), + 'typescript', + 'sampleClasses.ts') + + const expectedHandlerNames: Set = new Set([ + 'sampleClasses.exportedFunctionWithNoArgs', + ]) + + await testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) + }) + it('ignores interface declarations in Typescript code', async () => { + const filename: string = path.join( + getSamplesFolder(), + 'typescript', + 'sampleInterfaces.ts') + + const expectedHandlerNames: Set = new Set([ + 'sampleInterfaces.exportedFunctionWithNoArgs', + ]) + + await testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) }) - describe('Javascript code', () => { - - it('finds exported functions', async () => { - const filename: string = path.join( - getSamplesFolder(), - 'javascript', - 'sampleFunctions.js') - - const expectedHandlerNames: Set = new Set([ - 'sampleFunctions.exportedFunctionWithNoArgs', - 'sampleFunctions.exportedFunctionWithOneArg', - 'sampleFunctions.exportedFunctionWithTwoArgs', - 'sampleFunctions.exportedFunctionWithThreeArgs', - 'sampleFunctions.anotherExportedFunctionWithNoArgs', - 'sampleFunctions.directExportsArrowFunction', - 'sampleFunctions.directExportsArrowFunctionAsync', - 'sampleFunctions.directExportsFunction', - 'sampleFunctions.directExportsFunctionAsync', - ]) - - await testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) - }) - - it('ignores class functions', async () => { - const filename: string = path.join( - getSamplesFolder(), - 'javascript', - 'sampleClasses.js') - - const expectedHandlerNames: Set = new Set([ - 'sampleClasses.exportedFunctionWithNoArgs', - ]) - - await testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) - }) + it('finds module.exports declared functions in javascript code', async () => { + const filename: string = path.join( + getSamplesFolder(), + 'javascript', + 'sampleFunctions.js') + + const expectedHandlerNames: Set = new Set([ + 'sampleFunctions.exportedFunctionWithNoArgs', + 'sampleFunctions.exportedFunctionWithOneArg', + 'sampleFunctions.exportedFunctionWithTwoArgs', + 'sampleFunctions.exportedFunctionWithThreeArgs', + 'sampleFunctions.anotherExportedFunctionWithNoArgs', + 'sampleFunctions.directExportsArrowFunction', + 'sampleFunctions.directExportsArrowFunctionAsync', + 'sampleFunctions.directExportsFunction', + 'sampleFunctions.directExportsFunctionAsync', + ]) + + await testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) + }) + + it('ignores class declarations in javascript code', async () => { + const filename: string = path.join( + getSamplesFolder(), + 'javascript', + 'sampleClasses.js') + + const expectedHandlerNames: Set = new Set([ + 'sampleClasses.exportedFunctionWithNoArgs', + ]) + await testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) }) async function testTypescriptLambdaHandlerSearch( From 70d439c03e3a317ce9d34f4bc2b4b37ed0dafbfa Mon Sep 17 00:00:00 2001 From: Christopher Christou Date: Fri, 26 Oct 2018 13:42:12 -0700 Subject: [PATCH 7/8] Added support for `export { foo }` style statements --- src/shared/typescriptLambdaHandlerSearch.ts | 245 +++++++++++------- .../samples/typescript/sampleFunctions.ts | 16 ++ .../typescriptLambdaHandlerSearch.test.ts | 6 +- 3 files changed, 176 insertions(+), 91 deletions(-) diff --git a/src/shared/typescriptLambdaHandlerSearch.ts b/src/shared/typescriptLambdaHandlerSearch.ts index 88373f59b37..3fbde5324fd 100644 --- a/src/shared/typescriptLambdaHandlerSearch.ts +++ b/src/shared/typescriptLambdaHandlerSearch.ts @@ -19,9 +19,21 @@ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { public static readonly MAXIMUM_FUNCTION_PARAMETERS: number = 3 private readonly _uri!: vscode.Uri + private readonly _filename: string + private readonly _baseFilename: string + // _candidateDeclaredFunctionNames - names of functions that could be lambda handlers + private readonly _candidateDeclaredFunctionNames: Set = new Set() + // _candidateModuleExportsExpressions - all statements like "exports.handler = ..." + private _candidateModuleExportsExpressions: ts.ExpressionStatement[] = [] + // _candidateExportDeclarations - all "export { xyz }" + private _candidateExportDeclarations: ts.ExportDeclaration[] = [] + // _candidateExportNodes - all "export function Xyz()" / "export const Xyz = () => {}" + private _candidateExportNodes: ts.Node[] = [] public constructor(uri: vscode.Uri) { this._uri = uri + this._filename = this._uri.fsPath + this._baseFilename = path.parse(this._filename).name } /** @@ -29,15 +41,20 @@ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { * @returns A collection of information for each detected candidate. */ public async findCandidateLambdaHandlers(): Promise { - return await this.getCandidateHandlers(this._uri.fsPath) + this._candidateDeclaredFunctionNames.clear() + this._candidateModuleExportsExpressions = [] + this._candidateExportDeclarations = [] + this._candidateExportNodes = [] + + return await this.getCandidateHandlers() } - private async getCandidateHandlers(filename: string): Promise { - const fileContents = await filesystem.readFileAsyncAsString(filename) + private async getCandidateHandlers(): Promise { + const fileContents = await filesystem.readFileAsyncAsString(this._filename) - const sourceFile = ts.createSourceFile(filename, fileContents, ts.ScriptTarget.Latest, true) + const sourceFile = ts.createSourceFile(this._filename, fileContents, ts.ScriptTarget.Latest, true) - const handlers: LambdaHandlerCandidate[] = this.processSourceFile(sourceFile, filename) + const handlers: LambdaHandlerCandidate[] = this.processSourceFile(sourceFile) return handlers } @@ -47,88 +64,120 @@ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { * Lambda Handler candidates are top level exported methods/functions. * * @param sourceFile SourceFile child node to process - * @param filename filename of the loaded SourceFile * @returns Collection of candidate Lambda handler information, empty array otherwise */ - private processSourceFile(sourceFile: ts.SourceFile, filename: string): LambdaHandlerCandidate[] { - // functionDeclarations - each top level function declared - const functionDeclarations: ts.SignatureDeclaration[] = [] - // expressionStatements - all statements like "exports.handler = ..." - const expressionStatements: ts.ExpressionStatement[] = [] - // exportNodes - all "export function Xyz()" - const exportNodes: ts.Node[] = [] - - // look for nodes of interest + private processSourceFile(sourceFile: ts.SourceFile): LambdaHandlerCandidate[] { + this.scanSourceFile(sourceFile) + + const handlers: LambdaHandlerCandidate[] = [] + + handlers.push(...this.findCandidateHandlersInModuleExports()) + handlers.push(...this.findCandidateHandlersInExportedFunctions()) + handlers.push(...this.findCandidateHandlersInExportDeclarations()) + + return handlers + } + + /** + * @description looks through a file's nodes, looking for data to support finding handler candidates + */ + private scanSourceFile(sourceFile: ts.SourceFile): void { sourceFile.forEachChild((node: ts.Node) => { + + // Function declarations if (ts.isFunctionLike(node)) { - functionDeclarations.push(node) + if (TypescriptLambdaHandlerSearch.isFunctionLambdaHandlerCandidate(node)) { + this._candidateDeclaredFunctionNames.add(node.name!.getText()) + } } - if (ts.isExpressionStatement(node) && (ts.isBinaryExpression(node.expression))) { - expressionStatements.push(node) + // Arrow Function declarations "const foo = (arg) => { }" + if (ts.isVariableStatement(node)) { + node.declarationList.forEachChild(declaration => { + if (ts.isVariableDeclaration(declaration)) { + const declarationName: string = declaration.name.getText() + + if (declarationName.length > 0 + && declaration.initializer + && ts.isFunctionLike(declaration.initializer) + && TypescriptLambdaHandlerSearch.isFunctionLambdaHandlerCandidate( + declaration.initializer, + false // initializers do not have a name value, it is up in declaration.name + ) + ) { + this._candidateDeclaredFunctionNames.add(declarationName) + } + } + }) } + // export function xxx / "export const xxx = () => {}" + // We grab all of these and filter them later on in order to better deal with the VariableStatement entries if (TypescriptLambdaHandlerSearch.isNodeExported(node)) { - exportNodes.push(node) + this._candidateExportNodes.push(node) } - }) - const handlers: LambdaHandlerCandidate[] = [] - - handlers.push(...TypescriptLambdaHandlerSearch.findModuleExportsRelatedHandlerCandidates( - functionDeclarations, - expressionStatements, - filename - )) - - handlers.push(...TypescriptLambdaHandlerSearch.findExportRelatedHandlerCandidates( - exportNodes, - filename - )) + // Things like "exports.handler = ..." + // Grab all, cull after we've found all valid functions that can be referenced on rhs + if (ts.isExpressionStatement(node)) { + if (TypescriptLambdaHandlerSearch.isModuleExportsAssignment(node)) { + this._candidateModuleExportsExpressions.push(node) + } + } - return handlers + // Things like "export { xxx }" + // Grab all, cull after we've found all valid functions that can be referenced in brackets + if (ts.isExportDeclaration(node)) { + this._candidateExportDeclarations.push(node) + } + }) } /** - * @description Looks at function declaration and module.exports assignments to find candidate Lamdba handlers - * @param functionDeclarations - Function declaration nodes - * @param expressionStatements - assignment expressions - * @param filename filename of the file containing these nodes + * @description Looks at module.exports assignments to find candidate Lamdba handlers */ - private static findModuleExportsRelatedHandlerCandidates( - functionDeclarations: ts.SignatureDeclaration[], - expressionStatements: ts.ExpressionStatement[], - filename: string - ): LambdaHandlerCandidate[] { - const baseFilename = path.parse(filename).name - - // Determine the candidate function declarations - const functionHandlerNames: string[] = functionDeclarations - .filter(fn => fn.parameters.length <= TypescriptLambdaHandlerSearch.MAXIMUM_FUNCTION_PARAMETERS) - .filter(fn => !!fn.name) - .map(fn => fn.name!.getText()) - - // Determine the candidate module exports assignments - const candidateExpressionStatements: ts.ExpressionStatement[] = expressionStatements - .filter(TypescriptLambdaHandlerSearch.isModuleExportsAssignment) - .filter(stmt => { - return TypescriptLambdaHandlerSearch.isEligibleLambdaHandlerAssignment(stmt, functionHandlerNames) + private findCandidateHandlersInModuleExports(): LambdaHandlerCandidate[] { + return this._candidateModuleExportsExpressions + .filter(expression => { + return TypescriptLambdaHandlerSearch.isEligibleLambdaHandlerAssignment( + expression, + this._candidateDeclaredFunctionNames + ) + }).map(candidate => { + // 'module.exports.xyz' => ['module', 'exports', 'xyz'] + const lhsComponents: string[] = (candidate.expression as ts.BinaryExpression) + .left.getText().split('.').map(x => x.trim()) + + const exportsTarget: string = lhsComponents[0] === 'exports' ? lhsComponents[1] : lhsComponents[2] + + return { + filename: this._filename, + handlerName: `${this._baseFilename}.${exportsTarget}`, + } }) + } - // Join to find actual module.exports assignments of interest + /** + * @description Looks at "export { xyz }" statements to find candidate Lambda handlers + */ + private findCandidateHandlersInExportDeclarations(): LambdaHandlerCandidate[] { const handlers: LambdaHandlerCandidate[] = [] - candidateExpressionStatements.forEach(candidate => { - // 'module.exports.xyz' => ['module', 'exports', 'xyz'] - const lhsComponents: string[] = (candidate.expression as ts.BinaryExpression) - .left.getText().split('.').map(x => x.trim()) - - const exportsTarget: string = lhsComponents[0] === 'exports' ? lhsComponents[1] : lhsComponents[2] - - handlers.push({ - filename: filename, - handlerName: `${baseFilename}.${exportsTarget}`, - }) + this._candidateExportDeclarations.forEach(exportDeclaration => { + if (exportDeclaration.exportClause) { + exportDeclaration.exportClause.forEachChild(clause => { + if (ts.isExportSpecifier(clause)) { + const exportedFunction: string = clause.name.getText() + + if (this._candidateDeclaredFunctionNames.has(exportedFunction)) { + handlers.push({ + filename: this._filename, + handlerName: `${this._baseFilename}.${exportedFunction}`, + }) + } + } + }) + } }) return handlers @@ -136,27 +185,35 @@ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { /** * @description Looks at export function declarations to find candidate Lamdba handlers - * @param exportNodes - nodes that 'export' something - * @param filename filename of the file containing these nodes */ - private static findExportRelatedHandlerCandidates( - exportNodes: ts.Node[], - filename: string - ): LambdaHandlerCandidate[] { - const baseFilename = path.parse(filename).name - + private findCandidateHandlersInExportedFunctions(): LambdaHandlerCandidate[] { const handlers: LambdaHandlerCandidate[] = [] - exportNodes.forEach(exportNode => { + this._candidateExportNodes.forEach(exportNode => { if (ts.isFunctionLike(exportNode) - && (TypescriptLambdaHandlerSearch.isFunctionLambdaHandlerCandidate(exportNode))) { - - if (!!exportNode.name) { - handlers.push({ - filename: filename, - handlerName: `${baseFilename}.${exportNode.name.getText()}`, - }) - } + && (TypescriptLambdaHandlerSearch.isFunctionLambdaHandlerCandidate(exportNode)) + && !!exportNode.name + ) { + handlers.push({ + filename: this._filename, + handlerName: `${this._baseFilename}.${exportNode.name.getText()}`, + }) + } else if (ts.isVariableStatement(exportNode)) { + exportNode.declarationList.forEachChild(declaration => { + if (ts.isVariableDeclaration(declaration) + && !!declaration.initializer + && ts.isFunctionLike(declaration.initializer) + && TypescriptLambdaHandlerSearch.isFunctionLambdaHandlerCandidate( + declaration.initializer, + false + ) + ) { + handlers.push({ + filename: this._filename, + handlerName: `${this._baseFilename}.${declaration.name.getText()}`, + }) + } + }) } }) @@ -188,7 +245,7 @@ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { */ private static isEligibleLambdaHandlerAssignment( expressionStatement: ts.ExpressionStatement, - functionHandlerNames: string[] + functionHandlerNames: Set ): boolean { if (ts.isBinaryExpression(expressionStatement.expression)) { return this.isTargetFunctionReference(expressionStatement.expression.right, functionHandlerNames) @@ -206,9 +263,9 @@ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { * @param expression Expression node to evaluate * @param targetFunctionNames Names of functions of interest */ - private static isTargetFunctionReference(expression: ts.Expression, targetFunctionNames: string[]): boolean { + private static isTargetFunctionReference(expression: ts.Expression, targetFunctionNames: Set): boolean { if (ts.isIdentifier(expression)) { - return (targetFunctionNames.indexOf(expression.text) !== -1) + return (targetFunctionNames.has(expression.text)) } return false @@ -237,15 +294,23 @@ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { * @returns true if node is exported, false otherwise */ private static isNodeExported(node: ts.Node): boolean { + const flags: ts.ModifierFlags = ts.getCombinedModifierFlags(node as ts.Declaration) + // tslint:disable-next-line:no-bitwise - return ((ts.getCombinedModifierFlags(node as ts.Declaration) & ts.ModifierFlags.Export) !== 0) + return ((flags & ts.ModifierFlags.Export) === ts.ModifierFlags.Export) } /** * @description Indicates whether or not a function/method could be a Lambda Handler * @param node Signature Declaration Node to check + * @param validateName whether or not to check the name property */ - private static isFunctionLambdaHandlerCandidate(node: ts.SignatureDeclaration): boolean { - return node.parameters.length <= TypescriptLambdaHandlerSearch.MAXIMUM_FUNCTION_PARAMETERS && !!node.name + private static isFunctionLambdaHandlerCandidate( + node: ts.SignatureDeclaration, + validateName: boolean = true + ): boolean { + const nameIsValid: boolean = (!validateName || !!node.name) + + return node.parameters.length <= TypescriptLambdaHandlerSearch.MAXIMUM_FUNCTION_PARAMETERS && nameIsValid } } diff --git a/src/test/samples/typescript/sampleFunctions.ts b/src/test/samples/typescript/sampleFunctions.ts index aa77e41471e..b5e0cc025ff 100644 --- a/src/test/samples/typescript/sampleFunctions.ts +++ b/src/test/samples/typescript/sampleFunctions.ts @@ -31,3 +31,19 @@ export function exportedFunctionWithThreeArgs(arg1: string, arg2: string, arg3: function functionWithFourArgs(arg1: string, arg2: string, arg3: string, arg4: string): void { } export function exportedFunctionWithFourArgs(arg1: string, arg2: string, arg3: string, arg4: string): void { } + +export const exportedArrowFunction = (arg1: string) => { } + +export const exportedArrowFunctionWithFourArgs = (arg1: string, arg2: string, arg3: string, arg4: string) => { } + +function exportedViaDeclaration(arg1: string) { } + +const exportedArrowViaDeclaration = (arg1: string) => { } +const exportedArrowViaDeclarationAlt: (x: string) => void = (arg1) => { } + +const exportedArrowViaDeclarationWithFourArgs = (arg1: string, arg2: string, arg3: string, arg4: string) => { } +const exportedArrowViaDeclarationWithFourArgsAlt: + (arg1: string, arg2: string, arg3: string, arg4: string) => void = (arg1, arg2, arg3, arg4) => { } + +export { exportedViaDeclaration, exportedArrowViaDeclaration, exportedArrowViaDeclarationAlt } +export { functionWithFourArgs, exportedArrowViaDeclarationWithFourArgs, exportedArrowViaDeclarationWithFourArgsAlt } diff --git a/src/test/typescriptLambdaHandlerSearch.test.ts b/src/test/typescriptLambdaHandlerSearch.test.ts index 37ecb564783..473df288af5 100644 --- a/src/test/typescriptLambdaHandlerSearch.test.ts +++ b/src/test/typescriptLambdaHandlerSearch.test.ts @@ -23,7 +23,11 @@ describe('TypescriptLambdaHandlerSearch', () => { 'sampleFunctions.exportedFunctionWithNoArgs', 'sampleFunctions.exportedFunctionWithOneArg', 'sampleFunctions.exportedFunctionWithTwoArgs', - 'sampleFunctions.exportedFunctionWithThreeArgs' + 'sampleFunctions.exportedFunctionWithThreeArgs', + 'sampleFunctions.exportedViaDeclaration', + 'sampleFunctions.exportedArrowFunction', + 'sampleFunctions.exportedArrowViaDeclaration', + 'sampleFunctions.exportedArrowViaDeclarationAlt', ]) await testTypescriptLambdaHandlerSearch(filename, expectedHandlerNames) From 75eddd332ebf719cd9d3cab945fa5068b42528bc Mon Sep 17 00:00:00 2001 From: Christopher Christou Date: Fri, 26 Oct 2018 13:46:31 -0700 Subject: [PATCH 8/8] Added position information to detected candidate lambda handlers --- src/shared/lambdaHandlerSearch.ts | 2 ++ src/shared/typescriptLambdaHandlerSearch.ts | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/src/shared/lambdaHandlerSearch.ts b/src/shared/lambdaHandlerSearch.ts index 54f1682af46..809d339ac42 100644 --- a/src/shared/lambdaHandlerSearch.ts +++ b/src/shared/lambdaHandlerSearch.ts @@ -8,6 +8,8 @@ export interface LambdaHandlerCandidate { handlerName: string, filename: string, + positionStart: number, + positionEnd: number, } export interface LambdaHandlerSearch { diff --git a/src/shared/typescriptLambdaHandlerSearch.ts b/src/shared/typescriptLambdaHandlerSearch.ts index 3fbde5324fd..180bd94112c 100644 --- a/src/shared/typescriptLambdaHandlerSearch.ts +++ b/src/shared/typescriptLambdaHandlerSearch.ts @@ -153,6 +153,8 @@ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { return { filename: this._filename, handlerName: `${this._baseFilename}.${exportsTarget}`, + positionStart: candidate.pos, + positionEnd: candidate.end, } }) } @@ -173,6 +175,8 @@ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { handlers.push({ filename: this._filename, handlerName: `${this._baseFilename}.${exportedFunction}`, + positionStart: clause.pos, + positionEnd: clause.end, }) } } @@ -197,6 +201,8 @@ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { handlers.push({ filename: this._filename, handlerName: `${this._baseFilename}.${exportNode.name.getText()}`, + positionStart: exportNode.pos, + positionEnd: exportNode.end, }) } else if (ts.isVariableStatement(exportNode)) { exportNode.declarationList.forEachChild(declaration => { @@ -211,6 +217,8 @@ export class TypescriptLambdaHandlerSearch implements LambdaHandlerSearch { handlers.push({ filename: this._filename, handlerName: `${this._baseFilename}.${declaration.name.getText()}`, + positionStart: declaration.pos, + positionEnd: declaration.end, }) } })