From 73178971a652c175c5737ee8fed8719099c8c130 Mon Sep 17 00:00:00 2001 From: Ryan Vandersmith Date: Fri, 24 Jul 2020 05:00:31 -0600 Subject: [PATCH] Revamp uplink service; add exploration overlay --- elite-navigator-stream/index.js | 46 +- elite-navigator-uplink/icon.png | Bin 0 -> 44617 bytes elite-navigator-uplink/index.js | 8 +- elite-navigator-uplink/package-lock.json | 2540 +++++++++-------- elite-navigator-uplink/package.json | 21 +- elite-navigator-uplink/src/main.js | 28 + elite-navigator-uplink/src/overlay.js | 53 + .../src/{app.js => socket.js} | 37 +- elite-navigator-uplink/www/main/index.html | 49 + elite-navigator-uplink/www/overlay/index.html | 30 + elite-navigator-uplink/www/preload.js | 7 + elite-navigator-web/package-lock.json | 41 +- elite-navigator-web/package.json | 3 +- elite-navigator-web/src/components/App.js | 466 +-- .../src/components/BodyCompact.js | 58 + .../src/components/SettingToggle.js | 11 +- .../src/services/connection-service.js | 8 +- .../src/services/player-service.js | 14 +- 18 files changed, 1975 insertions(+), 1445 deletions(-) create mode 100644 elite-navigator-uplink/icon.png create mode 100644 elite-navigator-uplink/src/main.js create mode 100644 elite-navigator-uplink/src/overlay.js rename elite-navigator-uplink/src/{app.js => socket.js} (60%) create mode 100644 elite-navigator-uplink/www/main/index.html create mode 100644 elite-navigator-uplink/www/overlay/index.html create mode 100644 elite-navigator-uplink/www/preload.js create mode 100644 elite-navigator-web/src/components/BodyCompact.js diff --git a/elite-navigator-stream/index.js b/elite-navigator-stream/index.js index 8356c69..6d7c3d9 100644 --- a/elite-navigator-stream/index.js +++ b/elite-navigator-stream/index.js @@ -31,33 +31,29 @@ async function run() { eddn.on('error', err => console.error(err)); eddn.on('entry', entry => { - if(entry.SignalName_Localised === 'Notable stellar phenomena') { - console.log(entry); - } + if(entry.event === 'Scan' && entry.Rings) { - // if(entry.event === 'Scan' && entry.Rings) { + let systemName = entry.StarSystem; + if(!isPopulated(systemName)) { + return; + } - // let systemName = entry.StarSystem; - // if(!isPopulated(systemName)) { - // return; - // } - // - // let bodyName = entry.BodyName.replace(systemName, '').trim(); - // let rings = entry.Rings.map(ring => ({ - // name: ring.Name.replace(entry.BodyName, '').trim(), - // type: ring.RingClass - // .replace('eRingClass_', '') - // .replace('MetalRich', 'Metal Rich') - // .replace('Metal' + 'ic', 'Metallic'), - // })); - // - // console.log(systemName, bodyName, rings); - // - // (ringMap[entry.StarSystem] || (ringMap[entry.StarSystem] = {}))[bodyName] = { - // distance: Math.round(entry.DistanceFromArrivalLS), - // rings: rings, - // }; - // } + let bodyName = entry.BodyName.replace(systemName, '').trim(); + let rings = entry.Rings.map(ring => ({ + name: ring.Name.replace(entry.BodyName, '').trim(), + type: ring.RingClass + .replace('eRingClass_', '') + .replace('MetalRich', 'Metal Rich') + .replace('Metal' + 'ic', 'Metallic'), + })); + + console.log(systemName, bodyName, rings); + + (ringMap[entry.StarSystem] || (ringMap[entry.StarSystem] = {}))[bodyName] = { + distance: Math.round(entry.DistanceFromArrivalLS), + rings: rings, + }; + } }); } diff --git a/elite-navigator-uplink/icon.png b/elite-navigator-uplink/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2f9b4a2b1d9a89c6292657aeb6ef86549bfcf211 GIT binary patch literal 44617 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

f7Lyk+ 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 literal 0 HcmV?d00001 diff --git a/elite-navigator-uplink/index.js b/elite-navigator-uplink/index.js index 9215cbc..f44df10 100644 --- a/elite-navigator-uplink/index.js +++ b/elite-navigator-uplink/index.js @@ -1,3 +1,7 @@ -'use strict'; +let {app} = require('electron'); +let {startMainWindow} = require('./src/main'); -module.exports = require('./src/app'); +let {socket} = require('./src/socket'); + +startMainWindow() + .catch(err => console.error(err) & process.exit(1)); diff --git a/elite-navigator-uplink/package-lock.json b/elite-navigator-uplink/package-lock.json index 6037c99..2977251 100644 --- a/elite-navigator-uplink/package-lock.json +++ b/elite-navigator-uplink/package-lock.json @@ -4,25 +4,27 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "@babel/parser": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", - "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "7zip-bin": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.0.3.tgz", + "integrity": "sha512-GLyWIFBbGvpKPGo55JyRZAo4lVbnBiD52cKlw/0Vt+wnmKvWJkpZvsjVoaIolyBXDeAQKSicRtqFNPem9w0WYA==", "dev": true }, - "@babel/runtime": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.5.tgz", - "integrity": "sha512-otddXKhdNn7d0ptoFRHtMLa8LqDxLYwTjB4nYgM1yy5N6gU/MUf8zqyyLltCH3yAVitBzmwK4us+DD0l/MauAg==", + "@develar/schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", "dev": true, "requires": { - "regenerator-runtime": "^0.13.4" + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" } }, "@electron/get": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.2.tgz", "integrity": "sha512-vAuHUbfvBQpYTJ5wB7uVIDq5c/Ry0fiTBMs7lnEYAo/qXXppIVcWdfBr57u6eRnKdVso7KSiH6p/LbQAG6Izrg==", + "dev": true, "requires": { "debug": "^4.1.1", "env-paths": "^2.2.0", @@ -35,41 +37,17 @@ "sumchecker": "^3.0.1" } }, - "@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": { - "@nodelib/fs.stat": "2.0.3", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "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" - } - }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true }, "@szmarczak/http-timer": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, "requires": { "defer-to-connect": "^1.0.1" } @@ -80,20 +58,42 @@ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, + "@types/debug": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.5.tgz", + "integrity": "sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==", + "dev": true + }, + "@types/fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-B42Sxuaz09MhC3DDeW5kubRcQ5by4iuVQ0cRRWM2lggLzAa/KVom0Aft/208NgMvNQQZ86s5rVcqDdn/SH0/mg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/node": { - "version": "12.12.51", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.51.tgz", - "integrity": "sha512-6ILqt8iNThALrxDv2Q4LyYFQxULQz96HKNIFd4s9QRQaiHINYeUpLqeU/2IU7YMtvipG1fQVAy//vY8/fX1Y9w==" + "version": "12.12.52", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.52.tgz", + "integrity": "sha512-oNJSI5bzuAH4f4I5JatPf4jytM6vQPWMw8JDOH68mNMyOmSqBkctHBfsyaBU3Su+dhYd8E+tDtPJWUXsyO5Msg==", + "dev": true }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "@types/yargs": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.5.tgz", + "integrity": "sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==", + "dev": true, "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "@types/yargs-parser": "*" } }, + "@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", + "dev": true + }, "after": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", @@ -111,6 +111,40 @@ "uri-js": "^4.2.2" } }, + "ajv-keywords": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.1.tgz", + "integrity": "sha512-KWcq3xN8fDjSB+IMoh2VaXVhRI0BBGxoYp3rx7Pkb6z0cFjYR9Q9l4yZqqals0/zsioCmocC5H6UvsGD4MoIBA==", + "dev": true + }, + "ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "dev": true, + "requires": { + "string-width": "^3.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "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": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -130,35 +164,119 @@ "picomatch": "^2.0.4" } }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "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==", + "app-builder-bin": { + "version": "3.5.9", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.5.9.tgz", + "integrity": "sha512-NSjtqZ3x2kYiDp3Qezsgukx/AUzKPr3Xgf9by4cYt05ILWGAptepeeu0Uv+7MO+41o6ujhLixTou8979JGg2Kg==", "dev": true }, + "app-builder-lib": { + "version": "22.7.0", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.7.0.tgz", + "integrity": "sha512-blRKwV8h0ztualXS50ciCTo39tbuDGNS+ldcy8+KLvKXuT6OpYnSJ7M6MSfPT+xWatshMHJV1rJx3Tl+k/Sn/g==", + "dev": true, + "requires": { + "7zip-bin": "~5.0.3", + "@develar/schema-utils": "~2.6.5", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "22.7.0", + "builder-util-runtime": "8.7.1", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.2.0", + "ejs": "^3.1.3", + "electron-publish": "22.7.0", + "fs-extra": "^9.0.0", + "hosted-git-info": "^3.0.4", + "is-ci": "^2.0.0", + "isbinaryfile": "^4.0.6", + "js-yaml": "^3.14.0", + "lazy-val": "^1.0.4", + "minimatch": "^3.0.4", + "normalize-package-data": "^2.5.0", + "read-config-file": "6.0.0", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.2", + "temp-file": "^3.3.7" + }, + "dependencies": { + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "dev": true + } + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + }, + "dependencies": { + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + } + } + }, "arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", "dev": true }, "async-limiter": { @@ -166,22 +284,10 @@ "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", - "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true }, "backo2": { @@ -189,25 +295,17 @@ "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, "base64-arraybuffer": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, "better-assert": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", @@ -226,44 +324,62 @@ "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bluebird-lst": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", + "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5" } }, "boolean": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.1.tgz", "integrity": "sha512-HRZPIjPcbwAVQvOTxR4YE3o8Xs98NqbbL1iEZDCz7CL8ql0Lt5iOyJFxfnAB0oFs8Oh02F/lLlg30Mexv46LjA==", + "dev": true, "optional": true }, + "boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "dev": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" + }, + "dependencies": { + "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 + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", @@ -275,28 +391,112 @@ "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "byline": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", - "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + "builder-util": { + "version": "22.7.0", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.7.0.tgz", + "integrity": "sha512-UV3MKL0mwjMq2y9JlBf28Cegpj0CrIXcjGkO0TXn+QZ6Yy9rY6lHOuUvpQ19ct2Qh1o+QSwH3Q1nKUf5viJBBg==", + "dev": true, + "requires": { + "7zip-bin": "~5.0.3", + "@types/debug": "^4.1.5", + "@types/fs-extra": "^9.0.1", + "app-builder-bin": "3.5.9", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "8.7.1", + "chalk": "^4.0.0", + "debug": "^4.2.0", + "fs-extra": "^9.0.0", + "is-ci": "^2.0.0", + "js-yaml": "^3.14.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.3.7" + }, + "dependencies": { + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "dev": true + } + } + }, + "builder-util-runtime": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.1.tgz", + "integrity": "sha512-uEBH1nAnTvzjcsrh2XI3qOzJ39h0+9kuIuwj+kCc3a07TZNGShfJcai8fFzL3mNgGjEFxoq+XMssR11r+FOFSg==", + "dev": true, + "requires": { + "debug": "^4.2.0", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } + } }, "cacheable-request": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, "requires": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", @@ -307,10 +507,20 @@ "responselike": "^1.0.2" }, "dependencies": { + "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" + } + }, "lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true } } }, @@ -319,10 +529,10 @@ "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, "chalk": { @@ -350,10 +560,57 @@ "readdirp": "~3.4.0" } }, + "chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cli-boxes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", + "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==", + "dev": true + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, "clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, "requires": { "mimic-response": "^1.0.0" } @@ -373,15 +630,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, "component-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", @@ -397,10 +645,17 @@ "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, "concat-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, "requires": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -412,64 +667,45 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "dev": true, "optional": true, "requires": { "ini": "^1.3.4", "proto-list": "~1.2.1" } }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, "requires": { - "safe-buffer": "5.1.2" + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" } }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, "core-js": { "version": "3.6.5", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "dev": true, "optional": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true }, "debounce": { "version": "1.2.0", @@ -484,129 +720,281 @@ "ms": "^2.1.1" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, "decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, "requires": { "mimic-response": "^1.0.0" } }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, - "default-gateway": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.1.tgz", - "integrity": "sha512-55Zt/cfV9OkkerJR3fECxhSk4+mVv6cq/npDz7n6255faTGh0/9HbEnTpUQdMMGJXclBCxEu1Kol3h362c2cbg==", - "requires": { - "execa": "^4.0.2" - } - }, "defer-to-connect": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "optional": true, "requires": { "object-keys": "^1.0.12" } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, "detect-node": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true, "optional": true }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dmg-builder": { + "version": "22.7.0", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.7.0.tgz", + "integrity": "sha512-5Ea2YEz6zSNbyGzZD+O9/MzmaXb6oa15cSKWo4JQ1xP4rorOpte7IOj2jcwYjtc+Los2gu1lvT314OC1OZIWgg==", "dev": true, "requires": { - "path-type": "^4.0.0" + "app-builder-lib": "22.7.0", + "builder-util": "22.7.0", + "fs-extra": "^9.0.0", + "iconv-lite": "^0.5.1", + "js-yaml": "^3.14.0", + "sanitize-filename": "^1.6.3" + }, + "dependencies": { + "fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "dev": true + } } }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", "dev": true, "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "is-obj": "^2.0.0" } }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "ejs": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.3.tgz", + "integrity": "sha512-wmtrUGyfSC23GC/B1SMv2ogAUgbQEtDmTIhfqielrG5ExIM9TP4UoYdi90jLF1aTcsWCJNEO0UrgKzP0y3nTSg==", + "dev": true, + "requires": { + "jake": "^10.6.1" + } }, "electron": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/electron/-/electron-9.1.1.tgz", "integrity": "sha512-BYvroBLV9x7G4iN33P/IxeZqwjl62/9VuBAF1CoM0m6OeheaiLog1ZMKLlCqVXycJvvrAvLHc454DDEmwnqqhA==", + "dev": true, "requires": { "@electron/get": "^1.0.1", "@types/node": "^12.0.12", "extract-zip": "^1.0.3" } }, + "electron-builder": { + "version": "22.7.0", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.7.0.tgz", + "integrity": "sha512-t6E3oMutpST64YWbZCg7HodEwJOsnjUF1vnDIHm2MW6CFZPX8tlCK6efqaV66LU0E0Nkp/JH6TE5bCqQ1+VdPQ==", + "dev": true, + "requires": { + "@types/yargs": "^15.0.5", + "app-builder-lib": "22.7.0", + "bluebird-lst": "^1.0.9", + "builder-util": "22.7.0", + "builder-util-runtime": "8.7.1", + "chalk": "^4.0.0", + "dmg-builder": "22.7.0", + "fs-extra": "^9.0.0", + "is-ci": "^2.0.0", + "lazy-val": "^1.0.4", + "read-config-file": "6.0.0", + "sanitize-filename": "^1.6.3", + "update-notifier": "^4.1.0", + "yargs": "^15.3.1" + }, + "dependencies": { + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "dev": true + } + } + }, + "electron-publish": { + "version": "22.7.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.7.0.tgz", + "integrity": "sha512-hmU69xlb6vvAV3QfpHYDlkdZMFdBAgDbptoxbLFrnTq5bOkcL8AaDbvxeoZ4+lvqgs29NwqGpkHo2oN+p/hCfg==", + "dev": true, + "requires": { + "@types/fs-extra": "^9.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "22.7.0", + "builder-util-runtime": "8.7.1", + "chalk": "^4.0.0", + "fs-extra": "^9.0.0", + "lazy-val": "^1.0.4", + "mime": "^2.4.5" + }, + "dependencies": { + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true, + "optional": true }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, "requires": { "once": "^1.4.0" } }, - "engine.io": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.4.2.tgz", - "integrity": "sha512-b4Q85dFkGw+TqgytGPrGgACRUhsdKc9S9ErRAXpPGy/CXKs4tYoHDkvIRdsseAF7NjfVwjRFIn6KTnbw7LwJZg==", - "requires": { - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "0.3.1", - "debug": "~4.1.0", - "engine.io-parser": "~2.2.0", - "ws": "^7.1.2" - } - }, "engine.io-client": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.3.tgz", @@ -655,37 +1043,28 @@ "env-paths": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", - "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==" + "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", + "dev": true }, "es6-error": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, "optional": true }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "optional": true - }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } + "optional": true }, "esprima": { "version": "4.0.1", @@ -693,112 +1072,11 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "execa": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz", - "integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==", - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "dev": true - }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, "extract-zip": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "dev": true, "requires": { "concat-stream": "^1.6.2", "debug": "^2.6.9", @@ -810,6 +1088,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -817,65 +1096,41 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "fast-glob": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", - "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", - "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", - "picomatch": "^2.2.1" - } - }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastq": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", - "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, "requires": { "pend": "~1.2.0" } }, + "filelist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.1.tgz", + "integrity": "sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -884,76 +1139,21 @@ "to-regex-range": "^5.0.1" } }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "fs-extra": { "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.2.0", "jsonfile": "^4.0.0", @@ -966,21 +1166,19 @@ "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", "optional": true }, - "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", - "requires": { - "pump": "^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 }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "requires": { - "assert-plus": "^1.0.0" + "pump": "^3.0.0" } }, "glob-parent": { @@ -995,6 +1193,7 @@ "version": "2.1.12", "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.12.tgz", "integrity": "sha512-caAljRMS/qcDo69X9BfkgrihGUgGx44Fb4QQToNQjsiWh+YlQ66uqYVAdA8Olqit+5Ng0nkz09je3ZzANMZcjg==", + "dev": true, "optional": true, "requires": { "boolean": "^3.0.1", @@ -1010,14 +1209,25 @@ "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true, "optional": true } } }, + "global-dirs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", + "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", + "dev": true, + "requires": { + "ini": "^1.3.5" + } + }, "global-tunnel-ng": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", + "dev": true, "optional": true, "requires": { "encodeurl": "^1.0.2", @@ -1030,29 +1240,17 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.1.tgz", "integrity": "sha512-mJPRTc/P39NH/iNG4mXa9aIhNymaQikTrnspeCa2ZuJ+mH2QN/rXwtX3XwKrHqWgUQFbNZKtHM105aHzJalElw==", + "dev": true, "optional": true, "requires": { "define-properties": "^1.1.3" } }, - "globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, "got": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, "requires": { "@sindresorhus/is": "^0.14.0", "@szmarczak/http-timer": "^1.1.2", @@ -1065,39 +1263,14 @@ "p-cancelable": "^1.0.0", "to-readable-stream": "^1.0.0", "url-parse-lax": "^3.0.0" - }, - "dependencies": { - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - } } }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, "has-binary2": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", @@ -1117,51 +1290,46 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "hosted-git-info": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.5.tgz", + "integrity": "sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ==", "dev": true, "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "lru-cache": "^6.0.0" } }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true }, "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", + "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", + "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "indexof": { @@ -1172,37 +1340,14 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "optional": true - }, - "internal-ip": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.0.0.tgz", - "integrity": "sha512-TgdC/bqCeRUXHXFLY21mHGyi47WAAnxW5M/VXgr7XB5qbP7smFyVXRmIcec/RQ6oP4dUpxqecOOHwzBVpp5t4A==", - "requires": { - "default-gateway": "^6.0.0", - "ipaddr.js": "^1.9.1" - } - }, - "into-stream": { - "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.3.0", - "p-is-promise": "^3.0.0" - } - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + "dev": true }, "is-binary-path": { "version": "2.1.0", @@ -1212,11 +1357,26 @@ "binary-extensions": "^2.0.0" } }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "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", @@ -1225,15 +1385,38 @@ "is-extglob": "^2.1.1" } }, + "is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "dev": true, + "requires": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + } + }, + "is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "dev": true + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, - "is-stream": { + "is-obj": { "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==" + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", + "dev": true }, "is-typedarray": { "version": "1.0.0", @@ -1241,37 +1424,107 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, "isarray": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "isbinaryfile": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", + "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", "dev": true }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true + "jake": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", + "dev": true, + "requires": { + "async": "0.9.x", + "chalk": "^2.4.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "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" + } + }, + "chalk": { + "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", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } }, "json-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", "dev": true }, "json-schema-traverse": { @@ -1283,139 +1536,134 @@ "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true, + "optional": true + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" + "graceful-fs": "^4.1.6" } }, "keyv": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, "requires": { "json-buffer": "3.0.0" } }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "requires": { + "package-json": "^6.3.0" + } + }, + "lazy-val": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.4.tgz", + "integrity": "sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q==", + "dev": true + }, + "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": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "p-locate": "^4.1.0" } }, "lodash": { "version": "4.17.19", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true, "optional": true }, "lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } }, "matcher": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, "optional": true, "requires": { "escape-string-regexp": "^4.0.0" } }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "dev": true }, - "merge-descriptors": { + "mimic-response": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "dev": true }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" + "brace-expansion": "^1.1.7" } }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" - }, - "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "requires": { - "mime-db": "1.44.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true }, "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, "requires": { "minimist": "^1.2.5" } @@ -1425,21 +1673,32 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "multistream": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/multistream/-/multistream-2.1.1.tgz", - "integrity": "sha512-xasv76hl6nr1dEy3lPvy7Ej7K/Lx3O/FCvwge8PeVJpciPPoNCbaANcNiBug3IpdvTveZUcAV0DJzdnUDMesNQ==", + "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": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.5" + "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.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -1448,32 +1707,20 @@ "normalize-url": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "dev": true }, "npm-conf": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "dev": true, "optional": true, "requires": { "config-chain": "^1.1.11", "pify": "^3.0.0" } }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "requires": { - "path-key": "^3.0.0" - } - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, "object-component": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", @@ -1483,62 +1730,59 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, "optional": true }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } }, - "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "requires": { - "mimic-fn": "^2.1.0" + "p-try": "^2.0.0" } }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "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": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "p-limit": "^2.2.0" } }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "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 }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, - "p-is-promise": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", - "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", - "dev": true + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + } }, "parseqs": { "version": "0.0.5", @@ -1556,141 +1800,66 @@ "better-assert": "~1.0.0" } }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "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 }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "optional": true - }, - "pkg": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/pkg/-/pkg-4.4.9.tgz", - "integrity": "sha512-FK4GqHtcCY2PPPVaKViU0NyRzpo6gCS7tPKN5b7AkElqjAOCH1bsRKgohEnxThr6DWfTGByGqba2YHGR/BqbmA==", - "dev": true, - "requires": { - "@babel/parser": "^7.9.4", - "@babel/runtime": "^7.9.2", - "chalk": "^3.0.0", - "escodegen": "^1.14.1", - "fs-extra": "^8.1.0", - "globby": "^11.0.0", - "into-stream": "^5.1.1", - "minimist": "^1.2.5", - "multistream": "^2.1.1", - "pkg-fetch": "^2.6.9", - "progress": "^2.0.3", - "resolve": "^1.15.1", - "stream-meter": "^1.0.4" - } - }, - "pkg-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/pkg-fetch/-/pkg-fetch-2.6.9.tgz", - "integrity": "sha512-EnVR8LRILXBvaNP+wJOSY02c3+qDDfyEyR+aqAHLhcc9PBnbxFT9UZ1+If49goPQzQPn26TzF//fc6KXZ0aXEg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.9.2", - "byline": "^5.0.0", - "chalk": "^3.0.0", - "expand-template": "^2.0.3", - "fs-extra": "^8.1.0", - "minimist": "^1.2.5", - "progress": "^2.0.3", - "request": "^2.88.0", - "request-progress": "^3.0.0", - "semver": "^6.3.0", - "unique-temp-dir": "^1.0.0" - } + "dev": true }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", "dev": true }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "optional": true + }, "prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true }, "proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true, "optional": true }, - "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - } - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -1702,31 +1871,45 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + "pupa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", + "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==", + "dev": true, + "requires": { + "escape-goat": "^2.0.0" + } }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "read-config-file": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.0.0.tgz", + "integrity": "sha512-PHjROSdpceKUmqS06wqwP92VrM46PZSTubmNIMJ5DrMwg1OgenSTSEHIkCa6TiOJ+y/J0xnG1fFwG3M+Oi1aNA==", + "dev": true, "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "dotenv": "^8.2.0", + "dotenv-expand": "^5.1.0", + "js-yaml": "^3.13.1", + "json5": "^2.1.2", + "lazy-val": "^1.0.4" } }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -1740,7 +1923,8 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true } } }, @@ -1752,57 +1936,36 @@ "picomatch": "^2.2.1" } }, - "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", - "dev": true - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - } + "registry-auth-token": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", + "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", + "dev": true, + "requires": { + "rc": "^1.2.8" } }, - "request-progress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", "dev": true, "requires": { - "throttleit": "^1.0.0" + "rc": "^1.2.8" } }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "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 + }, "resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", @@ -1816,20 +1979,16 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, "requires": { "lowercase-keys": "^1.0.0" } }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, "roarr": { "version": "2.15.3", "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.3.tgz", "integrity": "sha512-AEjYvmAhlyxOeB9OqPUzQCo3kuAkNfuDk/HqWbZdFsqDFpapkTjiw+p4svNEoRLvuqNTxqfL+s+gtD4eDgZ+CA==", + "dev": true, "optional": true, "requires": { "boolean": "^3.0.0", @@ -1840,30 +1999,33 @@ "sprintf-js": "^1.1.2" } }, - "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 - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "sanitize-filename": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, "requires": { "truncate-utf8-bytes": "^1.0.0" } }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -1874,117 +2036,40 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true, "optional": true }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "requires": { + "semver": "^6.3.0" } }, "serialize-error": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, "optional": true, "requires": { "type-fest": "^0.13.1" } }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "shebang-command": { + "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, - "socket.io": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.3.0.tgz", - "integrity": "sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg==", - "requires": { - "debug": "~4.1.0", - "engine.io": "~3.4.0", - "has-binary2": "~1.0.2", - "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.3.0", - "socket.io-parser": "~3.4.0" - } - }, - "socket.io-adapter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", - "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==" - }, "socket.io-client": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz", @@ -2033,82 +2118,141 @@ } } }, - "socket.io-parser": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz", - "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==", - "requires": { - "component-emitter": "1.2.1", - "debug": "~4.1.0", - "isarray": "2.0.1" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true + "dev": true }, - "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "optional": true + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true }, - "stream-meter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stream-meter/-/stream-meter-1.0.4.tgz", - "integrity": "sha1-Uq+Vql6nYKJJFxZwTb/5D3Ov3R0=", + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "requires": { - "readable-stream": "^2.1.4" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true, + "optional": true + }, + "stat-mode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", + "dev": true + }, "string-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=" }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + "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" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "sumchecker": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, "requires": { "debug": "^4.1.0" } @@ -2127,10 +2271,20 @@ "resolved": "https://registry.npmjs.org/tail/-/tail-2.0.4.tgz", "integrity": "sha512-xHkZdNWIzO++g+V/rHGqVoHd2LRxz+8t8bj6FGelfb8FHBjg5yjkX7Su/8sQSBo5alIspYkRp/fU0A2SM5h+5A==" }, - "throttleit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "temp-file": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.3.7.tgz", + "integrity": "sha512-9tBJKt7GZAQt/Rg0QzVWA8Am8c1EFl+CAv04/aBVqlx5oyfQ508sFIABshQ0xbZu6mBrFLWIUXO/bbLYghW70g==", + "dev": true, + "requires": { + "async-exit-hook": "^2.0.1", + "fs-extra": "^8.1.0" + } + }, + "term-size": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", + "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==", "dev": true }, "to-array": { @@ -2141,7 +2295,8 @@ "to-readable-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true }, "to-regex-range": { "version": "5.0.1", @@ -2151,25 +2306,11 @@ "is-number": "^7.0.0" } }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, "truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "dev": true, "requires": { "utf8-byte-length": "^1.0.1" } @@ -2178,78 +2319,66 @@ "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "optional": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } + "optional": true }, "type-fest": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, "optional": true }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "uid2": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", - "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, - "unique-temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz", - "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=", + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, "requires": { - "mkdirp": "^0.5.1", - "os-tmpdir": "^1.0.1", - "uid2": "0.0.3" + "is-typedarray": "^1.0.0" + } + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "requires": { + "crypto-random-string": "^2.0.0" } }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + "update-notifier": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.0.tgz", + "integrity": "sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew==", + "dev": true, + "requires": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + } }, "uri-js": { "version": "4.2.2", @@ -2264,6 +2393,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, "requires": { "prepend-http": "^2.0.0" } @@ -2271,73 +2401,143 @@ "utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=" + "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", + "dev": true }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", "dev": true, "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "string-width": "^4.0.0" } }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, "requires": { - "isexe": "^2.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } } }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } }, - "ws": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", - "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==" + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true }, "xmlhttprequest-ssl": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, "requires": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" diff --git a/elite-navigator-uplink/package.json b/elite-navigator-uplink/package.json index 1d2d184..debd189 100644 --- a/elite-navigator-uplink/package.json +++ b/elite-navigator-uplink/package.json @@ -11,8 +11,8 @@ "license": "ISC", "main": "index.js", "scripts": { - "start": "node .", - "build": "pkg index.js --targets win --output ../elite-navigator-web/public/data/elite-navigator" + "start": "set OVERLAY_URL=http://localhost:3000?layout=overlay&& electron .", + "build": "electron-builder" }, "dependencies": { "chokidar": "^3.4.0", @@ -22,6 +22,21 @@ "tail": "^2.0.4" }, "devDependencies": { - "pkg": "^4.4.9" + "electron-builder": "^22.7.0", + "electron": "^9.1.1" + }, + "build": { + "appId": "rvanasa.EliteNavigator", + "artifactName": "${productName}.${ext}", + "productName": "Elite Navigator", + "files": [ + "**/*" + ], + "directories": { + "output": "../elite-navigator-web/public/data/elite-navigator" + }, + "win": { + "target": "portable" + } } } diff --git a/elite-navigator-uplink/src/main.js b/elite-navigator-uplink/src/main.js new file mode 100644 index 0000000..79898e5 --- /dev/null +++ b/elite-navigator-uplink/src/main.js @@ -0,0 +1,28 @@ +const path = require('path'); +const {app, BrowserWindow} = require('electron'); + +exports.startMainWindow = async () => { + await app.whenReady(); + + let win = new BrowserWindow({ + icon: path.join(__dirname, '../icon.png'), + width: 256, + height: 256, + resizable: false, + autoHideMenuBar: true, + // opacity: .9, + webPreferences: { + preload: path.join(__dirname, '../www/preload.js'), + }, + }); + + win.on('closed', () => app.quit()); + + await win.loadFile(path.join(__dirname, '../www/main/index.html')); + + // win.webContents.openDevTools({ + // mode: 'detach', + // }); + + return win; +}; \ No newline at end of file diff --git a/elite-navigator-uplink/src/overlay.js b/elite-navigator-uplink/src/overlay.js new file mode 100644 index 0000000..f16de80 --- /dev/null +++ b/elite-navigator-uplink/src/overlay.js @@ -0,0 +1,53 @@ +const path = require('path'); +const {app, screen, BrowserWindow} = require('electron'); + +let currentPromise = null; + +exports.openOverlay = async () => { + if(!currentPromise) { + currentPromise = Promise.resolve().then(async () => { + await app.whenReady(); + + let {width, height} = screen.getPrimaryDisplay().workAreaSize; + + let [appWidth, appHeight] = [300, 450]; + + let win = new BrowserWindow({ + icon: path.join(__dirname, '../icon.png'), + width: appWidth, + height: appHeight, + opacity: .6, + x: width - appWidth, + y: 240, + frame: false, + transparent: true, + webPreferences: { + preload: path.join(__dirname, '../www/preload.js'), + }, + }); + + win.setAlwaysOnTop(true, 'floating', 5); + win.setVisibleOnAllWorkspaces(true); + win.setFullScreenable(false); + win.setIgnoreMouseEvents(true); + + win.setFocusable(false); + + await win.loadFile(path.join(__dirname, '../www/overlay/index.html')); + + // win.webContents.openDevTools({ + // mode: 'detach', + // }); + + return win; + }); + } +}; + +exports.closeOverlay = async () => { + if(currentPromise) { + let win = await currentPromise; + win.close(); + currentPromise = null; + } +}; \ No newline at end of file diff --git a/elite-navigator-uplink/src/app.js b/elite-navigator-uplink/src/socket.js similarity index 60% rename from elite-navigator-uplink/src/app.js rename to elite-navigator-uplink/src/socket.js index 6e53bc8..a7676cb 100644 --- a/elite-navigator-uplink/src/app.js +++ b/elite-navigator-uplink/src/socket.js @@ -1,5 +1,6 @@ 'use strict'; +const {openOverlay, closeOverlay} = require('./overlay'); const {watchJournalDirectory, findAllDiscoveries} = require('./service'); let socket = require('socket.io-client').connect('https://elite-navigator.herokuapp.com'); @@ -9,7 +10,7 @@ let defaultRoom = 'elite-navigator'; socket.on('connect', () => { console.log('Joining:', defaultRoom); - let s = 'Access granted to local network devices.'; + let s = 'Available to local network devices.'; console.log('-'.repeat(s.length)); console.log(s); console.log('-'.repeat(s.length)); @@ -24,7 +25,10 @@ socket.on('join', id => { function sendMessage(message) { console.log('Message:', Object.keys(message)); - socket.emit('msg', message); + socket.emit('msg', { + role: 'uplink', + ...message, + }); } let cleanup = watchJournalDirectory((err, entries) => { @@ -37,14 +41,14 @@ socket.on('join', id => { }); }); - findAllDiscoveries() - .then(entries => { - console.log(entries.length, 'discoveries'); - sendMessage({ - journalEntries: entries, - }); - }) - .catch(err => console.error(err)); + // findAllDiscoveries() + // .then(entries => { + // console.log(entries.length, 'discoveries'); + // sendMessage({ + // journalEntries: entries, + // }); + // }) + // .catch(err => console.error(err)); socket.on('leave', _id => { @@ -55,6 +59,17 @@ socket.on('join', id => { }); }); +socket.on('msg', (msg, id) => { + console.log(`Received [${id}]:`, msg); + + if(msg.hasOwnProperty('overlay')) { + (msg.overlay ? openOverlay() : closeOverlay()) + .catch(err => console.error(err)); + } +}); + socket.on('disconnect', () => { console.log('Socket disconnected'); -}); \ No newline at end of file +}); + +module.exports = {socket}; \ No newline at end of file diff --git a/elite-navigator-uplink/www/main/index.html b/elite-navigator-uplink/www/main/index.html new file mode 100644 index 0000000..c19f58e --- /dev/null +++ b/elite-navigator-uplink/www/main/index.html @@ -0,0 +1,49 @@ + + + + + Elite Navigator + + + +

+ Elite Navigator +

Available to local network devices.

+
+ + diff --git a/elite-navigator-uplink/www/overlay/index.html b/elite-navigator-uplink/www/overlay/index.html new file mode 100644 index 0000000..e76a0a0 --- /dev/null +++ b/elite-navigator-uplink/www/overlay/index.html @@ -0,0 +1,30 @@ + + + + + Elite Navigator :: Overlay + + + + + + + + diff --git a/elite-navigator-uplink/www/preload.js b/elite-navigator-uplink/www/preload.js new file mode 100644 index 0000000..7ea3f0b --- /dev/null +++ b/elite-navigator-uplink/www/preload.js @@ -0,0 +1,7 @@ +const {shell} = require('electron'); + +window.OVERLAY_URL = process.env.OVERLAY_URL; + +window.openExternal = async (url) => { + return shell.openExternal(url); +}; diff --git a/elite-navigator-web/package-lock.json b/elite-navigator-web/package-lock.json index 8f9a05b..55627ef 100644 --- a/elite-navigator-web/package-lock.json +++ b/elite-navigator-web/package-lock.json @@ -9916,6 +9916,22 @@ "prepend-http": "^1.0.0", "query-string": "^4.1.0", "sort-keys": "^1.0.0" + }, + "dependencies": { + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + } } }, "npm-run-path": { @@ -11694,12 +11710,14 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.13.1.tgz", + "integrity": "sha512-RfoButmcK+yCta1+FuU8REvisx1oEzhMKwhLUNcepQTPGcNMp1sIqjnfCtfnvGSQZQEhaBHvccujtWoUV3TTbA==", + "dev": true, "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" + "decode-uri-component": "^0.2.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" } }, "querystring": { @@ -13464,6 +13482,12 @@ "wbuf": "^1.7.3" } }, + "split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "dev": true + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -13666,9 +13690,10 @@ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" }, "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", + "dev": true }, "string-length": { "version": "2.0.0", diff --git a/elite-navigator-web/package.json b/elite-navigator-web/package.json index bb1937a..0f9bc4c 100644 --- a/elite-navigator-web/package.json +++ b/elite-navigator-web/package.json @@ -26,7 +26,8 @@ "react-bootstrap": "^1.2.1", "react-icons": "^3.10.0", "react-swipeable": "^5.5.1", - "socket.io-client": "^2.3.0" + "socket.io-client": "^2.3.0", + "query-string": "^6.13.1" }, "scripts": { "start": "react-app-rewired start", diff --git a/elite-navigator-web/src/components/App.js b/elite-navigator-web/src/components/App.js index 2079dfc..bd35144 100644 --- a/elite-navigator-web/src/components/App.js +++ b/elite-navigator-web/src/components/App.js @@ -1,4 +1,4 @@ -import React, {useState} from 'react'; +import React, {useEffect, useState} from 'react'; import './App.scss'; import {Button, InputGroup, Tab, Tabs} from 'react-bootstrap'; @@ -7,7 +7,7 @@ import {tryConnect} from '../services/connection-service'; import {FilterContext, GalaxyContext, SearchContext, SelectContext, SettingsContext} from './Contexts'; import {findGalaxy} from '../services/galaxy-service'; import JournalEntry from './item/JournalEntry'; -import {Player} from '../services/player-service'; +import {createBodyFromJournalEntry, Player} from '../services/player-service'; import {FiMapPin, FiRadio, FiSearch} from 'react-icons/all'; import SearchResult from './SearchResult'; import ExpandableList from './ExpandableList'; @@ -15,6 +15,9 @@ import StarSystem from './item/StarSystem'; import Body from './item/Body'; import Category from './item/Category'; import Station from './item/Station'; +import queryString from 'query-string'; +import BodyCompact from './BodyCompact'; +import SettingToggle from './SettingToggle'; let connectionListener = null; @@ -33,6 +36,8 @@ export default function App() { let [favorites, setFavorites] = useState([]); let [selected, setSelected] = useState(null); + let {layout} = queryString.parse(window.location.search); + if(!settings) { settings = { set(changes) { @@ -47,6 +52,23 @@ export default function App() { setPlayer(player); } + function sendMessage(msg) { + msg = { + source: 'webapp', + ...msg, + }; + console.log('Sending message:', msg); + connection.emit('msg', msg); + } + + function transmitSettings(settings) { + if(settings.hasOwnProperty('overlay')) { + sendMessage({ + overlay: settings.overlay, + }); + } + } + function promptConnect() { disconnect(); // bootbox.prompt({ @@ -66,8 +88,9 @@ export default function App() { async function connect(roomName) { setReconnecting(true); - let connection = await tryConnect(roomName); + connection = await tryConnect(roomName); setConnection(connection); + transmitSettings(settings); setReconnecting(false); // setCurrentTab('nearby'); return connection; @@ -195,6 +218,230 @@ export default function App() { setFavorites(favorites.filter(x => x !== item)); } + if(layout === 'overlay') { + document.body.style.backgroundColor = '#0000'; + } + + let overlayContent = () => (<> + v === 'Terraformable'}}> + { + let items = player.journal.filter(entry => (entry.TerraformState || entry.PlanetClass === 'Earthlike body' || entry.PlanetClass === 'Ammonia world') && entry.StarSystem === relativeSystem.name).sort((a, b) => a.BodyName.localeCompare(b.BodyName)); + return items.filter((a, i) => items.slice(i + 1).every(b => a.BodyName !== b.BodyName)); + })()} + size={10} + render={(entry, i) => ( + // + + )}/> + + ); + + let mainContent = () => (<> + + searchBarElem = elem} + // onFocus={() => setCurrentTab('search')} + onChange={e => doSearch(e.target.value)}/> + + + }> + {currentTab === 'search' && ( + searchQuery ? ( + ( + + )}/> + ) : (<> + ( + + )}/> + s => !favorites.includes(s), 80)} + size={10} + // ignoreSort + render={(item, i) => ( + + )}/> + ) + )} + + }> + {currentTab === 'nearby' && (<> +
+ ( + ( + + )}/> + )}/> + (<> + {/**/} + {galaxy.ringTypes.map((type, i) => ( + (<> + settings.allResourceTypes || b.system.reserveType === 'Pristine')} + size={2} + // ignoreSort + render={(body, i) => ( + + )}/> + )}/> + ))} + )}/> + {/* (*/} + {/* galaxy.materialTypes.map((type, i) => (*/} + {/* (*/} + {/* s.services.includes(type + ' Material Trader'))}*/} + {/* size={2}*/} + {/* // ignoreSort*/} + {/* render={(station, i) => (*/} + {/* */} + {/* )}/>*/} + {/* )}/>*/} + {/* ))*/} + {/*)}/>*/} + ( + ['Interstellar Factors', 'Black Market', 'Technology Broker'].map((type, i) => ( + ( + s.services.includes(type))} + size={2} + // ignoreSort + render={(station, i) => ( + + )}/> + )}/> + )) + )}/> +
+ {overlayContent()} +
+ )} +
+ }> + {currentTab === 'settings' && (<> +
+
+
+ Current system: +
+ + e.target.select()} + onChange={e => doSearch(null) & setCustomSystemName(e.target.value)}/> + + +
+ {!connection ? ( + + ) : playerSystem && (
+ {/*
*/} + {/* Connected to local network*/} + {/*
*/} + transmitSettings({...settings, overlay})}/> +
)} + {!playerSystem ? ( + + + + ) : (<> +
+ ( + ( + + )}/> + )}/> + {/* (<>*/} + {/* (*/} + {/* (*/} + {/* */} + {/* )}/>*/} + {/* )}/>*/} + {/* (*/} + {/* entry.TerraformState)}*/} + {/* size={10}*/} + {/* render={(entry, i) => (*/} + {/* */} + {/* )}/>*/} + {/* )}/>*/} + {/* (*/} + {/* entry.PlanetClass === 'Earthlike body')}*/} + {/* size={10}*/} + {/* render={(entry, i) => (*/} + {/* */} + {/* )}/>*/} + {/* )}/>*/} + {/*)}/>*/} + )} +
+ )} +
+
+ ); + return ( @@ -203,222 +450,15 @@ export default function App() {
- {player.name && ( + {player.name && layout !== 'overlay' && (
CMDR {player.name}
)}
- {relativeSystem.name} + {layout !== 'overlay' || playerSystem || customSystemName || searchQuery ? relativeSystem.name : <> }
- - searchBarElem = elem} - // onFocus={() => setCurrentTab('search')} - onChange={e => doSearch(e.target.value)}/> - - - }> - {currentTab === 'search' && ( - searchQuery ? ( - ( - - )}/> - ) : (<> - ( - - )}/> - s => !favorites.includes(s), 80)} - size={10} - // ignoreSort - render={(item, i) => ( - - )}/> - ) - )} - - }> - {currentTab === 'nearby' && (<> -
- ( - ( - - )}/> - )}/> - (<> - {/**/} - {galaxy.ringTypes.map((type, i) => ( - (<> - settings.allResourceTypes || b.system.reserveType === 'Pristine')} - size={2} - // ignoreSort - render={(body, i) => ( - - )}/> - )}/> - ))} - )}/> - {/* (*/} - {/* galaxy.materialTypes.map((type, i) => (*/} - {/* (*/} - {/* s.services.includes(type + ' Material Trader'))}*/} - {/* size={2}*/} - {/* // ignoreSort*/} - {/* render={(station, i) => (*/} - {/* */} - {/* )}/>*/} - {/* )}/>*/} - {/* ))*/} - {/*)}/>*/} - ( - ['Interstellar Factors', 'Black Market', 'Technology Broker'].map((type, i) => ( - ( - s.services.includes(type))} - size={2} - // ignoreSort - render={(station, i) => ( - - )}/> - )}/> - )) - )}/> - {/*******************/} - v === 'Terraformable'}}> - { - let items = player.journal.filter(entry => (entry.TerraformState || entry.PlanetClass === 'Earthlike body' || entry.PlanetClass === 'Water world' || entry.PlanetClass === 'Ammonia world') && entry.StarSystem === relativeSystem.name).sort((a, b) => a.BodyName.localeCompare(b.BodyName)); - return items.filter((a, i) => items.slice(i + 1).every(b => a.BodyName !== b.BodyName)); - })()} - size={10} - render={(entry, i) => ( - - )}/> - -
- )} -
- }> - {currentTab === 'settings' && (<> -
-
-
- Current system: -
- - e.target.select()} - onChange={e => doSearch(null) & setCustomSystemName(e.target.value)}/> - - -
- {!connection ? ( - - ) : playerSystem && ( -
- Connected to local network -
- )} - {!playerSystem ? ( - - - - ) : (<> - {/*
*/} - ( - ( - - )}/> - )}/> - (<> - ( - ( - - )}/> - )}/> - ( - entry.TerraformState)} - size={10} - render={(entry, i) => ( - - )}/> - )}/> - ( - entry.PlanetClass === 'Earthlike body')} - size={10} - render={(entry, i) => ( - - )}/> - )}/> - )}/> - )} -
- )} -
-
+ {layout === 'overlay' ? overlayContent() : mainContent()}
diff --git a/elite-navigator-web/src/components/BodyCompact.js b/elite-navigator-web/src/components/BodyCompact.js new file mode 100644 index 0000000..2551650 --- /dev/null +++ b/elite-navigator-web/src/components/BodyCompact.js @@ -0,0 +1,58 @@ +import React, {useContext} from 'react'; +import {GalaxyContext} from './Contexts'; +import classNames from 'classnames'; + +export default function Body(props) { + let {body, player} = props; + + let galaxy = useContext(GalaxyContext); + + body = galaxy.getBody(body); + // if(!body) { + // return ; + // } + + // let system = galaxy.getSystem(body.system); + // + // let Icon = body.type && body.type.toLowerCase().includes('star') ? BsBrightnessLow : GiVibratingBall/*IoMdPlanet*/; + + let systemName = typeof body.system === 'string' ? body.system : (galaxy.getSystem(body.system) || {}).name; + + let playerMapped = player && player.getMostRecent(entry => entry.event === 'SAAScanComplete' && entry.BodyName === body.name); + + return ( + // } + // name={body.name || '(Body)'} + // sub={body.starDistance ? body.starDistance.toLocaleString() + ' Ls' : ''} + // below={{body.type}} + // detail={() => (<> + // + // {body.rings && body.rings.map((ring, i) => ( + // } + // sub={ring.type}/> + // ))} + // )}> + // {system && ( + // + // )} + // +
+
+

{body.name.replace(systemName, '').trim()}

+
+
+
{body.type}
+ {/**/} +
+
+ ); +}; diff --git a/elite-navigator-web/src/components/SettingToggle.js b/elite-navigator-web/src/components/SettingToggle.js index 7423a4c..708a795 100644 --- a/elite-navigator-web/src/components/SettingToggle.js +++ b/elite-navigator-web/src/components/SettingToggle.js @@ -4,16 +4,17 @@ import {Form} from 'react-bootstrap'; export default function SettingToggle(props) { let {setting, label, inverted, onToggle} = props; - + let settings = useContext(SettingsContext); - + function onClick(e) { - settings.set({[setting]: !settings[setting]}); + let value = !settings[setting]; + settings.set({[setting]: value}); if(onToggle) { - onToggle(e); + onToggle(value); } } - + return (
diff --git a/elite-navigator-web/src/services/connection-service.js b/elite-navigator-web/src/services/connection-service.js index 14404c8..5af9a3e 100644 --- a/elite-navigator-web/src/services/connection-service.js +++ b/elite-navigator-web/src/services/connection-service.js @@ -64,7 +64,9 @@ export async function tryConnect(roomName) { socket.on('msg', (msg, id) => { console.log('>', id, msg); - sources.add(id); + if(msg.role === 'uplink') { + sources.add(id); + } events.emit('data', {msg}); }); @@ -81,6 +83,10 @@ export async function tryConnect(roomName) { events.emit('data', {resetPlayer: true}); }); + + events.on('msg', msg => { + socket.emit('msg', msg); + }); }); return pendingPromise; } \ No newline at end of file diff --git a/elite-navigator-web/src/services/player-service.js b/elite-navigator-web/src/services/player-service.js index 9f059f6..4221011 100644 --- a/elite-navigator-web/src/services/player-service.js +++ b/elite-navigator-web/src/services/player-service.js @@ -14,16 +14,16 @@ export class Player { this._currentSystem = null; } - getLatest(event) { + getMostRecent(event) { for(let entry of this.journal) { - if(entry.event === event) { + if(typeof event === 'string' ? entry.event === event : event(entry)) { return entry; } } } // getCurrentMaterials() { - // let entry = this.getLatest('Materials'); + // let entry = this.getMostRecent('Materials'); // return entry && ['Raw', 'Manufactured', 'Encoded'] // .flatMap(type => entry[type].map(mat => [type, mat.Name, mat.Name_Localized, mat.Count])); // } @@ -63,7 +63,7 @@ export class Player { // console.log(this.discoveries.filter(d=>d.TerraformState))/////// - let commanderEntry = this.getLatest('Commander'); + let commanderEntry = this.getMostRecent('Commander'); this.name = commanderEntry ? commanderEntry.Name : null; } @@ -91,6 +91,7 @@ export class Player { } export function createBodyFromJournalEntry(entry) { + let terraformable = entry.TerraformState === 'Terraformable'; return { _type: 'body', id: entry.BodyID, @@ -105,7 +106,8 @@ export function createBodyFromJournalEntry(entry) { // eslint-disable-next-line no-useless-concat .replace('Metal' + 'ic', 'Metallic'), })), - // starDistance: Math.round(entry.DistanceFromArrivalLS), + starDistance: Math.round(entry.DistanceFromArrivalLS), + terraformable, firstDiscovered: !entry.WasDiscovered && !entry.WasMapped, attributes: { 'Type': entry.PlanetClass, @@ -113,7 +115,7 @@ export function createBodyFromJournalEntry(entry) { 'Atmosphere': sentenceCase(entry.Atmosphere || ''), 'Volcanism': sentenceCase(entry.Volcanism || ''), 'Landable': entry.Landable && 'Landable', - 'State': entry.TerraformState, + 'Terraformable': terraformable, 'First Discovered': entry.firstDiscovered && 'First Discovered', }, };