From 657d775ada08f2eb3ac6219d5e736a11453ba731 Mon Sep 17 00:00:00 2001 From: "Chris Creighton (@creighcl)" <27293513+Creighcl@users.noreply.github.com> Date: Mon, 5 Jul 2021 00:24:47 -0400 Subject: [PATCH] great start --- .../workflows/firebase-hosting-merge.yml | 20 + .../firebase-hosting-pull-request.yml | 17 + .eslintrc | 5 + .firebase/hosting.YnVpbGQ.cache | 29 + .firebase/hosting.cHVibGlj.cache | 15 + .firebaserc | 5 + database.rules.json | 35 + firebase.json | 25 + functions/.eslintrc.js | 14 + functions/.gitignore | 1 + functions/index.js | 9 + functions/package-lock.json | 2584 +++++++++++++++++ functions/package.json | 26 + package.json | 9 +- public/android-chrome-192x192.png | Bin 0 -> 8521 bytes public/android-chrome-512x512.png | Bin 0 -> 33386 bytes public/apple-touch-icon.png | Bin 0 -> 8047 bytes public/browserconfig.xml | 9 + public/favicon-16x16.png | Bin 0 -> 1079 bytes public/favicon-32x32.png | Bin 0 -> 1804 bytes public/favicon.ico | Bin 3870 -> 15086 bytes public/front.png | Bin 0 -> 30373 bytes public/index.html | 36 +- public/logo.png | Bin 0 -> 97629 bytes public/logo2.png | Bin 0 -> 8424 bytes public/manifest.json | 4 +- public/mstile-150x150.png | Bin 0 -> 4485 bytes public/safari-pinned-tab.svg | 176 ++ public/site.webmanifest | 19 + src/App.css | 4 + src/App.js | 121 +- src/app-context.js | 8 + src/app/app-bar.js | 114 + src/app/menu/menu-item.js | 20 + src/app/pathing/authed-root.js | 55 + src/app/sign-in.js | 27 + src/app/wait-window.js | 13 + src/firebase-crud/crud-context.js | 14 + src/firebase-crud/crud-defs.js | 77 + src/firebase-crud/edit-item.js | 234 ++ src/firebase-crud/field-types.js | 10 + src/firebase-crud/form-field.js | 34 + src/firebase-crud/index.js | 121 + src/firebase-crud/input.js | 176 ++ src/firebase-crud/list.js | 149 + src/firebase-crud/model-types.js | 7 + src/index.css | 1 + src/index.js | 49 +- yarn.lock | 803 ++++- 49 files changed, 5010 insertions(+), 65 deletions(-) create mode 100644 ....github/workflows/firebase-hosting-merge.yml create mode 100644 ....github/workflows/firebase-hosting-pull-request.yml create mode 100644 .eslintrc create mode 100644 .firebase/hosting.YnVpbGQ.cache create mode 100644 .firebase/hosting.cHVibGlj.cache create mode 100644 .firebaserc create mode 100644 database.rules.json create mode 100644 firebase.json create mode 100644 functions/.eslintrc.js create mode 100644 functions/.gitignore create mode 100644 functions/index.js create mode 100644 functions/package-lock.json create mode 100644 functions/package.json create mode 100644 public/android-chrome-192x192.png create mode 100644 public/android-chrome-512x512.png create mode 100644 public/apple-touch-icon.png create mode 100644 public/browserconfig.xml create mode 100644 public/favicon-16x16.png create mode 100644 public/favicon-32x32.png create mode 100644 public/front.png create mode 100644 public/logo.png create mode 100644 public/logo2.png create mode 100644 public/mstile-150x150.png create mode 100644 public/safari-pinned-tab.svg create mode 100644 public/site.webmanifest create mode 100644 src/app-context.js create mode 100644 src/app/app-bar.js create mode 100644 src/app/menu/menu-item.js create mode 100644 src/app/pathing/authed-root.js create mode 100644 src/app/sign-in.js create mode 100644 src/app/wait-window.js create mode 100644 src/firebase-crud/crud-context.js create mode 100644 src/firebase-crud/crud-defs.js create mode 100644 src/firebase-crud/edit-item.js create mode 100644 src/firebase-crud/field-types.js create mode 100644 src/firebase-crud/form-field.js create mode 100644 src/firebase-crud/index.js create mode 100644 src/firebase-crud/input.js create mode 100644 src/firebase-crud/list.js create mode 100644 src/firebase-crud/model-types.js diff --git a/....github/workflows/firebase-hosting-merge.yml b/....github/workflows/firebase-hosting-merge.yml new file mode 100644 index 0000000..f27d5a0 --- /dev/null +++ b/....github/workflows/firebase-hosting-merge.yml @@ -0,0 +1,20 @@ +# This file was auto-generated by the Firebase CLI +# https://github.com/firebase/firebase-tools + +name: Deploy to Firebase Hosting on merge +'on': + push: + branches: + - main +jobs: + build_and_deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - run: npm ci && npm run build + - uses: FirebaseExtended/action-hosting-deploy@v0 + with: + repoToken: '${{ secrets.GITHUB_TOKEN }}' + firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_C_A_T_JOB_PORTAL }}' + channelId: live + projectId: c-a-t-job-portal diff --git a/....github/workflows/firebase-hosting-pull-request.yml b/....github/workflows/firebase-hosting-pull-request.yml new file mode 100644 index 0000000..2722d95 --- /dev/null +++ b/....github/workflows/firebase-hosting-pull-request.yml @@ -0,0 +1,17 @@ +# This file was auto-generated by the Firebase CLI +# https://github.com/firebase/firebase-tools + +name: Deploy to Firebase Hosting on PR +'on': pull_request +jobs: + build_and_preview: + if: '${{ github.event.pull_request.head.repo.full_name == github.repository }}' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - run: npm ci && npm run build + - uses: FirebaseExtended/action-hosting-deploy@v0 + with: + repoToken: '${{ secrets.GITHUB_TOKEN }}' + firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_C_A_T_JOB_PORTAL }}' + projectId: c-a-t-job-portal diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..8cecbf0 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,5 @@ +{ + "rules": { + "react-hooks/exhaustive-deps": "off" + } +} \ No newline at end of file diff --git a/.firebase/hosting.YnVpbGQ.cache b/.firebase/hosting.YnVpbGQ.cache new file mode 100644 index 0000000..16e1e13 --- /dev/null +++ b/.firebase/hosting.YnVpbGQ.cache @@ -0,0 +1,29 @@ +logo.png,1625427838560,10a01971804be294b8c063276dbaa0e85932cebf527591d800f482874c4a7064 +logo192.png,1621555568576,3ee59515172ee198f3be375979df15ac5345183e656720a381b8872b2a39dc8b +logo512.png,1621555568576,ee7e2f3fdb8209c4b6fd7bef6ba50d1b9dba30a25bb5c3126df057e1cb6f5331 +manifest.json,1621556184359,0ce07d90a5c9e7377f540bed86c34817f16ed240a369ecdc1d882116ec65f973 +robots.txt,1621555568576,bfe106a3fb878dc83461c86818bf74fc1bdc7f28538ba613cd3e775516ce8b49 +browserconfig.xml,1625446725000,6acd655db9d0c9069f30156d37fc38c1bdd1b976d19a26f481f527efcd7055f8 +android-chrome-192x192.png,1625446725000,376219fb8ddd6583a9a178e60534e7ebd1d835aa9c110c7133de38aa486e2ef3 +asset-manifest.json,1625454808752,5583df266f989414eaed1d8ab025aa7af9d8fe309ae7bc6ef2c00bc53cefddc1 +favicon-16x16.png,1625446726000,f76bd76ef0d19297bd10b5286845fa2499ae4c1bc597d0ec7aed4f5f7d7a0d37 +apple-touch-icon.png,1625446725000,b730df80cf32b5bfbf19094b45f674556ab65cb4ef65898e821b52a36b0a88a5 +favicon-32x32.png,1625446726000,fc7bf6e477b0be68f4859b001358a56cb922767e9ae67c02922bc9da8fb16401 +index.html,1625454808752,0b4da56f509feea5823528517d248fc8b50340bf7511ec6554fc1494ab198df9 +mstile-150x150.png,1625446727000,5e5a0816af98144d9484379cd2cfe27f2650458b1297fd535fb908c3f43fd8d8 +site.webmanifest,1625446727000,82f20d239b271c14049c7ab847ac2a879ddbb328ea4bb750fa164f492331c900 +static/css/main.7d972aab.chunk.css,1625454808753,5d83fa823ca659d38cf58b78b37def55e5b3183012bacf2cec1673406444e342 +logo2.png,1625454716717,78e31395cf01d6060b5e6c27933558902699c3a4a04c05d3fd8833c36a9f4b86 +static/css/main.7d972aab.chunk.css.map,1625454808768,3d94fc791e604dad45c1674387944d81224e130abc4ad44ab549a37023e84480 +static/js/2.b1638150.chunk.js.LICENSE.txt,1625454808768,398f8c0fc4a72dce632dbc7fd10ce7946dbaec2bd387e64eeaa913f8cd797e22 +safari-pinned-tab.svg,1625446727000,8f8815345e1d9f4781e3d487a2ef9ce73e8dc06a559168897efa889be7716e35 +static/js/3.3d2892d1.chunk.js,1625454808768,c7d25aeb059bb060b2e1b0fda41bbd7521c9b13fef0f61c6bb9a402d52987619 +favicon.ico,1625446726000,f9e9820d8fc0d777c1efbb97a02d83fe497b34fc21e9e478950869009661536a +static/js/3.3d2892d1.chunk.js.map,1625454808769,7ba5bf23ec2a45e84ee6e37e7a8a48fe662028088659c452f3c954fb9cedd123 +static/js/main.9cda3fd5.chunk.js,1625454808768,3add7076f47247b9021abff0910f93d3b21393aab2ceb03d5232a9546323347b +static/js/runtime-main.48f7ee03.js,1625454808768,6490c894ccd43eebf4670477d92a5f6769f4eb5f1b60fd6b0feb18002c198665 +static/js/runtime-main.48f7ee03.js.map,1625454808768,5c9e41f37f96467e84ad8dd48bd823caa219595949cbf02314809729bc12e5f8 +android-chrome-512x512.png,1625446725000,03f328a8bd3601b2ea2120d0c7bad98a8356de948515a3468432d4a172a523ae +static/js/main.9cda3fd5.chunk.js.map,1625454808768,c58c71a0fa48bf0498a344f9fa9326b40f93f2e12581715048bc3a52e3fe266d +static/js/2.b1638150.chunk.js,1625454808768,e3af448bb1e481bffca3991f7b83364784b539af09d9797295ecd51ce5208ff2 +static/js/2.b1638150.chunk.js.map,1625454808769,de7d76fc531e8e7e2513903b0fcdf35623df07d9983fabb6060c8e25d20be950 diff --git a/.firebase/hosting.cHVibGlj.cache b/.firebase/hosting.cHVibGlj.cache new file mode 100644 index 0000000..3ac9f83 --- /dev/null +++ b/.firebase/hosting.cHVibGlj.cache @@ -0,0 +1,15 @@ +android-chrome-192x192.png,1621558830000,b08cb38b9bf42737ef07220defdf70125f479705591665a5534d51d4fb7b941b +android-chrome-256x256.png,1621558830000,ce34176776ecbf444eae9c9a57451be0e37572f27dab50dc8f58286c9fccc993 +apple-touch-icon.png,1621558831000,4a56abb3484486961530e0ea639e24472566103f498aebfe874fc58d23624169 +browserconfig.xml,1621558831000,6acd655db9d0c9069f30156d37fc38c1bdd1b976d19a26f481f527efcd7055f8 +favicon-16x16.png,1621558831000,82ad998fb502bed36c13158ea794dfe0fe9e30bf2ddd4e875d1241766e49a5dd +favicon-32x32.png,1621558831000,2bd2d6b3e44bb4f5b5fe9493e49c7981800cb7164f9d668342801a108d7b87e1 +favicon.ico,1621558832000,c8b594d55e422cd6983494e4d4a58f603729bd9a1e353179b55bd6477be4dcdc +index.html,1621558912116,bce28f9714f3ef9975498759c87b4874c02e876d60c95a1bebe8d05a92ebf077 +logo192.png,1621555568576,3ee59515172ee198f3be375979df15ac5345183e656720a381b8872b2a39dc8b +logo512.png,1621555568576,ee7e2f3fdb8209c4b6fd7bef6ba50d1b9dba30a25bb5c3126df057e1cb6f5331 +manifest.json,1621556184359,0ce07d90a5c9e7377f540bed86c34817f16ed240a369ecdc1d882116ec65f973 +mstile-150x150.png,1621558832000,295c1360b65b42d097d1d46f062a42d02be958f6dc138bf7eea8903183c18b4c +robots.txt,1621555568576,bfe106a3fb878dc83461c86818bf74fc1bdc7f28538ba613cd3e775516ce8b49 +safari-pinned-tab.svg,1621558832000,809049b0aeda1660f8ba5ae00da9b5ca57a30485eb8f1391805d59b99b8dae80 +site.webmanifest,1621558832000,7ab3753411cf8c1f8c2231c60a0b8a882afdd14f58f08e41e5f1ef27cd23e6d9 diff --git a/.firebaserc b/.firebaserc new file mode 100644 index 0000000..ef58d19 --- /dev/null +++ b/.firebaserc @@ -0,0 +1,5 @@ +{ + "projects": { + "default": "c-a-t-job-portal" + } +} diff --git a/database.rules.json b/database.rules.json new file mode 100644 index 0000000..245b5cd --- /dev/null +++ b/database.rules.json @@ -0,0 +1,35 @@ +{ + "rules": { + "billableitems": { + ".read": "root.child('users').child(auth.uid).val() > 1", + "$item_id": { + ".read": "root.child('users').child(auth.uid).val() > 1", + ".write": "root.child('users').child(auth.uid).val() > 2" + } + }, + "serviceaccounts": { + ".read": "root.child('users').child(auth.uid).val() > 1", + "$user_id": { + ".read": "(root.child('users').child(auth.uid).val() > 0 && $user_id == auth.uid) || root.child('users').child(auth.uid).val() > 1", + ".write": "(root.child('users').child(auth.uid).val() > 0 && $user_id == auth.uid) || root.child('users').child(auth.uid).val() > 2" + } + }, + "places": { + ".read": "root.child('users').child(auth.uid).val() > 1", + "$ownerid": { + ".read": "root.child('users').child(auth.uid).val() > 1 || $ownerid == auth.uid", + "$placeid": { + ".read": "root.child('users').child(auth.uid).val() > 1 || $ownerid == auth.uid", + ".write": "root.child('users').child(auth.uid).val() > 2" + } + } + }, + "users": { + "$user_id": { + ".read": "$user_id == auth.uid", + ".write": true, + ".validate": "newData.isNumber()" + } + } + } +} diff --git a/firebase.json b/firebase.json new file mode 100644 index 0000000..75a5868 --- /dev/null +++ b/firebase.json @@ -0,0 +1,25 @@ +{ + "database": { + "rules": "database.rules.json" + }, + "functions": { + "predeploy": [ + "yarn build" + ] + }, + "hosting": { + "public": "build", + "ignore": [ + "firebase.json", + "**/.*", + "**/node_modules/**" + ], + "rewrites": [ + { + "source": "**", + "destination": "/index.html" + } + ] + }, + "emulators": {} +} diff --git a/functions/.eslintrc.js b/functions/.eslintrc.js new file mode 100644 index 0000000..973030b --- /dev/null +++ b/functions/.eslintrc.js @@ -0,0 +1,14 @@ +module.exports = { + root: true, + env: { + es6: true, + node: true, + }, + extends: [ + "eslint:recommended", + "google", + ], + rules: { + quotes: ["error", "double"], + }, +}; diff --git a/functions/.gitignore b/functions/.gitignore new file mode 100644 index 0000000..40b878d --- /dev/null +++ b/functions/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/functions/index.js b/functions/index.js new file mode 100644 index 0000000..4a34f53 --- /dev/null +++ b/functions/index.js @@ -0,0 +1,9 @@ +const functions = require("firebase-functions"); + +// // Create and Deploy Your First Cloud Functions +// // https://firebase.google.com/docs/functions/write-firebase-functions +// +exports.helloWorld = functions.https.onRequest((request, response) => { + functions.logger.info("Hello logs!", {structuredData: true}); + response.send("Hello from Firebase!"); +}); diff --git a/functions/package-lock.json b/functions/package-lock.json new file mode 100644 index 0000000..95d3090 --- /dev/null +++ b/functions/package-lock.json @@ -0,0 +1,2584 @@ +{ + "name": "functions", + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "dev": true + }, + "@babel/highlight": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", + "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "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 + } + } + }, + "@eslint/eslintrc": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", + "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + } + } + }, + "@firebase/app-types": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.2.tgz", + "integrity": "sha512-2VXvq/K+n8XMdM4L2xy5bYp2ZXMawJXluUIDzUBvMthVR+lhxK4pfFiqr1mmDbv9ydXvEAuFsD+6DpcZuJcSSw==" + }, + "@firebase/auth-interop-types": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.6.tgz", + "integrity": "sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g==" + }, + "@firebase/component": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.0.tgz", + "integrity": "sha512-v18csWtXb0ri+3m7wuGLY/UDgcb89vuMlZGQ//+7jEPLIQeLbylvZhol1uzW9WzoOpxMxOS2W5qyVGX36wZvEA==", + "requires": { + "@firebase/util": "1.1.0", + "tslib": "^2.1.0" + } + }, + "@firebase/database": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.10.1.tgz", + "integrity": "sha512-umT0kynJKc5VpVBOg3+YTDzdJORssh+QqPjoHfbSvtmgZizNiV8mgmKRcDhlVM6CisPb6v5xBn9l8JbK/WRQ1Q==", + "requires": { + "@firebase/auth-interop-types": "0.1.6", + "@firebase/component": "0.5.0", + "@firebase/database-types": "0.7.2", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.1.0", + "faye-websocket": "0.11.3", + "tslib": "^2.1.0" + } + }, + "@firebase/database-types": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.7.2.tgz", + "integrity": "sha512-cdAd/dgwvC0r3oLEDUR+ULs1vBsEvy0b27nlzKhU6LQgm9fCDzgaH9nFGv8x+S9dly4B0egAXkONkVoWcOAisg==", + "requires": { + "@firebase/app-types": "0.6.2" + } + }, + "@firebase/logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.6.tgz", + "integrity": "sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw==" + }, + "@firebase/util": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.1.0.tgz", + "integrity": "sha512-lfuSASuPKNdfebuFR8rjFamMQUPH9iiZHcKS755Rkm/5gRT0qC7BMhCh3ZkHf7NVbplzIc/GhmX2jM+igDRCag==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@google-cloud/common": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-3.6.0.tgz", + "integrity": "sha512-aHIFTqJZmeTNO9md8XxV+ywuvXF3xBm5WNmgWeeCK+XN5X+kGW0WEX94wGwj+/MdOnrVf4dL2RvSIt9J5yJG6Q==", + "optional": true, + "requires": { + "@google-cloud/projectify": "^2.0.0", + "@google-cloud/promisify": "^2.0.0", + "arrify": "^2.0.1", + "duplexify": "^4.1.1", + "ent": "^2.2.0", + "extend": "^3.0.2", + "google-auth-library": "^7.0.2", + "retry-request": "^4.1.1", + "teeny-request": "^7.0.0" + } + }, + "@google-cloud/firestore": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-4.12.0.tgz", + "integrity": "sha512-0xB0frnMNllInoqhvCBhuFJsslcD5/oTDyBc0QzoEW8QzH6RxneSjTxDRXQAH9q9+FxcvGjJA4WiffjptU4q/w==", + "optional": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "functional-red-black-tree": "^1.0.1", + "google-gax": "^2.12.0", + "protobufjs": "^6.8.6" + } + }, + "@google-cloud/paginator": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.5.tgz", + "integrity": "sha512-N4Uk4BT1YuskfRhKXBs0n9Lg2YTROZc6IMpkO/8DIHODtm5s3xY8K5vVBo23v/2XulY3azwITQlYWgT4GdLsUw==", + "optional": true, + "requires": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + } + }, + "@google-cloud/projectify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.0.1.tgz", + "integrity": "sha512-ZDG38U/Yy6Zr21LaR3BTiiLtpJl6RkPS/JwoRT453G+6Q1DhlV0waNf8Lfu+YVYGIIxgKnLayJRfYlFJfiI8iQ==", + "optional": true + }, + "@google-cloud/promisify": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.3.tgz", + "integrity": "sha512-d4VSA86eL/AFTe5xtyZX+ePUjE8dIFu2T8zmdeNBSa5/kNgXPCx/o/wbFNHAGLJdGnk1vddRuMESD9HbOC8irw==", + "optional": true + }, + "@google-cloud/storage": { + "version": "5.8.5", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.8.5.tgz", + "integrity": "sha512-i0gB9CRwQeOBYP7xuvn14M40LhHCwMjceBjxE4CTvsqL519sVY5yVKxLiAedHWGwUZHJNRa7Q2CmNfkdRwVNPg==", + "optional": true, + "requires": { + "@google-cloud/common": "^3.6.0", + "@google-cloud/paginator": "^3.0.0", + "@google-cloud/promisify": "^2.0.0", + "arrify": "^2.0.0", + "async-retry": "^1.3.1", + "compressible": "^2.0.12", + "date-and-time": "^1.0.0", + "duplexify": "^4.0.0", + "extend": "^3.0.2", + "gaxios": "^4.0.0", + "gcs-resumable-upload": "^3.1.4", + "get-stream": "^6.0.0", + "hash-stream-validation": "^0.2.2", + "mime": "^2.2.0", + "mime-types": "^2.0.8", + "onetime": "^5.1.0", + "p-limit": "^3.0.1", + "pumpify": "^2.0.0", + "snakeize": "^0.1.0", + "stream-events": "^1.0.1", + "xdg-basedir": "^4.0.0" + } + }, + "@grpc/grpc-js": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.3.2.tgz", + "integrity": "sha512-UXepkOKCATJrhHGsxt+CGfpZy9zUn1q9mop5kfcXq1fBkTePxVNPOdnISlCbJFlCtld+pSLGyZCzr9/zVprFKA==", + "optional": true, + "requires": { + "@types/node": ">=12.12.47" + } + }, + "@grpc/proto-loader": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.2.tgz", + "integrity": "sha512-q2Qle60Ht2OQBCp9S5hv1JbI4uBBq6/mqSevFNK3ZEgRDBCAkWqZPUhD/K9gXOHrHKluliHiVq2L9sw1mVyAIg==", + "optional": true, + "requires": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^6.10.0", + "yargs": "^16.1.1" + } + }, + "@panva/asn1.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@panva/asn1.js/-/asn1.js-1.0.0.tgz", + "integrity": "sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw==" + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=", + "optional": true + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "optional": true + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "optional": true + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=", + "optional": true + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "optional": true, + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=", + "optional": true + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=", + "optional": true + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=", + "optional": true + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=", + "optional": true + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=", + "optional": true + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "optional": true + }, + "@types/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz", + "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/express": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.11.tgz", + "integrity": "sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-jwt": { + "version": "0.0.42", + "resolved": "https://registry.npmjs.org/@types/express-jwt/-/express-jwt-0.0.42.tgz", + "integrity": "sha512-WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag==", + "requires": { + "@types/express": "*", + "@types/express-unless": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz", + "integrity": "sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/express-unless": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@types/express-unless/-/express-unless-0.5.1.tgz", + "integrity": "sha512-5fuvg7C69lemNgl0+v+CUxDYWVPSfXHhJPst4yTLcqi4zKJpORCxnDrnnilk3k0DTq/WrAUdvXFs01+vUqUZHw==", + "requires": { + "@types/express": "*" + } + }, + "@types/lodash": { + "version": "4.14.169", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.169.tgz", + "integrity": "sha512-DvmZHoHTFJ8zhVYwCLWbQ7uAbYQEk52Ev2/ZiQ7Y7gQGeV9pjBqjnQpECMHfKS1rCYAhMI7LHVxwyZLZinJgdw==", + "dev": true + }, + "@types/long": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==", + "optional": true + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + }, + "@types/node": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.3.1.tgz", + "integrity": "sha512-weaeiP4UF4XgF++3rpQhpIJWsCTS4QJw5gvBhQu6cFIxTwyxWIe3xbnrY/o2lTCQ0lsdb8YIUDUvLR4Vuz5rbw==" + }, + "@types/qs": { + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==" + }, + "@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" + }, + "@types/serve-static": { + "version": "1.13.9", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz", + "integrity": "sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==", + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "optional": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "optional": true, + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "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" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "optional": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "async-retry": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.1.tgz", + "integrity": "sha512-aiieFW/7h3hY0Bq5d+ktDBejxuwR78vRu9hDUdR8rNhSaQ29VzPL4AoIRG7D/c7tdenwOcKvgPM6tIxB3cB6HA==", + "optional": true, + "requires": { + "retry": "0.12.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "optional": true + }, + "bignumber.js": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", + "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", + "optional": true + }, + "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=" + } + } + }, + "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" + } + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "optional": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "optional": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "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 + }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "optional": true, + "requires": { + "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-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "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==" + } + } + }, + "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.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "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==", + "optional": true + }, + "date-and-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/date-and-time/-/date-and-time-1.0.0.tgz", + "integrity": "sha512-477D7ypIiqlXBkxhU7YtG9wWZJEQ+RUpujt2quTfgf4+E8g5fNUkB0QIL0bVyP5/TKBg8y55Hfa1R/c4bt3dEw==", + "optional": true + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "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=", + "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=" + }, + "dicer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", + "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", + "requires": { + "streamsearch": "0.1.2" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "optional": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexify": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.1.tgz", + "integrity": "sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA==", + "optional": true, + "requires": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "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==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "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==", + "optional": true, + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "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-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 + }, + "eslint": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz", + "integrity": "sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.1", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.21", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "eslint-config-google": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", + "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "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=" + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "optional": 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": { + "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=" + }, + "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==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "optional": 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==" + }, + "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 + }, + "fast-text-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz", + "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==", + "optional": true + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "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=" + } + } + }, + "firebase-admin": { + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-9.8.0.tgz", + "integrity": "sha512-v8B1qU8McZZT2hlLZ018TKz2FoKlfFkZq9mOIyzN7wJUOlAywqQX0JyqNpVGyPeU+B+77ojlvmkGTNXt2OFkgw==", + "requires": { + "@firebase/database": "^0.10.0", + "@firebase/database-types": "^0.7.2", + "@google-cloud/firestore": "^4.5.0", + "@google-cloud/storage": "^5.3.0", + "@types/node": ">=12.12.47", + "dicer": "^0.3.0", + "jsonwebtoken": "^8.5.1", + "jwks-rsa": "^2.0.2", + "node-forge": "^0.10.0" + } + }, + "firebase-functions": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-3.14.1.tgz", + "integrity": "sha512-hL/qm+i5i1qKYmAFMlQ4mwRngDkP+3YT3F4E4Nd5Hj2QKeawBdZiMGgEt6zqTx08Zq04vHiSnSM0z75UJRSg6Q==", + "requires": { + "@types/express": "4.17.3", + "cors": "^2.8.5", + "express": "^4.17.1", + "lodash": "^4.17.14" + }, + "dependencies": { + "@types/express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.3.tgz", + "integrity": "sha512-I8cGRJj3pyOLs/HndoP+25vOqhqWkAZsWMEmq1qXy/b/M3ppufecUwaK2/TVDVxcV61/iSdhykUjQQ2DLSrTdg==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/serve-static": "*" + } + } + } + }, + "firebase-functions-test": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/firebase-functions-test/-/firebase-functions-test-0.2.3.tgz", + "integrity": "sha512-zYX0QTm53wCazuej7O0xqbHl90r/v1PTXt/hwa0jo1YF8nDM+iBKnLDlkIoW66MDd0R6aGg4BvKzTTdJpvigUA==", + "dev": true, + "requires": { + "@types/lodash": "^4.14.104", + "lodash": "^4.17.5" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "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=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "gaxios": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.2.1.tgz", + "integrity": "sha512-s+rTywpw6CmfB8r9TXYkpix7YFeuRjnR/AqhaJrQqsNhsAqej+IAiCc3hadzQH3gHyWth30tvYjxH8EVjQt/8Q==", + "optional": true, + "requires": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.3.0" + } + }, + "gcp-metadata": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.2.1.tgz", + "integrity": "sha512-tSk+REe5iq/N+K+SK1XjZJUrFPuDqGZVzCy2vocIHIGmPlTGsa8owXMJwGkrXr73NO0AzhPW4MF2DEHz7P2AVw==", + "optional": true, + "requires": { + "gaxios": "^4.0.0", + "json-bigint": "^1.0.0" + } + }, + "gcs-resumable-upload": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-3.1.4.tgz", + "integrity": "sha512-5dyDfHrrVcIskiw/cPssVD4HRiwoHjhk1Nd6h5W3pQ/qffDvhfy4oNCr1f3ZXFPwTnxkCbibsB+73oOM+NvmJQ==", + "optional": true, + "requires": { + "abort-controller": "^3.0.0", + "configstore": "^5.0.0", + "extend": "^3.0.2", + "gaxios": "^4.0.0", + "google-auth-library": "^7.0.0", + "pumpify": "^2.0.0", + "stream-events": "^1.0.4" + } + }, + "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==", + "optional": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "optional": true + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "13.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", + "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + }, + "dependencies": { + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "google-auth-library": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.0.4.tgz", + "integrity": "sha512-o8irYyeijEiecTXeoEe8UKNEzV1X+uhR4b2oNdapDMZixypp0J+eHimGOyx5Joa3UAeokGngdtDLXtq9vDqG2Q==", + "optional": true, + "requires": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^4.0.0", + "gcp-metadata": "^4.2.0", + "gtoken": "^5.0.4", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + } + }, + "google-gax": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-2.13.0.tgz", + "integrity": "sha512-aKNJy2+Vv2I7flyNYbwpq0aYBHp6Qv32HZn+wr6ZhZ8xlSCLS9K9k7izfh2nd1rCJQcsqB6KMxHV0Vwny6Rc1g==", + "optional": true, + "requires": { + "@grpc/grpc-js": "~1.3.0", + "@grpc/proto-loader": "^0.6.1", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^4.0.0", + "fast-text-encoding": "^1.0.3", + "google-auth-library": "^7.0.2", + "is-stream-ended": "^0.1.4", + "node-fetch": "^2.6.1", + "object-hash": "^2.1.1", + "protobufjs": "^6.10.2", + "retry-request": "^4.0.0" + } + }, + "google-p12-pem": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.0.3.tgz", + "integrity": "sha512-wS0ek4ZtFx/ACKYF3JhyGe5kzH7pgiQ7J5otlumqR9psmWMYc+U9cErKlCYVYHoUaidXHdZ2xbo34kB+S+24hA==", + "optional": true, + "requires": { + "node-forge": "^0.10.0" + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "optional": true + }, + "gtoken": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.2.1.tgz", + "integrity": "sha512-OY0BfPKe3QnMsY9MzTHTSKn+Vl2l1CcLe6BwDEQj00mbbkl5nyQ/7EUREstg4fQNZ8iYE7br4JJ7TdKeDOPWmw==", + "optional": true, + "requires": { + "gaxios": "^4.0.0", + "google-p12-pem": "^3.0.3", + "jws": "^4.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "hash-stream-validation": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.4.tgz", + "integrity": "sha512-Gjzu0Xn7IagXVkSu9cSFuK1fqzwtLwFhNhVL8IFJijRNMgUttFbBSIAzKuSIrsFMO1+g1RlsoN49zPIbwPDMGQ==", + "optional": true + }, + "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" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==" + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "optional": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "optional": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "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==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "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==" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "optional": true + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "optional": true + }, + "is-stream-ended": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==", + "optional": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "optional": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "jose": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/jose/-/jose-2.0.5.tgz", + "integrity": "sha512-BAiDNeDKTMgk4tvD0BbxJ8xHEHBZgpeRZ1zGPPsitSyMgjoMWiLGYAE7H7NpP5h0lPppQajQs871E8NHUrzVPA==", + "requires": { + "@panva/asn1.js": "^1.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "optional": true, + "requires": { + "bignumber.js": "^9.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "dependencies": { + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "optional": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jwks-rsa": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-2.0.3.tgz", + "integrity": "sha512-/rkjXRWAp0cS00tunsHResw68P5iTQru8+jHufLNv3JHc4nObFEndfEUSuPugh09N+V9XYxKUqi7QrkmCHSSSg==", + "requires": { + "@types/express-jwt": "0.0.42", + "debug": "^4.1.0", + "jose": "^2.0.5", + "limiter": "^1.1.5", + "lru-memoizer": "^2.1.2" + } + }, + "jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "optional": true, + "requires": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "optional": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "optional": 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==", + "requires": { + "yallist": "^4.0.0" + } + }, + "lru-memoizer": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.1.4.tgz", + "integrity": "sha512-IXAq50s4qwrOBrXJklY+KhgZF+5y98PDaNo0gi/v2KQBFLyWr+JyFvijZXkGKjQj/h9c0OwoE+JZbwUXce76hQ==", + "requires": { + "lodash.clonedeep": "^4.5.0", + "lru-cache": "~4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", + "integrity": "sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=", + "requires": { + "pseudomap": "^1.0.1", + "yallist": "^2.0.0" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } + }, + "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==", + "optional": true, + "requires": { + "semver": "^6.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=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "optional": true + }, + "mime-db": { + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==" + }, + "mime-types": { + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "requires": { + "mime-db": "1.47.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "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==" + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "optional": true + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-hash": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.1.1.tgz", + "integrity": "sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ==", + "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=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "optional": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "optional": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "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=" + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "protobufjs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz", + "integrity": "sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==", + "optional": true, + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + } + }, + "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" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "optional": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", + "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", + "optional": true, + "requires": { + "duplexify": "^4.1.1", + "inherits": "^2.0.3", + "pump": "^3.0.0" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "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==" + }, + "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==" + }, + "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==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "optional": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "optional": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "optional": true + }, + "retry-request": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.1.3.tgz", + "integrity": "sha512-QnRZUpuPNgX0+D1xVxul6DbJ9slvo4Rm6iV/dn63e048MvGbUZiKySVt6Tenp04JqmchxjiLltGerOJys7kJYQ==", + "optional": true, + "requires": { + "debug": "^4.1.1" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "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=" + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "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==" + } + } + }, + "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": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "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==", + "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==", + "optional": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "snakeize": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/snakeize/-/snakeize-0.1.0.tgz", + "integrity": "sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0=", + "optional": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "optional": true, + "requires": { + "stubs": "^3.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "optional": true + }, + "streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "optional": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=", + "optional": 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" + } + }, + "table": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.5.0.tgz", + "integrity": "sha512-Y2l399Tt1AguU3BPRP9Fn4eN+Or+StUGWCUpbnFyXSo8NZ9S4uj+AG2pjs5apK+ZMOwYOz1+a+VKvKH7CudXgQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "teeny-request": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.0.tgz", + "integrity": "sha512-hPfSc05a7Mf3syqVhSkrVMb844sMiP60MrfGMts3ft6V6UlSkEIGQzgwf0dy1KjdE3FV2lJ5s7QCBFcaoQLA6g==", + "optional": true, + "requires": { + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.1", + "stream-events": "^1.0.5", + "uuid": "^8.0.0" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "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 + }, + "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-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==", + "optional": true, + "requires": { + "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==", + "optional": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "optional": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "optional": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.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 + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "optional": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "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==", + "optional": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "optional": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "optional": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "optional": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "optional": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "optional": true + } + } +} diff --git a/functions/package.json b/functions/package.json new file mode 100644 index 0000000..37e367d --- /dev/null +++ b/functions/package.json @@ -0,0 +1,26 @@ +{ + "name": "functions", + "description": "Cloud Functions for Firebase", + "scripts": { + "lint": "eslint .", + "serve": "firebase emulators:start --only functions", + "shell": "firebase functions:shell", + "start": "npm run shell", + "deploy": "firebase deploy --only functions", + "logs": "firebase functions:log" + }, + "engines": { + "node": "12" + }, + "main": "index.js", + "dependencies": { + "firebase-admin": "^9.2.0", + "firebase-functions": "^3.11.0" + }, + "devDependencies": { + "eslint": "^7.6.0", + "eslint-config-google": "^0.14.0", + "firebase-functions-test": "^0.2.0" + }, + "private": true +} diff --git a/package.json b/package.json index 3afe234..421583c 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,21 @@ { - "name": "crate-and-tools", + "name": "crate-and-tools-job-portal", "version": "0.1.0", "private": true, "dependencies": { + "@material-ui/core": "^4.11.4", + "@material-ui/icons": "^5.0.0-alpha.7", + "@react-firebase/auth": "^0.2.10", "@testing-library/jest-dom": "^5.11.4", "@testing-library/react": "^11.1.0", "@testing-library/user-event": "^12.1.10", + "firebase": "^8.6.2", "react": "^17.0.2", "react-dom": "^17.0.2", + "react-router": "^5.2.0", + "react-router-dom": "^5.2.0", "react-scripts": "4.0.3", + "short-uuid": "^4.2.0", "web-vitals": "^1.0.1" }, "scripts": { diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..ae079f01f561957ff4ca5ee46d12a03b24093849 GIT binary patch literal 8521 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 literal 0 HcmV?d00001 diff --git a/public/android-chrome-512x512.png b/public/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..0137b9cb87a34b6c1566db82a4e6106ceef0495a GIT binary patch literal 33386 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 IuvO&$0O&*^P5=M^ literal 0 HcmV?d00001 diff --git a/public/browserconfig.xml b/public/browserconfig.xml new file mode 100644 index 0000000..b3930d0 --- /dev/null +++ b/public/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #da532c + + + diff --git a/public/favicon-16x16.png b/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..1ca4ce55ea87910ac7316ee7760515ae76cf43a4 GIT binary patch literal 1079 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 literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ diff --git a/public/front.png b/public/front.png new file mode 100644 index 0000000000000000000000000000000000000000..dc745b495d525c48f99839889e37eadc21b69d71 GIT binary patch literal 30373 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 Bwu=A& literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html index aa069f2..45d1605 100644 --- a/public/index.html +++ b/public/index.html @@ -7,37 +7,21 @@ - - + + + + + + + + - - React App + Crate And Tools Service Portal
- diff --git a/public/logo.png b/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ae3b78ec84749a6ef4632be75f0bbe0e301213eb GIT binary patch literal 97629 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 KMNUMnLSTYfEb=Y@ literal 0 HcmV?d00001 diff --git a/public/manifest.json b/public/manifest.json index 080d6c7..1ab9bbd 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,6 +1,6 @@ { - "short_name": "React App", - "name": "Create React App Sample", + "short_name": "Crate and Tools", + "name": "Crate and Tools", "icons": [ { "src": "favicon.ico", diff --git a/public/mstile-150x150.png b/public/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..d752968651957506f585cee51343768a5b046617 GIT binary patch literal 4485 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 BLm&VE literal 0 HcmV?d00001 diff --git a/public/safari-pinned-tab.svg b/public/safari-pinned-tab.svg new file mode 100644 index 0000000..b5a2f7b --- /dev/null +++ b/public/safari-pinned-tab.svg @@ -0,0 +1,176 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + + diff --git a/public/site.webmanifest b/public/site.webmanifest new file mode 100644 index 0000000..b20abb7 --- /dev/null +++ b/public/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/src/App.css b/src/App.css index 74b5e05..79d86dd 100644 --- a/src/App.css +++ b/src/App.css @@ -36,3 +36,7 @@ transform: rotate(360deg); } } + +a:visited { + color: white +} diff --git a/src/App.js b/src/App.js index 3784575..68c68eb 100644 --- a/src/App.js +++ b/src/App.js @@ -1,25 +1,104 @@ -import logo from './logo.svg'; -import './App.css'; +import React, { useState, useEffect } from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import firebase from "firebase/app"; +import "firebase/auth"; +import { + IfFirebaseAuthed, + IfFirebaseUnAuthed +} from "@react-firebase/auth"; +import AppContext from './app-context'; +import AuthenticatedRoot from './app/pathing/authed-root'; +import AppBar from './app/app-bar'; +import SignInBox from './app/sign-in'; +import WaitWindow from './app/wait-window'; + +const drawerWidth = 320; + +const useStyles = makeStyles((theme) => ({ + rootContainer: { + display: 'flex', + flexGrow: 1, + marginTop: 80 + }, + appBar: { + zIndex: theme.zIndex.drawer + 1, + }, + menuButton: { + marginRight: theme.spacing(2), + }, + drawer: { + width: drawerWidth, + flexShrink: 0, + }, + drawerPaper: { + width: drawerWidth, + }, + content: { + flexGrow: 1, + padding: theme.spacing(3), + }, +})); + +const App = () => { + const [accessLevel, setAccessLevel] = useState(-2); + const [hasInited, setHasInited] = useState(false); + const classes = useStyles(); + const { currentUser } = firebase.auth(); + + function getMyAccessLevel() { + if (firebase.auth().currentUser !== null && accessLevel === -2) { + const authLevelLookupRef = firebase.database().ref(`/users/${firebase.auth().currentUser.uid}`); + authLevelLookupRef.onDisconnect().cancel(); + authLevelLookupRef.on('value', (snapshot) => { + setHasInited(true); + if (snapshot.exists()) { + setAccessLevel(snapshot.val()); + } + }); + } + } + + useEffect(() => { + getMyAccessLevel(); + }, [currentUser]); + + + useEffect(() => { + setTimeout(() => { + if (!hasInited) { + setHasInited(true); + } + }, 2000); + }, []); + + const appContextValue = { + accessLevel, + setAccessLevel + }; -function App() { return ( -

- ); -} +
+ { hasInited ? ( + + + { () => ( + + +
+ +
+
+ )} +
+ + { () => { + return () + }} + +
+ ) : () + } +
); +}; export default App; diff --git a/src/app-context.js b/src/app-context.js new file mode 100644 index 0000000..41c4729 --- /dev/null +++ b/src/app-context.js @@ -0,0 +1,8 @@ +import React from 'react'; + +const startValues = { + accessLevel: 0, + setAccessLevel: () => {} +}; + +export default React.createContext(startValues); diff --git a/src/app/app-bar.js b/src/app/app-bar.js new file mode 100644 index 0000000..b4d2564 --- /dev/null +++ b/src/app/app-bar.js @@ -0,0 +1,114 @@ +import React, { useState, useRef } from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import { + FirebaseAuthConsumer, + IfFirebaseAuthed + } from "@react-firebase/auth"; +import firebase from "firebase/app"; +import "firebase/auth"; + import { + Link + } from "react-router-dom"; +import IconButton from '@material-ui/core/IconButton'; +import Menu from '@material-ui/core/Menu'; +import MenuItem from '@material-ui/core/MenuItem'; + +import Avatar from '@material-ui/core/Avatar'; +import AppBar from '@material-ui/core/AppBar'; +import Toolbar from '@material-ui/core/Toolbar'; + +const useStyles = makeStyles((theme) => ({ + appBar: { + height: 80, + zIndex: theme.zIndex.drawer + 1, + backgroundColor: '#ffffff' + }, + buttonTray: { + margin: 'auto 0' + }, + buttonStyle: { + ...theme.typography.button, + backgroundColor: theme.palette.background.paper, + padding: theme.spacing(3), + color: '#545454', + textDecoration: 'none', + '&:hover': { + color: '#ed873f' + }, + }, + })); + +const TopAppBar = () => { + const classes = useStyles(); + const [menuOpen, setMenuOpen] = useState(false); + const iconRef = useRef(null); + + function toggleMenu() { + setMenuOpen(!menuOpen); + } + + async function googleSignout() { + await firebase.auth().signOut(); + setMenuOpen(false); + } + + const handleClose = () => { + setMenuOpen(false) + }; + + return ( + +
+ + + + + { () => ( + + {({ user: { photoURL, displayName } }) => { + return ( + +
+ + Accounts + + + Places + + + Billables + +
+ + +
+ Logged in as +
+ {displayName} +
+
+ + Logout + +
+
+ ); + }} +
+ )} +
+
+
+
); +}; + +export default TopAppBar; diff --git a/src/app/menu/menu-item.js b/src/app/menu/menu-item.js new file mode 100644 index 0000000..16a7250 --- /dev/null +++ b/src/app/menu/menu-item.js @@ -0,0 +1,20 @@ +import React, { useContext } from 'react'; +import { Link } from 'react-router-dom'; +import ListItem from '@material-ui/core/ListItem'; +import ListItemIcon from '@material-ui/core/ListItemIcon'; +import ListItemText from '@material-ui/core/ListItemText'; +import AppContext from '../../app-context'; + +const MenuItem = ({ minAccessLevel = 1, url, label, icon }) => { + const { accessLevel } = useContext(AppContext); + return accessLevel >= minAccessLevel && ( + + + { icon } + + + + ); +}; + +export default MenuItem; diff --git a/src/app/pathing/authed-root.js b/src/app/pathing/authed-root.js new file mode 100644 index 0000000..d7741b9 --- /dev/null +++ b/src/app/pathing/authed-root.js @@ -0,0 +1,55 @@ +import React, { useContext } from 'react'; +import Breadcrumbs from '@material-ui/core/Breadcrumbs'; +import { + Switch, + Route + } from "react-router-dom"; +import { + IfFirebaseAuthed +} from "@react-firebase/auth"; +import firebase from "firebase/app"; +import "firebase/auth"; +import Typography from '@material-ui/core/Typography'; +import FirebaseCrud from '../../firebase-crud'; +import AppContext from '../../app-context'; + +const AuthenticatedRoot = () => { + const { accessLevel } = useContext(AppContext); + + if (accessLevel === 0) return (
Your access level is 0, an administrator will assign you
); + + if (accessLevel === -1) return (
ACCOUNT DISABLED
); + + if (accessLevel === -2) { + return (
LOADING...
); + } + + if (!accessLevel) return (
UNASSIGNED, make a button. When the user clicks it, allow them to set their own access level to '0'
); + + return accessLevel > 0 && ( + { + () => ( + + + + + + + + + + + + + + Portal Home + + + + + ) + } + ); +}; + +export default AuthenticatedRoot; diff --git a/src/app/sign-in.js b/src/app/sign-in.js new file mode 100644 index 0000000..e41ed40 --- /dev/null +++ b/src/app/sign-in.js @@ -0,0 +1,27 @@ +import React from 'react'; +import Button from '@material-ui/core/Button'; +import GoogleIcon from '@material-ui/icons/Google'; +import firebase from "firebase/app"; +import "firebase/auth"; + +const SignIn = () => { + async function googleSignin() { + const googleAuthProvider = new firebase.auth.GoogleAuthProvider(); + await firebase.auth().signInWithPopup(googleAuthProvider); + } + + return (
+ + +
); +}; + +export default SignIn; diff --git a/src/app/wait-window.js b/src/app/wait-window.js new file mode 100644 index 0000000..010ef23 --- /dev/null +++ b/src/app/wait-window.js @@ -0,0 +1,13 @@ +import React from 'react'; +import CircularProgress from '@material-ui/core/CircularProgress'; + +const WaitWindow = () => { + return (
+ +
+ +
+
); +}; + +export default WaitWindow; diff --git a/src/firebase-crud/crud-context.js b/src/firebase-crud/crud-context.js new file mode 100644 index 0000000..f70969d --- /dev/null +++ b/src/firebase-crud/crud-context.js @@ -0,0 +1,14 @@ +import React from 'react'; + +const startValues = { + storageKey: '', + crudLabel: '', + listAccessors: [], + fields: [], + formState: {}, + entityState: {}, + setFormState: () => {}, + setEntityState: () => {} +}; + +export default React.createContext(startValues); diff --git a/src/firebase-crud/crud-defs.js b/src/firebase-crud/crud-defs.js new file mode 100644 index 0000000..d3c2382 --- /dev/null +++ b/src/firebase-crud/crud-defs.js @@ -0,0 +1,77 @@ +import FieldTypes from './field-types'; +import ModelTypes from './model-types'; + +const definitions = { + ACCOUNTS: { + modelType: ModelTypes.SOLO, + crudLabel: 'Account', + storageKey: 'serviceaccounts', + labelAccessor: 'label', + listAccessors: ['label', 'name', 'phone'], + fields: { + label: { + label: 'Account Label', + type: FieldTypes.TEXT + }, + name: { + label: 'Contact Name', + type: FieldTypes.TEXT + }, + phone: { + label: 'Phone Number', + type: FieldTypes.TEXT + }, + } + }, + BILLABLEITEMS: { + modelType: ModelTypes.ENUM, + crudLabel: 'Billable Item', + storageKey: 'billableitems', + labelAccessor: 'label', + listAccessors: ['label', 'price', 'description'], + fields: { + label: { + label: 'Item Name', + type: FieldTypes.TEXT + }, + price: { + label: 'Price per unit', + type: FieldTypes.NUMBER + }, + description: { + label: 'Description', + type: FieldTypes.TEXT + } + } + }, + PLACES: { + modelType: ModelTypes.USEROWNEDLIST, + crudLabel: 'Place', + storageKey: 'places', + labelAccessor: 'label', + listAccessors: ['account', 'label', 'address', 'zip'], + fields: { + label: { + label: 'Label', + type: FieldTypes.TEXT + }, + address: { // http://maps.google.com/maps?q=210+Louise+Ave,+Nashville,+TN+37203 + label: 'Street Address', + type: FieldTypes.TEXT + }, + zip: { + label: 'Zip', + type: FieldTypes.NUMBER + }, + qualifier: { + label: 'Add Place to Which Account?', + type: FieldTypes.ILOOKUP, + lookupKey: 'serviceaccounts', + lookupItemKeyFn: ({ id }) => id, + lookupItemValueFn: ({ label, name }) => `${label} (${name})` + } + } + } +}; + +export default definitions; diff --git a/src/firebase-crud/edit-item.js b/src/firebase-crud/edit-item.js new file mode 100644 index 0000000..6d5518e --- /dev/null +++ b/src/firebase-crud/edit-item.js @@ -0,0 +1,234 @@ +import React, { + useEffect, + useState, + useContext +} from 'react'; +import Button from '@material-ui/core/Button'; +import Typography from '@material-ui/core/Typography'; +import Card from '@material-ui/core/Card'; +import CardActions from '@material-ui/core/CardActions'; +import CardContent from '@material-ui/core/CardContent'; +import IconButton from '@material-ui/core/IconButton'; +import DeleteIcon from '@material-ui/icons/Delete'; +import Dialog from '@material-ui/core/Dialog'; +import DialogContent from '@material-ui/core/DialogContent'; +import DialogContentText from '@material-ui/core/DialogContentText'; +import DialogTitle from '@material-ui/core/DialogTitle'; +import DialogActions from '@material-ui/core/DialogActions'; +import { + useParams, + useHistory, + useRouteMatch +} from 'react-router-dom'; +import firebase from "firebase/app"; +import "firebase/auth"; +import "firebase/database"; +import CrudContext from './crud-context'; +import FormField from './form-field'; +import ModelTypes from './model-types'; +import AppContext from '../app-context'; + +const shallowEqual = (objA, objB) => { + if (!objA || !objB) { + return objA === objB + } + return !Boolean( + Object + .keys(Object.assign({}, objA, objB)) + .find((key) => objA[key] !== objB[key]) + ) +}; + +const NewItemQualifierSelection = () => { + const hx = useHistory(); + const { params: { routeGroup, recId } } = useRouteMatch('/:routeGroup/:recId'); + const { + formState: { qualifier } + } = useContext(CrudContext); + + const okToSubmit = qualifier; + function continueWithSelection() { + hx.push(`/${routeGroup}/${qualifier}%2F${recId}`); + } + return (
+ + +
); +} + +const EditItem = () => { + const hx = useHistory(); + const { uid } = firebase.auth().currentUser; + const match = useRouteMatch('/:routeGroup'); + const [open, setOpen] = useState(false); + let { cruddyid } = useParams(); + const pseudoLinked = !cruddyid; + if (pseudoLinked) cruddyid = uid; + + const cruddyIdForUri = cruddyid.replace('%2F', '/'); + const [userHasAccess, setUserHasAccess] = useState(true); + const { + formState, + entityState, + hardSetEntityState, + hardSetFormState, + storageKey, + setCrumbs, + crudLabel, + modelType + } = useContext(CrudContext); + const { + accessLevel + } = useContext(AppContext); + const idIsQualified = modelType !== ModelTypes.USEROWNEDLIST || cruddyid.indexOf('%2F') > -1; + + const [fbRef, setFbRef] = useState(); + + function goBack() { + hx.push(match.url); + } + + function handleClose() { + setOpen(false); + } + + function openModal() { + setOpen(true); + } + + function deleteItem() { + handleClose(); + fbRef.set(null); + goBack(); + // toast the delete + } + + useEffect(() => { + const importNewItemInfo = (info) => { + hardSetFormState(info); + hardSetEntityState(info); + }; + setCrumbs([{ url: match.url, label: `${crudLabel}s` }, { url: '', label: 'This Item' }]); + + const refPath = `/${storageKey}/${cruddyIdForUri}`; + let newRef = firebase.database().ref(refPath); + newRef.onDisconnect().cancel(); + newRef.on('child_changed', (snapshot) => { + console.log('something changed externally'); + // toast external change + }); + newRef.once('value') + .then((snapshot) => { setUserHasAccess(true); importNewItemInfo(snapshot.val() || {}); }) + .catch(() => { setUserHasAccess(false); }); + setFbRef(newRef); + return () => newRef.off(); + }, [storageKey, cruddyid, accessLevel, uid]); // eslint-disable-line + + function resetForm() { + hardSetFormState(entityState); + } + + function onSuccessfulSave() { + // toast a success + hardSetEntityState(formState); + hx.push(match.url); + } + + function onFailedSave(firebaseResponse) { + // pluck the error message + // toast the failure + } + + function onSaveResponse(resp) { + if (resp === null) { + onSuccessfulSave(); + } else { + onFailedSave(resp); + } + } + + function saveItem() { + fbRef.set(formState, onSaveResponse); + } + + if (!userHasAccess) { + return (
You are not authorized to access this item
); + } + + if (!entityState || entityState === {}){ + return (
LOADING
); + } + + if (!idIsQualified) { + return (); + } + + const isSavable = !shallowEqual(formState, entityState); + + return ({ (props) => { + const { fields = [], crudLabel = 'Item', labelAccessor } = props; + + return ( +
+ { !pseudoLinked && () } + + + {formState[labelAccessor] || 'unlabeled'} + { crudLabel } +
+ { Object.keys(fields).filter(o => o !== 'qualifier').map((fieldName) => ( +
+ +
+ )) } +
+ + + + + + + +
+
+ + {"Delete this item?"} + + + Permanently remove this item from the database. This operation cannot be cancelled or undone. + + + + + + + +
+ ); + } }
); +}; + +export default EditItem; diff --git a/src/firebase-crud/field-types.js b/src/firebase-crud/field-types.js new file mode 100644 index 0000000..713e307 --- /dev/null +++ b/src/firebase-crud/field-types.js @@ -0,0 +1,10 @@ +const typeList = { + TEXT: 1, + NUMBER: 2, + SELECTONE: 3, + SELECTMANY: 4, + TEXTAREA: 5, + ILOOKUP: 6 +}; + +export default typeList; diff --git a/src/firebase-crud/form-field.js b/src/firebase-crud/form-field.js new file mode 100644 index 0000000..209d941 --- /dev/null +++ b/src/firebase-crud/form-field.js @@ -0,0 +1,34 @@ +import React, { useContext } from 'react'; +import FieldTypes from './field-types'; +import CrudContext from './crud-context'; +import * as Input from './input'; + +const FormField = ({ name }) => { + const ctx = useContext(CrudContext); + const DEFAULT_FIELD_VALUES = { + label: name, + type: FieldTypes.TEXT + }; + const fieldInfo = { + name, + ...DEFAULT_FIELD_VALUES, + ...ctx.fields[name] + }; + + switch (fieldInfo.type) { + case FieldTypes.TEXTAREA : + return (); + case FieldTypes.NUMBER : + return (); + case FieldTypes.SELECTONE : + return (); + case FieldTypes.SELECTMANY : + return (
selectmany
); + case FieldTypes.ILOOKUP : + return () + default : + return (); + }; +} + +export default FormField; diff --git a/src/firebase-crud/index.js b/src/firebase-crud/index.js new file mode 100644 index 0000000..3d265cd --- /dev/null +++ b/src/firebase-crud/index.js @@ -0,0 +1,121 @@ +import React, { useState, useContext } from 'react'; +import firebase from "firebase/app"; +import "firebase/auth"; +import Fab from '@material-ui/core/Fab'; +import Typography from '@material-ui/core/Typography'; +import AddIcon from '@material-ui/icons/Add'; +import Breadcrumbs from '@material-ui/core/Breadcrumbs'; +import { + Switch, + Link, + Route, + useRouteMatch, + useHistory +} from 'react-router-dom'; +import EditItem from './edit-item'; +import CrudList from './list'; +import CrudContext from './crud-context'; +import ModelTypes from './model-types'; +import crudDefinitions from './crud-defs'; +import uuid from 'short-uuid'; +import AppContext from '../app-context'; + +const FirebaseCrud = ({ definition }) => { + const hx = useHistory(); + const { accessLevel } = useContext(AppContext); + let match = useRouteMatch(); + + const [entityState, setXEntityState] = useState({}); + const [formState, setXFormState] = useState({}); + const [crumbs, setCrumbs] = useState([]); + + const providerValue = { + ...{ fields: [], storageKey: '', crumbs: [] }, + ...crudDefinitions[definition], + entityState, + setEntityState, + setCrumbs, + formState, + setFormState, + hardSetFormState, + hardSetEntityState + }; + + function startNewItem() { + const { modelType } = providerValue; + const newid = uuid.generate(); + let newUrl = `${match.url}/${newid}`; + if (modelType === ModelTypes.USEROWNEDLIST && accessLevel === 1) { + const { uid } = firebase.auth().currentUser; + newUrl = `${match.url}/${uid}%2F${newid}` + } + hx.push(newUrl); + } + + function setEntityState(newState) { + setXEntityState({ + ...entityState, + ...newState + }); + } + + function hardSetEntityState(newState) { + setXEntityState(newState); + } + + function setFormState(newState) { + setXFormState({ + ...formState, + ...newState + }); + } + + function hardSetFormState(newState) { + setXFormState(newState); + } + + const { modelType } = crudDefinitions[definition]; + + const canAddItems = modelType === ModelTypes.USEROWNEDLIST || ModelTypes.ENUM; + + const skipList = accessLevel < 2 && modelType === ModelTypes.SOLO; + + return ( + + + + + Portal Home + + + { + crumbs.map((o) => + o.url ? + ({o.label}) + : ({o.label}) + ) + } + +
+ + + + + + { + skipList ? + : + } + + +
+ { + canAddItems && ( + + ) + } +
+ ); +}; + +export default FirebaseCrud; diff --git a/src/firebase-crud/input.js b/src/firebase-crud/input.js new file mode 100644 index 0000000..c04346e --- /dev/null +++ b/src/firebase-crud/input.js @@ -0,0 +1,176 @@ +import React, { useContext, useEffect, useState } from 'react'; +import TextField from '@material-ui/core/TextField'; +import Select from '@material-ui/core/Select'; +import FormControl from '@material-ui/core/FormControl'; +import InputLabel from '@material-ui/core/InputLabel'; +import { MenuItem } from '@material-ui/core'; +import firebase from "firebase/app"; +import "firebase/database"; +import CrudContext from './crud-context'; +import AppContext from '../app-context'; + +export const ILookup = ({ fieldInfo }) => { + const [hasAccess, setHasAccess] = useState(true); + const { + setFormState, + formState + } = useContext(CrudContext); + const { + accessLevel + } = useContext(AppContext); + const { + label, + lookupKey, + lookupItemKeyFn, + lookupItemValueFn, + name + } = fieldInfo; + const [options, setOptions] = useState([]); + + useEffect(() => { + let newRef = firebase.database().ref(`/${lookupKey}`); + newRef.onDisconnect().cancel(); + newRef.once('value') + .then((snapshot) => { + const payload = snapshot.val(); + const itemKeys = Object.keys(payload); + const items = itemKeys.map((i) => ({ + id: i, + ...payload[i] + })); + + const newOptions = items.map((i) => ({ + key: lookupItemKeyFn(i), + value: lookupItemValueFn(i) + })); + setOptions(newOptions); + setHasAccess(true); + }) + .catch(() => { + setHasAccess(false); + }); + return () => newRef.off(); + }, [lookupKey, lookupItemKeyFn, lookupItemValueFn, accessLevel]); + + function updateState({ target }) { + setFormState({ [name]: target.value }); + } + + const hasValueAndOptionsNotLoaded = options.length === 0 && formState[name]; + const optionSet = hasValueAndOptionsNotLoaded ? [{ key: formState[name], value: formState[name] }] : options; + + if (!hasAccess) { + return (
ACCESS ERROR
); + } + return ( + { label } + + ); +}; + +export const Text = ({ fieldInfo }) => { + const { + setFormState, + formState + } = useContext(CrudContext); + const { + label, + name + } = fieldInfo; + + function updateState({ target }) { + setFormState({ [name]: target.value }); + } + + return (); +}; + +export const Textarea = ({ fieldInfo }) => { + const { + setFormState, + formState + } = useContext(CrudContext); + const { + label, + name + } = fieldInfo; + + function updateState({ target }) { + setFormState({ [name]: target.value }); + } + + return (); +}; + +export const Number = ({ fieldInfo }) => { + const { + setFormState, + formState + } = useContext(CrudContext); + const { + label, + name + } = fieldInfo; + + function updateState({ target }) { + setFormState({ [name]: target.value }); + } + + return (); +}; + +export const SelectOne = ({ fieldInfo }) => { + const { + setFormState, + formState + } = useContext(CrudContext); + const { + label, + options = [], + name + } = fieldInfo; + + function updateState({ target }) { + setFormState({ [name]: target.value }); + } + + return ( + { label } + + ); +}; diff --git a/src/firebase-crud/list.js b/src/firebase-crud/list.js new file mode 100644 index 0000000..3ef2547 --- /dev/null +++ b/src/firebase-crud/list.js @@ -0,0 +1,149 @@ +import React, { + useEffect, + useState, + useContext +} from 'react'; +import { + Link, + useRouteMatch +} from 'react-router-dom'; +import Table from '@material-ui/core/Table'; +import TableHead from '@material-ui/core/TableHead'; +import TableBody from '@material-ui/core/TableBody'; +import TableCell from '@material-ui/core/TableCell'; +import TableRow from '@material-ui/core/TableRow'; +import EditIcon from '@material-ui/icons/Edit'; +import Typography from '@material-ui/core/Typography'; +import Card from '@material-ui/core/Card'; +import CardContent from '@material-ui/core/CardContent'; +import firebase from "firebase/app"; +import "firebase/auth"; +import "firebase/database"; +import CrudContext from './crud-context'; +import AppContext from '../app-context'; +import ModelTypes from './model-types'; + +const List = () => { + let match = useRouteMatch(); + const [userHasAccess, setUserHasAccess] = useState(true); + const [listState, setListState] = useState([]); + const { + storageKey, + setCrumbs, + listAccessors, + crudLabel, + modelType + } = useContext(CrudContext); + const { + accessLevel + } = useContext(AppContext); + + + let dbRef = `/${storageKey}`; + let snapshotReducer = (snapshot) => { // client userownedlist reducer + const payload = snapshot.val(); + if (payload === null) return {}; + + return Object.keys(payload).reduce((acc, cur) => ({ + ...acc, + [cur]: { + ...payload[cur], + account: uid + } + }), {}); + }; + + if (modelType === ModelTypes.SOLO) { // solo reducer + snapshotReducer = (snapshot) => snapshot.val() || {}; + } + + let editLinkFn = (id) => `${match.path}/${id}`; + const { uid } = firebase.auth().currentUser; + const mayAccessTopLevelList = accessLevel >= 2; + + if (mayAccessTopLevelList && modelType === ModelTypes.USEROWNEDLIST) { + snapshotReducer = (snapshot) => { // employee userownedlist reducer + const payload = snapshot.val(); + if (payload === null) return {}; + return Object.keys(payload).reduce((acc, cur) => ({ + ...acc, + ...Object.keys(payload[cur]).map((subkey) => ({ + [`${cur}%2F${subkey}`]: { + ...payload[cur][subkey], + account: cur + } + })).reduce((acc, cur) => ({ + ...acc, + ...cur + }), {}) + }), {}); + }; + } + + if (!mayAccessTopLevelList) { + dbRef = `/${storageKey}/${uid}`; + editLinkFn = (id) => `${match.path}/${uid}%2F${id}`; + } + + useEffect(() => { + setCrumbs([{ url: '', label: `${crudLabel}s` }]) + let newRef = firebase.database().ref(dbRef); + newRef.onDisconnect().cancel(); + newRef.on('child_changed', (snapshot) => { + setListState(snapshotReducer(snapshot)); + // toast external change + }); + newRef.once('value') + .then((snapshot) => { + setUserHasAccess(true); + setListState(snapshotReducer(snapshot)); + }) + .catch((e) => { + console.log(e); + setUserHasAccess(false); + }); + return () => newRef.off(); + }, [storageKey, crudLabel, setCrumbs, accessLevel]); + + if (!userHasAccess) return (
NO ACCESS
); + + return (
+ + All {crudLabel}s + + + + + + + + { + listAccessors.map((listAccessor) => ( + { listAccessor } + )) + } + + + + {Object.keys(listState).map((k) => ( + + + + + + + { + listAccessors.map((listAccessor) => ( + {listState[k][listAccessor]} + )) + } + + ))} + +
+
+
+
) +}; + +export default List; diff --git a/src/firebase-crud/model-types.js b/src/firebase-crud/model-types.js new file mode 100644 index 0000000..4733821 --- /dev/null +++ b/src/firebase-crud/model-types.js @@ -0,0 +1,7 @@ +const typeList = { + USEROWNEDLIST: 1, + SOLO: 2, + ENUM: 3 +}; + +export default typeList; diff --git a/src/index.css b/src/index.css index ec2585e..c4b7766 100644 --- a/src/index.css +++ b/src/index.css @@ -5,6 +5,7 @@ body { sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; + background-color: #f5f5f5; } code { diff --git a/src/index.js b/src/index.js index ef2edf8..63bf3a2 100644 --- a/src/index.js +++ b/src/index.js @@ -3,11 +3,54 @@ import ReactDOM from 'react-dom'; import './index.css'; import App from './App'; import reportWebVitals from './reportWebVitals'; +import { + BrowserRouter as Router +} from "react-router-dom"; +import { createMuiTheme, ThemeProvider } from '@material-ui/core/styles'; +import firebase from "firebase/app"; +import "firebase/auth"; +import { + FirebaseAuthProvider +} from "@react-firebase/auth"; + +const theme = createMuiTheme({ + palette: { + primary: { + light: '#fff', + main: '#ed873f', + dark: '#b4805c', + contrastText: '#545454', + }, + secondary: { + light: '#ff7961', + main: '#5393ff', + dark: '#ba000d', + contrastText: '#000', + } + }, +}); + +const config = { + apiKey: "AIzaSyBsoQXeqeUqNsFzggQYheaYFFmPdFRjPgQ", + authDomain: "c-a-t-job-portal.firebaseapp.com", + databaseURL: "https://c-a-t-job-portal-default-rtdb.firebaseio.com", + projectId: "c-a-t-job-portal", + storageBucket: "c-a-t-job-portal.appspot.com", + messagingSenderId: "390538795524", + appId: "1:390538795524:web:7b3fdb4112d97d4a8db351", + measurementId: "G-VXNCVBRN5Z" +}; ReactDOM.render( - - - , + // + + + + + + + , + // , document.getElementById('root') ); diff --git a/yarn.lock b/yarn.lock index 932854c..fe68028 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1091,6 +1091,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.1.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6" + integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": version "7.12.18" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.18.tgz#af137bd7e7d9705a412b3caaf991fe6aaa97831b" @@ -1098,13 +1105,6 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.12.5", "@babel/runtime@^7.9.2": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6" - integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA== - dependencies: - regenerator-runtime "^0.13.4" - "@babel/template@^7.10.4", "@babel/template@^7.12.13", "@babel/template@^7.3.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" @@ -1161,6 +1161,11 @@ resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== +"@emotion/hash@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== + "@eslint/eslintrc@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318" @@ -1177,6 +1182,267 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" +"@firebase/analytics-types@0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.4.0.tgz#d6716f9fa36a6e340bc0ecfe68af325aa6f60508" + integrity sha512-Jj2xW+8+8XPfWGkv9HPv/uR+Qrmq37NPYT352wf7MvE9LrstpLVmFg3LqG6MCRr5miLAom5sen2gZ+iOhVDeRA== + +"@firebase/analytics@0.6.10": + version "0.6.10" + resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.6.10.tgz#e2438d57fa289d1f05ca1a2ea7aedee10501fc3e" + integrity sha512-dLOAfeHYKkt1mhFNzrST6X0W5Og/VKhH7VP03YlUwz1STKtPve/KV32IynjMEBgnI6DC1NIAX3V0jYK6KBum4A== + dependencies: + "@firebase/analytics-types" "0.4.0" + "@firebase/component" "0.5.0" + "@firebase/installations" "0.4.26" + "@firebase/logger" "0.2.6" + "@firebase/util" "1.1.0" + tslib "^2.1.0" + +"@firebase/app-check-interop-types@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@firebase/app-check-interop-types/-/app-check-interop-types-0.1.0.tgz#83afd9d41f99166c2bdb2d824e5032e9edd8fe53" + integrity sha512-uZfn9s4uuRsaX5Lwx+gFP3B6YsyOKUE+Rqa6z9ojT4VSRAsZFko9FRn6OxQUA1z5t5d08fY4pf+/+Dkd5wbdbA== + +"@firebase/app-check-types@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@firebase/app-check-types/-/app-check-types-0.1.0.tgz#75602650c5f118891834280b72addcac513c4b7d" + integrity sha512-jf92QzVkj9ulyp/K01h/GpVYNSjuk6DP9nHkq4AUyM+35e96cl9gL3+qOTD0//5CVfrWjRo7+lbVlW2OpG/JDQ== + +"@firebase/app-check@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@firebase/app-check/-/app-check-0.1.1.tgz#26c15df13048a86c025590f8b8b579f3f9b8b99c" + integrity sha512-nBNiyhbCBpaVfVNjwGor+f0LZkn5kf1QRdMPbRyZUJG6BjTByMhNmbezEaCWNO0MNBhsNqYqiXUivHJU4A3+2Q== + dependencies: + "@firebase/app-check-interop-types" "0.1.0" + "@firebase/app-check-types" "0.1.0" + "@firebase/component" "0.5.0" + "@firebase/logger" "0.2.6" + "@firebase/util" "1.1.0" + tslib "^2.1.0" + +"@firebase/app-types@0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.6.2.tgz#8578cb1061a83ced4570188be9e225d54e0f27fb" + integrity sha512-2VXvq/K+n8XMdM4L2xy5bYp2ZXMawJXluUIDzUBvMthVR+lhxK4pfFiqr1mmDbv9ydXvEAuFsD+6DpcZuJcSSw== + +"@firebase/app@0.6.22": + version "0.6.22" + resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.6.22.tgz#099f51d2c4302d2c99da82994cd176b5a568cfcc" + integrity sha512-9E0KP7Z+LpBOx/oQauLYvf3XleYpbfoi058wStADUtP+eOX5GIImAFNDTOO4ZNuJfLgyrHpKi7Cct6mDdxrz+g== + dependencies: + "@firebase/app-types" "0.6.2" + "@firebase/component" "0.5.0" + "@firebase/logger" "0.2.6" + "@firebase/util" "1.1.0" + dom-storage "2.1.0" + tslib "^2.1.0" + xmlhttprequest "1.8.0" + +"@firebase/auth-interop-types@0.1.6": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.1.6.tgz#5ce13fc1c527ad36f1bb1322c4492680a6cf4964" + integrity sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g== + +"@firebase/auth-types@0.10.3": + version "0.10.3" + resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.10.3.tgz#2be7dd93959c8f5304c63e09e98718e103464d8c" + integrity sha512-zExrThRqyqGUbXOFrH/sowuh2rRtfKHp9SBVY2vOqKWdCX1Ztn682n9WLtlUDsiYVIbBcwautYWk2HyCGFv0OA== + +"@firebase/auth@0.16.6": + version "0.16.6" + resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.16.6.tgz#0fc7a11561b939865fd486cd1909a3e81742fd82" + integrity sha512-1Lj3AY40Z2weCK6FuJqUEkeVJpRaaCo1LT6P5s3VIR99PDYLHeMm2m02rBaskE7ralJA975Vkv7sHrpykRfDrA== + dependencies: + "@firebase/auth-types" "0.10.3" + +"@firebase/component@0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.5.0.tgz#f5b577d6c6f78d0f12fdc45046108921507f49c9" + integrity sha512-v18csWtXb0ri+3m7wuGLY/UDgcb89vuMlZGQ//+7jEPLIQeLbylvZhol1uzW9WzoOpxMxOS2W5qyVGX36wZvEA== + dependencies: + "@firebase/util" "1.1.0" + tslib "^2.1.0" + +"@firebase/database-types@0.7.2": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.7.2.tgz#449c4b36ec59a1ad9089797b540e2ba1c0d4fcbf" + integrity sha512-cdAd/dgwvC0r3oLEDUR+ULs1vBsEvy0b27nlzKhU6LQgm9fCDzgaH9nFGv8x+S9dly4B0egAXkONkVoWcOAisg== + dependencies: + "@firebase/app-types" "0.6.2" + +"@firebase/database@0.10.1": + version "0.10.1" + resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.10.1.tgz#1e8c64519552f225a4a88e7dae09ecf29447f2be" + integrity sha512-umT0kynJKc5VpVBOg3+YTDzdJORssh+QqPjoHfbSvtmgZizNiV8mgmKRcDhlVM6CisPb6v5xBn9l8JbK/WRQ1Q== + dependencies: + "@firebase/auth-interop-types" "0.1.6" + "@firebase/component" "0.5.0" + "@firebase/database-types" "0.7.2" + "@firebase/logger" "0.2.6" + "@firebase/util" "1.1.0" + faye-websocket "0.11.3" + tslib "^2.1.0" + +"@firebase/firestore-types@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-2.3.0.tgz#baf5c9470ba8be96bf0d76b83b413f03104cf565" + integrity sha512-QTW7NP7nDL0pgT/X53lyj+mIMh4nRQBBTBlRNQBt7eSyeqBf3ag3bxdQhCg358+5KbjYTC2/O6QtX9DlJZmh1A== + +"@firebase/firestore@2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-2.3.1.tgz#b0c3ff842b4b11e9888cada6e9b421eb9797c5c3" + integrity sha512-8xQB8o8OmmecXLWwGUbH2V2GifsR3hh/HBgcS0i6OyMYcXb3guZiX6dSbBlSDkak13NNxlSo7R6168aKB/8x7g== + dependencies: + "@firebase/component" "0.5.0" + "@firebase/firestore-types" "2.3.0" + "@firebase/logger" "0.2.6" + "@firebase/util" "1.1.0" + "@firebase/webchannel-wrapper" "0.4.1" + "@grpc/grpc-js" "^1.0.0" + "@grpc/proto-loader" "^0.5.0" + node-fetch "2.6.1" + tslib "^2.1.0" + +"@firebase/functions-types@0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.4.0.tgz#0b789f4fe9a9c0b987606c4da10139345b40f6b9" + integrity sha512-3KElyO3887HNxtxNF1ytGFrNmqD+hheqjwmT3sI09FaDCuaxGbOnsXAXH2eQ049XRXw9YQpHMgYws/aUNgXVyQ== + +"@firebase/functions@0.6.9": + version "0.6.9" + resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.6.9.tgz#6e38c9aa411949d8697bf662bb8da8a0837addae" + integrity sha512-WgrT3EG+O70pYpX2KQM2S2Is2WJbKE6XImoloMglIqiaquOCXNR9LUVbGPWQr7qEqY+QojfTgF/bGH0awqm2KA== + dependencies: + "@firebase/component" "0.5.0" + "@firebase/functions-types" "0.4.0" + "@firebase/messaging-types" "0.5.0" + node-fetch "2.6.1" + tslib "^2.1.0" + +"@firebase/installations-types@0.3.4": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@firebase/installations-types/-/installations-types-0.3.4.tgz#589a941d713f4f64bf9f4feb7f463505bab1afa2" + integrity sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q== + +"@firebase/installations@0.4.26": + version "0.4.26" + resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.4.26.tgz#34133944123d92077674dcec81e32b4fccd92021" + integrity sha512-bHc6jlV8p1cX+GK38key4BooeZZ42//nKPmf3POWren0bACjnfHJuMnOBDuyw22ss3z6wUdiFNQjeUxvD4btGg== + dependencies: + "@firebase/component" "0.5.0" + "@firebase/installations-types" "0.3.4" + "@firebase/util" "1.1.0" + idb "3.0.2" + tslib "^2.1.0" + +"@firebase/logger@0.2.6": + version "0.2.6" + resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.2.6.tgz#3aa2ca4fe10327cabf7808bd3994e88db26d7989" + integrity sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw== + +"@firebase/messaging-types@0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@firebase/messaging-types/-/messaging-types-0.5.0.tgz#c5d0ef309ced1758fda93ef3ac70a786de2e73c4" + integrity sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg== + +"@firebase/messaging@0.7.10": + version "0.7.10" + resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.7.10.tgz#a46fb689d7feed46b2112cb08dd44993c6ceecec" + integrity sha512-Z5ui3kc1GbPf2+kwNvr0HjguBbi0xTkR7/BHodHHGpz0ycuY/J2/Cl9SgwhEuB52kme4ca9sKwV1g0Ln2/iARw== + dependencies: + "@firebase/component" "0.5.0" + "@firebase/installations" "0.4.26" + "@firebase/messaging-types" "0.5.0" + "@firebase/util" "1.1.0" + idb "3.0.2" + tslib "^2.1.0" + +"@firebase/performance-types@0.0.13": + version "0.0.13" + resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.0.13.tgz#58ce5453f57e34b18186f74ef11550dfc558ede6" + integrity sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA== + +"@firebase/performance@0.4.12": + version "0.4.12" + resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.4.12.tgz#fe4068ad29682d127e4ef1efc6dcca7c68f3ac39" + integrity sha512-dFV0OR5IpHZwfOLFkEZuUVFmaJQresmS5G4UNFGk1E0VwU4feZ3roq75dJVYehclJxmbzgMM9M/U1bZ1/9wt3g== + dependencies: + "@firebase/component" "0.5.0" + "@firebase/installations" "0.4.26" + "@firebase/logger" "0.2.6" + "@firebase/performance-types" "0.0.13" + "@firebase/util" "1.1.0" + tslib "^2.1.0" + +"@firebase/polyfill@0.3.36": + version "0.3.36" + resolved "https://registry.yarnpkg.com/@firebase/polyfill/-/polyfill-0.3.36.tgz#c057cce6748170f36966b555749472b25efdb145" + integrity sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg== + dependencies: + core-js "3.6.5" + promise-polyfill "8.1.3" + whatwg-fetch "2.0.4" + +"@firebase/remote-config-types@0.1.9": + version "0.1.9" + resolved "https://registry.yarnpkg.com/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz#fe6bbe4d08f3b6e92fce30e4b7a9f4d6a96d6965" + integrity sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA== + +"@firebase/remote-config@0.1.37": + version "0.1.37" + resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.1.37.tgz#b79fe81231d3ca1325836a8aa9756cb7aa587d3a" + integrity sha512-SYjDOsEoUeqX1CYnUtXqVtM8MpVm2qx2Dp8NLRlLcPp/FieEza/mjRNVHBojMKuFjmyQp/RdPG8R0I9xDJ4PsQ== + dependencies: + "@firebase/component" "0.5.0" + "@firebase/installations" "0.4.26" + "@firebase/logger" "0.2.6" + "@firebase/remote-config-types" "0.1.9" + "@firebase/util" "1.1.0" + tslib "^2.1.0" + +"@firebase/storage-types@0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.4.1.tgz#da6582ae217e3db485c90075dc71100ca5064cc6" + integrity sha512-IM4cRzAnQ6QZoaxVZ5MatBzqXVcp47hOlE28jd9xXw1M9V7gfjhmW0PALGFQx58tPVmuUwIKyoEbHZjV4qRJwQ== + +"@firebase/storage@0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.5.2.tgz#146cb4c7838c6e3602b32a43786dcabd16f668fb" + integrity sha512-D2lZixL6E2iXE4jObtlA3UnAbcMd3657erotiuZt5ap95m1fogiPV/gIq3KLIaT5sFdfbbDQn9mm6hVKhobYHA== + dependencies: + "@firebase/component" "0.5.0" + "@firebase/storage-types" "0.4.1" + "@firebase/util" "1.1.0" + tslib "^2.1.0" + +"@firebase/util@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@firebase/util/-/util-1.1.0.tgz#add2d57d0b2307a932520abdee303b66be0ac8b0" + integrity sha512-lfuSASuPKNdfebuFR8rjFamMQUPH9iiZHcKS755Rkm/5gRT0qC7BMhCh3ZkHf7NVbplzIc/GhmX2jM+igDRCag== + dependencies: + tslib "^2.1.0" + +"@firebase/webchannel-wrapper@0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.1.tgz#600f2275ff54739ad5ac0102f1467b8963cd5f71" + integrity sha512-0yPjzuzGMkW1GkrC8yWsiN7vt1OzkMIi9HgxRmKREZl2wnNPOKo/yScTjXf/O57HM8dltqxPF6jlNLFVtc2qdw== + +"@grpc/grpc-js@^1.0.0": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.3.2.tgz#eae97e6daf5abd49a7818aadeca0744dfb1ebca1" + integrity sha512-UXepkOKCATJrhHGsxt+CGfpZy9zUn1q9mop5kfcXq1fBkTePxVNPOdnISlCbJFlCtld+pSLGyZCzr9/zVprFKA== + dependencies: + "@types/node" ">=12.12.47" + +"@grpc/proto-loader@^0.5.0": + version "0.5.6" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.5.6.tgz#1dea4b8a6412b05e2d58514d507137b63a52a98d" + integrity sha512-DT14xgw3PSzPxwS13auTEwxhMMOoz33DPUKNtmYK/QYbBSpLXJy78FGGs5yVoxVobEqPm4iW9MOIoz0A3bLTRQ== + dependencies: + lodash.camelcase "^4.3.0" + protobufjs "^6.8.6" + "@hapi/address@2.x.x": version "2.1.4" resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" @@ -1396,6 +1662,77 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" +"@material-ui/core@^4.11.4": + version "4.11.4" + resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.11.4.tgz#4fb9fe5dec5dcf780b687e3a40cff78b2b9640a4" + integrity sha512-oqb+lJ2Dl9HXI9orc6/aN8ZIAMkeThufA5iZELf2LQeBn2NtjVilF5D2w7e9RpntAzDb4jK5DsVhkfOvFY/8fg== + dependencies: + "@babel/runtime" "^7.4.4" + "@material-ui/styles" "^4.11.4" + "@material-ui/system" "^4.11.3" + "@material-ui/types" "5.1.0" + "@material-ui/utils" "^4.11.2" + "@types/react-transition-group" "^4.2.0" + clsx "^1.0.4" + hoist-non-react-statics "^3.3.2" + popper.js "1.16.1-lts" + prop-types "^15.7.2" + react-is "^16.8.0 || ^17.0.0" + react-transition-group "^4.4.0" + +"@material-ui/icons@^5.0.0-alpha.7": + version "5.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@material-ui/icons/-/icons-5.0.0-beta.0.tgz#8fb1e0fb207708a2340e831ab527d47d4015a380" + integrity sha512-dmyrmFcaSOqrWpGT6pwcZ+2B3zzHzj/hQs502m7q81a7Eul1burfFQFQWX28cYo69/vjOtz4mr+CfqpeqtnkfA== + dependencies: + "@babel/runtime" "^7.4.4" + +"@material-ui/styles@^4.11.4": + version "4.11.4" + resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.11.4.tgz#eb9dfccfcc2d208243d986457dff025497afa00d" + integrity sha512-KNTIZcnj/zprG5LW0Sao7zw+yG3O35pviHzejMdcSGCdWbiO8qzRgOYL8JAxAsWBKOKYwVZxXtHWaB5T2Kvxew== + dependencies: + "@babel/runtime" "^7.4.4" + "@emotion/hash" "^0.8.0" + "@material-ui/types" "5.1.0" + "@material-ui/utils" "^4.11.2" + clsx "^1.0.4" + csstype "^2.5.2" + hoist-non-react-statics "^3.3.2" + jss "^10.5.1" + jss-plugin-camel-case "^10.5.1" + jss-plugin-default-unit "^10.5.1" + jss-plugin-global "^10.5.1" + jss-plugin-nested "^10.5.1" + jss-plugin-props-sort "^10.5.1" + jss-plugin-rule-value-function "^10.5.1" + jss-plugin-vendor-prefixer "^10.5.1" + prop-types "^15.7.2" + +"@material-ui/system@^4.11.3": + version "4.11.3" + resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-4.11.3.tgz#466bc14c9986798fd325665927c963eb47cc4143" + integrity sha512-SY7otguNGol41Mu2Sg6KbBP1ZRFIbFLHGK81y4KYbsV2yIcaEPOmsCK6zwWlp+2yTV3J/VwT6oSBARtGIVdXPw== + dependencies: + "@babel/runtime" "^7.4.4" + "@material-ui/utils" "^4.11.2" + csstype "^2.5.2" + prop-types "^15.7.2" + +"@material-ui/types@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material-ui/types/-/types-5.1.0.tgz#efa1c7a0b0eaa4c7c87ac0390445f0f88b0d88f2" + integrity sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A== + +"@material-ui/utils@^4.11.2": + version "4.11.2" + resolved "https://registry.yarnpkg.com/@material-ui/utils/-/utils-4.11.2.tgz#f1aefa7e7dff2ebcb97d31de51aecab1bb57540a" + integrity sha512-Uul8w38u+PICe2Fg2pDKCaIG7kOyhowZ9vjiC1FsVwPABTW8vPPKfF6OvxRq3IiBaI1faOJmgdvMG7rMJARBhA== + dependencies: + "@babel/runtime" "^7.4.4" + prop-types "^15.7.2" + react-is "^16.8.0 || ^17.0.0" + "@nodelib/fs.scandir@2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" @@ -1437,6 +1774,67 @@ schema-utils "^2.6.5" source-map "^0.7.3" +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78= + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A= + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU= + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E= + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik= + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0= + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q= + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= + +"@react-firebase/auth@^0.2.10": + version "0.2.10" + resolved "https://registry.yarnpkg.com/@react-firebase/auth/-/auth-0.2.10.tgz#1f58a6c9dd7f89ec1ca03d0620929f1a6bac9c82" + integrity sha512-qeRv96HI5Y3nPRwO3Zi4QnYYeJstVu8lDih+QQbTeuadUUngchGw5Tp7dseOY5u3q/+e+kF2hV7BUkfYt7FS8g== + dependencies: + lodash.get "^4.4.2" + render-and-add-props "^0.5.0" + "@rollup/plugin-node-resolve@^7.1.1": version "7.1.3" resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" @@ -1751,6 +2149,11 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= +"@types/long@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9" + integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== + "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -1761,6 +2164,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.31.tgz#72286bd33d137aa0d152d47ec7c1762563d34055" integrity sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g== +"@types/node@>=12.12.47", "@types/node@>=13.7.0": + version "15.3.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.3.1.tgz#23a06b87eedb524016616e886b116b8fdcb180af" + integrity sha512-weaeiP4UF4XgF++3rpQhpIJWsCTS4QJw5gvBhQu6cFIxTwyxWIe3xbnrY/o2lTCQ0lsdb8YIUDUvLR4Vuz5rbw== + "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" @@ -1776,11 +2184,32 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.1.tgz#374e31645d58cb18a07b3ecd8e9dede4deb2cccd" integrity sha512-DxZZbyMAM9GWEzXL+BMZROWz9oo6A9EilwwOMET2UVu2uZTqMWS5S69KVtuVKaRjCUpcrOXRalet86/OpG4kqw== +"@types/prop-types@*": + version "15.7.3" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" + integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== + "@types/q@^1.5.1": version "1.5.4" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== +"@types/react-transition-group@^4.2.0": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.1.tgz#e1a3cb278df7f47f17b5082b1b3da17170bd44b1" + integrity sha512-vIo69qKKcYoJ8wKCJjwSgCTM+z3chw3g18dkrDfVX665tMH7tmbDxEAnPdey4gTlwZz5QuHGzd+hul0OVZDqqQ== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "17.0.6" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.6.tgz#0ec564566302c562bf497d73219797a5e0297013" + integrity sha512-u/TtPoF/hrvb63LdukET6ncaplYsvCvmkceasx8oG84/ZCsoLxz9Z/raPBP4lTAiWW1Jb889Y9svHmv8R26dWw== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/resolve@0.0.8": version "0.0.8" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" @@ -1788,6 +2217,11 @@ dependencies: "@types/node" "*" +"@types/scheduler@*": + version "0.16.1" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275" + integrity sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA== + "@types/source-list-map@*": version "0.1.2" resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" @@ -2260,6 +2694,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +any-base@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/any-base/-/any-base-1.1.0.tgz#ae101a62bc08a597b4c9ab5b7089d456630549fe" + integrity sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg== + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -3244,6 +3683,11 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" +clsx@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" + integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -3479,6 +3923,11 @@ core-js-pure@^3.0.0: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.9.0.tgz#326cc74e1fef8b7443a6a793ddb0adfcd81f9efb" integrity sha512-3pEcmMZC9Cq0D4ZBh3pe2HLtqxpGNJBLXF/kZ2YzK17RbKp94w0HFbdbSx8H8kAlZG5k76hvLrkPm57Uyef+kg== +core-js@3.6.5: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" + integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== + core-js@^2.4.0: version "2.6.12" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" @@ -3683,6 +4132,14 @@ css-tree@^1.1.2: mdn-data "2.0.14" source-map "^0.6.1" +css-vendor@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-2.0.8.tgz#e47f91d3bd3117d49180a3c935e62e3d9f7f449d" + integrity sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ== + dependencies: + "@babel/runtime" "^7.8.3" + is-in-browser "^1.0.2" + css-what@^3.2.1: version "3.4.2" resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" @@ -3819,6 +4276,16 @@ cssstyle@^2.2.0: dependencies: cssom "~0.3.6" +csstype@^2.5.2: + version "2.6.17" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.17.tgz#4cf30eb87e1d1a005d8b6510f95292413f6a1c0e" + integrity sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A== + +csstype@^3.0.2: + version "3.0.8" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" + integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== + cyclist@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" @@ -4082,6 +4549,14 @@ dom-converter@^0.2: dependencies: utila "~0.4" +dom-helpers@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + dom-serializer@0: version "0.2.2" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" @@ -4090,6 +4565,11 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" +dom-storage@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/dom-storage/-/dom-storage-2.1.0.tgz#00fb868bc9201357ea243c7bcfd3304c1e34ea39" + integrity sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q== + domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" @@ -4853,7 +5333,7 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -faye-websocket@^0.11.3: +faye-websocket@0.11.3, faye-websocket@^0.11.3: version "0.11.3" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== @@ -4967,6 +5447,27 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" +firebase@^8.6.2: + version "8.6.2" + resolved "https://registry.yarnpkg.com/firebase/-/firebase-8.6.2.tgz#af39d19cc9bbab2442b5ae3181c29c1e76a5c804" + integrity sha512-U2FCBZ1D8qYfuSQ0SN0dGw59x08v5mHnYtDJiUMCoulbA2psk8AqmCT/aqJz8FDTQB87iPbAxGRXVnAozagM1Q== + dependencies: + "@firebase/analytics" "0.6.10" + "@firebase/app" "0.6.22" + "@firebase/app-check" "0.1.1" + "@firebase/app-types" "0.6.2" + "@firebase/auth" "0.16.6" + "@firebase/database" "0.10.1" + "@firebase/firestore" "2.3.1" + "@firebase/functions" "0.6.9" + "@firebase/installations" "0.4.26" + "@firebase/messaging" "0.7.10" + "@firebase/performance" "0.4.12" + "@firebase/polyfill" "0.3.36" + "@firebase/remote-config" "0.1.37" + "@firebase/storage" "0.5.2" + "@firebase/util" "1.1.0" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -5394,6 +5895,18 @@ hex-color-regex@^1.1.0: resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== +history@^4.9.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" + integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + resolve-pathname "^3.0.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^1.0.1" + hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -5403,6 +5916,13 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + hoopy@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" @@ -5575,6 +6095,11 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== +hyphenate-style-name@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" + integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== + iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -5589,6 +6114,11 @@ icss-utils@^4.0.0, icss-utils@^4.1.1: dependencies: postcss "^7.0.14" +idb@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/idb/-/idb-3.0.2.tgz#c8e9122d5ddd40f13b60ae665e4862f8b13fa384" + integrity sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw== + identity-obj-proxy@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" @@ -5672,6 +6202,13 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +indefinite-observable@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/indefinite-observable/-/indefinite-observable-2.0.1.tgz#574af29bfbc17eb5947793797bddc94c9d859400" + integrity sha512-G8vgmork+6H9S8lUAg1gtXEj2JxIQTo0g2PbFiYOdjkziSI0F7UYBiVwhZRuixhBCNGczAls34+5HJPyZysvxQ== + dependencies: + symbol-observable "1.2.0" + indent-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" @@ -5931,6 +6468,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-in-browser@^1.0.2, is-in-browser@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" + integrity sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU= + is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" @@ -6073,6 +6615,11 @@ is-wsl@^2.1.1, is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -6716,6 +7263,77 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +jss-plugin-camel-case@^10.5.1: + version "10.6.0" + resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.6.0.tgz#93d2cd704bf0c4af70cc40fb52d74b8a2554b170" + integrity sha512-JdLpA3aI/npwj3nDMKk308pvnhoSzkW3PXlbgHAzfx0yHWnPPVUjPhXFtLJzgKZge8lsfkUxvYSQ3X2OYIFU6A== + dependencies: + "@babel/runtime" "^7.3.1" + hyphenate-style-name "^1.0.3" + jss "10.6.0" + +jss-plugin-default-unit@^10.5.1: + version "10.6.0" + resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.6.0.tgz#af47972486819b375f0f3a9e0213403a84b5ef3b" + integrity sha512-7y4cAScMHAxvslBK2JRK37ES9UT0YfTIXWgzUWD5euvR+JR3q+o8sQKzBw7GmkQRfZijrRJKNTiSt1PBsLI9/w== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.6.0" + +jss-plugin-global@^10.5.1: + version "10.6.0" + resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.6.0.tgz#3e8011f760f399cbadcca7f10a485b729c50e3ed" + integrity sha512-I3w7ji/UXPi3VuWrTCbHG9rVCgB4yoBQLehGDTmsnDfXQb3r1l3WIdcO8JFp9m0YMmyy2CU7UOV6oPI7/Tmu+w== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.6.0" + +jss-plugin-nested@^10.5.1: + version "10.6.0" + resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.6.0.tgz#5f83c5c337d3b38004834e8426957715a0251641" + integrity sha512-fOFQWgd98H89E6aJSNkEh2fAXquC9aZcAVjSw4q4RoQ9gU++emg18encR4AT4OOIFl4lQwt5nEyBBRn9V1Rk8g== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.6.0" + tiny-warning "^1.0.2" + +jss-plugin-props-sort@^10.5.1: + version "10.6.0" + resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.6.0.tgz#297879f35f9fe21196448579fee37bcde28ce6bc" + integrity sha512-oMCe7hgho2FllNc60d9VAfdtMrZPo9n1Iu6RNa+3p9n0Bkvnv/XX5San8fTPujrTBScPqv9mOE0nWVvIaohNuw== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.6.0" + +jss-plugin-rule-value-function@^10.5.1: + version "10.6.0" + resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.6.0.tgz#3c1a557236a139d0151e70a82c810ccce1c1c5ea" + integrity sha512-TKFqhRTDHN1QrPTMYRlIQUOC2FFQb271+AbnetURKlGvRl/eWLswcgHQajwuxI464uZk91sPiTtdGi7r7XaWfA== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.6.0" + tiny-warning "^1.0.2" + +jss-plugin-vendor-prefixer@^10.5.1: + version "10.6.0" + resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.6.0.tgz#e1fcd499352846890c38085b11dbd7aa1c4f2c78" + integrity sha512-doJ7MouBXT1lypLLctCwb4nJ6lDYqrTfVS3LtXgox42Xz0gXusXIIDboeh6UwnSmox90QpVnub7au8ybrb0krQ== + dependencies: + "@babel/runtime" "^7.3.1" + css-vendor "^2.0.8" + jss "10.6.0" + +jss@10.6.0, jss@^10.5.1: + version "10.6.0" + resolved "https://registry.yarnpkg.com/jss/-/jss-10.6.0.tgz#d92ff9d0f214f65ca1718591b68e107be4774149" + integrity sha512-n7SHdCozmxnzYGXBHe0NsO0eUf9TvsHVq2MXvi4JmTn3x5raynodDVE/9VQmBdWFyyj9HpHZ2B4xNZ7MMy7lkw== + dependencies: + "@babel/runtime" "^7.3.1" + csstype "^3.0.2" + indefinite-observable "^2.0.1" + is-in-browser "^1.1.3" + tiny-warning "^1.0.2" + "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" @@ -6879,6 +7497,16 @@ lodash._reinterpolate@^3.0.0: resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -6919,7 +7547,12 @@ loglevel@^1.6.8: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== -loose-envify@^1.1.0, loose-envify@^1.4.0: +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + +loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -7125,6 +7758,14 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== +mini-create-react-context@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" + integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== + dependencies: + "@babel/runtime" "^7.12.1" + tiny-warning "^1.0.3" + mini-css-extract-plugin@0.11.3: version "0.11.3" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz#15b0910a7f32e62ffde4a7430cfefbd700724ea6" @@ -7341,6 +7982,11 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +node-fetch@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + node-forge@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" @@ -7884,6 +8530,13 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + path-type@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" @@ -7981,6 +8634,11 @@ pnp-webpack-plugin@1.6.4: dependencies: ts-pnp "^1.1.6" +popper.js@1.16.1-lts: + version "1.16.1-lts" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1-lts.tgz#cf6847b807da3799d80ee3d6d2f90df8a3f50b05" + integrity sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA== + portfinder@^1.0.26: version "1.0.28" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" @@ -8724,6 +9382,11 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= +promise-polyfill@8.1.3: + version "8.1.3" + resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116" + integrity sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g== + promise@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" @@ -8739,7 +9402,7 @@ prompts@2.4.0, prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.7.2: +prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -8748,6 +9411,25 @@ prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" +protobufjs@^6.8.6: + version "6.11.2" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.2.tgz#de39fabd4ed32beaa08e9bb1e30d08544c1edf8b" + integrity sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.1" + "@types/node" ">=13.7.0" + long "^4.0.0" + proxy-addr@~2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" @@ -8959,11 +9641,16 @@ react-error-overlay@^6.0.9: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== -react-is@^16.8.1: +react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +"react-is@^16.8.0 || ^17.0.0": + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + react-is@^17.0.1: version "17.0.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" @@ -8974,6 +9661,35 @@ react-refresh@^0.8.3: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== +react-router-dom@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.2.0.tgz#9e65a4d0c45e13289e66c7b17c7e175d0ea15662" + integrity sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.2.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-router@5.2.0, react-router@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.0.tgz#424e75641ca8747fbf76e5ecca69781aa37ea293" + integrity sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + mini-create-react-context "^0.4.0" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + react-scripts@4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-4.0.3.tgz#b1cafed7c3fa603e7628ba0f187787964cb5d345" @@ -9040,6 +9756,16 @@ react-scripts@4.0.3: optionalDependencies: fsevents "^2.1.3" +react-transition-group@^4.4.0: + version "4.4.1" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.1.tgz#63868f9325a38ea5ee9535d828327f85773345c9" + integrity sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react@^17.0.2: version "17.0.2" resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" @@ -9226,6 +9952,11 @@ remove-trailing-separator@^1.0.1: resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= +render-and-add-props@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/render-and-add-props/-/render-and-add-props-0.5.0.tgz#79e35b2251936ec187188322826e56401c2ef70b" + integrity sha512-jIVQsWxGDHwpMcI0d9w6OxF/GCtwL02Lyqk8aGjyF6LyR9GPLY+1ONwPjs6kbQ2d6gTApWk8aprZkBli0tpG/w== + renderkid@^2.0.4: version "2.0.5" resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.5.tgz#483b1ac59c6601ab30a7a596a5965cabccfdd0a5" @@ -9338,6 +10069,11 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +resolve-pathname@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" + integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== + resolve-url-loader@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz#235e2c28e22e3e432ba7a5d4e305c59a58edfc08" @@ -9756,6 +10492,14 @@ shellwords@^0.1.1: resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== +short-uuid@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/short-uuid/-/short-uuid-4.2.0.tgz#3706d9e7287ac589dc5ffe324d3e34817a07540b" + integrity sha512-r3cxuPPZSuF0QkKsK9bBR7u+7cwuCRzWzgjPh07F5N2iIUNgblnMHepBY16xgj5t1lG9iOP9k/TEafY1qhRzaw== + dependencies: + any-base "^1.1.0" + uuid "^8.3.2" + side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -10287,6 +11031,11 @@ svgo@^1.0.0, svgo@^1.2.2: unquote "~1.1.1" util.promisify "~1.0.0" +symbol-observable@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -10433,6 +11182,16 @@ timsort@^0.3.0: resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= +tiny-invariant@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" + integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== + +tiny-warning@^1.0.0, tiny-warning@^1.0.2, tiny-warning@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" @@ -10539,6 +11298,11 @@ tslib@^2.0.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== +tslib@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" + integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== + tsutils@^3.17.1: version "3.20.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.20.0.tgz#ea03ea45462e146b53d70ce0893de453ff24f698" @@ -10823,7 +11587,7 @@ uuid@^3.3.2, uuid@^3.4.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^8.3.0: +uuid@^8.3.0, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== @@ -10850,6 +11614,11 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +value-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -11061,6 +11830,11 @@ whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" +whatwg-fetch@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" + integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== + whatwg-fetch@^3.4.1: version "3.6.1" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.1.tgz#93bc4005af6c2cc30ba3e42ec3125947c8f54ed3" @@ -11326,6 +12100,11 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== +xmlhttprequest@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" + integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= + xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"