diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..b2d8416 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,30 @@ +module.exports = { + env: { + node: true, + }, + extends: ['eslint-config-airbnb-base', 'plugin:prettier/recommended'], + parser: 'babel-eslint', + rules: { + 'no-param-reassign': 0, + 'no-unused-expressions': 0, + 'no-underscore-dangle': [ + 'error', + { + allowAfterThis: true, + }, + ], + 'spaced-comment': 0, + }, + overrides: [ + { + files: ['*.server.test.js'], + env: { + mocha: true, + }, + rules: { + 'no-underscore-dangle': 'off', + 'no-new': 'off', + }, + }, + ], +}; diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..a20502b --- /dev/null +++ b/.prettierrc @@ -0,0 +1,4 @@ +{ + "singleQuote": true, + "trailingComma": "all" +} diff --git a/README.md b/README.md index ea70c2b..5235bb4 100644 --- a/README.md +++ b/README.md @@ -19,45 +19,56 @@ Convenient wrapper for prom-client to expose product's metrics to prometheus ## Initialize + You just have to initialize `Facade` class and use it as a `Singletone`: + ```javascript const { UMetrics, PullTransport } = require('umetrics'); // Any logger with this interface const logger = { - info(msg) { - console.log(msg); - }, - warn(msg) { - console.log(msg); - }, - error(msg) { - console.log(msg); - }, + info(msg) { + console.log(msg); + }, + warn(msg) { + console.log(msg); + }, + error(msg) { + console.log(msg); + }, }; // And just initialize Singletone once const uMetrics = new UMetrics(new PullTransport(logger, 3000), { - prefix: 'test', + prefix: 'test', }); uMetrics.start(); -```` +``` + +Available options: + +- `prefix` - prefix for all metric names (by default null) +- `labels` - default labels for all metrics should be type: `{ [labelName: string]: any}` +- `nodejsMetricsEnabled` - turn off/on export of [default metrics](https://github.com/siimon/prom-client#default-metrics) (by default false) +- `nodejsMetricsInterval` - interval of scrapping default metrics (7000 ms by default) + Then in your code you have to register new metric name: + ```javascript uMetrics.register(uMetrics.Metrics.Gauge, 'someMetricName', { - ttl : 60 * 1000, - labels: ['some_label'], + ttl: 60 * 1000, + labels: ['some_label'], }); ``` -`labels` - you have register label names before setting their values -`ttl` - metric's time to live (milliseconds) -`ttl` parameter is very useful. because usually if you use prometheus, you want to watch time series. -So you expect that that data will be reset evenly +`labels` - you have register label names before setting their values +`ttl` - metric's time to live (milliseconds) - deprecated ## Using + And use it to collect metrics: + ```javascript // Yes, you can write the name of metric here // Inside it' realised with proxy, so you can use it like this @@ -68,24 +79,26 @@ uMetrics.someMetricName.set(10, { some_label: 'label_value' }); ``` Best practise is to wrap with try/catch to secure from uncaught exceptions + ```javascript try { - uMetrics.someMetricName.inc(1); + uMetrics.someMetricName.inc(1); } catch (error) { - // logging the error here + // logging the error here } ``` You cant inject another transport. Out of the box you have `PullTransport` and `PushTransport` + ```javascript // You need push transport for scripts which run for not long period // For example cron new PushTransport(logger, { - url: 'pushgatewayurl', - interval: 2000, //ms + url: 'pushgatewayurl', + interval: 2000, //ms }); ``` + See https://prometheus.io/docs/practices/pushing/ Now we have only one Metric type `GaugeMetric`. Welcome for contribution! - diff --git a/package-lock.json b/package-lock.json index 39068c5..1e2e59c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -56,13 +56,15 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true + "dev": true, + "optional": true }, "braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, + "optional": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -81,6 +83,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -263,6 +266,7 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, + "optional": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -275,6 +279,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -301,7 +306,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -322,12 +328,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -342,17 +350,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -469,7 +480,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -481,6 +493,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -495,6 +508,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -502,12 +516,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -526,6 +542,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -606,7 +623,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -618,6 +636,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -703,7 +722,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -739,6 +759,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -758,6 +779,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -801,12 +823,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -869,7 +893,8 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "dev": true, + "optional": true }, "is-glob": { "version": "4.0.1", @@ -886,6 +911,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2" }, @@ -895,6 +921,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -905,13 +932,15 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "optional": true }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "dev": true, + "optional": true }, "micromatch": { "version": "3.1.10", @@ -2036,37 +2065,107 @@ } } }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", "dev": true, "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.2.tgz", - "integrity": "sha512-yprFYuno9FtNsSHVlSWd+nRlmGoAbqbeCwOryP6sC/zoCjhpArcRMYp19EvpSUSizJAlsXEwJv+wcWS9XaXdMw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", "dev": true }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, + "@octokit/endpoint": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-5.4.0.tgz", + "integrity": "sha512-DWTNgEKg5KXzvNjKTzcFTnkZiL7te6pQxxumvxPjyjDpcY5V3xzywnNu1WVqySY3Ct1flF/kAoyDdZos6acq3Q==", + "dev": true, + "requires": { + "is-plain-object": "^3.0.0", + "universal-user-agent": "^4.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", + "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", + "dev": true, + "requires": { + "isobject": "^4.0.0" + } + } + } + }, + "@octokit/request": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.1.0.tgz", + "integrity": "sha512-I15T9PwjFs4tbWyhtFU2Kq7WDPidYMvRB7spmxoQRZfxSmiqullG+Nz+KbSmpkfnlvHwTr1e31R5WReFRKMXjg==", + "dev": true, + "requires": { + "@octokit/endpoint": "^5.1.0", + "@octokit/request-error": "^1.0.1", + "deprecation": "^2.0.0", + "is-plain-object": "^3.0.0", + "node-fetch": "^2.3.0", + "once": "^1.4.0", + "universal-user-agent": "^4.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", + "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", + "dev": true, + "requires": { + "isobject": "^4.0.0" + } + } + } + }, + "@octokit/request-error": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.0.4.tgz", + "integrity": "sha512-L4JaJDXn8SGT+5G0uX79rZLv0MNJmfGa4vb4vy1NnpjSnWDLJRy6m90udGwvMmavwsStgbv2QNkPzzTCMmL+ig==", + "dev": true, + "requires": { + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, "@octokit/rest": { - "version": "15.15.1", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-15.15.1.tgz", - "integrity": "sha512-TnuzjE880qbknEFAVqEr3VeOcE0yXo0kJEW+EK8TASpzMbykKCydei6WUmDSV3bq7aI+llkMrBYes1kIjpU7fA==", + "version": "16.32.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.32.0.tgz", + "integrity": "sha512-H8X4OGHK7KFNlrx11xQLBQcFGjracSLSoV8JC/N8/BfLl9L5ZMpxt5iFrudZM6alsCZd4hQ5f/GW0hEjAW0ZvQ==", "dev": true, "requires": { - "before-after-hook": "^1.1.0", + "@octokit/request": "^5.0.0", + "@octokit/request-error": "^1.0.2", + "atob-lite": "^2.0.0", + "before-after-hook": "^2.0.0", "btoa-lite": "^1.0.0", - "debug": "^3.1.0", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.0", - "lodash": "^4.17.4", - "node-fetch": "^2.1.1", - "universal-user-agent": "^2.0.0", - "url-template": "^2.0.8" + "deprecation": "^2.0.0", + "lodash.get": "^4.4.2", + "lodash.set": "^4.3.2", + "lodash.uniq": "^4.5.0", + "octokit-pagination-methods": "^1.1.0", + "once": "^1.4.0", + "universal-user-agent": "^4.0.0" } }, "@samverschueren/stream-to-observable": { @@ -2079,34 +2178,17 @@ } }, "@semantic-release/commit-analyzer": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-6.1.0.tgz", - "integrity": "sha512-2lb+t6muGenI86mYGpZYOgITx9L3oZYF697tJoqXeQEk0uw0fm+OkkOuDTBA3Oax9ftoNIrCKv9bwgYvxrbM6w==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-6.3.0.tgz", + "integrity": "sha512-sh51MVlV8VyrvGIemcvzueDADX/8qGbAgce1F0CtQv8hNKYyhdaJeHzfiM1rNXwCynDmcQj+Yq9rrWt71tBd/Q==", "dev": true, "requires": { "conventional-changelog-angular": "^5.0.0", "conventional-commits-filter": "^2.0.0", "conventional-commits-parser": "^3.0.0", "debug": "^4.0.0", - "import-from": "^2.1.0", + "import-from": "^3.0.0", "lodash": "^4.17.4" - }, - "dependencies": { - "debug": { - "version": "4.1.0", - "resolved": "https://registry.node-modules.io/tarballs/debug/4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.node-modules.io/tarballs/ms/2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } } }, "@semantic-release/error": { @@ -2116,202 +2198,358 @@ "dev": true }, "@semantic-release/github": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-5.2.0.tgz", - "integrity": "sha512-w2EQjCWrNVOD1P2uPFOWQh8cVVc+N2l+DMLa4opFN4fc5TRDO1En0WA1S76JbQBn+fXp5uYQFt+KTGsVatg2OA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-5.5.0.tgz", + "integrity": "sha512-Rg7cZr1sgUmo5iuzhGOhFdAw6NWGH7I9RbZA1wySO4M+enFkBxtA3Joy+RQKrzbrSAPwEJyP6ZixXXB1qfKAtg==", "dev": true, "requires": { - "@octokit/rest": "^15.2.0", + "@octokit/rest": "^16.27.0", "@semantic-release/error": "^2.2.0", - "aggregate-error": "^1.0.0", - "bottleneck": "^2.0.1", + "aggregate-error": "^3.0.0", + "bottleneck": "^2.18.1", "debug": "^4.0.0", - "dir-glob": "^2.0.0", - "fs-extra": "^7.0.0", - "globby": "^8.0.0", + "dir-glob": "^3.0.0", + "fs-extra": "^8.0.0", + "globby": "^10.0.0", "http-proxy-agent": "^2.1.0", "https-proxy-agent": "^2.2.1", - "issue-parser": "^3.0.0", + "issue-parser": "^4.0.0", "lodash": "^4.17.4", - "mime": "^2.0.3", - "p-filter": "^1.0.0", - "p-retry": "^2.0.0", + "mime": "^2.4.3", + "p-filter": "^2.0.0", + "p-retry": "^4.0.0", "parse-github-url": "^1.0.1", "url-join": "^4.0.0" }, "dependencies": { - "debug": { - "version": "4.1.0", - "resolved": "https://registry.node-modules.io/tarballs/debug/4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "dev": true, "requires": { - "ms": "^2.1.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" } }, "globby": { - "version": "8.0.1", - "resolved": "https://registry.node-modules.io/tarballs/globby/8.0.1.tgz", - "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", + "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==", "dev": true, "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.node-modules.io/tarballs/ms/2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/pify/3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true } } }, "@semantic-release/npm": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-5.0.5.tgz", - "integrity": "sha512-BZpdRo4r3UD3ilyb01xckfc5/57fBQVn4P0iMnjOR4/9heRKJUcywsSJQL/RfxMOJpGUlT//2TpdiiSKV2d1OQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-5.2.0.tgz", + "integrity": "sha512-+WUoFNTVn4saPLbIBd+fCXL9nP6c49iOyvjLqWNq4lh2/sLZg993MMTBVvTxHRaojxb42R2RjePsO5AaFM3Lzw==", "dev": true, "requires": { "@semantic-release/error": "^2.2.0", - "aggregate-error": "^1.0.0", - "detect-indent": "^5.0.0", - "detect-newline": "^2.1.0", - "execa": "^1.0.0", - "fs-extra": "^7.0.0", - "lodash": "^4.17.4", + "aggregate-error": "^3.0.0", + "execa": "^2.0.2", + "fs-extra": "^8.0.0", + "lodash": "^4.17.15", "nerf-dart": "^1.0.0", - "normalize-url": "^3.0.0", - "npm": "^6.3.0", - "parse-json": "^4.0.0", + "normalize-url": "^4.0.0", + "npm": "^6.10.3", "rc": "^1.2.8", - "read-pkg": "^4.0.0", - "registry-auth-token": "^3.3.1" + "read-pkg": "^5.0.0", + "registry-auth-token": "^4.0.0" }, "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.node-modules.io/tarballs/cross-spawn/6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "execa": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/execa/-/execa-2.0.5.tgz", + "integrity": "sha512-SwmwZZyJjflcqLSgllk4EQlMLst2p9muyzwNugKGFlpAz6rZ7M+s2nBR97GAq4Vzjwx2y9rcMcmqzojwN+xwNA==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "cross-spawn": "^6.0.5", + "get-stream": "^5.0.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^3.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" } }, - "detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.node-modules.io/tarballs/detect-indent/5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.node-modules.io/tarballs/execa/1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.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" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.node-modules.io/tarballs/get-stream/4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "npm-run-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz", + "integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==", "dev": true, "requires": { - "pump": "^3.0.0" + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" } }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "dev": true + }, "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.node-modules.io/tarballs/parse-json/4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", "dev": true, "requires": { + "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" } }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/pify/3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "path-key": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.0.tgz", + "integrity": "sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg==", "dev": true }, "read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.node-modules.io/tarballs/read-pkg/4.0.1.tgz", - "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "requires": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" } - } - } - }, - "@semantic-release/release-notes-generator": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-7.1.1.tgz", - "integrity": "sha512-UbF0aU/RHeOW38jYcOPJFEqqxq01zKuaT54cdzyaci3cH8jfocR7YaPevtx7PTnwmha54ukuT+JQ9vBViYPTZw==", - "dev": true, + }, + "resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "@semantic-release/release-notes-generator": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-7.3.0.tgz", + "integrity": "sha512-6ozBLHM9XZR6Z8PFSKssLtwBYc5l1WOnxj034F8051QOo3TMKDDPKwdj2Niyc+e7ru7tGa3Ftq7nfN0YnD6//A==", + "dev": true, "requires": { "conventional-changelog-angular": "^5.0.0", "conventional-changelog-writer": "^4.0.0", "conventional-commits-filter": "^2.0.0", "conventional-commits-parser": "^3.0.0", "debug": "^4.0.0", - "get-stream": "^4.0.0", - "git-url-parse": "^10.0.1", - "import-from": "^2.1.0", - "into-stream": "^4.0.0", - "lodash": "^4.17.4" + "get-stream": "^5.0.0", + "import-from": "^3.0.0", + "into-stream": "^5.0.0", + "lodash": "^4.17.4", + "read-pkg-up": "^6.0.0" }, "dependencies": { - "debug": { + "find-up": { "version": "4.1.0", - "resolved": "https://registry.node-modules.io/tarballs/debug/4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "ms": "^2.1.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.node-modules.io/tarballs/get-stream/4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", "dev": true, "requires": { "pump": "^3.0.0" } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.node-modules.io/tarballs/ms/2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-6.0.0.tgz", + "integrity": "sha512-odtTvLl+EXo1eTsMnoUHRmg/XmXdTkwXVxy4VFE9Kp6cCq7b3l7QMdBndND3eAFzrbSAXC/WCUOQQ9rLjifKZw==", + "dev": true, + "requires": { + "find-up": "^4.0.0", + "read-pkg": "^5.1.1", + "type-fest": "^0.5.0" + } + }, + "resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "type-fest": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", + "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==", "dev": true } } @@ -2351,9 +2589,15 @@ "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", "dev": true }, + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, "JSONStream": { "version": "1.3.5", - "resolved": "https://registry.node-modules.io/tarballs/JSONStream/1.3.5.tgz", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, "requires": { @@ -2374,22 +2618,30 @@ "dev": true }, "agent-base": { - "version": "4.2.1", - "resolved": "https://registry.node-modules.io/tarballs/agent-base/4.2.1.tgz", - "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", "dev": true, "requires": { "es6-promisify": "^5.0.0" } }, "aggregate-error": { - "version": "1.0.0", - "resolved": "https://registry.node-modules.io/tarballs/aggregate-error/1.0.0.tgz", - "integrity": "sha1-iINE2tAiCnLjr1CQYRf0h3GSX6w=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", "dev": true, "requires": { - "clean-stack": "^1.0.0", - "indent-string": "^3.0.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "dependencies": { + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + } } }, "ajv": { @@ -2430,7 +2682,7 @@ }, "ansicolors": { "version": "0.3.2", - "resolved": "https://registry.node-modules.io/tarballs/ansicolors/0.3.2.tgz", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", "dev": true }, @@ -2466,7 +2718,7 @@ }, "argv-formatter": { "version": "1.0.0", - "resolved": "https://registry.node-modules.io/tarballs/argv-formatter/1.0.0.tgz", + "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", "integrity": "sha1-oMoMvCmltz6Dbuvhy/bF4OTrgvk=", "dev": true }, @@ -2474,23 +2726,25 @@ "version": "1.1.0", "resolved": "https://registry.node-modules.io/tarballs/arr-flatten/1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true + "dev": true, + "optional": true }, "arr-union": { "version": "3.1.0", "resolved": "https://registry.node-modules.io/tarballs/arr-union/3.1.0.tgz", "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true + "dev": true, + "optional": true }, "array-find-index": { "version": "1.0.2", - "resolved": "https://registry.node-modules.io/tarballs/array-find-index/1.0.2.tgz", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", "dev": true }, "array-ify": { "version": "1.0.0", - "resolved": "https://registry.node-modules.io/tarballs/array-ify/1.0.0.tgz", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", "dev": true }, @@ -2511,7 +2765,7 @@ }, "arrify": { "version": "1.0.1", - "resolved": "https://registry.node-modules.io/tarballs/arrify/1.0.1.tgz", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, @@ -2540,7 +2794,8 @@ "version": "1.0.0", "resolved": "https://registry.node-modules.io/tarballs/assign-symbols/1.0.0.tgz", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true + "dev": true, + "optional": true }, "astral-regex": { "version": "1.0.0", @@ -2565,6 +2820,13 @@ "version": "2.1.2", "resolved": "https://registry.node-modules.io/tarballs/atob/2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "optional": true + }, + "atob-lite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", + "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=", "dev": true }, "aws-sign2": { @@ -2613,6 +2875,7 @@ "resolved": "https://registry.node-modules.io/tarballs/base/0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, + "optional": true, "requires": { "cache-base": "^1.0.1", "class-utils": "^0.3.5", @@ -2628,6 +2891,7 @@ "resolved": "https://registry.node-modules.io/tarballs/define-property/1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, + "optional": true, "requires": { "is-descriptor": "^1.0.0" } @@ -2637,6 +2901,7 @@ "resolved": "https://registry.node-modules.io/tarballs/is-accessor-descriptor/1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -2646,6 +2911,7 @@ "resolved": "https://registry.node-modules.io/tarballs/is-data-descriptor/1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -2655,6 +2921,7 @@ "resolved": "https://registry.node-modules.io/tarballs/is-descriptor/1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, + "optional": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -2665,13 +2932,15 @@ "version": "3.0.1", "resolved": "https://registry.node-modules.io/tarballs/isobject/3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "optional": true }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.node-modules.io/tarballs/kind-of/6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "dev": true, + "optional": true } } }, @@ -2685,9 +2954,9 @@ } }, "before-after-hook": { - "version": "1.1.0", - "resolved": "https://registry.node-modules.io/tarballs/before-after-hook/1.1.0.tgz", - "integrity": "sha512-VOMDtYPwLbIncTxNoSzRyvaMxtXmLWLUqr8k5AfC1BzLk34HvBXaQX8snOwQZ4c0aX8aSERqtJSiI9/m2u5kuA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz", + "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==", "dev": true }, "binary-extensions": { @@ -2703,9 +2972,9 @@ "integrity": "sha1-DmVcm5wkNeqraL9AJyJtK1WjRSQ=" }, "bottleneck": { - "version": "2.12.2", - "resolved": "https://registry.node-modules.io/tarballs/bottleneck/2.12.2.tgz", - "integrity": "sha512-9HrCO+5MJ0wmendPQSWaA9myojLavaEbkwZbsEjNK83nWPfkhFZN+5cYLhRKu1lRqn36cjO5r3qMJ7/JUN5hQQ==", + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", "dev": true }, "brace-expansion": { @@ -2718,6 +2987,15 @@ "concat-map": "0.0.1" } }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.node-modules.io/tarballs/browser-stdout/1.3.1.tgz", @@ -2726,7 +3004,7 @@ }, "btoa-lite": { "version": "1.0.0", - "resolved": "https://registry.node-modules.io/tarballs/btoa-lite/1.0.0.tgz", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", "dev": true }, @@ -2747,6 +3025,7 @@ "resolved": "https://registry.node-modules.io/tarballs/cache-base/1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, + "optional": true, "requires": { "collection-visit": "^1.0.0", "component-emitter": "^1.2.1", @@ -2763,7 +3042,8 @@ "version": "3.0.1", "resolved": "https://registry.node-modules.io/tarballs/isobject/3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "optional": true } } }, @@ -2779,12 +3059,6 @@ "write-file-atomic": "^2.4.2" } }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.node-modules.io/tarballs/call-me-maybe/1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, "caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", @@ -2819,13 +3093,13 @@ }, "camelcase": { "version": "4.1.0", - "resolved": "https://registry.node-modules.io/tarballs/camelcase/4.1.0.tgz", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, "camelcase-keys": { "version": "4.2.0", - "resolved": "https://registry.node-modules.io/tarballs/camelcase-keys/4.2.0.tgz", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", "dev": true, "requires": { @@ -2836,7 +3110,7 @@ }, "cardinal": { "version": "2.1.1", - "resolved": "https://registry.node-modules.io/tarballs/cardinal/2.1.1.tgz", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=", "dev": true, "requires": { @@ -2908,6 +3182,7 @@ "resolved": "https://registry.node-modules.io/tarballs/class-utils/0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, + "optional": true, "requires": { "arr-union": "^3.1.0", "define-property": "^0.2.5", @@ -2920,6 +3195,7 @@ "resolved": "https://registry.node-modules.io/tarballs/define-property/0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, + "optional": true, "requires": { "is-descriptor": "^0.1.0" } @@ -2928,14 +3204,15 @@ "version": "3.0.1", "resolved": "https://registry.node-modules.io/tarballs/isobject/3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "optional": true } } }, "clean-stack": { - "version": "1.3.0", - "resolved": "https://registry.node-modules.io/tarballs/clean-stack/1.3.0.tgz", - "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, "cli-cursor": { @@ -2949,7 +3226,7 @@ }, "cli-table": { "version": "0.3.1", - "resolved": "https://registry.node-modules.io/tarballs/cli-table/0.3.1.tgz", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", "dev": true, "requires": { @@ -3045,6 +3322,7 @@ "resolved": "https://registry.node-modules.io/tarballs/collection-visit/1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, + "optional": true, "requires": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" @@ -3067,7 +3345,7 @@ }, "colors": { "version": "1.0.3", - "resolved": "https://registry.node-modules.io/tarballs/colors/1.0.3.tgz", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", "dev": true }, @@ -3094,7 +3372,7 @@ }, "compare-func": { "version": "1.3.2", - "resolved": "https://registry.node-modules.io/tarballs/compare-func/1.3.2.tgz", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", "dev": true, "requires": { @@ -3106,7 +3384,8 @@ "version": "1.2.1", "resolved": "https://registry.node-modules.io/tarballs/component-emitter/1.2.1.tgz", "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", @@ -3115,9 +3394,9 @@ "dev": true }, "confusing-browser-globals": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.7.tgz", - "integrity": "sha512-cgHI1azax5ATrZ8rJ+ODDML9Fvu67PimB6aNxBrc/QwSaDaM9eTfIEUHx3bBLJJ82ioSb+/5zfsMCCEJax3ByQ==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", "dev": true }, "contains-path": { @@ -3127,9 +3406,9 @@ "dev": true }, "conventional-changelog-angular": { - "version": "5.0.1", - "resolved": "https://registry.node-modules.io/tarballs/conventional-changelog-angular/5.0.1.tgz", - "integrity": "sha512-q4ylJ68fWZDdrFC9z4zKcf97HW6hp7Mo2YlqD4owfXhecFKy/PJCU/1oVFF4TqochchChqmZ0Vb0e0g8/MKNlA==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.3.tgz", + "integrity": "sha512-YD1xzH7r9yXQte/HF9JBuEDfvjxxwDGGwZU1+ndanbY0oFgA+Po1T9JDSpPLdP0pZT6MhCAsdvFKC4TJ4MTJTA==", "dev": true, "requires": { "compare-func": "^1.3.1", @@ -3137,27 +3416,54 @@ } }, "conventional-changelog-writer": { - "version": "4.0.0", - "resolved": "https://registry.node-modules.io/tarballs/conventional-changelog-writer/4.0.0.tgz", - "integrity": "sha512-hMZPe0AQ6Bi05epeK/7hz80xxk59nPA5z/b63TOHq2wigM0/akreOc8N4Jam5b9nFgKWX1e9PdPv2ewgW6bcfg==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.7.tgz", + "integrity": "sha512-p/wzs9eYaxhFbrmX/mCJNwJuvvHR+j4Fd0SQa2xyAhYed6KBiZ780LvoqUUvsayP4R1DtC27czalGUhKV2oabw==", "dev": true, "requires": { "compare-func": "^1.3.1", - "conventional-commits-filter": "^2.0.0", + "conventional-commits-filter": "^2.0.2", "dateformat": "^3.0.0", - "handlebars": "^4.0.2", + "handlebars": "^4.1.2", "json-stringify-safe": "^5.0.1", "lodash": "^4.2.1", "meow": "^4.0.0", - "semver": "^5.5.0", + "semver": "^6.0.0", "split": "^1.0.0", - "through2": "^2.0.0" + "through2": "^3.0.0" + }, + "dependencies": { + "conventional-commits-filter": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.2.tgz", + "integrity": "sha512-WpGKsMeXfs21m1zIw4s9H5sys2+9JccTzpN6toXtxhpw2VNF2JUXwIakthKBy+LN4DvJm+TzWhxOMWOs1OFCFQ==", + "dev": true, + "requires": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "dev": true, + "requires": { + "readable-stream": "2 || 3" + } + } } }, "conventional-commits-filter": { - "version": "2.0.0", - "resolved": "https://registry.node-modules.io/tarballs/conventional-commits-filter/2.0.0.tgz", - "integrity": "sha512-Cfl0j1/NquB/TMVx7Wrmyq7uRM+/rPQbtVVGwzfkhZ6/yH6fcMmP0Q/9044TBZPTNdGzm46vXFXL14wbET0/Mg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.1.tgz", + "integrity": "sha512-92OU8pz/977udhBjgPEbg3sbYzIxMDFTlQT97w7KdhR9igNqdJvy8smmedAAgn4tPiqseFloKkrVfbXCVd+E7A==", "dev": true, "requires": { "is-subset": "^0.1.1", @@ -3165,9 +3471,9 @@ } }, "conventional-commits-parser": { - "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/conventional-commits-parser/3.0.0.tgz", - "integrity": "sha512-GWh71U26BLWgMykCp+VghZ4s64wVbtseECcKQ/PvcPZR2cUnz+FUc2J9KjxNl7/ZbCxST8R03c9fc+Vi0umS9Q==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.1.tgz", + "integrity": "sha512-P6U5UOvDeidUJ8ebHVDIoXzI7gMlQ1OF/id6oUvp8cnZvOXMt1n8nYl74Ey9YMn0uVQtxmCtjPQawpsssBWtGg==", "dev": true, "requires": { "JSONStream": "^1.0.4", @@ -3192,7 +3498,8 @@ "version": "0.1.1", "resolved": "https://registry.node-modules.io/tarballs/copy-descriptor/0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true + "dev": true, + "optional": true }, "core-js-compat": { "version": "3.1.4", @@ -3249,25 +3556,42 @@ "dev": true }, "cosmiconfig": { - "version": "5.0.6", - "resolved": "https://registry.node-modules.io/tarballs/cosmiconfig/5.0.6.tgz", - "integrity": "sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "dev": true, "requires": { + "import-fresh": "^2.0.0", "is-directory": "^0.3.1", - "js-yaml": "^3.9.0", + "js-yaml": "^3.13.1", "parse-json": "^4.0.0" }, "dependencies": { + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, "parse-json": { "version": "4.0.0", - "resolved": "https://registry.node-modules.io/tarballs/parse-json/4.0.0.tgz", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true } } }, @@ -3329,7 +3653,7 @@ }, "currently-unhandled": { "version": "0.4.1", - "resolved": "https://registry.node-modules.io/tarballs/currently-unhandled/0.4.1.tgz", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { @@ -3353,17 +3677,25 @@ }, "dateformat": { "version": "3.0.3", - "resolved": "https://registry.node-modules.io/tarballs/dateformat/3.0.3.tgz", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", "dev": true }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.node-modules.io/tarballs/debug/3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } } }, "decamelize": { @@ -3374,7 +3706,7 @@ }, "decamelize-keys": { "version": "1.1.0", - "resolved": "https://registry.node-modules.io/tarballs/decamelize-keys/1.1.0.tgz", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", "dev": true, "requires": { @@ -3384,7 +3716,7 @@ "dependencies": { "map-obj": { "version": "1.0.1", - "resolved": "https://registry.node-modules.io/tarballs/map-obj/1.0.1.tgz", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", "dev": true } @@ -3394,7 +3726,8 @@ "version": "0.2.0", "resolved": "https://registry.node-modules.io/tarballs/decode-uri-component/0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true + "dev": true, + "optional": true }, "dedent": { "version": "0.7.0", @@ -3413,7 +3746,7 @@ }, "deep-extend": { "version": "0.6.0", - "resolved": "https://registry.node-modules.io/tarballs/deep-extend/0.6.0.tgz", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, @@ -3446,6 +3779,7 @@ "resolved": "https://registry.node-modules.io/tarballs/define-property/2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, + "optional": true, "requires": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" @@ -3456,6 +3790,7 @@ "resolved": "https://registry.node-modules.io/tarballs/is-accessor-descriptor/1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -3465,6 +3800,7 @@ "resolved": "https://registry.node-modules.io/tarballs/is-data-descriptor/1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -3474,6 +3810,7 @@ "resolved": "https://registry.node-modules.io/tarballs/is-descriptor/1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, + "optional": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -3484,13 +3821,15 @@ "version": "3.0.1", "resolved": "https://registry.node-modules.io/tarballs/isobject/3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "optional": true }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.node-modules.io/tarballs/kind-of/6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "dev": true, + "optional": true } } }, @@ -3529,10 +3868,10 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.node-modules.io/tarballs/detect-newline/2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", "dev": true }, "diff": { @@ -3542,28 +3881,18 @@ "dev": true }, "dir-glob": { - "version": "2.0.0", - "resolved": "https://registry.node-modules.io/tarballs/dir-glob/2.0.0.tgz", - "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "requires": { - "arrify": "^1.0.1", - "path-type": "^3.0.0" + "path-type": "^4.0.0" }, "dependencies": { "path-type": { - "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/path-type/3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/pify/3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true } } @@ -3579,7 +3908,7 @@ }, "dot-prop": { "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/dot-prop/3.0.0.tgz", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", "dev": true, "requires": { @@ -3588,7 +3917,7 @@ }, "duplexer2": { "version": "0.1.4", - "resolved": "https://registry.node-modules.io/tarballs/duplexer2/0.1.4.tgz", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", "dev": true, "requires": { @@ -3627,52 +3956,13 @@ } }, "env-ci": { - "version": "3.1.0", - "resolved": "https://registry.node-modules.io/tarballs/env-ci/3.1.0.tgz", - "integrity": "sha512-+yFT8QX8W9bee0/fuzKvqt2vEhWvU3FXZ1P5xbveDq/EqcYLh4e0QNE16okUS3pawALDGXE9eCJPVeWY0/ilQA==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-4.1.3.tgz", + "integrity": "sha512-OMXwuUCCcmO4gfm/KiBHYSdTcvbl3H48OaSPp0uFHjcJw/opALT1A8hbhg8U3gut7NUHEbYMt6g97FvQvHVb9w==", "dev": true, "requires": { "execa": "^1.0.0", - "java-properties": "^0.2.9" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.node-modules.io/tarballs/cross-spawn/6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.node-modules.io/tarballs/execa/1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.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" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.node-modules.io/tarballs/get-stream/4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - } + "java-properties": "^1.0.0" } }, "error-ex": { @@ -3716,14 +4006,14 @@ "dev": true }, "es6-promise": { - "version": "4.2.5", - "resolved": "https://registry.node-modules.io/tarballs/es6-promise/4.2.5.tgz", - "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", "dev": true }, "es6-promisify": { "version": "5.0.0", - "resolved": "https://registry.node-modules.io/tarballs/es6-promisify/5.0.0.tgz", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "dev": true, "requires": { @@ -3925,16 +4215,33 @@ } }, "eslint-config-airbnb-base": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.2.0.tgz", - "integrity": "sha512-1mg/7eoB4AUeB0X1c/ho4vb2gYkNH8Trr/EgCT/aGmKhhG+F6vF5s8+iRBlWAzFIAphxIdp3YfEKgEl0f9Xg+w==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.0.0.tgz", + "integrity": "sha512-2IDHobw97upExLmsebhtfoD3NAKhV4H0CJWP3Uprd/uk+cHuWYOczPVxQ8PxLFUAw7o3Th1RAU8u1DoUpr+cMA==", "dev": true, "requires": { - "confusing-browser-globals": "^1.0.5", + "confusing-browser-globals": "^1.0.7", "object.assign": "^4.1.0", "object.entries": "^1.1.0" } }, + "eslint-config-prettier": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.4.0.tgz", + "integrity": "sha512-YrKucoFdc7SEko5Sxe4r6ixqXPDP1tunGw91POeZTTRKItf/AMFYt/YLEQtZMkR2LVpAVhcAcZgcWpm1oGPW7w==", + "dev": true, + "requires": { + "get-stdin": "^6.0.0" + }, + "dependencies": { + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + } + } + }, "eslint-import-resolver-node": { "version": "0.3.2", "resolved": "https://registry.node-modules.io/tarballs/eslint-import-resolver-node/0.3.2.tgz", @@ -3977,15 +4284,6 @@ } } }, - "eslint-plugin-flowtype": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.11.1.tgz", - "integrity": "sha512-4NiaaGZuz9iEGRTK8j4lkA/scibOXSYaYoHbsTtgLOxxqQCkbWV3xt8ETqILKg7DAYDqB69z1H5U71UmtdF9hw==", - "dev": true, - "requires": { - "lodash": "^4.17.11" - } - }, "eslint-plugin-import": { "version": "2.14.0", "resolved": "https://registry.node-modules.io/tarballs/eslint-plugin-import/2.14.0.tgz", @@ -4025,6 +4323,15 @@ } } }, + "eslint-plugin-prettier": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.1.tgz", + "integrity": "sha512-A+TZuHZ0KU0cnn56/9mfR7/KjUJ9QNVXUhwvRFSR7PGPe0zQR6PTkmyqg1AtUUEOzTqeRsUwyKFh0oVZKVCrtA==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, "eslint-scope": { "version": "3.7.1", "resolved": "https://registry.node-modules.io/tarballs/eslint-scope/3.7.1.tgz", @@ -4036,10 +4343,13 @@ } }, "eslint-utils": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", - "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", - "dev": true + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", + "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.0.0" + } }, "eslint-visitor-keys": { "version": "1.0.0", @@ -4131,380 +4441,66 @@ "resolved": "https://registry.node-modules.io/tarballs/extend-shallow/3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, + "optional": true, "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.node-modules.io/tarballs/is-extendable/1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.node-modules.io/tarballs/extsprintf/1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.node-modules.io/tarballs/fast-deep-equal/1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "fast-glob": { - "version": "2.2.3", - "resolved": "https://registry.node-modules.io/tarballs/fast-glob/2.2.3.tgz", - "integrity": "sha512-NiX+JXjnx43RzvVFwRWfPKo4U+1BrK5pJPsHQdKMlLoFHrrGktXglQhHliSihWAq+m1z6fHk3uwGHrtRbS9vLA==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.0.1", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.1", - "micromatch": "^3.1.10" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.node-modules.io/tarballs/arr-diff/4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.node-modules.io/tarballs/array-unique/0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.node-modules.io/tarballs/braces/2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.node-modules.io/tarballs/extend-shallow/2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.node-modules.io/tarballs/debug/2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.node-modules.io/tarballs/expand-brackets/2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.node-modules.io/tarballs/define-property/0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.node-modules.io/tarballs/extend-shallow/2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.node-modules.io/tarballs/is-accessor-descriptor/0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.node-modules.io/tarballs/kind-of/3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.node-modules.io/tarballs/is-data-descriptor/0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.node-modules.io/tarballs/kind-of/3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.node-modules.io/tarballs/is-descriptor/0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.node-modules.io/tarballs/kind-of/5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.node-modules.io/tarballs/extglob/2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.node-modules.io/tarballs/define-property/1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.node-modules.io/tarballs/extend-shallow/2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.node-modules.io/tarballs/fill-range/4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.node-modules.io/tarballs/extend-shallow/2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.node-modules.io/tarballs/glob-parent/3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.node-modules.io/tarballs/is-glob/3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.node-modules.io/tarballs/is-accessor-descriptor/1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.node-modules.io/tarballs/is-data-descriptor/1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.node-modules.io/tarballs/is-descriptor/1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.node-modules.io/tarballs/is-extglob/2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.node-modules.io/tarballs/is-glob/4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/is-number/3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.node-modules.io/tarballs/kind-of/3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.node-modules.io/tarballs/isobject/3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.node-modules.io/tarballs/kind-of/6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.node-modules.io/tarballs/micromatch/3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.node-modules.io/tarballs/is-extendable/1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, + "optional": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "is-plain-object": "^2.0.4" } } } }, + "external-editor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.node-modules.io/tarballs/extsprintf/1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.node-modules.io/tarballs/fast-deep-equal/1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.0.tgz", + "integrity": "sha512-TrUz3THiq2Vy3bjfQUB2wNyPdGBeGmdjbzzBLhfHN4YFurYptCKwGq/TfiRavbGywFRzY6U2CdmQ1zmsY5yYaw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2" + } + }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.node-modules.io/tarballs/fast-json-stable-stringify/2.0.0.tgz", @@ -4517,6 +4513,15 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fastq": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz", + "integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==", + "dev": true, + "requires": { + "reusify": "^1.0.0" + } + }, "figures": { "version": "2.0.0", "resolved": "https://registry.node-modules.io/tarballs/figures/2.0.0.tgz", @@ -4535,6 +4540,26 @@ "flat-cache": "^2.0.1" } }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + }, + "dependencies": { + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, "find-cache-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", @@ -4617,13 +4642,21 @@ } }, "find-versions": { - "version": "2.0.0", - "resolved": "https://registry.node-modules.io/tarballs/find-versions/2.0.0.tgz", - "integrity": "sha1-KtkNSQ9oKMGqQCks9wmsMxghDDw=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.1.0.tgz", + "integrity": "sha512-NCTfNiVzeE/xL+roNDffGuRbrWI6atI18lTJ22vKp7rs2OhYzMK3W1dIdO2TUndH/QMcacM4d1uWwgcZcHK69Q==", "dev": true, "requires": { - "array-uniq": "^1.0.0", - "semver-regex": "^1.0.0" + "array-uniq": "^2.1.0", + "semver-regex": "^2.0.0" + }, + "dependencies": { + "array-uniq": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-2.1.0.tgz", + "integrity": "sha512-bdHxtev7FN6+MXI1YFW0Q8mQ8dTJc2S8AMfju+ZR77pbg2yAdVyDlwkaUI7Har0LyOMRFPHrJ9lYdyjZZswdlQ==", + "dev": true + } } }, "flat": { @@ -4664,7 +4697,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true + "dev": true, + "optional": true }, "foreground-child": { "version": "1.5.6", @@ -4710,13 +4744,14 @@ "resolved": "https://registry.node-modules.io/tarballs/fragment-cache/0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, + "optional": true, "requires": { "map-cache": "^0.2.2" } }, "from2": { "version": "2.3.0", - "resolved": "https://registry.node-modules.io/tarballs/from2/2.3.0.tgz", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "dev": true, "requires": { @@ -4725,14 +4760,22 @@ } }, "fs-extra": { - "version": "7.0.0", - "resolved": "https://registry.node-modules.io/tarballs/fs-extra/7.0.0.tgz", - "integrity": "sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", + "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", + "dev": true + } } }, "fs-readdir-recursive": { @@ -4793,7 +4836,8 @@ "version": "2.0.6", "resolved": "https://registry.node-modules.io/tarballs/get-value/2.0.6.tgz", "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true + "dev": true, + "optional": true }, "getpass": { "version": "0.1.7", @@ -4806,7 +4850,7 @@ }, "git-log-parser": { "version": "1.2.0", - "resolved": "https://registry.node-modules.io/tarballs/git-log-parser/1.2.0.tgz", + "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", "integrity": "sha1-LmpMGxP8AAKCB7p5WnrDFme5/Uo=", "dev": true, "requires": { @@ -4820,7 +4864,7 @@ "dependencies": { "split2": { "version": "1.0.0", - "resolved": "https://registry.node-modules.io/tarballs/split2/1.0.0.tgz", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", "integrity": "sha1-UuLiIdiMdfmnP5BVbiY/+WdysxQ=", "dev": true, "requires": { @@ -4829,25 +4873,6 @@ } } }, - "git-up": { - "version": "2.0.10", - "resolved": "https://registry.node-modules.io/tarballs/git-up/2.0.10.tgz", - "integrity": "sha512-2v4UN3qV2RGypD9QpmUjpk+4+RlYpW8GFuiZqQnKmvei08HsFPd0RfbDvEhnE4wBvnYs8ORVtYpOFuuCEmBVBw==", - "dev": true, - "requires": { - "is-ssh": "^1.3.0", - "parse-url": "^1.3.0" - } - }, - "git-url-parse": { - "version": "10.1.0", - "resolved": "https://registry.node-modules.io/tarballs/git-url-parse/10.1.0.tgz", - "integrity": "sha512-goZOORAtFjU1iG+4zZgWq+N7It09PqS3Xsy43ZwhP5unDD0tTSmXTpqULHodMdJXGejm3COwXIhIRT6Z8DYVZQ==", - "dev": true, - "requires": { - "git-up": "^2.0.0" - } - }, "glob": { "version": "7.1.2", "resolved": "https://registry.node-modules.io/tarballs/glob/7.1.2.tgz", @@ -4862,11 +4887,14 @@ "path-is-absolute": "^1.0.0" } }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.node-modules.io/tarballs/glob-to-regexp/0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } }, "globby": { "version": "6.1.0", @@ -4894,9 +4922,9 @@ "dev": true }, "handlebars": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", - "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.2.tgz", + "integrity": "sha512-cIv17+GhL8pHHnRJzGu2wwcthL5sb8uDKBHvZ2Dtu5s1YNt0ljbzKbamnc+gr69y7bzwQiBdr5+hOpRd5pnOdg==", "dev": true, "requires": { "neo-async": "^2.6.0", @@ -4964,6 +4992,7 @@ "resolved": "https://registry.node-modules.io/tarballs/has-value/1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, + "optional": true, "requires": { "get-value": "^2.0.6", "has-values": "^1.0.0", @@ -4974,7 +5003,8 @@ "version": "3.0.1", "resolved": "https://registry.node-modules.io/tarballs/isobject/3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "optional": true } } }, @@ -4983,6 +5013,7 @@ "resolved": "https://registry.node-modules.io/tarballs/has-values/1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, + "optional": true, "requires": { "is-number": "^3.0.0", "kind-of": "^4.0.0" @@ -4993,6 +5024,7 @@ "resolved": "https://registry.node-modules.io/tarballs/is-number/3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2" }, @@ -5002,6 +5034,7 @@ "resolved": "https://registry.node-modules.io/tarballs/kind-of/3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -5013,6 +5046,7 @@ "resolved": "https://registry.node-modules.io/tarballs/kind-of/4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -5035,9 +5069,9 @@ "dev": true }, "hook-std": { - "version": "1.1.0", - "resolved": "https://registry.node-modules.io/tarballs/hook-std/1.1.0.tgz", - "integrity": "sha512-aIyBZbZl3NS8XoSwIDQ+ZaiBuPOhhPWoBFA3QX0Q8hOMO8Tx4xGRTDnn/nl/LAtZWdieXzFC9ohAtTSnWrlHCQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-2.0.0.tgz", + "integrity": "sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==", "dev": true }, "hosted-git-info": { @@ -5048,12 +5082,23 @@ }, "http-proxy-agent": { "version": "2.1.0", - "resolved": "https://registry.node-modules.io/tarballs/http-proxy-agent/2.1.0.tgz", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", "dev": true, "requires": { "agent-base": "4", "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } } }, "http-signature": { @@ -5068,13 +5113,30 @@ } }, "https-proxy-agent": { - "version": "2.2.1", - "resolved": "https://registry.node-modules.io/tarballs/https-proxy-agent/2.2.1.tgz", - "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz", + "integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==", "dev": true, "requires": { - "agent-base": "^4.1.0", + "agent-base": "^4.3.0", "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } } }, "husky": { @@ -5252,9 +5314,9 @@ } }, "ignore": { - "version": "3.3.10", - "resolved": "https://registry.node-modules.io/tarballs/ignore/3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", "dev": true }, "import-fresh": { @@ -5268,18 +5330,18 @@ } }, "import-from": { - "version": "2.1.0", - "resolved": "https://registry.node-modules.io/tarballs/import-from/2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", "dev": true, "requires": { - "resolve-from": "^3.0.0" + "resolve-from": "^5.0.0" }, "dependencies": { "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/resolve-from/3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true } } @@ -5314,7 +5376,7 @@ }, "ini": { "version": "1.3.5", - "resolved": "https://registry.node-modules.io/tarballs/ini/1.3.5.tgz", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, @@ -5377,13 +5439,13 @@ } }, "into-stream": { - "version": "4.0.0", - "resolved": "https://registry.node-modules.io/tarballs/into-stream/4.0.0.tgz", - "integrity": "sha512-i29KNyE5r0Y/UQzcQ0IbZO1MYJ53Jn0EcFRZPj5FzWKYH17kDFEOwuA+3jroymOI06SW1dEDnly9A1CAreC5dg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-5.1.1.tgz", + "integrity": "sha512-krrAJ7McQxGGmvaYbB7Q1mcA+cRwg9Ij2RfWIeVesNBgVDZmzY/Fa4IpZUT3bmdRzMzdf/mzltCG2Dq99IZGBA==", "dev": true, "requires": { - "from2": "^2.1.1", - "p-is-promise": "^2.0.0" + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" } }, "invariant": { @@ -5406,6 +5468,7 @@ "resolved": "https://registry.node-modules.io/tarballs/is-accessor-descriptor/0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2" } @@ -5430,7 +5493,8 @@ "version": "1.1.6", "resolved": "https://registry.node-modules.io/tarballs/is-buffer/1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "dev": true, + "optional": true }, "is-builtin-module": { "version": "1.0.0", @@ -5461,6 +5525,7 @@ "resolved": "https://registry.node-modules.io/tarballs/is-data-descriptor/0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2" } @@ -5476,6 +5541,7 @@ "resolved": "https://registry.node-modules.io/tarballs/is-descriptor/0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, + "optional": true, "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -5486,7 +5552,8 @@ "version": "5.1.0", "resolved": "https://registry.node-modules.io/tarballs/kind-of/5.1.0.tgz", "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true + "dev": true, + "optional": true } } }, @@ -5500,6 +5567,13 @@ "version": "0.1.1", "resolved": "https://registry.node-modules.io/tarballs/is-extendable/0.1.1.tgz", "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "optional": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, "is-fullwidth-code-point": { @@ -5508,6 +5582,21 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, "is-obj": { "version": "1.0.1", "resolved": "https://registry.node-modules.io/tarballs/is-obj/1.0.1.tgz", @@ -5558,6 +5647,7 @@ "resolved": "https://registry.node-modules.io/tarballs/is-plain-object/2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, + "optional": true, "requires": { "isobject": "^3.0.1" }, @@ -5566,7 +5656,8 @@ "version": "3.0.1", "resolved": "https://registry.node-modules.io/tarballs/isobject/3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "optional": true } } }, @@ -5591,15 +5682,6 @@ "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", "dev": true }, - "is-ssh": { - "version": "1.3.0", - "resolved": "https://registry.node-modules.io/tarballs/is-ssh/1.3.0.tgz", - "integrity": "sha1-6+oRaaJhTaOSpjdANmw84EnY3/Y=", - "dev": true, - "requires": { - "protocols": "^1.1.0" - } - }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.node-modules.io/tarballs/is-stream/1.1.0.tgz", @@ -5608,7 +5690,7 @@ }, "is-subset": { "version": "0.1.1", - "resolved": "https://registry.node-modules.io/tarballs/is-subset/0.1.1.tgz", + "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", "dev": true }, @@ -5623,7 +5705,7 @@ }, "is-text-path": { "version": "1.0.1", - "resolved": "https://registry.node-modules.io/tarballs/is-text-path/1.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", "dev": true, "requires": { @@ -5640,7 +5722,8 @@ "version": "1.0.2", "resolved": "https://registry.node-modules.io/tarballs/is-windows/1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true + "dev": true, + "optional": true }, "isarray": { "version": "1.0.0", @@ -5654,6 +5737,12 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "dev": true + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.node-modules.io/tarballs/isstream/0.1.2.tgz", @@ -5661,9 +5750,9 @@ "dev": true }, "issue-parser": { - "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/issue-parser/3.0.0.tgz", - "integrity": "sha512-VWIhBdy0eOhlvpxOOMecBCHMpjx7lWVZcYpSzjD4dSdxptzI9TBR/cQEh057HL8+7jQKTLs+uCtezY/9VoveCA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-4.0.0.tgz", + "integrity": "sha512-1RmmAXHl5+cqTZ9dRr861xWy0Gkc9TWTEklgjKv+nhlB1dY1NmGBV8b20jTWRL5cPGpOIXkz84kEcDBM8Nc0cw==", "dev": true, "requires": { "lodash.capitalize": "^4.2.1", @@ -5779,9 +5868,9 @@ }, "dependencies": { "handlebars": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", - "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.2.tgz", + "integrity": "sha512-cIv17+GhL8pHHnRJzGu2wwcthL5sb8uDKBHvZ2Dtu5s1YNt0ljbzKbamnc+gr69y7bzwQiBdr5+hOpRd5pnOdg==", "dev": true, "requires": { "neo-async": "^2.6.0", @@ -5799,9 +5888,9 @@ } }, "java-properties": { - "version": "0.2.10", - "resolved": "https://registry.node-modules.io/tarballs/java-properties/0.2.10.tgz", - "integrity": "sha512-CpKJh9VRNhS+XqZtg1UMejETGEiqwCGDC/uwPEEQwc2nfdbSm73SIE29TplG2gLYuBOOTNDqxzG6A9NtEPLt0w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", + "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", "dev": true }, "js-levenshtein": { @@ -5864,7 +5953,7 @@ }, "jsonfile": { "version": "4.0.0", - "resolved": "https://registry.node-modules.io/tarballs/jsonfile/4.0.0.tgz", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { @@ -5873,7 +5962,7 @@ }, "jsonparse": { "version": "1.3.1", - "resolved": "https://registry.node-modules.io/tarballs/jsonparse/1.3.1.tgz", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true }, @@ -5894,6 +5983,7 @@ "resolved": "https://registry.node-modules.io/tarballs/kind-of/3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -5923,6 +6013,12 @@ "type-check": "~0.3.2" } }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, "lint-staged": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-9.1.0.tgz", @@ -6284,21 +6380,15 @@ "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", "dev": true }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.node-modules.io/tarballs/lodash.assign/4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true - }, "lodash.capitalize": { "version": "4.2.1", - "resolved": "https://registry.node-modules.io/tarballs/lodash.capitalize/4.2.1.tgz", + "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", "integrity": "sha1-+CbJtOKoUR2E46yinbBeGk87cqk=", "dev": true }, "lodash.escaperegexp": { "version": "4.1.2", - "resolved": "https://registry.node-modules.io/tarballs/lodash.escaperegexp/4.1.2.tgz", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=", "dev": true }, @@ -6308,27 +6398,51 @@ "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "dev": true }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", + "dev": true + }, "lodash.isplainobject": { "version": "4.0.6", - "resolved": "https://registry.node-modules.io/tarballs/lodash.isplainobject/4.0.6.tgz", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", "dev": true }, "lodash.isstring": { "version": "4.0.1", - "resolved": "https://registry.node-modules.io/tarballs/lodash.isstring/4.0.1.tgz", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", "dev": true }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", + "dev": true + }, "lodash.toarray": { "version": "4.4.0", - "resolved": "https://registry.node-modules.io/tarballs/lodash.toarray/4.4.0.tgz", + "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", "dev": true }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, "lodash.uniqby": { "version": "4.7.0", - "resolved": "https://registry.node-modules.io/tarballs/lodash.uniqby/4.7.0.tgz", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", "integrity": "sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=", "dev": true }, @@ -6418,7 +6532,7 @@ }, "loud-rejection": { "version": "1.6.0", - "resolved": "https://registry.node-modules.io/tarballs/loud-rejection/1.6.0.tgz", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", "dev": true, "requires": { @@ -6437,9 +6551,9 @@ } }, "macos-release": { - "version": "1.1.0", - "resolved": "https://registry.node-modules.io/tarballs/macos-release/1.1.0.tgz", - "integrity": "sha512-mmLbumEYMi5nXReB9js3WGsB8UE6cDBWyIO62Z4DNx6GbRhDxHNjA1MlzSpJ2S2KM1wyiPRA0d19uHWYYvMHjA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz", + "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==", "dev": true }, "make-dir": { @@ -6473,11 +6587,12 @@ "version": "0.2.2", "resolved": "https://registry.node-modules.io/tarballs/map-cache/0.2.2.tgz", "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true + "dev": true, + "optional": true }, "map-obj": { "version": "2.0.0", - "resolved": "https://registry.node-modules.io/tarballs/map-obj/2.0.0.tgz", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", "dev": true }, @@ -6486,32 +6601,34 @@ "resolved": "https://registry.node-modules.io/tarballs/map-visit/1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, + "optional": true, "requires": { "object-visit": "^1.0.0" } }, "marked": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.5.2.tgz", - "integrity": "sha512-fdZvBa7/vSQIZCi4uuwo2N3q+7jJURpMVCcbaX0S1Mg65WZ5ilXvC67MviJAsdjqqgD+CEq4RKo5AYGgINkVAA==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", + "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==", "dev": true }, "marked-terminal": { - "version": "3.1.1", - "resolved": "https://registry.node-modules.io/tarballs/marked-terminal/3.1.1.tgz", - "integrity": "sha512-7UBFww1rdx0w9HehLMCVYa8/AxXaiDigDfMsJcj82/wgLQG9cj+oiMAVlJpeWD57VFJY2OYY+bKeEVIjIlxi+w==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-3.3.0.tgz", + "integrity": "sha512-+IUQJ5VlZoAFsM5MHNT7g3RHSkA3eETqhRCdXv4niUMAKHQ7lb1yvAcuGPmm4soxhmtX13u4Li6ZToXtvSEH+A==", "dev": true, "requires": { + "ansi-escapes": "^3.1.0", "cardinal": "^2.1.1", "chalk": "^2.4.1", "cli-table": "^0.3.1", - "lodash.assign": "^4.2.0", - "node-emoji": "^1.4.1" + "node-emoji": "^1.4.1", + "supports-hyperlinks": "^1.0.1" }, "dependencies": { "ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.node-modules.io/tarballs/ansi-styles/3.2.1.tgz", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { @@ -6519,9 +6636,9 @@ } }, "chalk": { - "version": "2.4.1", - "resolved": "https://registry.node-modules.io/tarballs/chalk/2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -6552,7 +6669,7 @@ }, "meow": { "version": "4.0.1", - "resolved": "https://registry.node-modules.io/tarballs/meow/4.0.1.tgz", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", "dev": true, "requires": { @@ -6569,7 +6686,7 @@ "dependencies": { "find-up": { "version": "2.1.0", - "resolved": "https://registry.node-modules.io/tarballs/find-up/2.1.0.tgz", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { @@ -6578,7 +6695,7 @@ }, "load-json-file": { "version": "4.0.0", - "resolved": "https://registry.node-modules.io/tarballs/load-json-file/4.0.0.tgz", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { @@ -6590,13 +6707,13 @@ }, "minimist": { "version": "1.2.0", - "resolved": "https://registry.node-modules.io/tarballs/minimist/1.2.0.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, "parse-json": { "version": "4.0.0", - "resolved": "https://registry.node-modules.io/tarballs/parse-json/4.0.0.tgz", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { @@ -6606,7 +6723,7 @@ }, "path-type": { "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/path-type/3.0.0.tgz", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { @@ -6615,13 +6732,13 @@ }, "pify": { "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/pify/3.0.0.tgz", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, "read-pkg": { "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/read-pkg/3.0.0.tgz", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { @@ -6632,7 +6749,7 @@ }, "read-pkg-up": { "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/read-pkg-up/3.0.0.tgz", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", "dev": true, "requires": { @@ -6666,15 +6783,25 @@ "dev": true }, "merge2": { - "version": "1.2.3", - "resolved": "https://registry.node-modules.io/tarballs/merge2/1.2.3.tgz", - "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", "dev": true }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, "mime": { - "version": "2.3.1", - "resolved": "https://registry.node-modules.io/tarballs/mime/2.3.1.tgz", - "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", "dev": true }, "mime-db": { @@ -6715,7 +6842,7 @@ }, "minimist-options": { "version": "3.0.2", - "resolved": "https://registry.node-modules.io/tarballs/minimist-options/3.0.2.tgz", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", "dev": true, "requires": { @@ -6728,6 +6855,7 @@ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, + "optional": true, "requires": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" @@ -6738,6 +6866,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, + "optional": true, "requires": { "is-plain-object": "^2.0.4" } @@ -7015,7 +7144,7 @@ }, "modify-values": { "version": "1.0.1", - "resolved": "https://registry.node-modules.io/tarballs/modify-values/1.0.1.tgz", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", "dev": true }, @@ -7036,6 +7165,7 @@ "resolved": "https://registry.node-modules.io/tarballs/nanomatch/1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "dev": true, + "optional": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -7054,19 +7184,22 @@ "version": "4.0.0", "resolved": "https://registry.node-modules.io/tarballs/arr-diff/4.0.0.tgz", "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true + "dev": true, + "optional": true }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.node-modules.io/tarballs/array-unique/0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true + "dev": true, + "optional": true }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.node-modules.io/tarballs/kind-of/6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "dev": true, + "optional": true } } }, @@ -7084,7 +7217,7 @@ }, "nerf-dart": { "version": "1.0.0", - "resolved": "https://registry.node-modules.io/tarballs/nerf-dart/1.0.0.tgz", + "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=", "dev": true }, @@ -7101,9 +7234,9 @@ "dev": true }, "node-emoji": { - "version": "1.8.1", - "resolved": "https://registry.node-modules.io/tarballs/node-emoji/1.8.1.tgz", - "integrity": "sha512-+ktMAh1Jwas+TnGodfCfjUbJKoANqPaJFN0z0iqh41eqD8dvguNzcitVSBSVK1pidz0AqGbLKcoVuVLRVZ/aVg==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", + "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", "dev": true, "requires": { "lodash.toarray": "^4.4.0" @@ -7128,9 +7261,9 @@ } }, "node-fetch": { - "version": "2.2.0", - "resolved": "https://registry.node-modules.io/tarballs/node-fetch/2.2.0.tgz", - "integrity": "sha512-OayFWziIxiHY8bCUyLX6sTpDH8Jsbp4FfYd1j1f7vZyfgkcOnAyM4oQR16f8a0s7Gl/viMGRey8eScYk4V4EZA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", "dev": true }, "node-modules-regexp": { @@ -7161,15 +7294,15 @@ } }, "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.node-modules.io/tarballs/normalize-url/3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", "dev": true }, "npm": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/npm/-/npm-6.10.1.tgz", - "integrity": "sha512-ejR83c5aPTip5hPhziypqkJu06vb5tDIugCXx1c5+04RbMjtZeMA6BfsuGnV9EBdEwzKoaHkQ9sJWQAq+LjHYw==", + "version": "6.11.3", + "resolved": "https://registry.npmjs.org/npm/-/npm-6.11.3.tgz", + "integrity": "sha512-K2h+MPzZiY39Xf6eHEdECe/LKoJXam4UCflz5kIxoskN3LQFeYs5fqBGT5i4TtM/aBk+86Mcf+jgXs/WuWAutQ==", "dev": true, "requires": { "JSONStream": "^1.3.5", @@ -7178,16 +7311,16 @@ "ansistyles": "~0.1.3", "aproba": "^2.0.0", "archy": "~1.0.0", - "bin-links": "^1.1.2", + "bin-links": "^1.1.3", "bluebird": "^3.5.5", "byte-size": "^5.0.1", - "cacache": "^11.3.3", + "cacache": "^12.0.3", "call-limit": "^1.1.1", "chownr": "^1.1.2", "ci-info": "^2.0.0", "cli-columns": "^3.1.2", "cli-table3": "^0.5.1", - "cmd-shim": "~2.0.2", + "cmd-shim": "^3.0.3", "columnify": "~1.5.4", "config-chain": "^1.1.12", "debuglog": "*", @@ -7199,13 +7332,14 @@ "find-npm-prefix": "^1.0.2", "fs-vacuum": "~1.2.10", "fs-write-stream-atomic": "~1.0.10", - "gentle-fs": "^2.0.1", + "gentle-fs": "^2.2.1", "glob": "^7.1.4", - "graceful-fs": "^4.2.0", + "graceful-fs": "^4.2.2", "has-unicode": "~2.0.1", - "hosted-git-info": "^2.7.1", + "hosted-git-info": "^2.8.2", "iferr": "^1.0.2", "imurmurhash": "*", + "infer-owner": "^1.0.4", "inflight": "~1.0.6", "inherits": "^2.0.4", "ini": "^1.3.5", @@ -7213,13 +7347,13 @@ "is-cidr": "^3.0.0", "json-parse-better-errors": "^1.0.2", "lazy-property": "~1.0.0", - "libcipm": "^4.0.0", - "libnpm": "^3.0.0", - "libnpmaccess": "*", - "libnpmhook": "^5.0.2", - "libnpmorg": "*", - "libnpmsearch": "^2.0.1", - "libnpmteam": "*", + "libcipm": "^4.0.3", + "libnpm": "^3.0.1", + "libnpmaccess": "^3.0.2", + "libnpmhook": "^5.0.3", + "libnpmorg": "^1.0.1", + "libnpmsearch": "^2.0.2", + "libnpmteam": "^1.0.2", "libnpx": "^10.2.0", "lock-verify": "^2.1.0", "lockfile": "^1.0.4", @@ -7239,33 +7373,33 @@ "mississippi": "^3.0.0", "mkdirp": "~0.5.1", "move-concurrently": "^1.0.1", - "node-gyp": "^5.0.2", + "node-gyp": "^5.0.3", "nopt": "~4.0.1", "normalize-package-data": "^2.5.0", "npm-audit-report": "^1.3.2", "npm-cache-filename": "~1.0.2", "npm-install-checks": "~3.0.0", - "npm-lifecycle": "^3.0.0", - "npm-package-arg": "^6.1.0", + "npm-lifecycle": "^3.1.3", + "npm-package-arg": "^6.1.1", "npm-packlist": "^1.4.4", - "npm-pick-manifest": "^2.2.3", - "npm-profile": "*", - "npm-registry-fetch": "^3.9.1", + "npm-pick-manifest": "^3.0.2", + "npm-profile": "^4.0.2", + "npm-registry-fetch": "^4.0.0", "npm-user-validate": "~1.0.0", "npmlog": "~4.1.2", "once": "~1.4.0", "opener": "^1.5.1", "osenv": "^0.1.5", - "pacote": "^9.5.1", + "pacote": "^9.5.8", "path-is-inside": "~1.0.2", "promise-inflight": "~1.0.1", "qrcode-terminal": "^0.12.0", - "query-string": "^6.8.1", + "query-string": "^6.8.2", "qw": "~1.0.1", "read": "~1.0.7", - "read-cmd-shim": "~1.0.1", + "read-cmd-shim": "^1.0.4", "read-installed": "~4.0.3", - "read-package-json": "^2.0.13", + "read-package-json": "^2.1.0", "read-package-tree": "^5.3.1", "readable-stream": "^3.4.0", "readdir-scoped-modules": "^1.1.0", @@ -7273,7 +7407,7 @@ "retry": "^0.12.0", "rimraf": "^2.6.3", "safe-buffer": "^5.1.2", - "semver": "^5.7.0", + "semver": "^5.7.1", "sha": "^3.0.0", "slide": "~1.1.6", "sorted-object": "~2.0.1", @@ -7311,7 +7445,7 @@ "dev": true }, "agent-base": { - "version": "4.2.1", + "version": "4.3.0", "bundled": true, "dev": true, "requires": { @@ -7319,7 +7453,7 @@ } }, "agentkeepalive": { - "version": "3.4.1", + "version": "3.5.2", "bundled": true, "dev": true, "requires": { @@ -7459,14 +7593,14 @@ } }, "bin-links": { - "version": "1.1.2", + "version": "1.1.3", "bundled": true, "dev": true, "requires": { - "bluebird": "^3.5.0", - "cmd-shim": "^2.0.2", - "gentle-fs": "^2.0.0", - "graceful-fs": "^4.1.11", + "bluebird": "^3.5.3", + "cmd-shim": "^3.0.0", + "gentle-fs": "^2.0.1", + "graceful-fs": "^4.1.15", "write-file-atomic": "^2.3.0" } }, @@ -7519,7 +7653,7 @@ "dev": true }, "cacache": { - "version": "11.3.3", + "version": "12.0.3", "bundled": true, "dev": true, "requires": { @@ -7528,6 +7662,7 @@ "figgy-pudding": "^3.5.1", "glob": "^7.1.4", "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", "lru-cache": "^5.1.1", "mississippi": "^3.0.0", "mkdirp": "^0.5.1", @@ -7537,21 +7672,6 @@ "ssri": "^6.0.1", "unique-filename": "^1.1.1", "y18n": "^4.0.0" - }, - "dependencies": { - "glob": { - "version": "7.1.4", - "bundled": true, - "dev": true, - "requires": { - "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" - } - } } }, "call-limit": { @@ -7657,7 +7777,7 @@ "dev": true }, "cmd-shim": { - "version": "2.0.2", + "version": "3.0.3", "bundled": true, "dev": true, "requires": { @@ -8065,7 +8185,7 @@ } }, "es6-promise": { - "version": "4.2.6", + "version": "4.2.8", "bundled": true, "dev": true }, @@ -8328,14 +8448,16 @@ "dev": true }, "gentle-fs": { - "version": "2.0.1", + "version": "2.2.1", "bundled": true, "dev": true, "requires": { "aproba": "^1.1.2", + "chownr": "^1.1.2", "fs-vacuum": "^1.2.10", "graceful-fs": "^4.1.11", "iferr": "^0.1.5", + "infer-owner": "^1.0.4", "mkdirp": "^0.5.1", "path-is-inside": "^1.0.2", "read-cmd-shim": "^1.0.1", @@ -8422,7 +8544,7 @@ } }, "graceful-fs": { - "version": "4.2.0", + "version": "4.2.2", "bundled": true, "dev": true }, @@ -8464,9 +8586,12 @@ "dev": true }, "hosted-git-info": { - "version": "2.7.1", + "version": "2.8.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "lru-cache": "^5.1.1" + } }, "http-cache-semantics": { "version": "3.8.1", @@ -8493,11 +8618,11 @@ } }, "https-proxy-agent": { - "version": "2.2.1", + "version": "2.2.2", "bundled": true, "dev": true, "requires": { - "agent-base": "^4.1.0", + "agent-base": "^4.3.0", "debug": "^3.1.0" } }, @@ -8540,6 +8665,11 @@ "bundled": true, "dev": true }, + "infer-owner": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, "inflight": { "version": "1.0.6", "bundled": true, @@ -8772,7 +8902,7 @@ } }, "libcipm": { - "version": "4.0.0", + "version": "4.0.3", "bundled": true, "dev": true, "requires": { @@ -8794,48 +8924,41 @@ } }, "libnpm": { - "version": "3.0.0", + "version": "3.0.1", "bundled": true, "dev": true, "requires": { "bin-links": "^1.1.2", "bluebird": "^3.5.3", "find-npm-prefix": "^1.0.2", - "libnpmaccess": "^3.0.1", + "libnpmaccess": "^3.0.2", "libnpmconfig": "^1.2.1", - "libnpmhook": "^5.0.2", - "libnpmorg": "^1.0.0", - "libnpmpublish": "^1.1.0", - "libnpmsearch": "^2.0.0", - "libnpmteam": "^1.0.1", + "libnpmhook": "^5.0.3", + "libnpmorg": "^1.0.1", + "libnpmpublish": "^1.1.2", + "libnpmsearch": "^2.0.2", + "libnpmteam": "^1.0.2", "lock-verify": "^2.0.2", "npm-lifecycle": "^3.0.0", "npm-logical-tree": "^1.2.1", "npm-package-arg": "^6.1.0", - "npm-profile": "^4.0.1", - "npm-registry-fetch": "^3.8.0", + "npm-profile": "^4.0.2", + "npm-registry-fetch": "^4.0.0", "npmlog": "^4.1.2", - "pacote": "^9.2.3", + "pacote": "^9.5.3", "read-package-json": "^2.0.13", "stringify-package": "^1.0.0" } }, "libnpmaccess": { - "version": "3.0.1", + "version": "3.0.2", "bundled": true, "dev": true, "requires": { "aproba": "^2.0.0", "get-stream": "^4.0.0", "npm-package-arg": "^6.1.0", - "npm-registry-fetch": "^3.8.0" - }, - "dependencies": { - "aproba": { - "version": "2.0.0", - "bundled": true, - "dev": true - } + "npm-registry-fetch": "^4.0.0" } }, "libnpmconfig": { @@ -8889,36 +9012,29 @@ } }, "libnpmhook": { - "version": "5.0.2", + "version": "5.0.3", "bundled": true, "dev": true, "requires": { "aproba": "^2.0.0", "figgy-pudding": "^3.4.1", "get-stream": "^4.0.0", - "npm-registry-fetch": "^3.8.0" + "npm-registry-fetch": "^4.0.0" } }, "libnpmorg": { - "version": "1.0.0", + "version": "1.0.1", "bundled": true, "dev": true, "requires": { "aproba": "^2.0.0", "figgy-pudding": "^3.4.1", "get-stream": "^4.0.0", - "npm-registry-fetch": "^3.8.0" - }, - "dependencies": { - "aproba": { - "version": "2.0.0", - "bundled": true, - "dev": true - } + "npm-registry-fetch": "^4.0.0" } }, "libnpmpublish": { - "version": "1.1.1", + "version": "1.1.2", "bundled": true, "dev": true, "requires": { @@ -8928,37 +9044,30 @@ "lodash.clonedeep": "^4.5.0", "normalize-package-data": "^2.4.0", "npm-package-arg": "^6.1.0", - "npm-registry-fetch": "^3.8.0", + "npm-registry-fetch": "^4.0.0", "semver": "^5.5.1", "ssri": "^6.0.1" } }, "libnpmsearch": { - "version": "2.0.1", + "version": "2.0.2", "bundled": true, "dev": true, "requires": { "figgy-pudding": "^3.5.1", "get-stream": "^4.0.0", - "npm-registry-fetch": "^3.8.0" + "npm-registry-fetch": "^4.0.0" } }, "libnpmteam": { - "version": "1.0.1", + "version": "1.0.2", "bundled": true, "dev": true, "requires": { "aproba": "^2.0.0", "figgy-pudding": "^3.4.1", "get-stream": "^4.0.0", - "npm-registry-fetch": "^3.8.0" - }, - "dependencies": { - "aproba": { - "version": "2.0.0", - "bundled": true, - "dev": true - } + "npm-registry-fetch": "^4.0.0" } }, "libnpx": { @@ -9096,12 +9205,12 @@ } }, "make-fetch-happen": { - "version": "4.0.2", + "version": "5.0.0", "bundled": true, "dev": true, "requires": { "agentkeepalive": "^3.4.1", - "cacache": "^11.3.3", + "cacache": "^12.0.0", "http-cache-semantics": "^3.8.1", "http-proxy-agent": "^2.1.0", "https-proxy-agent": "^2.2.1", @@ -9247,7 +9356,7 @@ } }, "node-gyp": { - "version": "5.0.2", + "version": "5.0.3", "bundled": true, "dev": true, "requires": { @@ -9337,7 +9446,7 @@ } }, "npm-lifecycle": { - "version": "3.0.0", + "version": "3.1.3", "bundled": true, "dev": true, "requires": { @@ -9357,13 +9466,13 @@ "dev": true }, "npm-package-arg": { - "version": "6.1.0", + "version": "6.1.1", "bundled": true, "dev": true, "requires": { - "hosted-git-info": "^2.6.0", + "hosted-git-info": "^2.7.1", "osenv": "^0.1.5", - "semver": "^5.5.0", + "semver": "^5.6.0", "validate-npm-package-name": "^3.0.0" } }, @@ -9377,7 +9486,7 @@ } }, "npm-pick-manifest": { - "version": "2.2.3", + "version": "3.0.2", "bundled": true, "dev": true, "requires": { @@ -9387,17 +9496,17 @@ } }, "npm-profile": { - "version": "4.0.1", + "version": "4.0.2", "bundled": true, "dev": true, "requires": { "aproba": "^1.1.2 || 2", "figgy-pudding": "^3.4.1", - "npm-registry-fetch": "^3.8.0" + "npm-registry-fetch": "^4.0.0" } }, "npm-registry-fetch": { - "version": "3.9.1", + "version": "4.0.0", "bundled": true, "dev": true, "requires": { @@ -9405,28 +9514,8 @@ "bluebird": "^3.5.1", "figgy-pudding": "^3.4.1", "lru-cache": "^5.1.1", - "make-fetch-happen": "^4.0.2", + "make-fetch-happen": "^5.0.0", "npm-package-arg": "^6.1.0" - }, - "dependencies": { - "make-fetch-happen": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "agentkeepalive": "^3.4.1", - "cacache": "^11.3.3", - "http-cache-semantics": "^3.8.1", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", - "lru-cache": "^5.1.1", - "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" - } - } } }, "npm-run-path": { @@ -9562,17 +9651,19 @@ } }, "pacote": { - "version": "9.5.1", + "version": "9.5.8", "bundled": true, "dev": true, "requires": { "bluebird": "^3.5.3", - "cacache": "^11.3.2", + "cacache": "^12.0.2", + "chownr": "^1.1.2", "figgy-pudding": "^3.5.1", "get-stream": "^4.1.0", "glob": "^7.1.3", + "infer-owner": "^1.0.4", "lru-cache": "^5.1.1", - "make-fetch-happen": "^4.0.1", + "make-fetch-happen": "^5.0.0", "minimatch": "^3.0.4", "minipass": "^2.3.5", "mississippi": "^3.0.0", @@ -9580,8 +9671,8 @@ "normalize-package-data": "^2.4.0", "npm-package-arg": "^6.1.0", "npm-packlist": "^1.1.12", - "npm-pick-manifest": "^2.2.3", - "npm-registry-fetch": "^3.8.0", + "npm-pick-manifest": "^3.0.0", + "npm-registry-fetch": "^4.0.0", "osenv": "^0.1.5", "promise-inflight": "^1.0.1", "promise-retry": "^1.1.1", @@ -9590,7 +9681,7 @@ "safe-buffer": "^5.1.2", "semver": "^5.6.0", "ssri": "^6.0.1", - "tar": "^4.4.8", + "tar": "^4.4.10", "unique-filename": "^1.1.1", "which": "^1.3.1" }, @@ -9788,7 +9879,7 @@ "dev": true }, "query-string": { - "version": "6.8.1", + "version": "6.8.2", "bundled": true, "dev": true, "requires": { @@ -9829,7 +9920,7 @@ } }, "read-cmd-shim": { - "version": "1.0.1", + "version": "1.0.4", "bundled": true, "dev": true, "requires": { @@ -9851,7 +9942,7 @@ } }, "read-package-json": { - "version": "2.0.13", + "version": "2.1.0", "bundled": true, "dev": true, "requires": { @@ -9991,7 +10082,7 @@ "dev": true }, "semver": { - "version": "5.7.0", + "version": "5.7.1", "bundled": true, "dev": true }, @@ -10045,26 +10136,36 @@ "dev": true }, "smart-buffer": { - "version": "4.0.1", + "version": "4.0.2", "bundled": true, "dev": true }, "socks": { - "version": "2.2.0", + "version": "2.3.2", "bundled": true, "dev": true, "requires": { "ip": "^1.1.5", - "smart-buffer": "^4.0.1" + "smart-buffer": "4.0.2" } }, "socks-proxy-agent": { - "version": "4.0.1", + "version": "4.0.2", "bundled": true, "dev": true, "requires": { - "agent-base": "~4.2.0", - "socks": "~2.2.0" + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "dependencies": { + "agent-base": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + } } }, "sorted-object": { @@ -10932,6 +11033,7 @@ "resolved": "https://registry.node-modules.io/tarballs/object-copy/0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, + "optional": true, "requires": { "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", @@ -10943,6 +11045,7 @@ "resolved": "https://registry.node-modules.io/tarballs/define-property/0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, + "optional": true, "requires": { "is-descriptor": "^0.1.0" } @@ -10960,6 +11063,7 @@ "resolved": "https://registry.node-modules.io/tarballs/object-visit/1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, + "optional": true, "requires": { "isobject": "^3.0.0" }, @@ -10968,7 +11072,8 @@ "version": "3.0.1", "resolved": "https://registry.node-modules.io/tarballs/isobject/3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "optional": true } } }, @@ -11011,6 +11116,7 @@ "resolved": "https://registry.node-modules.io/tarballs/object.pick/1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, + "optional": true, "requires": { "isobject": "^3.0.1" }, @@ -11019,10 +11125,17 @@ "version": "3.0.1", "resolved": "https://registry.node-modules.io/tarballs/isobject/3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "optional": true } } }, + "octokit-pagination-methods": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", + "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==", + "dev": true + }, "once": { "version": "1.4.0", "resolved": "https://registry.node-modules.io/tarballs/once/1.4.0.tgz", @@ -11127,13 +11240,13 @@ } }, "os-name": { - "version": "2.0.1", - "resolved": "https://registry.node-modules.io/tarballs/os-name/2.0.1.tgz", - "integrity": "sha1-uaOGNhwXrjohc27wWZQFyajF3F4=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", + "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", "dev": true, "requires": { - "macos-release": "^1.0.0", - "win-release": "^1.0.0" + "macos-release": "^2.2.0", + "windows-release": "^3.1.0" } }, "os-tmpdir": { @@ -11149,12 +11262,12 @@ "dev": true }, "p-filter": { - "version": "1.0.0", - "resolved": "https://registry.node-modules.io/tarballs/p-filter/1.0.0.tgz", - "integrity": "sha1-Yp0xcVAgnI/VCLoTdxPvS7kg6ds=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", + "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", "dev": true, "requires": { - "p-map": "^1.0.0" + "p-map": "^2.0.0" } }, "p-finally": { @@ -11164,9 +11277,9 @@ "dev": true }, "p-is-promise": { - "version": "2.0.0", - "resolved": "https://registry.node-modules.io/tarballs/p-is-promise/2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", + "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", "dev": true }, "p-limit": { @@ -11188,23 +11301,24 @@ } }, "p-map": { - "version": "1.2.0", - "resolved": "https://registry.node-modules.io/tarballs/p-map/1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true }, "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.node-modules.io/tarballs/p-reduce/1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", "dev": true }, "p-retry": { - "version": "2.0.0", - "resolved": "https://registry.node-modules.io/tarballs/p-retry/2.0.0.tgz", - "integrity": "sha512-ZbCuzAmiwJ45q4evp/IG9D+5MUllGSUeCWwPt3j/tdYSi1KPkSD+46uqmAA1LhccDhOXv8kYZKNb8x78VflzfA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.1.0.tgz", + "integrity": "sha512-oepllyG9gX1qH4Sm20YAKxg1GA7L7puhvGnTfimi31P07zSIj7SDV6YtuAx9nbJF51DES+2CIIRkXs8GKqWJxA==", "dev": true, "requires": { + "@types/retry": "^0.12.0", "retry": "^0.12.0" } }, @@ -11245,7 +11359,7 @@ }, "parse-github-url": { "version": "1.0.2", - "resolved": "https://registry.node-modules.io/tarballs/parse-github-url/1.0.2.tgz", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", "dev": true }, @@ -11258,21 +11372,12 @@ "error-ex": "^1.2.0" } }, - "parse-url": { - "version": "1.3.11", - "resolved": "https://registry.node-modules.io/tarballs/parse-url/1.3.11.tgz", - "integrity": "sha1-V8FUKKuKiSsfQ4aWRccR0OFEtVQ=", - "dev": true, - "requires": { - "is-ssh": "^1.3.0", - "protocols": "^1.4.0" - } - }, "pascalcase": { "version": "0.1.1", "resolved": "https://registry.node-modules.io/tarballs/pascalcase/0.1.1.tgz", "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true + "dev": true, + "optional": true }, "path-dirname": { "version": "1.0.2", @@ -11372,7 +11477,7 @@ }, "pkg-conf": { "version": "2.1.0", - "resolved": "https://registry.node-modules.io/tarballs/pkg-conf/2.1.0.tgz", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", "dev": true, "requires": { @@ -11382,7 +11487,7 @@ "dependencies": { "find-up": { "version": "2.1.0", - "resolved": "https://registry.node-modules.io/tarballs/find-up/2.1.0.tgz", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { @@ -11391,7 +11496,7 @@ }, "load-json-file": { "version": "4.0.0", - "resolved": "https://registry.node-modules.io/tarballs/load-json-file/4.0.0.tgz", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { @@ -11403,7 +11508,7 @@ }, "parse-json": { "version": "4.0.0", - "resolved": "https://registry.node-modules.io/tarballs/parse-json/4.0.0.tgz", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { @@ -11413,7 +11518,7 @@ }, "pify": { "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/pify/3.0.0.tgz", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true } @@ -11441,7 +11546,8 @@ "version": "0.1.1", "resolved": "https://registry.node-modules.io/tarballs/posix-character-classes/0.1.1.tgz", "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true + "dev": true, + "optional": true }, "prelude-ls": { "version": "1.1.2", @@ -11449,6 +11555,21 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, + "prettier": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz", + "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, "private": { "version": "0.1.8", "resolved": "https://registry.node-modules.io/tarballs/private/0.1.8.tgz", @@ -11475,12 +11596,6 @@ "tdigest": "^0.1.1" } }, - "protocols": { - "version": "1.4.6", - "resolved": "https://registry.node-modules.io/tarballs/protocols/1.4.6.tgz", - "integrity": "sha1-+LsmPqG1/Xp2BNJri+Ob13Z4v4o=", - "dev": true - }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.node-modules.io/tarballs/pseudomap/1.0.2.tgz", @@ -11511,7 +11626,7 @@ }, "q": { "version": "1.5.1", - "resolved": "https://registry.node-modules.io/tarballs/q/1.5.1.tgz", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", "dev": true }, @@ -11523,13 +11638,13 @@ }, "quick-lru": { "version": "1.1.0", - "resolved": "https://registry.node-modules.io/tarballs/quick-lru/1.1.0.tgz", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", "dev": true }, "rc": { "version": "1.2.8", - "resolved": "https://registry.node-modules.io/tarballs/rc/1.2.8.tgz", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "requires": { @@ -11541,7 +11656,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.node-modules.io/tarballs/minimist/1.2.0.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true } @@ -11617,7 +11732,8 @@ "version": "0.3.2", "resolved": "https://registry.node-modules.io/tarballs/array-unique/0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true + "dev": true, + "optional": true }, "braces": { "version": "2.3.2", @@ -11890,7 +12006,8 @@ "version": "6.0.2", "resolved": "https://registry.node-modules.io/tarballs/kind-of/6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "dev": true, + "optional": true }, "micromatch": { "version": "3.1.10", @@ -11918,7 +12035,7 @@ }, "redent": { "version": "2.0.0", - "resolved": "https://registry.node-modules.io/tarballs/redent/2.0.0.tgz", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", "dev": true, "requires": { @@ -11928,7 +12045,7 @@ }, "redeyed": { "version": "2.1.1", - "resolved": "https://registry.node-modules.io/tarballs/redeyed/2.1.1.tgz", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=", "dev": true, "requires": { @@ -11955,6 +12072,7 @@ "resolved": "https://registry.node-modules.io/tarballs/regex-not/1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, + "optional": true, "requires": { "extend-shallow": "^3.0.2", "safe-regex": "^1.1.0" @@ -11973,12 +12091,12 @@ "dev": true }, "registry-auth-token": { - "version": "3.3.2", - "resolved": "https://registry.node-modules.io/tarballs/registry-auth-token/3.3.2.tgz", - "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.0.0.tgz", + "integrity": "sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw==", "dev": true, "requires": { - "rc": "^1.1.6", + "rc": "^1.2.8", "safe-buffer": "^5.0.1" } }, @@ -12002,13 +12120,15 @@ "version": "1.1.3", "resolved": "https://registry.node-modules.io/tarballs/repeat-element/1.1.3.tgz", "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true + "dev": true, + "optional": true }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.node-modules.io/tarballs/repeat-string/1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "dev": true, + "optional": true }, "request": { "version": "2.88.0", @@ -12069,7 +12189,8 @@ "version": "0.2.1", "resolved": "https://registry.node-modules.io/tarballs/resolve-url/0.2.1.tgz", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true + "dev": true, + "optional": true }, "restore-cursor": { "version": "2.0.0", @@ -12085,14 +12206,21 @@ "version": "0.1.15", "resolved": "https://registry.node-modules.io/tarballs/ret/0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true + "dev": true, + "optional": true }, "retry": { "version": "0.12.0", - "resolved": "https://registry.node-modules.io/tarballs/retry/0.12.0.tgz", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", "dev": true }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -12133,6 +12261,12 @@ "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", "dev": true }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, "rxjs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", @@ -12153,6 +12287,7 @@ "resolved": "https://registry.node-modules.io/tarballs/safe-regex/1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, + "optional": true, "requires": { "ret": "~0.1.10" } @@ -12164,203 +12299,230 @@ "dev": true }, "semantic-release": { - "version": "15.10.5", - "resolved": "https://registry.node-modules.io/tarballs/semantic-release/15.10.5.tgz", - "integrity": "sha512-VrAiPxUc1DhqD7iDeIF2qRwZVC33MRHVFC/duiZuO0nDOQ4225pyx4O17o8VYWjMRyH7wFppJgdYD98u5IznRg==", + "version": "15.13.25", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-15.13.25.tgz", + "integrity": "sha512-hyiSbRkm13wVMKUwwq0nXe9AoRXZYxWttc7cnO7sRb3UjPdsI5rcFXoWvm3cBP/cRn0tUSOkbtCJd1t7vgeNvg==", "dev": true, "requires": { "@semantic-release/commit-analyzer": "^6.1.0", "@semantic-release/error": "^2.2.0", "@semantic-release/github": "^5.1.0", "@semantic-release/npm": "^5.0.5", - "@semantic-release/release-notes-generator": "^7.1.0", - "aggregate-error": "^1.0.0", + "@semantic-release/release-notes-generator": "^7.1.2", + "aggregate-error": "^3.0.0", "cosmiconfig": "^5.0.1", "debug": "^4.0.0", - "env-ci": "^3.0.0", + "env-ci": "^4.0.0", "execa": "^1.0.0", - "figures": "^2.0.0", - "find-versions": "^2.0.0", - "get-stream": "^4.0.0", + "figures": "^3.0.0", + "find-versions": "^3.0.0", + "get-stream": "^5.0.0", "git-log-parser": "^1.2.0", - "git-url-parse": "^10.0.1", - "hook-std": "^1.1.0", - "hosted-git-info": "^2.7.1", - "lodash": "^4.17.4", - "marked": "^0.5.0", - "marked-terminal": "^3.0.0", - "p-locate": "^3.0.0", - "p-reduce": "^1.0.0", - "read-pkg-up": "^4.0.0", - "resolve-from": "^4.0.0", - "semver": "^5.4.1", + "hook-std": "^2.0.0", + "hosted-git-info": "^3.0.0", + "lodash": "^4.17.15", + "marked": "^0.7.0", + "marked-terminal": "^3.2.0", + "p-locate": "^4.0.0", + "p-reduce": "^2.0.0", + "read-pkg-up": "^7.0.0", + "resolve-from": "^5.0.0", + "semver": "^6.0.0", "signale": "^1.2.1", - "yargs": "^12.0.0" + "yargs": "^14.0.0" }, "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.node-modules.io/tarballs/cross-spawn/6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "figures": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.0.0.tgz", + "integrity": "sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "escape-string-regexp": "^1.0.5" } }, - "debug": { + "find-up": { "version": "4.1.0", - "resolved": "https://registry.node-modules.io/tarballs/debug/4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "ms": "^2.1.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.node-modules.io/tarballs/execa/1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", "dev": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.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" + "pump": "^3.0.0" } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/find-up/3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "hosted-git-info": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.2.tgz", + "integrity": "sha512-ezZMWtHXm7Eb7Rq4Mwnx2vs79WUx2QmRg3+ZqeGroKzfDO+EprOcgRPYghsOP9JuYBfK18VojmRTGCg8Ma+ktw==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "lru-cache": "^5.1.1" } }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.node-modules.io/tarballs/get-stream/4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "pump": "^3.0.0" + "p-locate": "^4.1.0" } }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.node-modules.io/tarballs/load-json-file/4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "yallist": "^3.0.2" } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/locate-path/3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.node-modules.io/tarballs/ms/2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, "p-limit": { - "version": "2.0.0", - "resolved": "https://registry.node-modules.io/tarballs/p-limit/2.0.0.tgz", - "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", "dev": true, "requires": { "p-try": "^2.0.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/p-locate/3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" } }, "p-try": { - "version": "2.0.0", - "resolved": "https://registry.node-modules.io/tarballs/p-try/2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.node-modules.io/tarballs/parse-json/4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", "dev": true, "requires": { + "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" } }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/path-exists/3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/path-type/3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "requires": { - "pify": "^3.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } } }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/pify/3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/read-pkg/3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "read-pkg-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.0.tgz", + "integrity": "sha512-t2ODkS/vTTcRlKwZiZsaLGb5iwfx9Urp924aGzVyboU6+7Z2i6eGr/G1Z4mjvwLLQV3uFOBKobNRGM3ux2PD/w==", "dev": true, "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" } }, - "read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.node-modules.io/tarballs/read-pkg-up/4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", "dev": true, "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" + "path-parse": "^1.0.6" } }, "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.node-modules.io/tarballs/resolve-from/4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true } } @@ -12378,9 +12540,9 @@ "dev": true }, "semver-regex": { - "version": "1.0.0", - "resolved": "https://registry.node-modules.io/tarballs/semver-regex/1.0.0.tgz", - "integrity": "sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", + "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", "dev": true }, "set-blocking": { @@ -12394,6 +12556,7 @@ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, + "optional": true, "requires": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -12406,6 +12569,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -12434,9 +12598,9 @@ "dev": true }, "signale": { - "version": "1.3.0", - "resolved": "https://registry.node-modules.io/tarballs/signale/1.3.0.tgz", - "integrity": "sha512-TyFhsQ9wZDYDfsPqWMyjCxsDoMwfpsT0130Mce7wDiVCSDdtWSg83dOqoj8aGpGCs3n1YPcam6sT1OFPuGT/OQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", + "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", "dev": true, "requires": { "chalk": "^2.3.2", @@ -12446,7 +12610,7 @@ "dependencies": { "ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.node-modules.io/tarballs/ansi-styles/3.2.1.tgz", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { @@ -12454,9 +12618,9 @@ } }, "chalk": { - "version": "2.4.1", - "resolved": "https://registry.node-modules.io/tarballs/chalk/2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -12467,9 +12631,9 @@ } }, "slash": { - "version": "1.0.0", - "resolved": "https://registry.node-modules.io/tarballs/slash/1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, "slice-ansi": { @@ -12499,6 +12663,7 @@ "resolved": "https://registry.node-modules.io/tarballs/snapdragon/0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, + "optional": true, "requires": { "base": "^0.11.1", "debug": "^2.2.0", @@ -12515,6 +12680,7 @@ "resolved": "https://registry.node-modules.io/tarballs/debug/2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "optional": true, "requires": { "ms": "2.0.0" } @@ -12524,6 +12690,7 @@ "resolved": "https://registry.node-modules.io/tarballs/define-property/0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, + "optional": true, "requires": { "is-descriptor": "^0.1.0" } @@ -12533,6 +12700,7 @@ "resolved": "https://registry.node-modules.io/tarballs/extend-shallow/2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -12544,6 +12712,7 @@ "resolved": "https://registry.node-modules.io/tarballs/snapdragon-node/2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, + "optional": true, "requires": { "define-property": "^1.0.0", "isobject": "^3.0.0", @@ -12555,6 +12724,7 @@ "resolved": "https://registry.node-modules.io/tarballs/define-property/1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, + "optional": true, "requires": { "is-descriptor": "^1.0.0" } @@ -12564,6 +12734,7 @@ "resolved": "https://registry.node-modules.io/tarballs/is-accessor-descriptor/1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -12573,6 +12744,7 @@ "resolved": "https://registry.node-modules.io/tarballs/is-data-descriptor/1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -12582,6 +12754,7 @@ "resolved": "https://registry.node-modules.io/tarballs/is-descriptor/1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, + "optional": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -12592,13 +12765,15 @@ "version": "3.0.1", "resolved": "https://registry.node-modules.io/tarballs/isobject/3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "optional": true }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.node-modules.io/tarballs/kind-of/6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "dev": true, + "optional": true } } }, @@ -12607,6 +12782,7 @@ "resolved": "https://registry.node-modules.io/tarballs/snapdragon-util/3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, + "optional": true, "requires": { "kind-of": "^3.2.0" } @@ -12622,6 +12798,7 @@ "resolved": "https://registry.node-modules.io/tarballs/source-map-resolve/0.5.2.tgz", "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", "dev": true, + "optional": true, "requires": { "atob": "^2.1.1", "decode-uri-component": "^0.2.0", @@ -12634,11 +12811,12 @@ "version": "0.4.0", "resolved": "https://registry.node-modules.io/tarballs/source-map-url/0.4.0.tgz", "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true + "dev": true, + "optional": true }, "spawn-error-forwarder": { "version": "1.0.0", - "resolved": "https://registry.node-modules.io/tarballs/spawn-error-forwarder/1.0.0.tgz", + "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", "integrity": "sha1-Gv2Uc46ZmwNG17n8NzvlXgdXcCk=", "dev": true }, @@ -12690,7 +12868,7 @@ }, "split": { "version": "1.0.1", - "resolved": "https://registry.node-modules.io/tarballs/split/1.0.1.tgz", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { @@ -12702,13 +12880,14 @@ "resolved": "https://registry.node-modules.io/tarballs/split-string/3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, + "optional": true, "requires": { "extend-shallow": "^3.0.0" } }, "split2": { "version": "2.2.0", - "resolved": "https://registry.node-modules.io/tarballs/split2/2.2.0.tgz", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", "dev": true, "requires": { @@ -12743,6 +12922,7 @@ "resolved": "https://registry.node-modules.io/tarballs/static-extend/0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, + "optional": true, "requires": { "define-property": "^0.2.5", "object-copy": "^0.1.0" @@ -12753,6 +12933,7 @@ "resolved": "https://registry.node-modules.io/tarballs/define-property/0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, + "optional": true, "requires": { "is-descriptor": "^0.1.0" } @@ -12761,7 +12942,7 @@ }, "stream-combiner2": { "version": "1.1.1", - "resolved": "https://registry.node-modules.io/tarballs/stream-combiner2/1.1.1.tgz", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", "dev": true, "requires": { @@ -12851,7 +13032,7 @@ }, "strip-indent": { "version": "2.0.0", - "resolved": "https://registry.node-modules.io/tarballs/strip-indent/2.0.0.tgz", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", "dev": true }, @@ -12870,6 +13051,24 @@ "has-flag": "^3.0.0" } }, + "supports-hyperlinks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz", + "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==", + "dev": true, + "requires": { + "has-flag": "^2.0.0", + "supports-color": "^5.0.0" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + } + } + }, "symbol-observable": { "version": "1.2.0", "resolved": "https://registry.node-modules.io/tarballs/symbol-observable/1.2.0.tgz", @@ -13091,7 +13290,7 @@ }, "text-extensions": { "version": "1.9.0", - "resolved": "https://registry.node-modules.io/tarballs/text-extensions/1.9.0.tgz", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", "dev": true }, @@ -13108,12 +13307,12 @@ "dev": true }, "through2": { - "version": "2.0.3", - "resolved": "https://registry.node-modules.io/tarballs/through2/2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "requires": { - "readable-stream": "^2.1.5", + "readable-stream": "~2.3.6", "xtend": "~4.0.1" } }, @@ -13131,6 +13330,7 @@ "resolved": "https://registry.node-modules.io/tarballs/to-object-path/0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2" } @@ -13140,6 +13340,7 @@ "resolved": "https://registry.node-modules.io/tarballs/to-regex/3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, + "optional": true, "requires": { "define-property": "^2.0.2", "extend-shallow": "^3.0.2", @@ -13152,6 +13353,7 @@ "resolved": "https://registry.node-modules.io/tarballs/to-regex-range/2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, + "optional": true, "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" @@ -13162,6 +13364,7 @@ "resolved": "https://registry.node-modules.io/tarballs/is-number/3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2" } @@ -13180,19 +13383,19 @@ }, "traverse": { "version": "0.6.6", - "resolved": "https://registry.node-modules.io/tarballs/traverse/0.6.6.tgz", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", "dev": true }, "trim-newlines": { "version": "2.0.0", - "resolved": "https://registry.node-modules.io/tarballs/trim-newlines/2.0.0.tgz", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", "dev": true }, "trim-off-newlines": { "version": "1.0.1", - "resolved": "https://registry.node-modules.io/tarballs/trim-off-newlines/1.0.1.tgz", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", "dev": true }, @@ -13304,6 +13507,7 @@ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, + "optional": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", @@ -13312,17 +13516,17 @@ } }, "universal-user-agent": { - "version": "2.0.1", - "resolved": "https://registry.node-modules.io/tarballs/universal-user-agent/2.0.1.tgz", - "integrity": "sha512-vz+heWVydO0iyYAa65VHD7WZkYzhl7BeNVy4i54p4TF8OMiLSXdbuQe4hm+fmWAsL+rVibaQHXfhvkw3c1Ws2w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.0.tgz", + "integrity": "sha512-eM8knLpev67iBDizr/YtqkJsF3GK8gzDc6st/WKzrTuPtcsOKW/0IdL4cnMBsU69pOx0otavLWBDGTwg+dB0aA==", "dev": true, "requires": { - "os-name": "^2.0.1" + "os-name": "^3.1.0" } }, "universalify": { "version": "0.1.2", - "resolved": "https://registry.node-modules.io/tarballs/universalify/0.1.2.tgz", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, @@ -13331,6 +13535,7 @@ "resolved": "https://registry.node-modules.io/tarballs/unset-value/1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, + "optional": true, "requires": { "has-value": "^0.3.1", "isobject": "^3.0.0" @@ -13341,6 +13546,7 @@ "resolved": "https://registry.node-modules.io/tarballs/has-value/0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, + "optional": true, "requires": { "get-value": "^2.0.3", "has-values": "^0.1.4", @@ -13352,6 +13558,7 @@ "resolved": "https://registry.node-modules.io/tarballs/isobject/2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, + "optional": true, "requires": { "isarray": "1.0.0" } @@ -13362,13 +13569,15 @@ "version": "0.1.4", "resolved": "https://registry.node-modules.io/tarballs/has-values/0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true + "dev": true, + "optional": true }, "isobject": { "version": "3.0.1", "resolved": "https://registry.node-modules.io/tarballs/isobject/3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "optional": true } } }, @@ -13400,25 +13609,21 @@ "version": "0.1.0", "resolved": "https://registry.node-modules.io/tarballs/urix/0.1.0.tgz", "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true + "dev": true, + "optional": true }, "url-join": { - "version": "4.0.0", - "resolved": "https://registry.node-modules.io/tarballs/url-join/4.0.0.tgz", - "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", - "dev": true - }, - "url-template": { - "version": "2.0.8", - "resolved": "https://registry.node-modules.io/tarballs/url-template/2.0.8.tgz", - "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", "dev": true }, "use": { "version": "3.1.1", "resolved": "https://registry.node-modules.io/tarballs/use/3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true + "dev": true, + "optional": true }, "util-deprecate": { "version": "1.0.2", @@ -13477,13 +13682,13 @@ "string-width": "^1.0.2 || 2" } }, - "win-release": { - "version": "1.1.1", - "resolved": "https://registry.node-modules.io/tarballs/win-release/1.1.1.tgz", - "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", + "windows-release": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz", + "integrity": "sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==", "dev": true, "requires": { - "semver": "^5.0.1" + "execa": "^1.0.0" } }, "wordwrap": { @@ -13550,16 +13755,10 @@ "signal-exit": "^3.0.2" } }, - "xregexp": { - "version": "4.0.0", - "resolved": "https://registry.node-modules.io/tarballs/xregexp/4.0.0.tgz", - "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", - "dev": true - }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.node-modules.io/tarballs/xtend/4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, "y18n": { @@ -13575,46 +13774,68 @@ "dev": true }, "yargs": { - "version": "12.0.2", - "resolved": "https://registry.node-modules.io/tarballs/yargs/12.0.2.tgz", - "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.0.tgz", + "integrity": "sha512-/is78VKbKs70bVZH7w4YaZea6xcJWOAwkhbR0CFuZBmYtfTYF0xjGJF43AYd8g2Uii1yJwmS5GR2vBmrc32sbg==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^2.0.0", + "cliui": "^5.0.0", + "decamelize": "^1.2.0", "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^10.1.0" + "y18n": "^4.0.0", + "yargs-parser": "^15.0.0" }, "dependencies": { - "decamelize": { - "version": "2.0.0", - "resolved": "https://registry.node-modules.io/tarballs/decamelize/2.0.0.tgz", - "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "xregexp": "4.0.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" } }, "find-up": { "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/find-up/3.0.0.tgz", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { "locate-path": "^3.0.0" } }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, "locate-path": { "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/locate-path/3.0.0.tgz", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { @@ -13623,9 +13844,9 @@ } }, "p-limit": { - "version": "2.0.0", - "resolved": "https://registry.node-modules.io/tarballs/p-limit/2.0.0.tgz", - "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -13633,7 +13854,7 @@ }, "p-locate": { "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/p-locate/3.0.0.tgz", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { @@ -13641,26 +13862,72 @@ } }, "p-try": { - "version": "2.0.0", - "resolved": "https://registry.node-modules.io/tarballs/p-try/2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "path-exists": { "version": "3.0.0", - "resolved": "https://registry.node-modules.io/tarballs/path-exists/3.0.0.tgz", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } } } }, "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.node-modules.io/tarballs/yargs-parser/10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ==", "dev": true, "requires": { - "camelcase": "^4.1.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } } }, "yargs-unparser": { diff --git a/package.json b/package.json index c2840f2..8be608d 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "description": "Convenient wrapper for prom-client to expose product's metrics to prometheus", "main": "dist/index.js", "scripts": { + "format": "prettier --write \"./**/*.{js,yml,json,md}\" --ignore-path .gitignore ", "test": "mocha --exit --ui bdd --reporter spec --require @babel/register ./src/**/*.server.test.js ./src/*.server.test.js", "test:coverage:dev": "nyc --reporter=text --require @babel/register mocha --exit --ui bdd --reporter spec --require @babel/register ./src/**/*.server.test.js ./src/*.server.test.js", "test:coverage": "nyc --reporter=lcov --require @babel/register mocha --exit --ui bdd --reporter spec --require @babel/register ./src/**/*.server.test.js ./src/*.server.test.js", @@ -44,82 +45,26 @@ "chai": "^4.2.0", "coveralls": "^3.0.1", "eslint": "^6.0.1", - "eslint-config-airbnb-base": "^13.2.0", - "eslint-plugin-flowtype": "^3.11.1", + "eslint-config-airbnb-base": "^14.0.0", + "eslint-config-prettier": "^6.4.0", "eslint-plugin-import": "^2.12.0", + "eslint-plugin-prettier": "^3.1.1", "husky": "^3.0.0", "lint-staged": "^9.1.0", "mocha": "^6.1.4", "mocha-lcov-reporter": "^1.3.0", "nyc": "^14.1.1", - "semantic-release": "^15.5.4" + "prettier": "^1.18.2", + "semantic-release": "^15.13.25" }, "dependencies": { "prom-client": "11.5.3" }, "lint-staged": { - "*.js": "eslint" - }, - "eslintConfig": { - "root": true, - "env": { - "node": true - }, - "extends": [ - "eslint-config-airbnb-base" - ], - "parser": "babel-eslint", - "rules": { - "no-multi-spaces": 0, - "indent": [ - "error", - "tab" - ], - "no-tabs": 0, - "implicit-arrow-linebreak": "warn", - "key-spacing": [ - "error", - { - "align": { - "beforeColon": false, - "afterColon": true, - "on": "colon" - } - } - ], - "no-unused-expressions": 0, - "no-param-reassign": 0, - "no-underscore-dangle": [ - "error", - { - "allowAfterThis": true - } - ], - "spaced-comment": 0, - "no-trailing-spaces": 0, - "arrow-body-style": [ - 1, - "as-needed" - ], - "flowtype/space-before-type-colon": 0, - "flowtype/space-after-type-colon": 0 - }, - "overrides": [ - { - "files": [ - "*.server.test.js" - ], - "globals": { - "describe": false, - "it": false, - "beforeEach": false, - "afterEach": false - }, - "rules": { - "no-underscore-dangle": "off", - "no-new": "off" - } - } + "*.js": [ + "eslint --fix --ignore-path .gitignore", + "prettier --write", + "git add" ] }, "babel": { diff --git a/src/MetricRegistry.js b/src/MetricRegistry.js index 7a1ef01..2f6e269 100644 --- a/src/MetricRegistry.js +++ b/src/MetricRegistry.js @@ -6,64 +6,67 @@ import Metric from './metric/Metric'; * @property {Object.} defaultLabels */ class MetricRegistry { - constructor({ labels = {}, prefix = null } = {}) { - this.prefix = prefix; - this.metrics = new Map(); - this.defaultLabels = labels; - } - - /** - * @param {String} name - * @return Metric - */ - getByName(name) { - const metricName = this._formatMetricName(name); - const metric = this.metrics.get(Metric.buildName(metricName)); - - if (!metric) { - throw new Error('Job should be registered before setting value'); - } - - return metric; - } - - /** - * @param {string} name - * @return {string} - * @private - */ - _formatMetricName(name) { - if (!this.prefix) { - return name; - } - - return `${this.prefix}_${name}`; - } - - /** - * @param {Metric} Constructor - * @param {string} metricName - * @param {Array.<{name: string, [ttl]: number, [labels]: Array.}>} metricsData - * @return {Metric} - */ - register(Constructor, metricName, { labels = [], ttl } = {}) { - if (!(Constructor.prototype instanceof Metric)) { - throw new Error('Constructor should be instance of Metric'); - } - - const labelsHash = labels.reduce((object, label) => ({ ...object, [label]: null }), {}); - - if (!labels) { - labels = this.defaultLabels; - } else { - labels = { ...this.defaultLabels, ...labelsHash }; - } - - const name = this._formatMetricName(metricName); - const metric = new Constructor(name, { labels, ttl }); - this.metrics.set(metric.getName(), metric); - return metric; - } + constructor({ labels = {}, prefix = null } = {}) { + this.prefix = prefix; + this.metrics = new Map(); + this.defaultLabels = labels; + } + + /** + * @param {String} name + * @return Metric + */ + getByName(name) { + const metricName = this._formatMetricName(name); + const metric = this.metrics.get(Metric.buildName(metricName)); + + if (!metric) { + throw new Error('Job should be registered before setting value'); + } + + return metric; + } + + /** + * @param {string} name + * @return {string} + * @private + */ + _formatMetricName(name) { + if (!this.prefix) { + return name; + } + + return `${this.prefix}_${name}`; + } + + /** + * @param {Metric} Constructor + * @param {string} metricName + * @param {Array.<{name: string, [ttl]: number, [labels]: Array.}>} metricsData + * @return {Metric} + */ + register(Constructor, metricName, { labels = [], ttl } = {}) { + if (!(Constructor.prototype instanceof Metric)) { + throw new Error('Constructor should be instance of Metric'); + } + + const labelsHash = labels.reduce( + (object, label) => ({ ...object, [label]: null }), + {}, + ); + + if (!labels) { + labels = this.defaultLabels; + } else { + labels = { ...this.defaultLabels, ...labelsHash }; + } + + const name = this._formatMetricName(metricName); + const metric = new Constructor(name, { labels, ttl }); + this.metrics.set(metric.getName(), metric); + return metric; + } } export default MetricRegistry; diff --git a/src/MetricRegistry.server.test.js b/src/MetricRegistry.server.test.js index 802d175..10f40c8 100644 --- a/src/MetricRegistry.server.test.js +++ b/src/MetricRegistry.server.test.js @@ -2,81 +2,92 @@ import { expect } from 'chai'; import promClient from 'prom-client'; import MetricRegistry from './MetricRegistry'; -import Metric from './metric/Metric'; -import GaugeMetric from './metric/GaugeMetric'; +import Metric from './metric/Metric'; +import GaugeMetric from './metric/GaugeMetric'; describe('MetricRegistry', () => { - // Чтобы не ебалось при --watch - afterEach(() => { - promClient.register.clear(); - }); - - it('Should throw error if try set value for unregister job', () => { - const metricRegistry = new MetricRegistry({ port: 9300 }); - const setValue = () => { - metricRegistry.getByName('jobTestMetric').set(10); - }; - - expect(setValue).to.throw(/registered before/); - }); - - it('Should throw error if try to call "register" with Constructor not instance of Metric', () => { - const metricRegistry = new MetricRegistry({ port: 9300 }); - const testClass = class {}; - const register = () => { - metricRegistry.register(testClass, 'jobTestMetric'); - }; - - expect(register).to.throw(/instance of Metric/); - }); - - it('Can register metric', () => { - const metricRegistry = new MetricRegistry({ port: 9300 }); - metricRegistry.register(GaugeMetric, 'jobTestMetric'); - - const realMetric = metricRegistry.getByName('jobTestMetric'); - expect(realMetric).to.be.instanceOf(Metric); - expect(realMetric.getName()).to.be.equal(Metric.buildName('jobTestMetric')); - }); - - it('Should register job with default label', () => { - const metricRegistry = new MetricRegistry({ port: 9300, labels: { pm_id: 10 } }); - metricRegistry.register(GaugeMetric, 'jobTestMetric'); - const realMetric = metricRegistry.getByName('jobTestMetric'); - expect(realMetric._labels).to.have.property('pm_id'); - }); - - it('Should register job with extra label', () => { - const metricRegistry = new MetricRegistry({ port: 9300, labels: { pm_id: 10 } }); - metricRegistry.register(GaugeMetric, 'jobTestMetric', { - labels: ['testLabel'], - }); - const realMetric = metricRegistry.getByName('jobTestMetric'); - expect(realMetric._labels).to.have.property('testLabel'); - expect(realMetric._labels).to.have.property('pm_id'); - }); - - it('Should set label value from default label', () => { - const metricRegistry = new MetricRegistry({ port: 9300, labels: { pm_id: 10 } }); - - metricRegistry.register(GaugeMetric, 'jobTestMetric'); - - metricRegistry.getByName('jobTestMetric').set(121); - const realMetric = metricRegistry.getByName('jobTestMetric').promMetric.get(); - const realMetricLabels = realMetric.values[0].labels; - - expect(realMetricLabels).to.have.deep.property('pm_id', 10); - }); - - it('Should add prefix to metric name from config', () => { - const prefix = 'prefix'; - const metricName = 'jobTestMetric'; - const metricRegistry = new MetricRegistry({ port: 9300, prefix }); - - metricRegistry.register(GaugeMetric, metricName); - - const realMetricName = Metric.buildName(`${prefix}_${metricName}`); - const realMetric = metricRegistry.getByName(metricName).promMetric.get(); - expect(realMetric.name).to.be.equal(realMetricName); - }); + // Чтобы не ебалось при --watch + afterEach(() => { + promClient.register.clear(); + }); + + it('Should throw error if try set value for unregister job', () => { + const metricRegistry = new MetricRegistry({ port: 9300 }); + const setValue = () => { + metricRegistry.getByName('jobTestMetric').set(10); + }; + + expect(setValue).to.throw(/registered before/); + }); + + it('Should throw error if try to call "register" with Constructor not instance of Metric', () => { + const metricRegistry = new MetricRegistry({ port: 9300 }); + const testClass = class {}; + const register = () => { + metricRegistry.register(testClass, 'jobTestMetric'); + }; + + expect(register).to.throw(/instance of Metric/); + }); + + it('Can register metric', () => { + const metricRegistry = new MetricRegistry({ port: 9300 }); + metricRegistry.register(GaugeMetric, 'jobTestMetric'); + + const realMetric = metricRegistry.getByName('jobTestMetric'); + expect(realMetric).to.be.instanceOf(Metric); + expect(realMetric.getName()).to.be.equal(Metric.buildName('jobTestMetric')); + }); + + it('Should register job with default label', () => { + const metricRegistry = new MetricRegistry({ + port: 9300, + labels: { pm_id: 10 }, + }); + metricRegistry.register(GaugeMetric, 'jobTestMetric'); + const realMetric = metricRegistry.getByName('jobTestMetric'); + expect(realMetric._labels).to.have.property('pm_id'); + }); + + it('Should register job with extra label', () => { + const metricRegistry = new MetricRegistry({ + port: 9300, + labels: { pm_id: 10 }, + }); + metricRegistry.register(GaugeMetric, 'jobTestMetric', { + labels: ['testLabel'], + }); + const realMetric = metricRegistry.getByName('jobTestMetric'); + expect(realMetric._labels).to.have.property('testLabel'); + expect(realMetric._labels).to.have.property('pm_id'); + }); + + it('Should set label value from default label', () => { + const metricRegistry = new MetricRegistry({ + port: 9300, + labels: { pm_id: 10 }, + }); + + metricRegistry.register(GaugeMetric, 'jobTestMetric'); + + metricRegistry.getByName('jobTestMetric').set(121); + const realMetric = metricRegistry + .getByName('jobTestMetric') + .promMetric.get(); + const realMetricLabels = realMetric.values[0].labels; + + expect(realMetricLabels).to.have.deep.property('pm_id', 10); + }); + + it('Should add prefix to metric name from config', () => { + const prefix = 'prefix'; + const metricName = 'jobTestMetric'; + const metricRegistry = new MetricRegistry({ port: 9300, prefix }); + + metricRegistry.register(GaugeMetric, metricName); + + const realMetricName = Metric.buildName(`${prefix}_${metricName}`); + const realMetric = metricRegistry.getByName(metricName).promMetric.get(); + expect(realMetric.name).to.be.equal(realMetricName); + }); }); diff --git a/src/UMetrics.js b/src/UMetrics.js index bf2cf44..02b0f86 100644 --- a/src/UMetrics.js +++ b/src/UMetrics.js @@ -1,56 +1,83 @@ +import promClient from 'prom-client'; import MetricRegistry from './MetricRegistry'; -import GaugeMetric from './metric/GaugeMetric'; -import Transport from './transport/Transport'; +import GaugeMetric from './metric/GaugeMetric'; +import Transport from './transport/Transport'; /** * @property {Transport} transport * @property {MetricRegistry} registry */ class UMetrics { - constructor(transport, { prefix, labels } = {}) { - if (!transport || !(transport instanceof Transport)) { - throw new Error('Transport must be provided and be instance of Transport'); - } - - this.transport = transport; - this.registry = new MetricRegistry({ - prefix, - labels, - }); - - return new Proxy(this, { - get(target, prop) { - if (typeof target[prop] !== 'undefined') { - return target[prop]; - } - - return target.registry.getByName(prop); - }, - }); - } - - /** - * @description проксирует вызов на registry - * @param {...*} args - * @return Metric - */ - register(...args) { - return this.registry.register(...args); - } - - /** - * @description проксирует вызов на транспорт - * @return UMetrics - */ - start() { - this.transport.start(); - return this; - } + constructor( + transport, + { + prefix = null, + labels, + nodejsMetricsEnabled = false, + nodejsMetricsInterval = 7000, + } = {}, + ) { + if (!transport || !(transport instanceof Transport)) { + throw new Error( + 'Transport must be provided and be instance of Transport', + ); + } + + this.nodejsMetricsEnabled = nodejsMetricsEnabled; + this.nodejsMetricsInterval = nodejsMetricsInterval; + this.prefix = prefix; + this.transport = transport; + this.registry = new MetricRegistry({ + prefix, + labels, + }); + + return new Proxy(this, { + get(target, prop) { + if (typeof target[prop] !== 'undefined') { + return target[prop]; + } + + return target.registry.getByName(prop); + }, + }); + } + + /** + * @description проксирует вызов на registry + * @param {...*} args + * @return Metric + */ + register(...args) { + return this.registry.register(...args); + } + + /** + * @description проксирует вызов на транспорт + * @return UMetrics + */ + start() { + if (this.nodejsMetricsEnabled) { + this.enableExportingDefaultMetrics(); + } + this.transport.start(); + return this; + } + + /** + * @private + */ + enableExportingDefaultMetrics() { + promClient.collectDefaultMetrics({ + prefix: this.prefix, + timeout: this.nodejsMetricsInterval, + }); + } } // Конструкторы метрик, как внешний интерфейс UMetrics.prototype.Metrics = { - Gauge: GaugeMetric, + Gauge: GaugeMetric, }; export default UMetrics; diff --git a/src/UMetrics.server.test.js b/src/UMetrics.server.test.js index de4dfbe..ee5ca19 100644 --- a/src/UMetrics.server.test.js +++ b/src/UMetrics.server.test.js @@ -1,32 +1,89 @@ import { expect } from 'chai'; import promClient from 'prom-client'; -import UMetrics from './UMetrics'; +import UMetrics from './UMetrics'; import Transport from './transport/Transport'; describe('UMetrics facade', () => { - // Чтобы не ебалось при --watch - afterEach(() => { - promClient.register.clear(); - }); - - it('Should throw error if transport is not provided', () => { - const createUMetrics = () => { - new UMetrics({ port: 1111 }); - }; - - expect(createUMetrics).to.throw(/Transport must be provided and be instance of Transport/); - }); - - it('Can register metric', () => { - const uMetrics = new UMetrics(new Transport(), { port: 1111 }); - const metric = uMetrics.register(uMetrics.Metrics.Gauge, 'testMetric'); - expect(metric).to.be.instanceOf(uMetrics.Metrics.Gauge); - }); - - it('Can use getters to get metrics by name', () => { - const uMetrics = new UMetrics(new Transport(), { port: 1111 }); - const realMetric = uMetrics.register(uMetrics.Metrics.Gauge, 'testMetric'); - expect(uMetrics.testMetric).to.be.equals(realMetric); - }); + // Чтобы не ебалось при --watch + afterEach(() => { + promClient.register.clear(); + }); + + it('Should throw error if transport is not provided', () => { + const createUMetrics = () => { + new UMetrics({ port: 1111 }); + }; + + expect(createUMetrics).to.throw( + /Transport must be provided and be instance of Transport/, + ); + }); + + it('Can register metric', () => { + const uMetrics = new UMetrics(new Transport(), { port: 1111 }); + const metric = uMetrics.register(uMetrics.Metrics.Gauge, 'testMetric'); + expect(metric).to.be.instanceOf(uMetrics.Metrics.Gauge); + }); + + it('Can use getters to get metrics by name', () => { + const uMetrics = new UMetrics(new Transport(), { port: 1111 }); + const realMetric = uMetrics.register(uMetrics.Metrics.Gauge, 'testMetric'); + expect(uMetrics.testMetric).to.be.equals(realMetric); + }); + + it('Should have defaultMetrics disabled by default', () => { + const uMetrics = new UMetrics(new Transport(), { port: 1111 }); + expect(uMetrics.nodejsMetricsEnabled).to.be.false; + }); + + it('Should have metricsPrefix options null by default', () => { + const uMetrics = new UMetrics(new Transport(), { port: 1111 }); + expect(uMetrics.prefix).to.be.null; + }); + + it('Should change metricsPrefix options', () => { + const uMetrics = new UMetrics(new Transport(), { + port: 1111, + prefix: 'test', + }); + expect(uMetrics.prefix).to.be.equals('test'); + }); + + it('Should have defaultMetricsInterval as 7000 ms by default', () => { + const uMetrics = new UMetrics(new Transport(), { + port: 1111, + }); + expect(uMetrics.nodejsMetricsInterval).to.be.equals(7000); + }); + + it('Should enable default metrics exports if option provided', () => { + let calledCount = 0; + const uMetrics = new UMetrics(new Transport(), { + port: 1111, + nodejsMetricsEnabled: true, + }); + + uMetrics.enableExportingDefaultMetrics = () => { + calledCount += 1; + }; + + uMetrics.start(); + expect(calledCount).to.be.equals(1); + }); + + it('Should not enable default metrics exports if option is not provided', () => { + let calledCount = 0; + const uMetrics = new UMetrics(new Transport(), { + port: 1111, + nodejsMetricsEnabled: false, + }); + + uMetrics.enableExportingDefaultMetrics = () => { + calledCount += 1; + }; + + uMetrics.start(); + expect(calledCount).to.be.equals(0); + }); }); diff --git a/src/index.js b/src/index.js index 71c6747..1d9a524 100644 --- a/src/index.js +++ b/src/index.js @@ -1,15 +1,15 @@ -import UMetrics from './UMetrics'; -import Transport from './transport/Transport'; +import UMetrics from './UMetrics'; +import Transport from './transport/Transport'; import PullTransport from './transport/PullTransport'; import PushTransport from './transport/PushTransport'; -import Metric from './metric/Metric'; -import GaugeMetric from './metric/GaugeMetric'; +import Metric from './metric/Metric'; +import GaugeMetric from './metric/GaugeMetric'; export { - UMetrics, - Transport, - PushTransport, - PullTransport, - GaugeMetric, - Metric, + UMetrics, + Transport, + PushTransport, + PullTransport, + GaugeMetric, + Metric, }; diff --git a/src/metric/GaugeMetric.js b/src/metric/GaugeMetric.js index 92740eb..4510305 100644 --- a/src/metric/GaugeMetric.js +++ b/src/metric/GaugeMetric.js @@ -3,61 +3,61 @@ import promClient from 'prom-client'; import Metric from './Metric'; class GaugeMetric extends Metric { - constructor(...args) { - super(...args); - this.promMetric = new promClient.Gauge({ - name : this.name, - labelNames: Object.keys(this._labels), - - // @TODO: Когда поймем, что это за параметр - сделаем по нормальному - help: `${this.name}_help`, - }); - } - - /** - * @param {string} action - * @param {number} value - * @param {Object.} [_labels] - * @return {GaugeMetric} - * @private - */ - _proxyCall(action, value, _labels) { - const labels = { ...this._labels, ..._labels }; - if (!labels) { - this.promMetric[action](value); - return this; - } - - this.promMetric[action](labels, value); - return this; - } - - /** - * @param {number} value - * @param {Object.} [labels] - * @return {GaugeMetric} - */ - set(value, labels) { - return this._proxyCall('set', value, labels); - } - - /** - * @param {number} [value=1] - * @param {Object.} [labels] - * @return {GaugeMetric} - */ - inc(value = 1, labels) { - return this._proxyCall('inc', value, labels); - } - - /** - * @param {number} [value=1] - * @param {Object.} [labels] - * @return {GaugeMetric} - */ - dec(value = 1, labels) { - return this._proxyCall('dec', value, labels); - } + constructor(...args) { + super(...args); + this.promMetric = new promClient.Gauge({ + name: this.name, + labelNames: Object.keys(this._labels), + + // @TODO: Когда поймем, что это за параметр - сделаем по нормальному + help: `${this.name}_help`, + }); + } + + /** + * @param {string} action + * @param {number} value + * @param {Object.} [_labels] + * @return {GaugeMetric} + * @private + */ + _proxyCall(action, value, _labels) { + const labels = { ...this._labels, ..._labels }; + if (!labels) { + this.promMetric[action](value); + return this; + } + + this.promMetric[action](labels, value); + return this; + } + + /** + * @param {number} value + * @param {Object.} [labels] + * @return {GaugeMetric} + */ + set(value, labels) { + return this._proxyCall('set', value, labels); + } + + /** + * @param {number} [value=1] + * @param {Object.} [labels] + * @return {GaugeMetric} + */ + inc(value = 1, labels) { + return this._proxyCall('inc', value, labels); + } + + /** + * @param {number} [value=1] + * @param {Object.} [labels] + * @return {GaugeMetric} + */ + dec(value = 1, labels) { + return this._proxyCall('dec', value, labels); + } } export default GaugeMetric; diff --git a/src/metric/GaugeMetric.server.test.js b/src/metric/GaugeMetric.server.test.js index fa797b9..b3e8f56 100644 --- a/src/metric/GaugeMetric.server.test.js +++ b/src/metric/GaugeMetric.server.test.js @@ -1,5 +1,5 @@ -import { expect } from 'chai'; -import promClient from 'prom-client'; +import { expect } from 'chai'; +import promClient from 'prom-client'; import GaugeMetric from './GaugeMetric'; /** @@ -7,7 +7,7 @@ import GaugeMetric from './GaugeMetric'; * @return {number} */ const getMetricValue = metricName => - promClient.register.getSingleMetric(metricName).get().values[0].value; + promClient.register.getSingleMetric(metricName).get().values[0].value; /** * @param {string} metricName @@ -15,56 +15,57 @@ const getMetricValue = metricName => * @return {string|number} */ const getLabelValue = (metricName, labelName) => - promClient.register.getSingleMetric(metricName).get().values[0].labels[labelName]; + promClient.register.getSingleMetric(metricName).get().values[0].labels[ + labelName + ]; describe('GaugeMetric', () => { - // Чтобы не ебалось при --watch - afterEach(() => { - promClient.register.clear(); - }); - - it('Can set value without labels', () => { - const metricName = 'test'; - const expectedValue = 10; - - const metric = new GaugeMetric(metricName); - metric.set(expectedValue); - // Ну да жесть, позже поправим - const realValue = getMetricValue(metricName); - expect(realValue).to.be.equal(expectedValue); - }); - - it('Can set value with labels', () => { - const metricName = 'test'; - const expectedValue = 10; - const labelName = 'testLabel'; - - const metric = new GaugeMetric(metricName, { - labels: { testLabel: null }, - }); - - metric.set(expectedValue, { [labelName]: 'testLabel' }); - // Ну да жесть, позже поправим - const labelValue = getLabelValue(metricName, labelName); - expect(labelValue).to.be.equal(labelName); - }); - - - it('Should increment value', () => { - const metricName = 'test'; - const metric = new GaugeMetric(metricName); - metric.inc(); - - const realValue = getMetricValue(metricName); - expect(realValue).to.be.equal(1); - }); - - it('Should decrement value', () => { - const metricName = 'test'; - const metric = new GaugeMetric(metricName); - metric.dec(); - - const realValue = getMetricValue(metricName); - expect(realValue).to.be.equal(-1); - }); + // Чтобы не ебалось при --watch + afterEach(() => { + promClient.register.clear(); + }); + + it('Can set value without labels', () => { + const metricName = 'test'; + const expectedValue = 10; + + const metric = new GaugeMetric(metricName); + metric.set(expectedValue); + // Ну да жесть, позже поправим + const realValue = getMetricValue(metricName); + expect(realValue).to.be.equal(expectedValue); + }); + + it('Can set value with labels', () => { + const metricName = 'test'; + const expectedValue = 10; + const labelName = 'testLabel'; + + const metric = new GaugeMetric(metricName, { + labels: { testLabel: null }, + }); + + metric.set(expectedValue, { [labelName]: 'testLabel' }); + // Ну да жесть, позже поправим + const labelValue = getLabelValue(metricName, labelName); + expect(labelValue).to.be.equal(labelName); + }); + + it('Should increment value', () => { + const metricName = 'test'; + const metric = new GaugeMetric(metricName); + metric.inc(); + + const realValue = getMetricValue(metricName); + expect(realValue).to.be.equal(1); + }); + + it('Should decrement value', () => { + const metricName = 'test'; + const metric = new GaugeMetric(metricName); + metric.dec(); + + const realValue = getMetricValue(metricName); + expect(realValue).to.be.equal(-1); + }); }); diff --git a/src/metric/Metric.js b/src/metric/Metric.js index cefdd34..fccb8c2 100644 --- a/src/metric/Metric.js +++ b/src/metric/Metric.js @@ -5,59 +5,59 @@ * @property {Number} [ttl] */ class Metric { - /** - * @param {string} name - * @param {number} ttl (ms) - * @param {Object.}labels - */ - constructor(name, { ttl, labels = {} } = {}) { - if (!name) { - throw new Error('Name not provided'); - } - this.name = Metric.buildName(name); - - if (ttl) { - this.setInterval(ttl); - } - - this._labels = labels; - this.promMetric = null; - } - - /** - * @param {String} name - * @return {String} - */ - static buildName(name) { - return name.replace(/([A-Z])/g, '_$1').toLowerCase(); - } - - /** - * @return {String} - */ - getName() { - return this.name; - } - - /** - * @param {number} ttl - * @private - */ - setInterval(ttl) { - this.interval = setInterval(() => { - this.promMetric && this.promMetric.reset(); - }, ttl); - } - - /** - * @private - */ - clearInterval() { - if (this.interval) { - clearInterval(this.interval); - this.interval = null; - } - } + /** + * @param {string} name + * @param {number} ttl (ms) + * @param {Object.}labels + */ + constructor(name, { ttl, labels = {} } = {}) { + if (!name) { + throw new Error('Name not provided'); + } + this.name = Metric.buildName(name); + + if (ttl) { + this.setInterval(ttl); + } + + this._labels = labels; + this.promMetric = null; + } + + /** + * @param {String} name + * @return {String} + */ + static buildName(name) { + return name.replace(/([A-Z])/g, '_$1').toLowerCase(); + } + + /** + * @return {String} + */ + getName() { + return this.name; + } + + /** + * @param {number} ttl + * @private + */ + setInterval(ttl) { + this.interval = setInterval(() => { + this.promMetric && this.promMetric.reset(); + }, ttl); + } + + /** + * @private + */ + clearInterval() { + if (this.interval) { + clearInterval(this.interval); + this.interval = null; + } + } } export default Metric; diff --git a/src/metric/Metric.server.test.js b/src/metric/Metric.server.test.js index fdbbafd..ac8f24c 100644 --- a/src/metric/Metric.server.test.js +++ b/src/metric/Metric.server.test.js @@ -1,6 +1,6 @@ -import { expect } from 'chai'; -import promClient from 'prom-client'; -import Metric from './Metric'; +import { expect } from 'chai'; +import promClient from 'prom-client'; +import Metric from './Metric'; import GaugeMetric from './GaugeMetric'; /** @@ -9,54 +9,54 @@ import GaugeMetric from './GaugeMetric'; * @return {number} */ const getMetricValue = metricName => - promClient.register.getSingleMetric(metricName).get().values[0].value; - -describe('Metric', function () { - this.timeout(10000); - - // Чтобы не ебалось при --watch - afterEach(() => { - promClient.register.clear(); - }); - - it('Should throw error if name not provided', () => { - const createMetric = () => { - new Metric(); - }; - - expect(createMetric).to.throw(); - }); - - it('Should parse name to snakeCases', () => { - const metric = new Metric('jobTestMetric'); - - expect(metric.name).to.be.equals('job_test_metric'); - }); - - it('Should set interval', () => { - const ttl = 10; - const metric = new Metric('test', { ttl }); - expect(metric.interval).to.exist; - }); - - it('Should clear interval', () => { - const ttl = 10; - const metric = new Metric('test', { ttl }); - metric.clearInterval(); - expect(metric.interval).to.be.null; - }); - - it('Should reset value in ttl ms', (cb) => { - const metricName = 'test'; - const expectedValue = 10; - const ttl = 2000; - - const metric = new GaugeMetric(metricName, { ttl }); - metric.set(expectedValue); - expect(getMetricValue(metricName)).to.be.equals(expectedValue); - setTimeout(() => { - expect(getMetricValue(metricName)).to.be.equal(0); - cb(); - }, ttl + 10); - }); + promClient.register.getSingleMetric(metricName).get().values[0].value; + +describe('Metric', function() { + this.timeout(10000); + + // Чтобы не ебалось при --watch + afterEach(() => { + promClient.register.clear(); + }); + + it('Should throw error if name not provided', () => { + const createMetric = () => { + new Metric(); + }; + + expect(createMetric).to.throw(); + }); + + it('Should parse name to snakeCases', () => { + const metric = new Metric('jobTestMetric'); + + expect(metric.name).to.be.equals('job_test_metric'); + }); + + it('Should set interval', () => { + const ttl = 10; + const metric = new Metric('test', { ttl }); + expect(metric.interval).to.exist; + }); + + it('Should clear interval', () => { + const ttl = 10; + const metric = new Metric('test', { ttl }); + metric.clearInterval(); + expect(metric.interval).to.be.null; + }); + + it('Should reset value in ttl ms', cb => { + const metricName = 'test'; + const expectedValue = 10; + const ttl = 2000; + + const metric = new GaugeMetric(metricName, { ttl }); + metric.set(expectedValue); + expect(getMetricValue(metricName)).to.be.equals(expectedValue); + setTimeout(() => { + expect(getMetricValue(metricName)).to.be.equal(0); + cb(); + }, ttl + 10); + }); }); diff --git a/src/transport/PullTransport.js b/src/transport/PullTransport.js index d62acc5..3d43f8e 100644 --- a/src/transport/PullTransport.js +++ b/src/transport/PullTransport.js @@ -1,41 +1,40 @@ import promClient from 'prom-client'; -import http from 'http'; -import Transport from './Transport'; +import http from 'http'; +import Transport from './Transport'; /** * @property {Logger} logger * @property {String} port */ class PullTransport extends Transport { - constructor(logger, port) { - super(); - if (!port) { - throw new Error('Port must be provided'); - } - - this.logger = logger; - this.port = port; - } - - start() { - const server = http.createServer((req, res) => { - if (req.url !== '/metrics') { - res.statusCode = 404; - res.end('404'); - return; - } - - res.end(promClient.register.metrics()); - }); - - server.on('error', (error) => { - this.logger.info('uMetrics error pullTransport', { error }); - }); - - this.logger.info(`listen ${this.port}`); - server.listen(this.port); - } -} + constructor(logger, port) { + super(); + if (!port) { + throw new Error('Port must be provided'); + } + + this.logger = logger; + this.port = port; + } + + start() { + const server = http.createServer((req, res) => { + if (req.url !== '/metrics') { + res.statusCode = 404; + res.end('404'); + return; + } + res.end(promClient.register.metrics()); + }); + + server.on('error', error => { + this.logger.info('uMetrics error pullTransport', { error }); + }); + + this.logger.info(`listen ${this.port}`); + server.listen(this.port); + } +} export default PullTransport; diff --git a/src/transport/PullTransport.server.test.js b/src/transport/PullTransport.server.test.js index 3fb073a..53c984f 100644 --- a/src/transport/PullTransport.server.test.js +++ b/src/transport/PullTransport.server.test.js @@ -1,17 +1,17 @@ -import { expect } from 'chai'; +import { expect } from 'chai'; import PullTransport from './PullTransport'; describe('PullTransport', () => { - it('Should throw error if port not provided', () => { - const createUMetrics = () => { - new PullTransport(); - }; - - expect(createUMetrics).to.throw(/Port must be provided/); - }); - - it('Should have method "start"', () => { - const pullTransport = new PullTransport({}, 3000); - expect(pullTransport).to.have.property('start'); - }); + it('Should throw error if port not provided', () => { + const createUMetrics = () => { + new PullTransport(); + }; + + expect(createUMetrics).to.throw(/Port must be provided/); + }); + + it('Should have method "start"', () => { + const pullTransport = new PullTransport({}, 3000); + expect(pullTransport).to.have.property('start'); + }); }); diff --git a/src/transport/PushTransport.js b/src/transport/PushTransport.js index 72f22c6..d339029 100644 --- a/src/transport/PushTransport.js +++ b/src/transport/PushTransport.js @@ -1,5 +1,5 @@ -import promClient from 'prom-client'; -import Transport from './Transport'; +import promClient from 'prom-client'; +import Transport from './Transport'; /** * @property {Logger} logger @@ -9,29 +9,29 @@ import Transport from './Transport'; * @property {Pushgateway} gateway */ class PushTransport extends Transport { - constructor(logger, { url, interval, jobName } = {}) { - super(); - if (!url) { - throw new Error('Url is not provided'); - } - - this.logger = logger; - this.url = url; - this.jobName = jobName; - this.interval = interval; - - this.gateway = new promClient.Pushgateway(url); - } - - start() { - setInterval(() => { - this.gateway.pushAdd({ jobName: this.jobName }, (error) => { - if (error) { - this.logger.error({ error }); - } - }); - }, this.interval); - } + constructor(logger, { url, interval, jobName } = {}) { + super(); + if (!url) { + throw new Error('Url is not provided'); + } + + this.logger = logger; + this.url = url; + this.jobName = jobName; + this.interval = interval; + + this.gateway = new promClient.Pushgateway(url); + } + + start() { + setInterval(() => { + this.gateway.pushAdd({ jobName: this.jobName }, error => { + if (error) { + this.logger.error({ error }); + } + }); + }, this.interval); + } } export default PushTransport; diff --git a/src/transport/PushTransport.server.test.js b/src/transport/PushTransport.server.test.js index 1558c53..12cd170 100644 --- a/src/transport/PushTransport.server.test.js +++ b/src/transport/PushTransport.server.test.js @@ -1,32 +1,35 @@ -import { expect } from 'chai'; +import { expect } from 'chai'; import PushTransport from './PushTransport'; describe('PushTransport', () => { - it('Should throw error if pushgateway url is not provided', () => { - const createPushTransport = () => { - new PushTransport(); - }; - - expect(createPushTransport).to.throw(/Url is not provided/); - }); - - it('Should have method "start"', () => { - const pushTransport = new PushTransport({}, { url: 'test.com' }); - expect(pushTransport).to.have.property('start'); - }); - - it('Should push metrics with an interval', (cb) => { - const pushTransport = new PushTransport({}, { url: 'test.com', interval: 500 }); - let pushTimes = 0; - pushTransport.gateway = { - pushAdd() { - pushTimes += 1; - }, - }; - pushTransport.start(); - setTimeout(() => { - expect(pushTimes).to.be.equals(2); - cb(); - }, 1100).unref(); - }); + it('Should throw error if pushgateway url is not provided', () => { + const createPushTransport = () => { + new PushTransport(); + }; + + expect(createPushTransport).to.throw(/Url is not provided/); + }); + + it('Should have method "start"', () => { + const pushTransport = new PushTransport({}, { url: 'test.com' }); + expect(pushTransport).to.have.property('start'); + }); + + it('Should push metrics with an interval', cb => { + const pushTransport = new PushTransport( + {}, + { url: 'test.com', interval: 500 }, + ); + let pushTimes = 0; + pushTransport.gateway = { + pushAdd() { + pushTimes += 1; + }, + }; + pushTransport.start(); + setTimeout(() => { + expect(pushTimes).to.be.equals(2); + cb(); + }, 1100).unref(); + }); }); diff --git a/src/transport/Transport.js b/src/transport/Transport.js index 690c295..2c518dd 100644 --- a/src/transport/Transport.js +++ b/src/transport/Transport.js @@ -1,9 +1,9 @@ class Transport { - /** - * @abstract - */ - // eslint-disable-next-line class-methods-use-this - start() {} + /** + * @abstract + */ + // eslint-disable-next-line class-methods-use-this + start() {} } export default Transport;