this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Initial version

+2023
+14
.editorconfig
··· 1 + root = true 2 + 3 + [*] 4 + indent_style = space 5 + indent_size = 2 6 + charset = utf-8 7 + trim_trailing_whitespace = true 8 + insert_final_newline = true 9 + end_of_line = lf 10 + # editorconfig-tools is unable to ignore longs strings or urls 11 + max_line_length = off 12 + 13 + [CHANGELOG.md] 14 + indent_size = false
+28
.eslintrc.json
··· 1 + { 2 + "env": { 3 + "es6": true, 4 + "node": true 5 + }, 6 + "extends": [ 7 + "airbnb-base", 8 + "plugin:prettier/recommended" 9 + ], 10 + "globals": { 11 + "Atomics": "readonly", 12 + "SharedArrayBuffer": "readonly" 13 + }, 14 + "parserOptions": { 15 + "ecmaVersion": 11, 16 + "sourceType": "module" 17 + }, 18 + "rules": { 19 + "prettier/prettier": [ 20 + "error", 21 + { 22 + "singleQuote": true 23 + } 24 + ], 25 + "no-console": "off", 26 + "no-await-in-loop": "off" 27 + } 28 + }
+204
cli.js
··· 1 + #!/usr/bin/env node 2 + 3 + const { performance } = require('perf_hooks'); 4 + const https = require('https'); 5 + const stats = require('./stats.js'); 6 + 7 + function request(options, data = '') { 8 + let started; 9 + let dnsLookup; 10 + let tcpHandshake; 11 + let sslHandshake; 12 + let ttfb; 13 + let ended; 14 + 15 + return new Promise((resolve, reject) => { 16 + started = performance.now(); 17 + const req = https.request(options, (res) => { 18 + res.once('readable', () => { 19 + ttfb = performance.now(); 20 + }); 21 + res.on('data', () => {}); 22 + res.on('end', () => { 23 + ended = performance.now(); 24 + resolve([ 25 + started, 26 + dnsLookup, 27 + tcpHandshake, 28 + sslHandshake, 29 + ttfb, 30 + ended, 31 + parseFloat(res.headers['server-timing'].slice(22)), 32 + ]); 33 + }); 34 + }); 35 + 36 + req.on('socket', (socket) => { 37 + socket.on('lookup', () => { 38 + dnsLookup = performance.now(); 39 + }); 40 + socket.on('connect', () => { 41 + tcpHandshake = performance.now(); 42 + }); 43 + socket.on('secureConnect', () => { 44 + sslHandshake = performance.now(); 45 + }); 46 + }); 47 + 48 + req.on('error', (error) => { 49 + reject(error); 50 + }); 51 + 52 + req.write(data); 53 + req.end(); 54 + }); 55 + } 56 + 57 + function download(bytes) { 58 + const options = { 59 + hostname: 'speed.cloudflare.com', 60 + path: `/__down?bytes=${bytes}`, 61 + method: 'GET', 62 + }; 63 + 64 + return request(options); 65 + } 66 + 67 + function upload(bytes) { 68 + const data = '0'.repeat(bytes); 69 + const options = { 70 + hostname: 'speed.cloudflare.com', 71 + path: '/__up', 72 + method: 'POST', 73 + headers: { 74 + 'Content-Length': Buffer.byteLength(data), 75 + }, 76 + }; 77 + 78 + return request(options, data); 79 + } 80 + 81 + function measureSpeed(bytes, duration) { 82 + return (bytes * 8) / (duration / 1000) / 1e6; 83 + } 84 + 85 + async function measureLatency() { 86 + const measurements = []; 87 + 88 + for (let i = 0; i < 20; i += 1) { 89 + await download(1000).then( 90 + (response) => { 91 + // TTFB - Server processing time 92 + measurements.push(response[4] - response[0] - response[6]); 93 + }, 94 + (error) => { 95 + console.log(`Error: ${error}`); 96 + } 97 + ); 98 + } 99 + 100 + return [ 101 + Math.min(...measurements), 102 + Math.max(...measurements), 103 + stats.average(measurements), 104 + stats.median(measurements), 105 + ]; 106 + } 107 + 108 + async function measureDownload(bytes, iterations) { 109 + const measurements = []; 110 + 111 + for (let i = 0; i < iterations; i += 1) { 112 + await download(bytes).then( 113 + (response) => { 114 + const transferTime = response[5] - response[4]; 115 + measurements.push(measureSpeed(bytes, transferTime)); 116 + }, 117 + (error) => { 118 + console.log(`Error: ${error}`); 119 + } 120 + ); 121 + } 122 + 123 + return measurements; 124 + } 125 + 126 + async function measureUpload(bytes, iterations) { 127 + const measurements = []; 128 + 129 + for (let i = 0; i < iterations; i += 1) { 130 + await upload(bytes).then( 131 + (response) => { 132 + const transferTime = response[6]; 133 + measurements.push(measureSpeed(bytes, transferTime)); 134 + }, 135 + (error) => { 136 + console.log(`Error: ${error}`); 137 + } 138 + ); 139 + } 140 + 141 + return measurements; 142 + } 143 + 144 + async function speedTest() { 145 + const ping = await measureLatency(); 146 + 147 + console.log( 148 + '\x1b[35m%s%s\x1b[0m', 149 + ' Latency: ', 150 + `${ping[3].toFixed(2)} ms` 151 + ); 152 + 153 + const test1 = await measureDownload(11000, 10); 154 + 155 + console.log( 156 + '\x1b[1m%s\x1b[33m%s\x1b[0m', 157 + ' 10kB speed: ', 158 + `${stats.median(test1).toFixed(2)} Mbps` 159 + ); 160 + 161 + const test2 = await measureDownload(101000, 10); 162 + 163 + console.log( 164 + '\x1b[1m%s\x1b[33m%s\x1b[0m', 165 + ' 100kB speed: ', 166 + `${stats.median(test2).toFixed(2)} Mbps` 167 + ); 168 + 169 + const test3 = await measureDownload(1001000, 8); 170 + 171 + console.log( 172 + '\x1b[1m%s\x1b[33m%s\x1b[0m', 173 + ' 1MB speed: ', 174 + `${stats.median(test3).toFixed(2)} Mbps` 175 + ); 176 + 177 + const test4 = await measureDownload(10001000, 5); 178 + 179 + console.log( 180 + '\x1b[1m%s\x1b[33m%s\x1b[0m', 181 + ' 10MB speed: ', 182 + `${stats.median(test4).toFixed(2)} Mbps` 183 + ); 184 + 185 + console.log( 186 + '\x1b[1m%s\x1b[32m%s\x1b[0m', 187 + 'Download speed: ', 188 + `${stats 189 + .quartile([...test1, ...test2, ...test3, ...test4], 0.9) 190 + .toFixed(2)} Mbps` 191 + ); 192 + 193 + const test5 = await measureUpload(11000, 10); 194 + const test6 = await measureUpload(101000, 10); 195 + const test7 = await measureUpload(1001000, 8); 196 + 197 + console.log( 198 + '\x1b[1m%s\x1b[32m%s\x1b[0m', 199 + ' Upload speed: ', 200 + `${stats.quartile([...test5, ...test6, ...test7], 0.9).toFixed(2)} Mbps` 201 + ); 202 + } 203 + 204 + speedTest();
+1701
package-lock.json
··· 1 + { 2 + "name": "speed-cloudflare-cli", 3 + "version": "1.0.0", 4 + "lockfileVersion": 1, 5 + "requires": true, 6 + "dependencies": { 7 + "@babel/code-frame": { 8 + "version": "7.8.3", 9 + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", 10 + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", 11 + "dev": true, 12 + "requires": { 13 + "@babel/highlight": "^7.8.3" 14 + } 15 + }, 16 + "@babel/helper-validator-identifier": { 17 + "version": "7.9.5", 18 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", 19 + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", 20 + "dev": true 21 + }, 22 + "@babel/highlight": { 23 + "version": "7.9.0", 24 + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", 25 + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", 26 + "dev": true, 27 + "requires": { 28 + "@babel/helper-validator-identifier": "^7.9.0", 29 + "chalk": "^2.0.0", 30 + "js-tokens": "^4.0.0" 31 + } 32 + }, 33 + "@types/color-name": { 34 + "version": "1.1.1", 35 + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", 36 + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", 37 + "dev": true 38 + }, 39 + "acorn": { 40 + "version": "7.2.0", 41 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", 42 + "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", 43 + "dev": true 44 + }, 45 + "acorn-jsx": { 46 + "version": "5.2.0", 47 + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", 48 + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", 49 + "dev": true 50 + }, 51 + "ajv": { 52 + "version": "6.12.2", 53 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", 54 + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", 55 + "dev": true, 56 + "requires": { 57 + "fast-deep-equal": "^3.1.1", 58 + "fast-json-stable-stringify": "^2.0.0", 59 + "json-schema-traverse": "^0.4.1", 60 + "uri-js": "^4.2.2" 61 + } 62 + }, 63 + "ansi-escapes": { 64 + "version": "4.3.1", 65 + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", 66 + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", 67 + "dev": true, 68 + "requires": { 69 + "type-fest": "^0.11.0" 70 + }, 71 + "dependencies": { 72 + "type-fest": { 73 + "version": "0.11.0", 74 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", 75 + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", 76 + "dev": true 77 + } 78 + } 79 + }, 80 + "ansi-regex": { 81 + "version": "5.0.0", 82 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 83 + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 84 + "dev": true 85 + }, 86 + "ansi-styles": { 87 + "version": "3.2.1", 88 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 89 + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 90 + "dev": true, 91 + "requires": { 92 + "color-convert": "^1.9.0" 93 + } 94 + }, 95 + "argparse": { 96 + "version": "1.0.10", 97 + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 98 + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 99 + "dev": true, 100 + "requires": { 101 + "sprintf-js": "~1.0.2" 102 + } 103 + }, 104 + "array-includes": { 105 + "version": "3.1.1", 106 + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", 107 + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", 108 + "dev": true, 109 + "requires": { 110 + "define-properties": "^1.1.3", 111 + "es-abstract": "^1.17.0", 112 + "is-string": "^1.0.5" 113 + } 114 + }, 115 + "array.prototype.flat": { 116 + "version": "1.2.3", 117 + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", 118 + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", 119 + "dev": true, 120 + "requires": { 121 + "define-properties": "^1.1.3", 122 + "es-abstract": "^1.17.0-next.1" 123 + } 124 + }, 125 + "astral-regex": { 126 + "version": "1.0.0", 127 + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", 128 + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", 129 + "dev": true 130 + }, 131 + "balanced-match": { 132 + "version": "1.0.0", 133 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 134 + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 135 + "dev": true 136 + }, 137 + "brace-expansion": { 138 + "version": "1.1.11", 139 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 140 + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 141 + "dev": true, 142 + "requires": { 143 + "balanced-match": "^1.0.0", 144 + "concat-map": "0.0.1" 145 + } 146 + }, 147 + "callsites": { 148 + "version": "3.1.0", 149 + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 150 + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 151 + "dev": true 152 + }, 153 + "chalk": { 154 + "version": "2.4.2", 155 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 156 + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 157 + "dev": true, 158 + "requires": { 159 + "ansi-styles": "^3.2.1", 160 + "escape-string-regexp": "^1.0.5", 161 + "supports-color": "^5.3.0" 162 + } 163 + }, 164 + "chardet": { 165 + "version": "0.7.0", 166 + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 167 + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", 168 + "dev": true 169 + }, 170 + "cli-cursor": { 171 + "version": "3.1.0", 172 + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 173 + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 174 + "dev": true, 175 + "requires": { 176 + "restore-cursor": "^3.1.0" 177 + } 178 + }, 179 + "cli-width": { 180 + "version": "2.2.1", 181 + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", 182 + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", 183 + "dev": true 184 + }, 185 + "color-convert": { 186 + "version": "1.9.3", 187 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 188 + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 189 + "dev": true, 190 + "requires": { 191 + "color-name": "1.1.3" 192 + } 193 + }, 194 + "color-name": { 195 + "version": "1.1.3", 196 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 197 + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 198 + "dev": true 199 + }, 200 + "concat-map": { 201 + "version": "0.0.1", 202 + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 203 + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 204 + "dev": true 205 + }, 206 + "confusing-browser-globals": { 207 + "version": "1.0.9", 208 + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", 209 + "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", 210 + "dev": true 211 + }, 212 + "contains-path": { 213 + "version": "0.1.0", 214 + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", 215 + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", 216 + "dev": true 217 + }, 218 + "cross-spawn": { 219 + "version": "6.0.5", 220 + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 221 + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 222 + "dev": true, 223 + "requires": { 224 + "nice-try": "^1.0.4", 225 + "path-key": "^2.0.1", 226 + "semver": "^5.5.0", 227 + "shebang-command": "^1.2.0", 228 + "which": "^1.2.9" 229 + }, 230 + "dependencies": { 231 + "semver": { 232 + "version": "5.7.1", 233 + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 234 + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 235 + "dev": true 236 + } 237 + } 238 + }, 239 + "debug": { 240 + "version": "4.1.1", 241 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 242 + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 243 + "dev": true, 244 + "requires": { 245 + "ms": "^2.1.1" 246 + } 247 + }, 248 + "deep-is": { 249 + "version": "0.1.3", 250 + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 251 + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 252 + "dev": true 253 + }, 254 + "define-properties": { 255 + "version": "1.1.3", 256 + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 257 + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 258 + "dev": true, 259 + "requires": { 260 + "object-keys": "^1.0.12" 261 + } 262 + }, 263 + "doctrine": { 264 + "version": "3.0.0", 265 + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 266 + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 267 + "dev": true, 268 + "requires": { 269 + "esutils": "^2.0.2" 270 + } 271 + }, 272 + "emoji-regex": { 273 + "version": "8.0.0", 274 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 275 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 276 + "dev": true 277 + }, 278 + "error-ex": { 279 + "version": "1.3.2", 280 + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 281 + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 282 + "dev": true, 283 + "requires": { 284 + "is-arrayish": "^0.2.1" 285 + } 286 + }, 287 + "es-abstract": { 288 + "version": "1.17.5", 289 + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", 290 + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", 291 + "dev": true, 292 + "requires": { 293 + "es-to-primitive": "^1.2.1", 294 + "function-bind": "^1.1.1", 295 + "has": "^1.0.3", 296 + "has-symbols": "^1.0.1", 297 + "is-callable": "^1.1.5", 298 + "is-regex": "^1.0.5", 299 + "object-inspect": "^1.7.0", 300 + "object-keys": "^1.1.1", 301 + "object.assign": "^4.1.0", 302 + "string.prototype.trimleft": "^2.1.1", 303 + "string.prototype.trimright": "^2.1.1" 304 + } 305 + }, 306 + "es-to-primitive": { 307 + "version": "1.2.1", 308 + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 309 + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 310 + "dev": true, 311 + "requires": { 312 + "is-callable": "^1.1.4", 313 + "is-date-object": "^1.0.1", 314 + "is-symbol": "^1.0.2" 315 + } 316 + }, 317 + "escape-string-regexp": { 318 + "version": "1.0.5", 319 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 320 + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 321 + "dev": true 322 + }, 323 + "eslint": { 324 + "version": "6.8.0", 325 + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", 326 + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", 327 + "dev": true, 328 + "requires": { 329 + "@babel/code-frame": "^7.0.0", 330 + "ajv": "^6.10.0", 331 + "chalk": "^2.1.0", 332 + "cross-spawn": "^6.0.5", 333 + "debug": "^4.0.1", 334 + "doctrine": "^3.0.0", 335 + "eslint-scope": "^5.0.0", 336 + "eslint-utils": "^1.4.3", 337 + "eslint-visitor-keys": "^1.1.0", 338 + "espree": "^6.1.2", 339 + "esquery": "^1.0.1", 340 + "esutils": "^2.0.2", 341 + "file-entry-cache": "^5.0.1", 342 + "functional-red-black-tree": "^1.0.1", 343 + "glob-parent": "^5.0.0", 344 + "globals": "^12.1.0", 345 + "ignore": "^4.0.6", 346 + "import-fresh": "^3.0.0", 347 + "imurmurhash": "^0.1.4", 348 + "inquirer": "^7.0.0", 349 + "is-glob": "^4.0.0", 350 + "js-yaml": "^3.13.1", 351 + "json-stable-stringify-without-jsonify": "^1.0.1", 352 + "levn": "^0.3.0", 353 + "lodash": "^4.17.14", 354 + "minimatch": "^3.0.4", 355 + "mkdirp": "^0.5.1", 356 + "natural-compare": "^1.4.0", 357 + "optionator": "^0.8.3", 358 + "progress": "^2.0.0", 359 + "regexpp": "^2.0.1", 360 + "semver": "^6.1.2", 361 + "strip-ansi": "^5.2.0", 362 + "strip-json-comments": "^3.0.1", 363 + "table": "^5.2.3", 364 + "text-table": "^0.2.0", 365 + "v8-compile-cache": "^2.0.3" 366 + } 367 + }, 368 + "eslint-config-airbnb-base": { 369 + "version": "14.1.0", 370 + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.1.0.tgz", 371 + "integrity": "sha512-+XCcfGyCnbzOnktDVhwsCAx+9DmrzEmuwxyHUJpw+kqBVT744OUBrB09khgFKlK1lshVww6qXGsYPZpavoNjJw==", 372 + "dev": true, 373 + "requires": { 374 + "confusing-browser-globals": "^1.0.9", 375 + "object.assign": "^4.1.0", 376 + "object.entries": "^1.1.1" 377 + } 378 + }, 379 + "eslint-config-prettier": { 380 + "version": "6.11.0", 381 + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz", 382 + "integrity": "sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA==", 383 + "dev": true, 384 + "requires": { 385 + "get-stdin": "^6.0.0" 386 + } 387 + }, 388 + "eslint-import-resolver-node": { 389 + "version": "0.3.3", 390 + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", 391 + "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", 392 + "dev": true, 393 + "requires": { 394 + "debug": "^2.6.9", 395 + "resolve": "^1.13.1" 396 + }, 397 + "dependencies": { 398 + "debug": { 399 + "version": "2.6.9", 400 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 401 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 402 + "dev": true, 403 + "requires": { 404 + "ms": "2.0.0" 405 + } 406 + }, 407 + "ms": { 408 + "version": "2.0.0", 409 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 410 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 411 + "dev": true 412 + } 413 + } 414 + }, 415 + "eslint-module-utils": { 416 + "version": "2.6.0", 417 + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", 418 + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", 419 + "dev": true, 420 + "requires": { 421 + "debug": "^2.6.9", 422 + "pkg-dir": "^2.0.0" 423 + }, 424 + "dependencies": { 425 + "debug": { 426 + "version": "2.6.9", 427 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 428 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 429 + "dev": true, 430 + "requires": { 431 + "ms": "2.0.0" 432 + } 433 + }, 434 + "ms": { 435 + "version": "2.0.0", 436 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 437 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 438 + "dev": true 439 + } 440 + } 441 + }, 442 + "eslint-plugin-import": { 443 + "version": "2.20.2", 444 + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz", 445 + "integrity": "sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg==", 446 + "dev": true, 447 + "requires": { 448 + "array-includes": "^3.0.3", 449 + "array.prototype.flat": "^1.2.1", 450 + "contains-path": "^0.1.0", 451 + "debug": "^2.6.9", 452 + "doctrine": "1.5.0", 453 + "eslint-import-resolver-node": "^0.3.2", 454 + "eslint-module-utils": "^2.4.1", 455 + "has": "^1.0.3", 456 + "minimatch": "^3.0.4", 457 + "object.values": "^1.1.0", 458 + "read-pkg-up": "^2.0.0", 459 + "resolve": "^1.12.0" 460 + }, 461 + "dependencies": { 462 + "debug": { 463 + "version": "2.6.9", 464 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 465 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 466 + "dev": true, 467 + "requires": { 468 + "ms": "2.0.0" 469 + } 470 + }, 471 + "doctrine": { 472 + "version": "1.5.0", 473 + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", 474 + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", 475 + "dev": true, 476 + "requires": { 477 + "esutils": "^2.0.2", 478 + "isarray": "^1.0.0" 479 + } 480 + }, 481 + "ms": { 482 + "version": "2.0.0", 483 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 484 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 485 + "dev": true 486 + } 487 + } 488 + }, 489 + "eslint-plugin-prettier": { 490 + "version": "3.1.3", 491 + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.3.tgz", 492 + "integrity": "sha512-+HG5jmu/dN3ZV3T6eCD7a4BlAySdN7mLIbJYo0z1cFQuI+r2DiTJEFeF68ots93PsnrMxbzIZ2S/ieX+mkrBeQ==", 493 + "dev": true, 494 + "requires": { 495 + "prettier-linter-helpers": "^1.0.0" 496 + } 497 + }, 498 + "eslint-scope": { 499 + "version": "5.0.0", 500 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", 501 + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", 502 + "dev": true, 503 + "requires": { 504 + "esrecurse": "^4.1.0", 505 + "estraverse": "^4.1.1" 506 + } 507 + }, 508 + "eslint-utils": { 509 + "version": "1.4.3", 510 + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", 511 + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", 512 + "dev": true, 513 + "requires": { 514 + "eslint-visitor-keys": "^1.1.0" 515 + } 516 + }, 517 + "eslint-visitor-keys": { 518 + "version": "1.1.0", 519 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", 520 + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", 521 + "dev": true 522 + }, 523 + "espree": { 524 + "version": "6.2.1", 525 + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", 526 + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", 527 + "dev": true, 528 + "requires": { 529 + "acorn": "^7.1.1", 530 + "acorn-jsx": "^5.2.0", 531 + "eslint-visitor-keys": "^1.1.0" 532 + } 533 + }, 534 + "esprima": { 535 + "version": "4.0.1", 536 + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 537 + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 538 + "dev": true 539 + }, 540 + "esquery": { 541 + "version": "1.3.1", 542 + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", 543 + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", 544 + "dev": true, 545 + "requires": { 546 + "estraverse": "^5.1.0" 547 + }, 548 + "dependencies": { 549 + "estraverse": { 550 + "version": "5.1.0", 551 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", 552 + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", 553 + "dev": true 554 + } 555 + } 556 + }, 557 + "esrecurse": { 558 + "version": "4.2.1", 559 + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", 560 + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", 561 + "dev": true, 562 + "requires": { 563 + "estraverse": "^4.1.0" 564 + } 565 + }, 566 + "estraverse": { 567 + "version": "4.3.0", 568 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 569 + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 570 + "dev": true 571 + }, 572 + "esutils": { 573 + "version": "2.0.3", 574 + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 575 + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 576 + "dev": true 577 + }, 578 + "external-editor": { 579 + "version": "3.1.0", 580 + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 581 + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 582 + "dev": true, 583 + "requires": { 584 + "chardet": "^0.7.0", 585 + "iconv-lite": "^0.4.24", 586 + "tmp": "^0.0.33" 587 + } 588 + }, 589 + "fast-deep-equal": { 590 + "version": "3.1.1", 591 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", 592 + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", 593 + "dev": true 594 + }, 595 + "fast-diff": { 596 + "version": "1.2.0", 597 + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", 598 + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", 599 + "dev": true 600 + }, 601 + "fast-json-stable-stringify": { 602 + "version": "2.1.0", 603 + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 604 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 605 + "dev": true 606 + }, 607 + "fast-levenshtein": { 608 + "version": "2.0.6", 609 + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 610 + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 611 + "dev": true 612 + }, 613 + "figures": { 614 + "version": "3.2.0", 615 + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", 616 + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", 617 + "dev": true, 618 + "requires": { 619 + "escape-string-regexp": "^1.0.5" 620 + } 621 + }, 622 + "file-entry-cache": { 623 + "version": "5.0.1", 624 + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", 625 + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", 626 + "dev": true, 627 + "requires": { 628 + "flat-cache": "^2.0.1" 629 + } 630 + }, 631 + "find-up": { 632 + "version": "2.1.0", 633 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 634 + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 635 + "dev": true, 636 + "requires": { 637 + "locate-path": "^2.0.0" 638 + } 639 + }, 640 + "flat-cache": { 641 + "version": "2.0.1", 642 + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", 643 + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", 644 + "dev": true, 645 + "requires": { 646 + "flatted": "^2.0.0", 647 + "rimraf": "2.6.3", 648 + "write": "1.0.3" 649 + } 650 + }, 651 + "flatted": { 652 + "version": "2.0.2", 653 + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", 654 + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", 655 + "dev": true 656 + }, 657 + "fs.realpath": { 658 + "version": "1.0.0", 659 + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 660 + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 661 + "dev": true 662 + }, 663 + "function-bind": { 664 + "version": "1.1.1", 665 + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 666 + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 667 + "dev": true 668 + }, 669 + "functional-red-black-tree": { 670 + "version": "1.0.1", 671 + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 672 + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 673 + "dev": true 674 + }, 675 + "get-stdin": { 676 + "version": "6.0.0", 677 + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", 678 + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", 679 + "dev": true 680 + }, 681 + "glob": { 682 + "version": "7.1.6", 683 + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 684 + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 685 + "dev": true, 686 + "requires": { 687 + "fs.realpath": "^1.0.0", 688 + "inflight": "^1.0.4", 689 + "inherits": "2", 690 + "minimatch": "^3.0.4", 691 + "once": "^1.3.0", 692 + "path-is-absolute": "^1.0.0" 693 + } 694 + }, 695 + "glob-parent": { 696 + "version": "5.1.1", 697 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", 698 + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", 699 + "dev": true, 700 + "requires": { 701 + "is-glob": "^4.0.1" 702 + } 703 + }, 704 + "globals": { 705 + "version": "12.4.0", 706 + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", 707 + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", 708 + "dev": true, 709 + "requires": { 710 + "type-fest": "^0.8.1" 711 + } 712 + }, 713 + "graceful-fs": { 714 + "version": "4.2.4", 715 + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 716 + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", 717 + "dev": true 718 + }, 719 + "has": { 720 + "version": "1.0.3", 721 + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 722 + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 723 + "dev": true, 724 + "requires": { 725 + "function-bind": "^1.1.1" 726 + } 727 + }, 728 + "has-flag": { 729 + "version": "3.0.0", 730 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 731 + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 732 + "dev": true 733 + }, 734 + "has-symbols": { 735 + "version": "1.0.1", 736 + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 737 + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", 738 + "dev": true 739 + }, 740 + "hosted-git-info": { 741 + "version": "2.8.8", 742 + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", 743 + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", 744 + "dev": true 745 + }, 746 + "iconv-lite": { 747 + "version": "0.4.24", 748 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 749 + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 750 + "dev": true, 751 + "requires": { 752 + "safer-buffer": ">= 2.1.2 < 3" 753 + } 754 + }, 755 + "ignore": { 756 + "version": "4.0.6", 757 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 758 + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 759 + "dev": true 760 + }, 761 + "import-fresh": { 762 + "version": "3.2.1", 763 + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", 764 + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", 765 + "dev": true, 766 + "requires": { 767 + "parent-module": "^1.0.0", 768 + "resolve-from": "^4.0.0" 769 + } 770 + }, 771 + "imurmurhash": { 772 + "version": "0.1.4", 773 + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 774 + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 775 + "dev": true 776 + }, 777 + "inflight": { 778 + "version": "1.0.6", 779 + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 780 + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 781 + "dev": true, 782 + "requires": { 783 + "once": "^1.3.0", 784 + "wrappy": "1" 785 + } 786 + }, 787 + "inherits": { 788 + "version": "2.0.4", 789 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 790 + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 791 + "dev": true 792 + }, 793 + "inquirer": { 794 + "version": "7.1.0", 795 + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", 796 + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", 797 + "dev": true, 798 + "requires": { 799 + "ansi-escapes": "^4.2.1", 800 + "chalk": "^3.0.0", 801 + "cli-cursor": "^3.1.0", 802 + "cli-width": "^2.0.0", 803 + "external-editor": "^3.0.3", 804 + "figures": "^3.0.0", 805 + "lodash": "^4.17.15", 806 + "mute-stream": "0.0.8", 807 + "run-async": "^2.4.0", 808 + "rxjs": "^6.5.3", 809 + "string-width": "^4.1.0", 810 + "strip-ansi": "^6.0.0", 811 + "through": "^2.3.6" 812 + }, 813 + "dependencies": { 814 + "ansi-styles": { 815 + "version": "4.2.1", 816 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", 817 + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", 818 + "dev": true, 819 + "requires": { 820 + "@types/color-name": "^1.1.1", 821 + "color-convert": "^2.0.1" 822 + } 823 + }, 824 + "chalk": { 825 + "version": "3.0.0", 826 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", 827 + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", 828 + "dev": true, 829 + "requires": { 830 + "ansi-styles": "^4.1.0", 831 + "supports-color": "^7.1.0" 832 + } 833 + }, 834 + "color-convert": { 835 + "version": "2.0.1", 836 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 837 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 838 + "dev": true, 839 + "requires": { 840 + "color-name": "~1.1.4" 841 + } 842 + }, 843 + "color-name": { 844 + "version": "1.1.4", 845 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 846 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 847 + "dev": true 848 + }, 849 + "has-flag": { 850 + "version": "4.0.0", 851 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 852 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 853 + "dev": true 854 + }, 855 + "strip-ansi": { 856 + "version": "6.0.0", 857 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 858 + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 859 + "dev": true, 860 + "requires": { 861 + "ansi-regex": "^5.0.0" 862 + } 863 + }, 864 + "supports-color": { 865 + "version": "7.1.0", 866 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", 867 + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", 868 + "dev": true, 869 + "requires": { 870 + "has-flag": "^4.0.0" 871 + } 872 + } 873 + } 874 + }, 875 + "is-arrayish": { 876 + "version": "0.2.1", 877 + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 878 + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 879 + "dev": true 880 + }, 881 + "is-callable": { 882 + "version": "1.1.5", 883 + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", 884 + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", 885 + "dev": true 886 + }, 887 + "is-date-object": { 888 + "version": "1.0.2", 889 + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", 890 + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", 891 + "dev": true 892 + }, 893 + "is-extglob": { 894 + "version": "2.1.1", 895 + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 896 + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 897 + "dev": true 898 + }, 899 + "is-fullwidth-code-point": { 900 + "version": "3.0.0", 901 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 902 + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 903 + "dev": true 904 + }, 905 + "is-glob": { 906 + "version": "4.0.1", 907 + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 908 + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 909 + "dev": true, 910 + "requires": { 911 + "is-extglob": "^2.1.1" 912 + } 913 + }, 914 + "is-regex": { 915 + "version": "1.0.5", 916 + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", 917 + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", 918 + "dev": true, 919 + "requires": { 920 + "has": "^1.0.3" 921 + } 922 + }, 923 + "is-string": { 924 + "version": "1.0.5", 925 + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", 926 + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", 927 + "dev": true 928 + }, 929 + "is-symbol": { 930 + "version": "1.0.3", 931 + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", 932 + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", 933 + "dev": true, 934 + "requires": { 935 + "has-symbols": "^1.0.1" 936 + } 937 + }, 938 + "isarray": { 939 + "version": "1.0.0", 940 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 941 + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 942 + "dev": true 943 + }, 944 + "isexe": { 945 + "version": "2.0.0", 946 + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 947 + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 948 + "dev": true 949 + }, 950 + "js-tokens": { 951 + "version": "4.0.0", 952 + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 953 + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 954 + "dev": true 955 + }, 956 + "js-yaml": { 957 + "version": "3.14.0", 958 + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", 959 + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", 960 + "dev": true, 961 + "requires": { 962 + "argparse": "^1.0.7", 963 + "esprima": "^4.0.0" 964 + } 965 + }, 966 + "json-schema-traverse": { 967 + "version": "0.4.1", 968 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 969 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 970 + "dev": true 971 + }, 972 + "json-stable-stringify-without-jsonify": { 973 + "version": "1.0.1", 974 + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 975 + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 976 + "dev": true 977 + }, 978 + "levn": { 979 + "version": "0.3.0", 980 + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 981 + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 982 + "dev": true, 983 + "requires": { 984 + "prelude-ls": "~1.1.2", 985 + "type-check": "~0.3.2" 986 + } 987 + }, 988 + "load-json-file": { 989 + "version": "2.0.0", 990 + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", 991 + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", 992 + "dev": true, 993 + "requires": { 994 + "graceful-fs": "^4.1.2", 995 + "parse-json": "^2.2.0", 996 + "pify": "^2.0.0", 997 + "strip-bom": "^3.0.0" 998 + } 999 + }, 1000 + "locate-path": { 1001 + "version": "2.0.0", 1002 + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 1003 + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 1004 + "dev": true, 1005 + "requires": { 1006 + "p-locate": "^2.0.0", 1007 + "path-exists": "^3.0.0" 1008 + } 1009 + }, 1010 + "lodash": { 1011 + "version": "4.17.15", 1012 + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 1013 + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", 1014 + "dev": true 1015 + }, 1016 + "mimic-fn": { 1017 + "version": "2.1.0", 1018 + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1019 + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 1020 + "dev": true 1021 + }, 1022 + "minimatch": { 1023 + "version": "3.0.4", 1024 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1025 + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1026 + "dev": true, 1027 + "requires": { 1028 + "brace-expansion": "^1.1.7" 1029 + } 1030 + }, 1031 + "minimist": { 1032 + "version": "1.2.5", 1033 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1034 + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1035 + "dev": true 1036 + }, 1037 + "mkdirp": { 1038 + "version": "0.5.5", 1039 + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 1040 + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 1041 + "dev": true, 1042 + "requires": { 1043 + "minimist": "^1.2.5" 1044 + } 1045 + }, 1046 + "ms": { 1047 + "version": "2.1.2", 1048 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1049 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1050 + "dev": true 1051 + }, 1052 + "mute-stream": { 1053 + "version": "0.0.8", 1054 + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 1055 + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", 1056 + "dev": true 1057 + }, 1058 + "natural-compare": { 1059 + "version": "1.4.0", 1060 + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1061 + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 1062 + "dev": true 1063 + }, 1064 + "nice-try": { 1065 + "version": "1.0.5", 1066 + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 1067 + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", 1068 + "dev": true 1069 + }, 1070 + "normalize-package-data": { 1071 + "version": "2.5.0", 1072 + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 1073 + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 1074 + "dev": true, 1075 + "requires": { 1076 + "hosted-git-info": "^2.1.4", 1077 + "resolve": "^1.10.0", 1078 + "semver": "2 || 3 || 4 || 5", 1079 + "validate-npm-package-license": "^3.0.1" 1080 + }, 1081 + "dependencies": { 1082 + "semver": { 1083 + "version": "5.7.1", 1084 + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1085 + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1086 + "dev": true 1087 + } 1088 + } 1089 + }, 1090 + "object-inspect": { 1091 + "version": "1.7.0", 1092 + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", 1093 + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", 1094 + "dev": true 1095 + }, 1096 + "object-keys": { 1097 + "version": "1.1.1", 1098 + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1099 + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1100 + "dev": true 1101 + }, 1102 + "object.assign": { 1103 + "version": "4.1.0", 1104 + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", 1105 + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", 1106 + "dev": true, 1107 + "requires": { 1108 + "define-properties": "^1.1.2", 1109 + "function-bind": "^1.1.1", 1110 + "has-symbols": "^1.0.0", 1111 + "object-keys": "^1.0.11" 1112 + } 1113 + }, 1114 + "object.entries": { 1115 + "version": "1.1.2", 1116 + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", 1117 + "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", 1118 + "dev": true, 1119 + "requires": { 1120 + "define-properties": "^1.1.3", 1121 + "es-abstract": "^1.17.5", 1122 + "has": "^1.0.3" 1123 + } 1124 + }, 1125 + "object.values": { 1126 + "version": "1.1.1", 1127 + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", 1128 + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", 1129 + "dev": true, 1130 + "requires": { 1131 + "define-properties": "^1.1.3", 1132 + "es-abstract": "^1.17.0-next.1", 1133 + "function-bind": "^1.1.1", 1134 + "has": "^1.0.3" 1135 + } 1136 + }, 1137 + "once": { 1138 + "version": "1.4.0", 1139 + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1140 + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1141 + "dev": true, 1142 + "requires": { 1143 + "wrappy": "1" 1144 + } 1145 + }, 1146 + "onetime": { 1147 + "version": "5.1.0", 1148 + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", 1149 + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", 1150 + "dev": true, 1151 + "requires": { 1152 + "mimic-fn": "^2.1.0" 1153 + } 1154 + }, 1155 + "optionator": { 1156 + "version": "0.8.3", 1157 + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 1158 + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 1159 + "dev": true, 1160 + "requires": { 1161 + "deep-is": "~0.1.3", 1162 + "fast-levenshtein": "~2.0.6", 1163 + "levn": "~0.3.0", 1164 + "prelude-ls": "~1.1.2", 1165 + "type-check": "~0.3.2", 1166 + "word-wrap": "~1.2.3" 1167 + } 1168 + }, 1169 + "os-tmpdir": { 1170 + "version": "1.0.2", 1171 + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1172 + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 1173 + "dev": true 1174 + }, 1175 + "p-limit": { 1176 + "version": "1.3.0", 1177 + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 1178 + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 1179 + "dev": true, 1180 + "requires": { 1181 + "p-try": "^1.0.0" 1182 + } 1183 + }, 1184 + "p-locate": { 1185 + "version": "2.0.0", 1186 + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 1187 + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 1188 + "dev": true, 1189 + "requires": { 1190 + "p-limit": "^1.1.0" 1191 + } 1192 + }, 1193 + "p-try": { 1194 + "version": "1.0.0", 1195 + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 1196 + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 1197 + "dev": true 1198 + }, 1199 + "parent-module": { 1200 + "version": "1.0.1", 1201 + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1202 + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1203 + "dev": true, 1204 + "requires": { 1205 + "callsites": "^3.0.0" 1206 + } 1207 + }, 1208 + "parse-json": { 1209 + "version": "2.2.0", 1210 + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 1211 + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 1212 + "dev": true, 1213 + "requires": { 1214 + "error-ex": "^1.2.0" 1215 + } 1216 + }, 1217 + "path-exists": { 1218 + "version": "3.0.0", 1219 + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 1220 + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 1221 + "dev": true 1222 + }, 1223 + "path-is-absolute": { 1224 + "version": "1.0.1", 1225 + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1226 + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1227 + "dev": true 1228 + }, 1229 + "path-key": { 1230 + "version": "2.0.1", 1231 + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 1232 + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 1233 + "dev": true 1234 + }, 1235 + "path-parse": { 1236 + "version": "1.0.6", 1237 + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 1238 + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 1239 + "dev": true 1240 + }, 1241 + "path-type": { 1242 + "version": "2.0.0", 1243 + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", 1244 + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", 1245 + "dev": true, 1246 + "requires": { 1247 + "pify": "^2.0.0" 1248 + } 1249 + }, 1250 + "pify": { 1251 + "version": "2.3.0", 1252 + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1253 + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 1254 + "dev": true 1255 + }, 1256 + "pkg-dir": { 1257 + "version": "2.0.0", 1258 + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", 1259 + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", 1260 + "dev": true, 1261 + "requires": { 1262 + "find-up": "^2.1.0" 1263 + } 1264 + }, 1265 + "prelude-ls": { 1266 + "version": "1.1.2", 1267 + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 1268 + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 1269 + "dev": true 1270 + }, 1271 + "prettier": { 1272 + "version": "2.0.5", 1273 + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", 1274 + "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", 1275 + "dev": true 1276 + }, 1277 + "prettier-linter-helpers": { 1278 + "version": "1.0.0", 1279 + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", 1280 + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", 1281 + "dev": true, 1282 + "requires": { 1283 + "fast-diff": "^1.1.2" 1284 + } 1285 + }, 1286 + "progress": { 1287 + "version": "2.0.3", 1288 + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1289 + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 1290 + "dev": true 1291 + }, 1292 + "punycode": { 1293 + "version": "2.1.1", 1294 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1295 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1296 + "dev": true 1297 + }, 1298 + "read-pkg": { 1299 + "version": "2.0.0", 1300 + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", 1301 + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", 1302 + "dev": true, 1303 + "requires": { 1304 + "load-json-file": "^2.0.0", 1305 + "normalize-package-data": "^2.3.2", 1306 + "path-type": "^2.0.0" 1307 + } 1308 + }, 1309 + "read-pkg-up": { 1310 + "version": "2.0.0", 1311 + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", 1312 + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", 1313 + "dev": true, 1314 + "requires": { 1315 + "find-up": "^2.0.0", 1316 + "read-pkg": "^2.0.0" 1317 + } 1318 + }, 1319 + "regexpp": { 1320 + "version": "2.0.1", 1321 + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", 1322 + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", 1323 + "dev": true 1324 + }, 1325 + "resolve": { 1326 + "version": "1.17.0", 1327 + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", 1328 + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", 1329 + "dev": true, 1330 + "requires": { 1331 + "path-parse": "^1.0.6" 1332 + } 1333 + }, 1334 + "resolve-from": { 1335 + "version": "4.0.0", 1336 + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1337 + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1338 + "dev": true 1339 + }, 1340 + "restore-cursor": { 1341 + "version": "3.1.0", 1342 + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 1343 + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 1344 + "dev": true, 1345 + "requires": { 1346 + "onetime": "^5.1.0", 1347 + "signal-exit": "^3.0.2" 1348 + } 1349 + }, 1350 + "rimraf": { 1351 + "version": "2.6.3", 1352 + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 1353 + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 1354 + "dev": true, 1355 + "requires": { 1356 + "glob": "^7.1.3" 1357 + } 1358 + }, 1359 + "run-async": { 1360 + "version": "2.4.1", 1361 + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", 1362 + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", 1363 + "dev": true 1364 + }, 1365 + "rxjs": { 1366 + "version": "6.5.5", 1367 + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", 1368 + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", 1369 + "dev": true, 1370 + "requires": { 1371 + "tslib": "^1.9.0" 1372 + } 1373 + }, 1374 + "safer-buffer": { 1375 + "version": "2.1.2", 1376 + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1377 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1378 + "dev": true 1379 + }, 1380 + "semver": { 1381 + "version": "6.3.0", 1382 + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1383 + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1384 + "dev": true 1385 + }, 1386 + "shebang-command": { 1387 + "version": "1.2.0", 1388 + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 1389 + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 1390 + "dev": true, 1391 + "requires": { 1392 + "shebang-regex": "^1.0.0" 1393 + } 1394 + }, 1395 + "shebang-regex": { 1396 + "version": "1.0.0", 1397 + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 1398 + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 1399 + "dev": true 1400 + }, 1401 + "signal-exit": { 1402 + "version": "3.0.3", 1403 + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 1404 + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", 1405 + "dev": true 1406 + }, 1407 + "slice-ansi": { 1408 + "version": "2.1.0", 1409 + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", 1410 + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", 1411 + "dev": true, 1412 + "requires": { 1413 + "ansi-styles": "^3.2.0", 1414 + "astral-regex": "^1.0.0", 1415 + "is-fullwidth-code-point": "^2.0.0" 1416 + }, 1417 + "dependencies": { 1418 + "is-fullwidth-code-point": { 1419 + "version": "2.0.0", 1420 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1421 + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1422 + "dev": true 1423 + } 1424 + } 1425 + }, 1426 + "spdx-correct": { 1427 + "version": "3.1.1", 1428 + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", 1429 + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", 1430 + "dev": true, 1431 + "requires": { 1432 + "spdx-expression-parse": "^3.0.0", 1433 + "spdx-license-ids": "^3.0.0" 1434 + } 1435 + }, 1436 + "spdx-exceptions": { 1437 + "version": "2.3.0", 1438 + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", 1439 + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", 1440 + "dev": true 1441 + }, 1442 + "spdx-expression-parse": { 1443 + "version": "3.0.1", 1444 + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", 1445 + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", 1446 + "dev": true, 1447 + "requires": { 1448 + "spdx-exceptions": "^2.1.0", 1449 + "spdx-license-ids": "^3.0.0" 1450 + } 1451 + }, 1452 + "spdx-license-ids": { 1453 + "version": "3.0.5", 1454 + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", 1455 + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", 1456 + "dev": true 1457 + }, 1458 + "sprintf-js": { 1459 + "version": "1.0.3", 1460 + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1461 + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1462 + "dev": true 1463 + }, 1464 + "string-width": { 1465 + "version": "4.2.0", 1466 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", 1467 + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", 1468 + "dev": true, 1469 + "requires": { 1470 + "emoji-regex": "^8.0.0", 1471 + "is-fullwidth-code-point": "^3.0.0", 1472 + "strip-ansi": "^6.0.0" 1473 + }, 1474 + "dependencies": { 1475 + "strip-ansi": { 1476 + "version": "6.0.0", 1477 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 1478 + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 1479 + "dev": true, 1480 + "requires": { 1481 + "ansi-regex": "^5.0.0" 1482 + } 1483 + } 1484 + } 1485 + }, 1486 + "string.prototype.trimend": { 1487 + "version": "1.0.1", 1488 + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", 1489 + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", 1490 + "dev": true, 1491 + "requires": { 1492 + "define-properties": "^1.1.3", 1493 + "es-abstract": "^1.17.5" 1494 + } 1495 + }, 1496 + "string.prototype.trimleft": { 1497 + "version": "2.1.2", 1498 + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", 1499 + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", 1500 + "dev": true, 1501 + "requires": { 1502 + "define-properties": "^1.1.3", 1503 + "es-abstract": "^1.17.5", 1504 + "string.prototype.trimstart": "^1.0.0" 1505 + } 1506 + }, 1507 + "string.prototype.trimright": { 1508 + "version": "2.1.2", 1509 + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", 1510 + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", 1511 + "dev": true, 1512 + "requires": { 1513 + "define-properties": "^1.1.3", 1514 + "es-abstract": "^1.17.5", 1515 + "string.prototype.trimend": "^1.0.0" 1516 + } 1517 + }, 1518 + "string.prototype.trimstart": { 1519 + "version": "1.0.1", 1520 + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", 1521 + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", 1522 + "dev": true, 1523 + "requires": { 1524 + "define-properties": "^1.1.3", 1525 + "es-abstract": "^1.17.5" 1526 + } 1527 + }, 1528 + "strip-ansi": { 1529 + "version": "5.2.0", 1530 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1531 + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1532 + "dev": true, 1533 + "requires": { 1534 + "ansi-regex": "^4.1.0" 1535 + }, 1536 + "dependencies": { 1537 + "ansi-regex": { 1538 + "version": "4.1.0", 1539 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1540 + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1541 + "dev": true 1542 + } 1543 + } 1544 + }, 1545 + "strip-bom": { 1546 + "version": "3.0.0", 1547 + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 1548 + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 1549 + "dev": true 1550 + }, 1551 + "strip-json-comments": { 1552 + "version": "3.1.0", 1553 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", 1554 + "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", 1555 + "dev": true 1556 + }, 1557 + "supports-color": { 1558 + "version": "5.5.0", 1559 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1560 + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1561 + "dev": true, 1562 + "requires": { 1563 + "has-flag": "^3.0.0" 1564 + } 1565 + }, 1566 + "table": { 1567 + "version": "5.4.6", 1568 + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", 1569 + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", 1570 + "dev": true, 1571 + "requires": { 1572 + "ajv": "^6.10.2", 1573 + "lodash": "^4.17.14", 1574 + "slice-ansi": "^2.1.0", 1575 + "string-width": "^3.0.0" 1576 + }, 1577 + "dependencies": { 1578 + "emoji-regex": { 1579 + "version": "7.0.3", 1580 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 1581 + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 1582 + "dev": true 1583 + }, 1584 + "is-fullwidth-code-point": { 1585 + "version": "2.0.0", 1586 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1587 + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1588 + "dev": true 1589 + }, 1590 + "string-width": { 1591 + "version": "3.1.0", 1592 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1593 + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1594 + "dev": true, 1595 + "requires": { 1596 + "emoji-regex": "^7.0.1", 1597 + "is-fullwidth-code-point": "^2.0.0", 1598 + "strip-ansi": "^5.1.0" 1599 + } 1600 + } 1601 + } 1602 + }, 1603 + "text-table": { 1604 + "version": "0.2.0", 1605 + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1606 + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 1607 + "dev": true 1608 + }, 1609 + "through": { 1610 + "version": "2.3.8", 1611 + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1612 + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 1613 + "dev": true 1614 + }, 1615 + "tmp": { 1616 + "version": "0.0.33", 1617 + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 1618 + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 1619 + "dev": true, 1620 + "requires": { 1621 + "os-tmpdir": "~1.0.2" 1622 + } 1623 + }, 1624 + "tslib": { 1625 + "version": "1.13.0", 1626 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", 1627 + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", 1628 + "dev": true 1629 + }, 1630 + "type-check": { 1631 + "version": "0.3.2", 1632 + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 1633 + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 1634 + "dev": true, 1635 + "requires": { 1636 + "prelude-ls": "~1.1.2" 1637 + } 1638 + }, 1639 + "type-fest": { 1640 + "version": "0.8.1", 1641 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 1642 + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 1643 + "dev": true 1644 + }, 1645 + "uri-js": { 1646 + "version": "4.2.2", 1647 + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 1648 + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 1649 + "dev": true, 1650 + "requires": { 1651 + "punycode": "^2.1.0" 1652 + } 1653 + }, 1654 + "v8-compile-cache": { 1655 + "version": "2.1.0", 1656 + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", 1657 + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", 1658 + "dev": true 1659 + }, 1660 + "validate-npm-package-license": { 1661 + "version": "3.0.4", 1662 + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 1663 + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 1664 + "dev": true, 1665 + "requires": { 1666 + "spdx-correct": "^3.0.0", 1667 + "spdx-expression-parse": "^3.0.0" 1668 + } 1669 + }, 1670 + "which": { 1671 + "version": "1.3.1", 1672 + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 1673 + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 1674 + "dev": true, 1675 + "requires": { 1676 + "isexe": "^2.0.0" 1677 + } 1678 + }, 1679 + "word-wrap": { 1680 + "version": "1.2.3", 1681 + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 1682 + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 1683 + "dev": true 1684 + }, 1685 + "wrappy": { 1686 + "version": "1.0.2", 1687 + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1688 + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1689 + "dev": true 1690 + }, 1691 + "write": { 1692 + "version": "1.0.3", 1693 + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", 1694 + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", 1695 + "dev": true, 1696 + "requires": { 1697 + "mkdirp": "^0.5.1" 1698 + } 1699 + } 1700 + } 1701 + }
+40
package.json
··· 1 + { 2 + "name": "speed-cloudflare-cli", 3 + "version": "1.0.0", 4 + "description": "Measure the speed and consistency of your internet connection using speed.cloudflare.com", 5 + "main": "cli.js", 6 + "scripts": { 7 + "test": "echo \"Error: no test specified\" && exit 1" 8 + }, 9 + "repository": { 10 + "type": "git", 11 + "url": "git+https://github.com/KNawm/speed-cloudflare-cli.git" 12 + }, 13 + "keywords": [ 14 + "bandwidth", 15 + "connection", 16 + "download", 17 + "internet", 18 + "latency", 19 + "network", 20 + "ping", 21 + "speed", 22 + "speedtest", 23 + "test", 24 + "upload" 25 + ], 26 + "author": "Tomás Arias <hi@tomasarias.me>", 27 + "license": "MIT", 28 + "bugs": { 29 + "url": "https://github.com/KNawm/speed-cloudflare-cli/issues" 30 + }, 31 + "homepage": "https://github.com/KNawm/speed-cloudflare-cli#readme", 32 + "devDependencies": { 33 + "eslint": "^6.8.0", 34 + "eslint-config-airbnb-base": "^14.1.0", 35 + "eslint-config-prettier": "^6.11.0", 36 + "eslint-plugin-import": "^2.20.2", 37 + "eslint-plugin-prettier": "^3.1.3", 38 + "prettier": "^2.0.5" 39 + } 40 + }
+36
stats.js
··· 1 + function average(values) { 2 + let total = 0; 3 + 4 + for (let i = 0; i < values.length; i += 1) { 5 + total += values[i]; 6 + } 7 + 8 + return total / values.length; 9 + } 10 + 11 + function median(values) { 12 + const half = Math.floor(values.length / 2); 13 + 14 + values.sort((a, b) => a - b); 15 + 16 + if (values.length % 2) return values[half]; 17 + 18 + return (values[half - 1] + values[half]) / 2; 19 + } 20 + 21 + function quartile(values, percentile) { 22 + values.sort((a, b) => a - b); 23 + const pos = (values.length - 1) * percentile; 24 + const base = Math.floor(pos); 25 + const rest = pos - base; 26 + 27 + if (values[base + 1] !== undefined) { 28 + return values[base] + rest * (values[base + 1] - values[base]); 29 + } 30 + 31 + return values[base]; 32 + } 33 + 34 + exports.average = average; 35 + exports.median = median; 36 + exports.quartile = quartile;