From a3fe44c3e4352cca63f225f44b358813d789b9df Mon Sep 17 00:00:00 2001 From: Turadg Aleahmad Date: Mon, 31 Oct 2022 11:41:47 -0700 Subject: [PATCH 1/2] BREAKING CHANGE: remove @agoric/wallet-ui It's no longer a package. To use or develop the Wallet UI, see https://github.com/Agoric/wallet-app --- .github/workflows/test-all-packages.yml | 2 - package.json | 3 +- packages/agoric-cli/src/sdk-package-names.js | 1 - packages/wallet/ui/.gitignore | 24 - packages/wallet/ui/CHANGELOG.md | 204 ------- packages/wallet/ui/README.md | 45 -- packages/wallet/ui/config-overrides/index.js | 52 -- .../wallet/ui/config-overrides/package.json | 3 - packages/wallet/ui/jsconfig.json | 20 - packages/wallet/ui/package.json | 179 ------ packages/wallet/ui/public/agoric-blocks.png | Bin 87935 -> 0 bytes packages/wallet/ui/public/agoric-city.svg | 1 - packages/wallet/ui/public/bridge.html | 15 - packages/wallet/ui/public/favicon.ico | Bin 3262 -> 0 bytes packages/wallet/ui/public/index.html | 78 --- packages/wallet/ui/public/manifest.json | 15 - packages/wallet/ui/public/network-config | 4 - packages/wallet/ui/public/robots.txt | 3 - packages/wallet/ui/public/tokens/BLD.svg | 23 - packages/wallet/ui/public/tokens/IST.png | Bin 1378 -> 0 bytes packages/wallet/ui/public/tokens/USDC_axl.png | Bin 63323 -> 0 bytes .../wallet/ui/public/tokens/USDC_grv.webp | Bin 5648 -> 0 bytes packages/wallet/ui/public/tokens/USDT_axl.png | Bin 66167 -> 0 bytes .../wallet/ui/public/tokens/USDT_grv.webp | Bin 4614 -> 0 bytes .../wallet/ui/public/tokens/chainlink.png | Bin 6461 -> 0 bytes packages/wallet/ui/public/tokens/cosmos.svg | 1 - packages/wallet/ui/public/tokens/default.png | Bin 1910 -> 0 bytes packages/wallet/ui/public/tokens/usdc.svg | 5 - packages/wallet/ui/src/AgoricLogo.jsx | 27 - packages/wallet/ui/src/App.jsx | 62 --- packages/wallet/ui/src/App.scss | 24 - packages/wallet/ui/src/bridge-dapp.jsx | 205 ------- packages/wallet/ui/src/components/AppBar.jsx | 145 ----- .../wallet/ui/src/components/BrandIcon.jsx | 16 - packages/wallet/ui/src/components/Card.jsx | 16 - packages/wallet/ui/src/components/Card.scss | 21 - .../wallet/ui/src/components/CardItem.jsx | 12 - .../wallet/ui/src/components/CardItem.scss | 12 - .../components/ConnectionSettingsDialog.jsx | 202 ------- packages/wallet/ui/src/components/Dapp.jsx | 62 --- .../ui/src/components/DappConnection.jsx | 36 -- .../ui/src/components/ErrorBoundary.jsx | 36 -- .../ui/src/components/ImportContact.jsx | 116 ---- .../wallet/ui/src/components/ImportIssuer.jsx | 116 ---- .../ui/src/components/IssuerSuggestion.jsx | 53 -- packages/wallet/ui/src/components/Loading.jsx | 66 --- .../wallet/ui/src/components/MakePurse.jsx | 114 ---- .../wallet/ui/src/components/NavDrawer.jsx | 47 -- packages/wallet/ui/src/components/NavMenu.jsx | 120 ---- packages/wallet/ui/src/components/Offer.jsx | 171 ------ packages/wallet/ui/src/components/Offer.scss | 46 -- packages/wallet/ui/src/components/Payment.jsx | 7 - packages/wallet/ui/src/components/Petname.jsx | 26 - .../wallet/ui/src/components/Petname.scss | 5 - .../wallet/ui/src/components/Proposal.jsx | 179 ------ .../ui/src/components/ProvisionDialog.jsx | 211 ------- .../wallet/ui/src/components/PurseAmount.jsx | 21 - .../wallet/ui/src/components/PurseValue.jsx | 238 -------- packages/wallet/ui/src/components/Purses.jsx | 80 --- packages/wallet/ui/src/components/Purses.scss | 21 - packages/wallet/ui/src/components/Request.jsx | 27 - .../wallet/ui/src/components/Request.scss | 64 --- .../wallet/ui/src/components/Requests.jsx | 106 ---- .../wallet/ui/src/components/Requests.scss | 38 -- .../src/components/SmartWalletConnection.jsx | 199 ------- .../wallet/ui/src/components/TermsDialog.jsx | 55 -- .../ui/src/components/TermsDialog.module.scss | 3 - .../wallet/ui/src/components/Transfer.jsx | 232 -------- .../ui/src/components/tests/Dapp.test.jsx | 79 --- .../components/tests/DappConnection.test.jsx | 45 -- .../components/tests/ImportContact.test.jsx | 131 ----- .../components/tests/ImportIssuer.test.jsx | 131 ----- .../src/components/tests/MakePurse.test.jsx | 174 ------ .../src/components/tests/NavDrawer.test.jsx | 49 -- .../ui/src/components/tests/Offer.test.jsx | 341 ------------ .../ui/src/components/tests/Purses.test.jsx | 130 ----- .../ui/src/components/tests/Requests.test.jsx | 97 ---- .../ui/src/components/tests/Transfer.test.jsx | 227 -------- .../wallet/ui/src/contexts/Application.jsx | 22 - packages/wallet/ui/src/contexts/Provider.jsx | 377 ------------- packages/wallet/ui/src/index.jsx | 75 --- packages/wallet/ui/src/lockdown.js | 26 - packages/wallet/ui/src/service/Dapps.js | 91 --- packages/wallet/ui/src/service/Issuers.js | 48 -- packages/wallet/ui/src/service/Offers.js | 226 -------- packages/wallet/ui/src/service/Terms.js | 10 - packages/wallet/ui/src/setupTests.js | 11 - packages/wallet/ui/src/store/Dapps.js | 61 -- packages/wallet/ui/src/store/Offers.js | 73 --- packages/wallet/ui/src/store/Terms.js | 10 - packages/wallet/ui/src/tests/App.test.jsx | 103 ---- .../wallet/ui/src/tests/keyManagement.test.js | 65 --- packages/wallet/ui/src/util/Date.js | 11 - packages/wallet/ui/src/util/DeepEquals.js | 22 - packages/wallet/ui/src/util/Icons.js | 13 - packages/wallet/ui/src/util/SuggestChain.js | 92 --- .../ui/src/util/WalletBackendAdapter.js | 347 ------------ packages/wallet/ui/src/util/chainInfo.js | 37 -- packages/wallet/ui/src/util/connections.js | 28 - .../ui/src/util/fixed-websocket-connector.js | 87 --- packages/wallet/ui/src/util/keyManagement.js | 523 ------------------ packages/wallet/ui/src/util/marshal.js | 7 - packages/wallet/ui/src/util/onLoad.js | 7 - packages/wallet/ui/src/util/storage.js | 63 --- packages/wallet/ui/src/views/Contacts.jsx | 114 ---- packages/wallet/ui/src/views/Contacts.scss | 32 -- packages/wallet/ui/src/views/Dapps.jsx | 99 ---- packages/wallet/ui/src/views/Dapps.scss | 41 -- packages/wallet/ui/src/views/Dashboard.jsx | 23 - packages/wallet/ui/src/views/Dashboard.scss | 29 - packages/wallet/ui/src/views/Issuers.jsx | 145 ----- packages/wallet/ui/src/views/Issuers.scss | 49 -- .../ui/src/views/tests/Contacts.test.jsx | 160 ------ .../wallet/ui/src/views/tests/Dapps.test.jsx | 91 --- .../ui/src/views/tests/Issuers.test.jsx | 168 ------ 115 files changed, 1 insertion(+), 8704 deletions(-) delete mode 100644 packages/wallet/ui/.gitignore delete mode 100644 packages/wallet/ui/CHANGELOG.md delete mode 100644 packages/wallet/ui/README.md delete mode 100644 packages/wallet/ui/config-overrides/index.js delete mode 100644 packages/wallet/ui/config-overrides/package.json delete mode 100644 packages/wallet/ui/jsconfig.json delete mode 100644 packages/wallet/ui/package.json delete mode 100644 packages/wallet/ui/public/agoric-blocks.png delete mode 100644 packages/wallet/ui/public/agoric-city.svg delete mode 100644 packages/wallet/ui/public/bridge.html delete mode 100644 packages/wallet/ui/public/favicon.ico delete mode 100644 packages/wallet/ui/public/index.html delete mode 100644 packages/wallet/ui/public/manifest.json delete mode 100644 packages/wallet/ui/public/network-config delete mode 100644 packages/wallet/ui/public/robots.txt delete mode 100644 packages/wallet/ui/public/tokens/BLD.svg delete mode 100644 packages/wallet/ui/public/tokens/IST.png delete mode 100644 packages/wallet/ui/public/tokens/USDC_axl.png delete mode 100644 packages/wallet/ui/public/tokens/USDC_grv.webp delete mode 100644 packages/wallet/ui/public/tokens/USDT_axl.png delete mode 100644 packages/wallet/ui/public/tokens/USDT_grv.webp delete mode 100644 packages/wallet/ui/public/tokens/chainlink.png delete mode 100644 packages/wallet/ui/public/tokens/cosmos.svg delete mode 100644 packages/wallet/ui/public/tokens/default.png delete mode 100644 packages/wallet/ui/public/tokens/usdc.svg delete mode 100644 packages/wallet/ui/src/AgoricLogo.jsx delete mode 100644 packages/wallet/ui/src/App.jsx delete mode 100644 packages/wallet/ui/src/App.scss delete mode 100644 packages/wallet/ui/src/bridge-dapp.jsx delete mode 100644 packages/wallet/ui/src/components/AppBar.jsx delete mode 100644 packages/wallet/ui/src/components/BrandIcon.jsx delete mode 100644 packages/wallet/ui/src/components/Card.jsx delete mode 100644 packages/wallet/ui/src/components/Card.scss delete mode 100644 packages/wallet/ui/src/components/CardItem.jsx delete mode 100644 packages/wallet/ui/src/components/CardItem.scss delete mode 100644 packages/wallet/ui/src/components/ConnectionSettingsDialog.jsx delete mode 100644 packages/wallet/ui/src/components/Dapp.jsx delete mode 100644 packages/wallet/ui/src/components/DappConnection.jsx delete mode 100644 packages/wallet/ui/src/components/ErrorBoundary.jsx delete mode 100644 packages/wallet/ui/src/components/ImportContact.jsx delete mode 100644 packages/wallet/ui/src/components/ImportIssuer.jsx delete mode 100644 packages/wallet/ui/src/components/IssuerSuggestion.jsx delete mode 100644 packages/wallet/ui/src/components/Loading.jsx delete mode 100644 packages/wallet/ui/src/components/MakePurse.jsx delete mode 100644 packages/wallet/ui/src/components/NavDrawer.jsx delete mode 100644 packages/wallet/ui/src/components/NavMenu.jsx delete mode 100644 packages/wallet/ui/src/components/Offer.jsx delete mode 100644 packages/wallet/ui/src/components/Offer.scss delete mode 100644 packages/wallet/ui/src/components/Payment.jsx delete mode 100644 packages/wallet/ui/src/components/Petname.jsx delete mode 100644 packages/wallet/ui/src/components/Petname.scss delete mode 100644 packages/wallet/ui/src/components/Proposal.jsx delete mode 100644 packages/wallet/ui/src/components/ProvisionDialog.jsx delete mode 100644 packages/wallet/ui/src/components/PurseAmount.jsx delete mode 100644 packages/wallet/ui/src/components/PurseValue.jsx delete mode 100644 packages/wallet/ui/src/components/Purses.jsx delete mode 100644 packages/wallet/ui/src/components/Purses.scss delete mode 100644 packages/wallet/ui/src/components/Request.jsx delete mode 100644 packages/wallet/ui/src/components/Request.scss delete mode 100644 packages/wallet/ui/src/components/Requests.jsx delete mode 100644 packages/wallet/ui/src/components/Requests.scss delete mode 100644 packages/wallet/ui/src/components/SmartWalletConnection.jsx delete mode 100644 packages/wallet/ui/src/components/TermsDialog.jsx delete mode 100644 packages/wallet/ui/src/components/TermsDialog.module.scss delete mode 100644 packages/wallet/ui/src/components/Transfer.jsx delete mode 100644 packages/wallet/ui/src/components/tests/Dapp.test.jsx delete mode 100644 packages/wallet/ui/src/components/tests/DappConnection.test.jsx delete mode 100644 packages/wallet/ui/src/components/tests/ImportContact.test.jsx delete mode 100644 packages/wallet/ui/src/components/tests/ImportIssuer.test.jsx delete mode 100644 packages/wallet/ui/src/components/tests/MakePurse.test.jsx delete mode 100644 packages/wallet/ui/src/components/tests/NavDrawer.test.jsx delete mode 100644 packages/wallet/ui/src/components/tests/Offer.test.jsx delete mode 100644 packages/wallet/ui/src/components/tests/Purses.test.jsx delete mode 100644 packages/wallet/ui/src/components/tests/Requests.test.jsx delete mode 100644 packages/wallet/ui/src/components/tests/Transfer.test.jsx delete mode 100644 packages/wallet/ui/src/contexts/Application.jsx delete mode 100644 packages/wallet/ui/src/contexts/Provider.jsx delete mode 100644 packages/wallet/ui/src/index.jsx delete mode 100644 packages/wallet/ui/src/lockdown.js delete mode 100644 packages/wallet/ui/src/service/Dapps.js delete mode 100644 packages/wallet/ui/src/service/Issuers.js delete mode 100644 packages/wallet/ui/src/service/Offers.js delete mode 100644 packages/wallet/ui/src/service/Terms.js delete mode 100644 packages/wallet/ui/src/setupTests.js delete mode 100644 packages/wallet/ui/src/store/Dapps.js delete mode 100644 packages/wallet/ui/src/store/Offers.js delete mode 100644 packages/wallet/ui/src/store/Terms.js delete mode 100644 packages/wallet/ui/src/tests/App.test.jsx delete mode 100644 packages/wallet/ui/src/tests/keyManagement.test.js delete mode 100644 packages/wallet/ui/src/util/Date.js delete mode 100644 packages/wallet/ui/src/util/DeepEquals.js delete mode 100644 packages/wallet/ui/src/util/Icons.js delete mode 100644 packages/wallet/ui/src/util/SuggestChain.js delete mode 100644 packages/wallet/ui/src/util/WalletBackendAdapter.js delete mode 100644 packages/wallet/ui/src/util/chainInfo.js delete mode 100644 packages/wallet/ui/src/util/connections.js delete mode 100644 packages/wallet/ui/src/util/fixed-websocket-connector.js delete mode 100644 packages/wallet/ui/src/util/keyManagement.js delete mode 100644 packages/wallet/ui/src/util/marshal.js delete mode 100644 packages/wallet/ui/src/util/onLoad.js delete mode 100644 packages/wallet/ui/src/util/storage.js delete mode 100644 packages/wallet/ui/src/views/Contacts.jsx delete mode 100644 packages/wallet/ui/src/views/Contacts.scss delete mode 100644 packages/wallet/ui/src/views/Dapps.jsx delete mode 100644 packages/wallet/ui/src/views/Dapps.scss delete mode 100644 packages/wallet/ui/src/views/Dashboard.jsx delete mode 100644 packages/wallet/ui/src/views/Dashboard.scss delete mode 100644 packages/wallet/ui/src/views/Issuers.jsx delete mode 100644 packages/wallet/ui/src/views/Issuers.scss delete mode 100644 packages/wallet/ui/src/views/tests/Contacts.test.jsx delete mode 100644 packages/wallet/ui/src/views/tests/Dapps.test.jsx delete mode 100644 packages/wallet/ui/src/views/tests/Issuers.test.jsx diff --git a/.github/workflows/test-all-packages.yml b/.github/workflows/test-all-packages.yml index ee0458acb7e..c8ec31a8cce 100644 --- a/.github/workflows/test-all-packages.yml +++ b/.github/workflows/test-all-packages.yml @@ -166,8 +166,6 @@ jobs: run: cd packages/deploy-script-support && yarn ${{ steps.vars.outputs.test }} - name: yarn test (ui-components) run: cd packages/ui-components && yarn ${{ steps.vars.outputs.test }} - - name: yarn test (wallet/ui) - run: cd packages/wallet/ui && yarn ${{ steps.vars.outputs.test }} - name: yarn test (wallet) run: cd packages/wallet && yarn ${{ steps.vars.outputs.test }} - name: yarn test (eslint-config) diff --git a/package.json b/package.json index 78161225942..d098e04710f 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,7 @@ "workspaces": [ "golang/cosmos", "packages/*", - "packages/wallet/api", - "packages/wallet/ui" + "packages/wallet/api" ], "type": "module", "devDependencies": { diff --git a/packages/agoric-cli/src/sdk-package-names.js b/packages/agoric-cli/src/sdk-package-names.js index 8a9705ce95d..182236fe3cd 100644 --- a/packages/agoric-cli/src/sdk-package-names.js +++ b/packages/agoric-cli/src/sdk-package-names.js @@ -37,7 +37,6 @@ export default [ "@agoric/wallet", "@agoric/wallet-backend", "@agoric/wallet-connection", - "@agoric/wallet-ui", "@agoric/web-components", "@agoric/xsnap", "@agoric/zoe", diff --git a/packages/wallet/ui/.gitignore b/packages/wallet/ui/.gitignore deleted file mode 100644 index e5e5617c199..00000000000 --- a/packages/wallet/ui/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# production -/build -/public/lockdown.umd.js - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/packages/wallet/ui/CHANGELOG.md b/packages/wallet/ui/CHANGELOG.md deleted file mode 100644 index 88c2388bcd3..00000000000 --- a/packages/wallet/ui/CHANGELOG.md +++ /dev/null @@ -1,204 +0,0 @@ -# Change Log - -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. - -## [0.5.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/wallet-ui@0.4.0...@agoric/wallet-ui@0.5.0) (2022-10-18) - - -### Features - -* **web-components:** add 'makeAgoricKeplrConnection' util ([#6452](https://github.com/Agoric/agoric-sdk/issues/6452)) ([0b4b1aa](https://github.com/Agoric/agoric-sdk/commit/0b4b1aac42379c68aabe807904f5bfd6670009c5)) - - - -## [0.4.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/wallet-ui@0.3.0...@agoric/wallet-ui@0.4.0) (2022-10-08) - - -### Features - -* **connection:** default to main ([06be161](https://github.com/Agoric/agoric-sdk/commit/06be1618c1bdf5ce5f3e791ca8bfaea287381a7e)) -* **settings dialog:** assume Keplr ([721c604](https://github.com/Agoric/agoric-sdk/commit/721c6049bac92148e70df990b38964438ecd0297)) -* **settings dialog:** pick known network configs ([ead4dbc](https://github.com/Agoric/agoric-sdk/commit/ead4dbcc7f5c4e80a20ae38d4f312bba88ae42ac)) -* **settings dialog:** pick network-config by host ([4fd9b55](https://github.com/Agoric/agoric-sdk/commit/4fd9b55bbe7193784ffa13bb53eafe79ece901c2)) -* **wallet-ui:** require 100IST in pool to provision smart wallet ([1c374ed](https://github.com/Agoric/agoric-sdk/commit/1c374ed1a990aad5e7e9a6d9800894352cf08c7a)) -* **wallet/ui:** show JSON in keplr signer even without Ledger ([035dfe0](https://github.com/Agoric/agoric-sdk/commit/035dfe08f31ea8eaffae8db81b627942749b7444)), closes [#6424](https://github.com/Agoric/agoric-sdk/issues/6424) - - -### Bug Fixes - -* **wallet-ui:** call firstCallback after wallet loads ([c56f5d1](https://github.com/Agoric/agoric-sdk/commit/c56f5d10eed437c7487ebb2b0da5e976bbb6cc33)) -* **wallet-ui:** fix mainnet config option ([3cb5a95](https://github.com/Agoric/agoric-sdk/commit/3cb5a952b9653115b5fa9641aa03a58c5ce45a31)) -* **wallet-ui:** update offers correctly ([21adc3a](https://github.com/Agoric/agoric-sdk/commit/21adc3a71c5b06ab9e6885528ab677a23c40bbb1)) -* **wallet/ui:** signing offers (PSM trades) with Ledger ([6ed4ca7](https://github.com/Agoric/agoric-sdk/commit/6ed4ca7ad40239ccf0ad4c41b9cbd44b3be9b5f8)) - - - -## [0.3.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/wallet-ui@0.2.0...@agoric/wallet-ui@0.3.0) (2022-10-05) - - -### Features - -* **cli:** show status of invitations ([8506e6d](https://github.com/Agoric/agoric-sdk/commit/8506e6d87ef331e781c9d2e2251fdcf48e784e04)) -* **keyManagement:** submitProvision ([94eae93](https://github.com/Agoric/agoric-sdk/commit/94eae93f20b35408efa327a5427482f3e3b087a1)) -* **wallet-ui:** basic provisioning dialog ([3f01ea6](https://github.com/Agoric/agoric-sdk/commit/3f01ea656b1a88221002da033683b23634f10896)) -* **wallet-ui:** bridge storage without click when possible ([84834d9](https://github.com/Agoric/agoric-sdk/commit/84834d9dac49de6482cf2f652853522169f4227f)) -* **wallet-ui:** clean up ui states ([6a20c8d](https://github.com/Agoric/agoric-sdk/commit/6a20c8d3789e983b4b19f6f769610bb5de20c39d)) -* **wallet-ui:** make provision dialog harder to close ([b1b2d7b](https://github.com/Agoric/agoric-sdk/commit/b1b2d7b906309f196f4d594ee8c16a14569279b3)) -* **wallet-ui:** submit provision on dialog action ([8012e8f](https://github.com/Agoric/agoric-sdk/commit/8012e8f4d99c5cf8084d710a71058a38a6172889)) -* **wallet-ui:** use new wallet.current node ([703eecd](https://github.com/Agoric/agoric-sdk/commit/703eecd0af917cd432d1f6a12e645a12ab9d2c39)) - - -### Bug Fixes - -* **wallet/ui:** amino encoding details (for Ledger) ([223b45d](https://github.com/Agoric/agoric-sdk/commit/223b45d0486cdd91cf06f48e6a60f5c75e06f8c0)) -* avoid colliding with 'agoric' chain, e.g. in Keplr ([692084c](https://github.com/Agoric/agoric-sdk/commit/692084ce9328b11e23ab8b46025f83eb8d1b5b3d)) -* **wallet-ui:** detect unprovisioned wallet ([1747d57](https://github.com/Agoric/agoric-sdk/commit/1747d5781f4ee594eca1ded76af4944c405e7000)) -* **wallet-ui:** parse purse.brand in fetchCurrent ([3c8299c](https://github.com/Agoric/agoric-sdk/commit/3c8299c2f5cf70b531bf194e4f5509bf6cd6a7be)) -* **wallet-ui:** show rejected offers properly ([7b77ee0](https://github.com/Agoric/agoric-sdk/commit/7b77ee0301060921dc6542daa7c4bef8960a2454)) -* **wallet-ui:** wait until window loads to access keplr ([c9b4fc3](https://github.com/Agoric/agoric-sdk/commit/c9b4fc3e5a272fe4a2b6b12774b138fdfa58be95)) - - - -## [0.2.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/wallet-ui@0.1.2...@agoric/wallet-ui@0.2.0) (2022-09-20) - - -### ⚠ BREAKING CHANGES - -* **wallet-ui:** remove Solo wallet support - -### Features - -* **wallet:** some feedback when no smart wallet ([8057c35](https://github.com/Agoric/agoric-sdk/commit/8057c35d2a89b9d80d31c1da10279c248b3c6e68)) -* **wallet-connection:** Connect dapp directly to wallet UI ([#5750](https://github.com/Agoric/agoric-sdk/issues/5750)) ([1dd584b](https://github.com/Agoric/agoric-sdk/commit/1dd584b195212705b1f74a8c89b7f3f121640e41)) -* **wallet-ui:** adapt smart wallet proposals ([cef7f34](https://github.com/Agoric/agoric-sdk/commit/cef7f34d6f418bc18155d02b9448a0f378ddc3f9)) -* **wallet-ui:** connect to keplr with smart wallet ([#5744](https://github.com/Agoric/agoric-sdk/issues/5744)) ([3482e0d](https://github.com/Agoric/agoric-sdk/commit/3482e0d98748c9b7995c93cbef9a06b0ec0fbea8)) -* **wallet-ui:** display set amounts ([#5654](https://github.com/Agoric/agoric-sdk/issues/5654)) ([1945069](https://github.com/Agoric/agoric-sdk/commit/1945069e3e838ecf4cb91a48027bcdcea310d848)) -* **wallet-ui:** future-proof for `@agoric/casting`-enabled notifiers ([5eba88a](https://github.com/Agoric/agoric-sdk/commit/5eba88a195d3cd8bbb299d6100f5fbb98a9e4754)) -* **wallet-ui:** more robust connection config ui ([#5685](https://github.com/Agoric/agoric-sdk/issues/5685)) ([b1a4c4b](https://github.com/Agoric/agoric-sdk/commit/b1a4c4b9258a8af3a98d6fc281c891229b9a79a4)) -* **wallet-ui:** preview mode ([fedf049](https://github.com/Agoric/agoric-sdk/commit/fedf049435d7307311219fbab1b2b342ec6acce8)) -* **wallet-ui:** reworking of wallet connections ([f8506f3](https://github.com/Agoric/agoric-sdk/commit/f8506f3c218bd321f35206eab143514bca8f268b)) -* **wallet-ui:** start displaying balances ([0f36da9](https://github.com/Agoric/agoric-sdk/commit/0f36da99daef86f24670d606ae5fd1adb32b419b)) -* **wallet-ui:** translate proposalTemplate to proposal ([bd91fed](https://github.com/Agoric/agoric-sdk/commit/bd91fede39bf5b430e1b8584e99070fb6ab56254)) -* **wallet/ui:** expose netconfig url to dapp bridge ([#5988](https://github.com/Agoric/agoric-sdk/issues/5988)) ([5098751](https://github.com/Agoric/agoric-sdk/commit/5098751d513ec86a912a545f6864deed86eacd20)) -* **wallet/ui:** interactive, background signing ([#5877](https://github.com/Agoric/agoric-sdk/issues/5877)) ([e7e6529](https://github.com/Agoric/agoric-sdk/commit/e7e652986cb5410bc09152b8974d6c60cfbb0b28)) -* read only smart wallet ([#5741](https://github.com/Agoric/agoric-sdk/issues/5741)) ([9f3745d](https://github.com/Agoric/agoric-sdk/commit/9f3745da424424ff9a2e4c8f7b26bb0de89dd3eb)) -* store dapps in localstorage not contract ([#5804](https://github.com/Agoric/agoric-sdk/issues/5804)) ([2fc72d5](https://github.com/Agoric/agoric-sdk/commit/2fc72d5439a7d8e103b15a8afaad2a86c3d455c5)) - - -### Bug Fixes - -* **casting:** Align cosmjs deps ([0ba7a1f](https://github.com/Agoric/agoric-sdk/commit/0ba7a1f7a18d4f83afa04b3637f432fdd72f3cd8)) -* **wallet-ui:** don't crash if purse not found ([f0b591b](https://github.com/Agoric/agoric-sdk/commit/f0b591bdd2beda96d134bcbee5b3323a7ed40714)) -* **wallet-ui:** get offer completion working again ([2e838a0](https://github.com/Agoric/agoric-sdk/commit/2e838a091b77b6f0adb77810c02a5b3f844a9307)) -* **wallet-ui:** increase gas allowance ([53eff35](https://github.com/Agoric/agoric-sdk/commit/53eff35ddf01048add0ef7a74f16e45c57406bd6)) -* **wallet-ui:** reverse iterate to process all update deltas ([65e681d](https://github.com/Agoric/agoric-sdk/commit/65e681d448a0a65b95837be59322f7298fdfef91)) -* ALWAYS default to safe ([#6079](https://github.com/Agoric/agoric-sdk/issues/6079)) ([963b652](https://github.com/Agoric/agoric-sdk/commit/963b652c696e006fb2c4960fe6e36ca49530dd29)) -* Remove lockdown unsafe monkey-patching hack ([8c3126d](https://github.com/Agoric/agoric-sdk/commit/8c3126d8301bc2c8f7bb0a2145469f6d9d96b669)) -* **wallet:** upgrade for new store coordinator ([51cfc04](https://github.com/Agoric/agoric-sdk/commit/51cfc0462187f7f459016b76a7583e87e0986f14)) -* **wallet-ui:** safely render invalid amount values ([#5617](https://github.com/Agoric/agoric-sdk/issues/5617)) ([23f0de1](https://github.com/Agoric/agoric-sdk/commit/23f0de16e2fb858df2f2fb93a8247029c1ab002d)) -* **wallet/ui:** change makeFollower to getUnserializer ([#5964](https://github.com/Agoric/agoric-sdk/issues/5964)) ([15179fb](https://github.com/Agoric/agoric-sdk/commit/15179fbabffb9db4588b5301d95014bdf6b9e0fd)) -* **wallet/ui:** fix gas price in suggest chain ([21351bd](https://github.com/Agoric/agoric-sdk/commit/21351bd198536624d56235abb34032aca6c7e09e)) -* **wallet/ui:** style connection component better ([#5984](https://github.com/Agoric/agoric-sdk/issues/5984)) ([94791c9](https://github.com/Agoric/agoric-sdk/commit/94791c933c678a1f5c8dd43721523db8468d0dd7)) -* less unsafe. what breaks? ([#5922](https://github.com/Agoric/agoric-sdk/issues/5922)) ([ace75b8](https://github.com/Agoric/agoric-sdk/commit/ace75b864f93d922477094c464da973125dabf3b)) - - -### Code Refactoring - -* **wallet-ui:** remove Solo wallet support ([d952e56](https://github.com/Agoric/agoric-sdk/commit/d952e561e7a6d7396af088a7977d20d8d8ef42f0)) - - - -### [0.1.2](https://github.com/Agoric/agoric-sdk/compare/@agoric/wallet-ui@0.1.1...@agoric/wallet-ui@0.1.2) (2022-05-28) - - -### Bug Fixes - -* **wallet-ui:** put back missing dapps notifier ([2720247](https://github.com/Agoric/agoric-sdk/commit/272024775e3670b4ead5934a82e9625631e9ea77)) -* **wallet-ui:** update state when resetting wallet connection ([eff4186](https://github.com/Agoric/agoric-sdk/commit/eff4186d9b30ff53897f0c683660ea1a3a22949d)) - - - -### [0.1.1](https://github.com/Agoric/agoric-sdk/compare/@agoric/wallet-ui@0.1.0...@agoric/wallet-ui@0.1.1) (2022-05-09) - -**Note:** Version bump only for package @agoric/wallet-ui - - - - - -## [0.1.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/wallet-ui@0.0.6...@agoric/wallet-ui@0.1.0) (2022-04-18) - - -### Features - -* **wallet-ui:** cheap rendering of offer arguments ([192500d](https://github.com/Agoric/agoric-sdk/commit/192500d019bc482437ed5224a12a76b2488cb23b)) - - -### Bug Fixes - -* **wallet-ui:** don't add or strip `board:` prefix ([55d0a0a](https://github.com/Agoric/agoric-sdk/commit/55d0a0a79057a735076630a7c972ea1dbd327f71)) - - - -### [0.0.6](https://github.com/Agoric/agoric-sdk/compare/@agoric/wallet-ui@0.0.5...@agoric/wallet-ui@0.0.6) (2022-02-24) - -**Note:** Version bump only for package @agoric/wallet-ui - - - - - -### [0.0.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/wallet-ui@0.0.4...@agoric/wallet-ui@0.0.5) (2022-02-21) - - -### Features - -* example txn ([2cc8a45](https://github.com/Agoric/agoric-sdk/commit/2cc8a45e403f6bdd80566330ddf3f6e4e9477396)) -* **wallet:** keplr connection ([259345e](https://github.com/Agoric/agoric-sdk/commit/259345e56c4cd48d3ff6f47da280d5d24b3548ac)) -* **wallet-ui:** use new `WalletBackendAdapter` ([4c03015](https://github.com/Agoric/agoric-sdk/commit/4c03015d2cce617b959a0f3105a99d2a29ad65cd)) - - -### Bug Fixes - -* **wallet:** dont crash when purses arent loaded before payments ([2965063](https://github.com/Agoric/agoric-sdk/commit/296506378ea6197c74976849bcc54d7c34e34da9)) -* use snackbar instead of window.alert ([a233c12](https://github.com/Agoric/agoric-sdk/commit/a233c1269643f201b9214fe132cd4e0d45de3137)) -* **solo:** remove a symlink dependency in exchange for web config ([42fc52b](https://github.com/Agoric/agoric-sdk/commit/42fc52b9d7bd8217038164f92f0448c4540c6e64)) -* **wallet:** fix crash when deleting dapps ([51f78ae](https://github.com/Agoric/agoric-sdk/commit/51f78ae7a0fcba6a68b68a790d706abea5b6e116)) -* **wallet:** fix indefinite loading state ([c58f07d](https://github.com/Agoric/agoric-sdk/commit/c58f07ddd97e6bf06da99284df6eaf2fcb5f2f46)) -* **wallet:** fix offer id reference ([#4393](https://github.com/Agoric/agoric-sdk/issues/4393)) ([8c9dae7](https://github.com/Agoric/agoric-sdk/commit/8c9dae71bd3d3bf06d562f38c67dfb46be7db1ca)) -* **wallet:** handle cancelled offer state ([#4292](https://github.com/Agoric/agoric-sdk/issues/4292)) ([9dd2dc4](https://github.com/Agoric/agoric-sdk/commit/9dd2dc4f0ed62bed0f6a300dc04c4f0d60d0a65a)) -* **wallet-ui:** flatten schema into `actions` and iterators ([21bdfd1](https://github.com/Agoric/agoric-sdk/commit/21bdfd142df0aee91ad19b882a9b8f79a3894e95)) - - - -### [0.0.4](https://github.com/Agoric/agoric-sdk/compare/@agoric/wallet-ui@0.0.3...@agoric/wallet-ui@0.0.4) (2021-12-22) - - -### Features - -* **wallet:** add help link to documentation ([977262e](https://github.com/Agoric/agoric-sdk/commit/977262e596259788a773f0fe17eb61fb03d30ea4)) - - -### Bug Fixes - -* **wallet:** render issuer brand correctly ([f648c19](https://github.com/Agoric/agoric-sdk/commit/f648c19bbf397e9b322e7b990025157c124d2156)) - - - -### 0.0.3 (2021-12-02) - -**Note:** Version bump only for package @agoric/wallet-ui - - - - - -### 0.0.2 (2021-10-13) - - -### Features - -* **react-wallet:** Create app layout with left nav and app bar ([#3941](https://github.com/Agoric/agoric-sdk/issues/3941)) ([18807af](https://github.com/Agoric/agoric-sdk/commit/18807afea158f64eb0241b89cdafde3ec1847f4a)) -* **react-wallet:** Integrate wallet connection component ([#3922](https://github.com/Agoric/agoric-sdk/issues/3922)) ([01a9118](https://github.com/Agoric/agoric-sdk/commit/01a91181e36f4e2dc49dcbb1327c50e3b268d2f9)) -* **wallet:** Create react ui scaffold with ses ([#3879](https://github.com/Agoric/agoric-sdk/issues/3879)) ([089c876](https://github.com/Agoric/agoric-sdk/commit/089c876d801efc1ede76b3011a1301384aace77f)) diff --git a/packages/wallet/ui/README.md b/packages/wallet/ui/README.md deleted file mode 100644 index b4f9ab0836f..00000000000 --- a/packages/wallet/ui/README.md +++ /dev/null @@ -1,45 +0,0 @@ -# Smart Wallet UI - -## Development - -The UI deps and scripts were bootstrapped with [Create React App](https://github.com/facebook/create-react-app). - -To run it, - -```sh -# freshen sdk -cd agoric-sdk -yarn install && yarn build - -# local chain running with wallet provisioned -packages/smart-wallet/scripts/start-local-chain.sh YOUR_ACCOUNT_KEY - -# Start a wallet UI -cd packages/wallet/ui && yarn start -# NB: trailing slash -open http://localhost:3000/wallet/ -# Network config should use Smart Wallet, config URL is http://localhost:3000/wallet/network-config (not port 8000!), and "Keplr" connection method -# You may have to type in "3000" and choose it from the list. -# Click "Connect Smart Wallet" -# Should get a Keplr connection prompt when you confirm. -# Should get "query not found" error, wallet not initialized yet - -https://psm.inter.trade/ - -## Testing - -export AGORIC_NET=ollinet - -# make sure your wallet is provisioned on the net. -agoric wallet list | grep KEPLR_WALLET_ADDR -# if it's not in the list, provision it -https://ollinet.faucet.agoric.net/ - -# Start a wallet UI, new shell -cd packages/wallet/ui && yarn start -# NB: trailing slash -open http://localhost:3000/wallet/ -# ACTION: choose settings and point Network config to https://ollinet.agoric.net/network-config (you have to click on the list item) - -# Make sure it has some BLD for gas. -# ACTION: If it's zero, faucet again with "delegate" option diff --git a/packages/wallet/ui/config-overrides/index.js b/packages/wallet/ui/config-overrides/index.js deleted file mode 100644 index 057c46436b4..00000000000 --- a/packages/wallet/ui/config-overrides/index.js +++ /dev/null @@ -1,52 +0,0 @@ -// cribbed from https://www.npmjs.com/package/react-app-rewire-multiple-entry -/* global __dirname, require, module */ - -const path = require('path'); -const HtmlWebPackPlugin = require('html-webpack-plugin'); -const multiEntry = require('react-app-rewire-multiple-entry'); - -const bridgeTemplate = path.resolve( - path.join(__dirname, '..', 'public', 'bridge.html'), -); - -const multipleEntry = multiEntry([ - { - template: 'public/index.html', - entry: 'src/index.jsx', - }, - { - template: 'public/bridge.html', - entry: 'src/bridge-dapp.jsx', - }, -]); - -module.exports = function override(config, _env) { - config.resolve.fallback = { path: false, crypto: false }; - config.ignoreWarnings = [/Failed to parse source map/]; - - const htmlWebpackPlugin = config.plugins.find( - plugin => plugin.constructor.name === 'HtmlWebpackPlugin', - ); - if (!htmlWebpackPlugin) { - throw new Error("Can't find HtmlWebpackPlugin"); - } - - multipleEntry.addMultiEntry(config); - - const bridgeKeys = Object.keys(config.entry).filter(k => - k.startsWith('bridge'), - ); - const opts = { - ...htmlWebpackPlugin.userOptions, - template: bridgeTemplate, - filename: './bridge.html', - chunks: bridgeKeys, - }; - htmlWebpackPlugin.userOptions = { - ...htmlWebpackPlugin.userOptions, - excludeChunks: bridgeKeys, - }; - const plug2 = new HtmlWebPackPlugin(opts); - config.plugins.push(plug2); - return config; -}; diff --git a/packages/wallet/ui/config-overrides/package.json b/packages/wallet/ui/config-overrides/package.json deleted file mode 100644 index 64d7fb8d33a..00000000000 --- a/packages/wallet/ui/config-overrides/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "version": "0.0.1" -} diff --git a/packages/wallet/ui/jsconfig.json b/packages/wallet/ui/jsconfig.json deleted file mode 100644 index fe2305d2f59..00000000000 --- a/packages/wallet/ui/jsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "compilerOptions": { - "jsx": "react", - "target": "esnext", - "module": "esnext", - "noEmit": true, - "downlevelIteration": true, - "strictNullChecks": true, - "moduleResolution": "node" - }, - "include": [ - "*.js", - "*.d.ts", - "scripts/**/*.js", - "src/**/*.js", - "src/**/*.jsx", - "test/**/*.js", - "tools/**/*.js" - ] -} diff --git a/packages/wallet/ui/package.json b/packages/wallet/ui/package.json deleted file mode 100644 index ffd84df9c69..00000000000 --- a/packages/wallet/ui/package.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "name": "@agoric/wallet-ui", - "version": "0.5.0", - "description": "Wallet React frontend", - "author": "Agoric", - "license": "Apache-2.0", - "homepage": "/wallet", - "type": "module", - "dependencies": { - "@agoric/assert": "^0.5.1", - "@agoric/casting": "^0.3.2", - "@agoric/cosmic-proto": "^0.2.1", - "@agoric/ertp": "^0.15.3", - "@agoric/nat": "^4.1.0", - "@agoric/notifier": "^0.5.1", - "@agoric/smart-wallet": "^0.4.2", - "@agoric/ui-components": "^0.3.3", - "@agoric/wallet-backend": "^0.13.3", - "@agoric/web-components": "^0.5.0", - "@agoric/zoe": "^0.25.3", - "@agoric/internal": "0.2.1", - "@cosmjs/crypto": "0.29.0", - "@cosmjs/encoding": "0.29.0", - "@cosmjs/proto-signing": "0.29.0", - "@cosmjs/stargate": "0.29.0", - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@endo/captp": "^2.0.17", - "@endo/eventual-send": "^0.16.7", - "@endo/far": "^0.2.13", - "@endo/init": "^0.5.51", - "@endo/marshal": "^0.8.0", - "@mui/icons-material": "^5.1.0", - "@mui/lab": "^5.0.0-alpha.67", - "@mui/material": "^5.1.0", - "@mui/styles": "^5.1.0", - "clsx": "^1.1.1", - "cosmjs-types": "^0.5.0", - "protobufjs": "^7.0.0", - "react": "^16.8.0", - "react-dom": "^16.8.0", - "react-router-dom": "^5.3.0", - "uuid": "^8.3.2" - }, - "devDependencies": { - "@keplr-wallet/types": "^0.11.7", - "@testing-library/jest-dom": "^5.11.4", - "@testing-library/react": "^11.1.0", - "@testing-library/user-event": "^12.1.10", - "agoric": "^0.18.2", - "enzyme": "^3.11.0", - "enzyme-adapter-react-16": "^1.15.6", - "eslint": "^7.32.0", - "eslint-config-airbnb-base": "^14.2.0", - "eslint-plugin-import": "^2.25.3", - "eslint-plugin-jest": "^26.0.0", - "eslint-plugin-jsx-a11y": "^6.4.0", - "eslint-plugin-react": "^7.28.0", - "eslint-plugin-react-hooks": "^4.3.0", - "process": "^0.11.10", - "react-app-rewire-multiple-entry": "^2.2.3", - "react-app-rewired": "^2.2.1", - "react-scripts": "^5.0.1", - "rimraf": "^3.0.2", - "sass": "^1.49.9" - }, - "scripts": { - "start": "yarn build:ses && react-app-rewired start", - "build": "yarn build:ses && yarn build:react", - "build:ses": "cp ../../../node_modules/ses/dist/lockdown.umd.js public/", - "build:react": "react-app-rewired build", - "lint": "run-s --continue-on-error lint:*", - "lint:types": "tsc -p jsconfig.json", - "lint:eslint": "eslint '**/*.{js,jsx}'", - "lint-fix": "yarn lint:eslint --fix", - "test": "CI=true react-app-rewired test", - "test:watch": "react-app-rewired test", - "test:xs": "exit 0", - "test:debug": "react-app-rewired --inspect-brk test --runInBand --no-cache", - "eject": "react-scripts eject" - }, - "jest": { - "transformIgnorePatterns": [ - "/node_modules/(?!@lit-labs)/" - ] - }, - "eslintConfig": { - "ignorePatterns": [ - "**/*.umd.js", - "**/generated/*" - ], - "parser": "babel-eslint", - "parserOptions": { - "ecmaFeatures": { - "jsx": true - }, - "ecmaVersion": 2018, - "sourceType": "module" - }, - "plugins": [ - "jest" - ], - "rules": { - "import/no-extraneous-dependencies": [ - "error", - { - "devDependencies": [ - "**/*.test.*", - "**/setupTests.js" - ] - } - ], - "react/prop-types": "off", - "react/react-in-jsx-scope": "off", - "react/display-name": "off", - "@typescript-eslint/no-floating-promises": "off" - }, - "env": { - "browser": true, - "jest/globals": true - }, - "settings": { - "import/resolver": { - "node": { - "extensions": [ - ".js", - ".jsx" - ] - } - }, - "react": { - "version": "detect" - } - }, - "extends": [ - "@agoric", - "plugin:react/recommended" - ] - }, - "eslintIgnore": [ - "dist/", - "conf/", - "build/", - ".cache", - "node_modules", - "config-overrides/" - ], - "files": [ - "build/" - ], - "staticFiles": { - "staticPath": [ - { - "staticPath": "public/lib", - "staticOutDir": "lib" - }, - { - "staticPath": "public/assets" - } - ], - "excludeGlob": "**/*.js", - "watcherGlob": "**/*.html" - }, - "browserslist": { - "production": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "publishConfig": { - "access": "public" - } -} diff --git a/packages/wallet/ui/public/agoric-blocks.png b/packages/wallet/ui/public/agoric-blocks.png deleted file mode 100644 index c208d412757f95a105ac46c9a83be3c09f0a93c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87935 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 diff --git a/packages/wallet/ui/public/agoric-city.svg b/packages/wallet/ui/public/agoric-city.svg deleted file mode 100644 index 1d5252b589a..00000000000 --- a/packages/wallet/ui/public/agoric-city.svg +++ /dev/null @@ -1 +0,0 @@ -Agoric-illustrations-Artboard 2 copy \ No newline at end of file diff --git a/packages/wallet/ui/public/bridge.html b/packages/wallet/ui/public/bridge.html deleted file mode 100644 index e4b9f04332e..00000000000 --- a/packages/wallet/ui/public/bridge.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - Agoric Wallet Bridge - - - - -

- - - diff --git a/packages/wallet/ui/public/favicon.ico b/packages/wallet/ui/public/favicon.ico deleted file mode 100644 index 7c502aeab0d9b5639f9df1aaa798b93324a37c05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3262 zcmeHK32YQq7@i807UaHfL(MrP;S*`2XVVSCVm3r$<03It}~%x;(N&a68_yDi8i z)Nqq1L;)*JQ!zq-fI>M;At0zhC?EmCQ4kf7L%A)dZ?@YNNI`-mCdN%><{kh0|L_0) z@4c6unKg7!s}|i`APCYbGb1${L1F~siHn6JrH-;u@Dm@%cvC}=mK}^I23fqcD}u!C z^ycR2dCu1bp!&_Cq`G8t$RB{#2$GZ>3W%UU)=`)2@hW!gx6RcU>Xq!+2#b?+22$jF zZ$?Q_&M6t13rY$AFJa03(WH<79r$HkL_>a`q6r~87WON^wlPd#XxKzAuww&_fM}jG z3r$gjGRm1r9FU|1wen_)V=X+{52Z<(Bq*97d7PpIi&bD*H1fk>w4me`vQyI|v0%@R zPUbs)8CGMVC5W zw_^}#eG2|S)UBdLXo7?hAu&KuX3|J0Y$$=KU0{6B7Y;4~LiWjiSjyxvJ`GC{$JhWR#}O6#9x&1YX5RBJqJGa;m7yb_~{y!buh<`CN(-VCfhO>*O&1j)XQtXQNRQd;l?2*G zv#dyQxP`SaI4c7QxACI!k{GLG7#AZlE{SdMHZ16cTT=8r=+!_aL63l;04a(j&I69bSxS;{US=fR zZQ(eY{*IsH!UM@LPCn~%pXyD+n|ITAWHz4bR81a#QhDM{r` zuKeG590yz8uWWv@YGToiZJXQFR$slfUkfCa-MzBiqa52(cXhuusy-ne(tz=cgX5{>#x0-lXU<3@}mWZRww6`%v;-IL)q1QJ+|1!Px9|?QTP7z)emhJ6k+IqQz za1y<_FXlkA_0tOa=;XRDchb!h2ijaZF#(+8 zZOZypbMok%zWSU*(?G|rUX>MtjQs?B@`%x=YTF9wzEO$og`IbLzYJ#&e`4L>m{~*7 zhqttcD~@b3-W@0PMsCELKxe&aylKJ*^Lmv7DR6KhS`OxSGT9xwKHSp|T5bGw@Pg;A zukFf)ktMP7cGuO_Ev)pM4EZ)3on7gv>IbXzkE;D2K347_-Pa60oW2pcZ2ZH>OdFcI I$}x7@pB@yadjJ3c diff --git a/packages/wallet/ui/public/index.html b/packages/wallet/ui/public/index.html deleted file mode 100644 index 74f03caab83..00000000000 --- a/packages/wallet/ui/public/index.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - Agoric Wallet - - - -
- - - diff --git a/packages/wallet/ui/public/manifest.json b/packages/wallet/ui/public/manifest.json deleted file mode 100644 index bd80afc1fd9..00000000000 --- a/packages/wallet/ui/public/manifest.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "short_name": "Agoric Wallet", - "name": "Agoric Wallet", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/packages/wallet/ui/public/network-config b/packages/wallet/ui/public/network-config deleted file mode 100644 index a97ad0041d4..00000000000 --- a/packages/wallet/ui/public/network-config +++ /dev/null @@ -1,4 +0,0 @@ -{ - "chainName": "agoriclocal", - "rpcAddrs": ["http://localhost:26657"] -} diff --git a/packages/wallet/ui/public/robots.txt b/packages/wallet/ui/public/robots.txt deleted file mode 100644 index e9e57dc4d41..00000000000 --- a/packages/wallet/ui/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/packages/wallet/ui/public/tokens/BLD.svg b/packages/wallet/ui/public/tokens/BLD.svg deleted file mode 100644 index ad2ae99bde1..00000000000 --- a/packages/wallet/ui/public/tokens/BLD.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - Build-logo-symbol - - - - - - - - - - - - - - - - - - - - diff --git a/packages/wallet/ui/public/tokens/IST.png b/packages/wallet/ui/public/tokens/IST.png deleted file mode 100644 index cb79edfb690e430461b61b228a7af3caf45d2bb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1378 zcmV-o1)chdP)VJjx)D@ZAqJG3flAhQvYpV!-i~Z*bdd@iwO!cX4$k%p&n-uv^Ta< z5(-etrdK3kyCfLnh4uP;YXbpn)(dRZV4=GW0T~L=!GkzL#H~sqNTS(L3V=o4Br_oD zyWc|*3Ww>7ure30_`ZDWBm@DVJ5FPkv+@cQp-32RY6rk)mL3Nhck#F5Aj9@;8)LwV-4H! zaCTor_%l4?Ia3pUD+z#ja1RM_RinCmWn=ps-zsnOQBMgA2A3EFAvnNw1o%is@v<+Q zy@rM+d7>gj>rG)Y0CXvz{emlD&xSJzEy{PXEJIe<ZBdp0du4Xwl<>U*QRS%6MY@ zNG7wMZENv}=AEV(@u26`Elq|yN&-kF4$TJ<`-)WsvW$I1dVC_bBi47PwdY!#)sD}t zrWBLIymi5g;Vt=W2Lf-BB-G z`Dg}dQ%38@T~jyA?LU3!x#-fM+7SrgtX%svtJnu@Rd;0MT{EJUHFJ#@j(}YazKXIh z#GpeEaY&PE&hk*F9oDTq{oPxu;^mDjoUf;@xVz)O><1Piayyrk*9p>V-(K0Wq*qkX z3BrMwCH9|{nD!;zDzoK)Yl*@0N@bd52w%$2()j%!QaE&plxH^Z{UrhT-t`(uLva4u)!+XG zhq?DVaHoA2yT9$3IcXX&@&w4Ez*pe9eFXjuIF>57%gX8WPp7n$X;3nqH_ie*0H)lQhWg2N9E#AKd&NCSrdo@>PACNc6kIaHNIwZhNZ6@aNc|>N z`@5kO0G9Ag)&m^kRXn$VtjX^Ad`1KzoyY=^7&r!{0FZ+Hpt#FGOxN{t8x$a2?l&{t zss&1SW&Hlb`PLQ`So{(+FyV2q1h9f_^rM%=Lnb&!uRA$Ds+IjZl9d3VO!`{uME!-m zB?DyTZ-LEd(+;pP+bVak&F^R%PWvHo!wylEmSP@S>KTx-#td_~Y8JDvB!lc0m0J7; zEMf~=3`DJgfE-K?==MR=%@ivq|&v_iyub}gY0E<+2a8K4+grs`OD k5iM~ND7+8n75>NZ7f8MgnE7f*Z~y=R07*qoM6N<$f_^Q4s{jB1 diff --git a/packages/wallet/ui/public/tokens/USDC_axl.png b/packages/wallet/ui/public/tokens/USDC_axl.png deleted file mode 100644 index c6d3eb0fdc9366c80019e510818a04fd5e3378a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63323 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 C`F8^V diff --git a/packages/wallet/ui/public/tokens/USDC_grv.webp b/packages/wallet/ui/public/tokens/USDC_grv.webp deleted file mode 100644 index f6bc2320433aa97bcb5e7ee053683fe94dca6810..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5648 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 diff --git a/packages/wallet/ui/public/tokens/USDT_grv.webp b/packages/wallet/ui/public/tokens/USDT_grv.webp deleted file mode 100644 index 6a01f560d63997880eb963a227306298bada8cdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4614 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 diff --git a/packages/wallet/ui/public/tokens/chainlink.png b/packages/wallet/ui/public/tokens/chainlink.png deleted file mode 100644 index 04a2952edc0b30a0159c19a02654293f1333d0ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6461 zcmXX~by!s0*Bweix|Hs27)p8srKLNE6hS~zLKKEjdH|8`?ruRqx@PEhXr!eaV)(}Q z_dUto7b=F>cpZnMStfT#sh=7&=000oFsVeKC-$VZ%JS=ofkFcr)0I&c$ng%K_ zJv7NYLPRa#V*f2Y8tgI0!%SfOb!3Glj@)eO2pp!Fi!B+z;ueGr}DF`N{)T^6;5KRi63J)=+$ zKr6VEEm{`FZvvCFnf`rpb8vDiZvAhJ_xEU%@U4C1_HU$w_4Mr>O5A1 z9`%4Ga2rgCgICezgv?+-bUCY8aoZJiA@sz6Rx?1G1qr)fKAv4=GDU$XqL($s$vU%U%?J@?9Mv3vB4<<*3Q z9inyM^o8qO-H+qlgPXav>(t7<()L3s$6f1?mEXrV>pOqZcac^1`|RSbq3>ATV?on% z!6SCvI}s6@xz#yxY8JR0lD-+9y)}=xUfKK`Q?O$ixa=6d<_AUG+@T~Lwx^aZzvS(t zRqv0^Uet6Sjn7}S4W0t6XBU56jm=#wtY6*TJ)~Ff3lgdvpubvgZ#`{&0Osw@Jr*_! z1M}`42kQ=(0)>2p(Tk+JEyX}>K1Mv%K9^|>#do;u+VQ#nN{{-R1NAIUV;1VkGML4o zve-)y0EyL1EgwscVmrU}r{8Y1qAII=KBiT&W>v{QE5b;`y)n zwfnmdn^=u|005Q0nzE9C|I%2xpMkz9xu|T!nanc3& z@Br9m7eaPgx2@lHkn{y{dUBs26z(wXpph}zX9GQ-PqdHgLB*_itR>c|WX}UHtfkll zKb&nSc1PB1hJUG>*8*n`-O32>Rh@O+KrVs7`@R|Py!d%Z!i{-TIJoAwe4T<8efDy# zHj~20yWA5_t=OK{^#?}VJrdHOmEd91NOjWlIgWXbLoqpe-ZBB|O)fDPczSj=h971p zdqSaRMMC{q;f@iy^%vv5V7$VTlSe@@ViP;X!xUistzuO4C5c9Q`e7TzH2V=FVK?bt zFSV7>wqo)Ib>;*Dd>{h!x=_)9n~YE^Dg#FdaWbE6OBNVPc8dslC9l?pEG2!#9z!^I zKCwM+DMde^vbAnyn+S;#u?hl_T>tI_e4^ws!B36QIG-5q-RUH$c?xILMIiea#qY;o z9n(TW0beQOO)z^s!)$*BPO}MDjz_By-p)YfZ4uVH_#v4{eNws$b4)mEHKApp5v9CVXNXnygBO-1Epo$_ZYLcBP zhV3~{KK#1Zu{Msxdu+BO$4Ae#r0TEWwRML#HgBcJ+B@LqWs0p#r_S58%*J?Z6f}$x z{2cx+ELRLx9IAvoaLu9qf)`D*AYQ`;+acd;CyDu?{N2k)zmKp@G@pTeTpSYH7etvv zyl|TBNTb~t?U5!O(CQv!&n=N#p`qHC0ombc2nMTzA}%Em$}$9!U2^=83fn{*7G1%| zu!;KC{JS=)FW8UMzYR*$BiVOzTW!vv9z5r{Z%r-a@YR+wGj$71S3?(4gK%99TKMCl zrON~w3>kf%QZ3ROQ$BCebyf3cjPrPFPNL#_mUu8u@-~@?i)uxJ2Vv@})}P(EF_2g@ z#dpw*QEDgCbR&RVQ8O`7t&?&jlZ+#+7&o;H+{ z#8vehL)kz8e7+~D5UciHGuEo&*9%dR1Q9$T;gO%adRqh~8znBP37DPgrjL8Vm_{!M z1n;A3q6w0P1rlsCUGd)!!@N(3Rfn-(C8uE?-|0E=jqNsO6WSSZlDkU4QZ+y|G9DWQ z0GHFuUm<>3+}0%skJazxG@2G&cy#jNeU*i^25s(gW5txGp>sXm7Ht-9`E5en^yd+K z?5wUXub!COfv72;R={NqG0YN5PD3g>8uJp|%6_$H>+7nqn}ENiIebchtiH1m%Y}8B zzo>}d_%cQRHOjH0pH(+G%~DpisNo`7t_E*Fzv!bST|BuFhYaNkJqJiSa1W@L+*mJ} z@zI_yCN4>`S$@BjlHH{ibvg{L_!^5rab=Y@W6OR|3MYxSuC{AXFy@V>S~m(yX8p+A zs`$2gd27hHK5cdXYsg0=OlEC?aYuEBFW@^krD~rN@J1g1mF-;5@~ec4P70;;baHbi z4=6-vYgl+lW`>UnR7x$i(v?O7>T@xc*Gyi|57C5}coe>g%dzH;^@)EdW!uDrjYPkh z%zT75dj|d>x6o1snvm*-oXgY3hwG87*m0$$y~S5+n>O*w5s4UVDhwNYu$rga){M4F zplbf+LJw2pH#6%6)-^&SgbqT+JV(jD?0?A3uZqA!Hx zA7dsS+dyn*fUEk`)mx3+wPvXI)6Vu=W|$V9H9L6pNqzlBro%~*A8Q(SbczPFa|^ID zIJv%)+ZSj2XdH2oMV<>b?m(#PES)6WY`{IDJb{;`7?hO$ zWsL`yahO|%94&A7Yqpy_T!}Z5jmx|Xk5^)5%4IG0H#W(zV^O%4qj3Qx*sOY}bpgI{SSs=Pu#J&u-Eoab7`R>qNqTb>zoqcE&*+m$CQGNcO z86)?d>8o7t+N;C38LoZetnG3JC)gK8E7S-oeefNj}Gs`CEqP^%&WAE^qn$;IzVs_4OXi9Cy<&E*fVGqvioq9}$XK zBg-=0mZI+-8pC={_lV2VYMjiq*ZjFG_(SP*6eEGhpVId4=tuO{b43^znyF`v%IM;g z7uD)YS{i@LT_W1p2#uWBlp68@zzGZ^>P%)D8v zaKOyp!;1`_Vk3UEr2nQw84+^t80mDy!B%%&(pn~}(XhX?Tgsz*@!YaJ5&XSEtx3`n zyR^=&bO|J_JA6R?FlM$9KQ4l;lN^xu=LwMT8%Yj>U@aV|4R723fV6tk&(+rW;gi5QvdE{=M_uZgw-rd=bh&kwy`$!w7Z$P(_V z?wj;p&X+5%5(r9A9^xbU7d#wzEGBa6ui*Q-jzp*|?Gd7WyDPzYgDtUd5zbVDZzh1# zyHALs46X;)6`nOy+j^epD3razh2r;lUfphpN;e=&I>$Uu4+ExhcQDEM@AX&uuqf(G zpdQssKQOSthgA(yjWJvi>Qz;Z``@oIE0v<+DxN_6Q_1nEMUox;LHN-8N3RVt=)*Og zT;rR^nwQESK8|T#F$b-#*q;o?<7F_DZd5AGFb8jTj~u$jXQ>sfzHfpZsG5Y5-uW>y z4RF9>)p*$ctm+ntW%TX8mw#<&kPT)cYvr5>^3P|SUhi=t`qM`&aIo1^vRmSizWikI zW&eu8BQON)uCj|~8XDAGv-WM|41@E8I*-|~p(c$ZN|-A^xc`?e#hCY`OCw>vwt~6) zJgGc%;O3{~ewwRdlslHp_z^GPE%7OtWOP3O%Q3GM}wQFo98BXbLiA}M75gr!`zmUa@%fM?9ajhU9X zR^xg5j8sHameT%f?X4Usr0Ny6E|TS*NmX@NiWISN6~b&`OskrYn_y~_mrbmAv2WA( znOITNPAOAY6PHAO|;;auPt1;tj~peAK&#!A{uE>J13x$9fR}u*HHfDkghl zgihf`K?N1DF92ZdQ8eYN{NoK^03Z#|ajL*s6Gwl)mWhmRv&SUBwem%n$i>2MLF|S- z&%X)Sa5Nb+hA*!V!}0^Asy7TV)W}W&A%59^|8Pl{hOhj|yVXdQ3PT%{K`;O+ebE+x zRY7q3;IOxE2>6&Rc^e#GYwTzX`J{4#(tau&3?X}@T#yCfp{G{=L|W`oYHXt}zoyw+ zn4Yd>0CjoyImyM!GkWzaX`wV#P{7-)@Mq~sO%YP#uL%g)0EMJn*}iDHKLe^QMq{SqsL+;&)ar>CiV$K zvCr44N}n!rE@K^dL$MvT&f{}b=c_r_*g#$`2^l?On?z8-jU?Ui4}VT90O3ip zE&<`OwY5&2Ywm-oStwsl{#Hz*I6$P67)K4!mNQ#)Eu39J}XRkKj zir7E(2#2gsi@>4K8!doSA01(S5Us|EMjlYZ|HNhT?<|$+NBj>Wr`T(GWyZPYSl!#T>g|d-V7VpmEq$5MdtfbsHcc$YHnL>*Z{V8q`{}y3W~1JVy~clH0UItfuSg29zTz zDr$}J;qJaW@>a|m+YZuFmE_GiGI|xKW*v1|6k&f~nHF>sLU%v2jIeba-(IbLBb~XO z=Sls5JZK`Ia^yB=Z&{ubcZ;}D(9Bv~Gs+7S&S#Kjy{AziW89rpb9pM0C>wiO@}Lwe zRH^^H+I@EDobrA8T%aE;m9)PU^suvg;G01|pxu8N;};$%pvH)?UCx@isLdG4eO1f! zL;ytGY#`-5cjDVKUiD`dF0RGpf(R-}IlK^*1-{ShcMx0%nDnJ%IDUw@1sjL7#m=(n zOi0ib23FGxjE2wLwMPgZ^Adz%kiP(>GjH?ISIM}yT1MLp%yWHvK?{Z!P&gk5rf6Zb zDe*}Z`MH%2;>81%PL2+njl81?nr5E#n0DmFw>MP`5Oh08Xb}WhsTz38-(6|jF2aK_ zCb(V2SIoZOb~_1B(-0Tb7VbXFCdw#|yv9yuF)~D7bD=?#os$DK{hV8rXDhB`7akX* zm|U8ANk?!txmZ_|-?G6oi@_R@S30h-B8+LK)fFRAVAlMYp}2RA^vC-z{5m98Pl?0@ z-(hP{g2Rh1E4n+@8~SON^4<^w-$D^GO4Qv{ZT$s-3S4V6G1oC##Yn`Md~5I<%*R2|`L0=2s1FzhESEE-pdah*W$)}a<=ijD?ID42;RJxB z^_<9MPUA$&<)FP!sT6&J(U-Vdu~hF?BC8HRoxFTM+>ZatV@E3Nr+-e&kl|c=*KSeH zhKQgQ-|F?ju$j!KRvfkMP+O~*=pP>e5A#I)cSdkgmFgonk^i)H<%ryTGmmlH0|-Rp z8uj>^QKc8-gdBJ+*d*TK8cuKRJQIA(QT3JRSDDg<{ScC|fU0Sl8%A93C%x*IL z*j%i;-!Tn+FL_ADGfRl~9IPE4e>ppN`Ai0Jt6y!)9Y-p|B+LR;c8ydw z_Hqa@#(8=*ytDbGJhnflDn}l}8lXmA#!NL^oG#YUL7=x7vNOafD!It^+;LOm>E@?1 z7g3mV5uKZWg1i5-CC9#d4XSl$Te4F{(ix}XnM&B~R&Rvs?8D7X3kAV-?3`R%ip4^L zS1q0&0n;mBlMcv{a_AgL^kl-1KjD}ys!P0yK#!gNvu|ybVjR_p3iOjjl|Z2)(?YU5L6X$#zq>V3z`VGM&n5v}xa6!1tdM3LLU4?vaY zQ?D;B$z*{#Q^wh!ddB}D-bRxnLRmxf1?gyqw5hRC)=Q`or6%i(gmRlfy_ab*{0=&* zybEM}9iYKyYA@YJ)Q9Ciy|FreB>|jquWg_2dlmb;E^Me6TdXJd%>D8mebwXWf+AKb zS;zJ~W2{iNBt?Kq;`sAGq53o}Q+qK9T`Pi_^q@ejNJaNtLFEp%Ia#Ce-|y+M#uE(& z((S(gvAK$j(3O+z1eruA4Cv4T<5|xzbUjmge`WXofJ&!oKax-0=s8wbnhG)^@g*>> zmzP*$`g;nP9Vhwd_uy^DyhlU-9lU#z4>-kIotpX#{rjS@fh)lS=l8T z0Dc;C@ZksMfJ->X$B~xV2As#FMMQpS$*Z41uiphzk`Vw%yq)MmLGK-)FvAtChU|(l zp|}`oAIX?V0d6_XeZBgh$$d6#F5C4Gk0~!V&wy{bRg`*50v6WQ`U+s8aaMaB>c>hrKH*1W{5n;flt7K{ zS){cEr77`!O`ro?utZl?5t`G6X?rR>+CvWXIVYZs;Zs@wZ`Fg^l(`;hI12)Qs=O4L z!u_Lk0{qVOte2dNKQrTjNzAynzbn>Wj05D8$7hEM+>8FQJBZaa?@wPz8z8{?%*UW8 zPfE&UDB_5wSt#1jwG@aW7-bTJ^V&0jVxVt0G&sC}eK3Z^i#lD)wOHrZqDtr}6r+OfNhfPro zjUr4hm_TQEV+FOMaoj*LUhrHf%(IN54;)=reU?Qj;WjWsW#?EFt3gPGlm&0;<83^k Y#>XU@$B%W;|9}B%D%#4`Ae+$t18g~sP5=M^ diff --git a/packages/wallet/ui/public/tokens/cosmos.svg b/packages/wallet/ui/public/tokens/cosmos.svg deleted file mode 100644 index a9717443948..00000000000 --- a/packages/wallet/ui/public/tokens/cosmos.svg +++ /dev/null @@ -1 +0,0 @@ -cosmos-atom-logo \ No newline at end of file diff --git a/packages/wallet/ui/public/tokens/default.png b/packages/wallet/ui/public/tokens/default.png deleted file mode 100644 index 59329532205a80c0e449252e0b56359182501f69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1910 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D z+K*2<{O<8b?)ZAERrRjw|(c&534k}x$Tg@k1 za`C9c;`dMQs57cH-P|4~xc-xtN40L(qt9O4H5xmw2Tfh*#9=*$#ca|myA{_q3)swi zena7Y{iXwXxkUzV_o~$0UiEkRgD>7j@_&BkZwT>S z+ThbC!$*^!i3^Ab9b4HH=n~=+;}pcz&g7OU8EIL`>Z)p3r=vAv#?;V|t5-}-DkHZX z*=i_aVD#$6tC!LeQieuG22!(U%rac$IXgPSD(*D$!dMu?5ebBlF4pmetB^o1$B;!tDd?ZeRMlk zQqtS&^r`Ky^ZQpha4NVxJaX!Rz~xo1X5F&-{cDfSS~lA$7700Dy7IHmeafAfA$ot_ zwENfYEo@n~VDswT#}{u`)ZMXuXZ*gpLoC0mg6%@seL{@pnnaeJy5hEOR%YAf^fPmo z^@!EH%$$@Iln`$06`p_J&Ra^iO`WvTsvCiy5ZvAMrGn<2A7`mC``FtIjOj8&kQXI*;C=|&LV40YR7laoHH|g zee~%Q8hh&Y8Yl<6WpgVL?U6RmoMK?~DevAPZXa=}=cdZ73RY z^HVa@DsgMj`OOC^-rYbp6z8XvlqVLYGI-`DrlsjbpDgdoC(={;D zH8fKQ1mcX6k^(Dz{qpj1y-bj5AO@<|%P&fQw%-Kg1PPFdAsMB)Nmf=a`N^fZsd*(< zRslez#SDha|L@jEQv8@ z1q@~*JyUNdr<;=-Wr5PcNYbG}o(yT3IjO)P(9VDNPHb6Mw< G&;$UtG(R{1 diff --git a/packages/wallet/ui/public/tokens/usdc.svg b/packages/wallet/ui/public/tokens/usdc.svg deleted file mode 100644 index 5dfea926e6c..00000000000 --- a/packages/wallet/ui/public/tokens/usdc.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/packages/wallet/ui/src/AgoricLogo.jsx b/packages/wallet/ui/src/AgoricLogo.jsx deleted file mode 100644 index 08e90515552..00000000000 --- a/packages/wallet/ui/src/AgoricLogo.jsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react'; - -const AgoricLogo = () => { - const pathStyle = { fill: '#bb2d40' }; - - return ( - - - - - ); -}; - -export default AgoricLogo; diff --git a/packages/wallet/ui/src/App.jsx b/packages/wallet/ui/src/App.jsx deleted file mode 100644 index ef7f7fb26c5..00000000000 --- a/packages/wallet/ui/src/App.jsx +++ /dev/null @@ -1,62 +0,0 @@ -/* eslint-disable react/display-name */ -import React from 'react'; -import { Switch, Route } from 'react-router-dom'; -import { makeStyles, useTheme } from '@mui/styles'; -import AppBar from './components/AppBar'; -import NavMenu from './components/NavMenu'; -import Contacts from './views/Contacts'; -import Dapps from './views/Dapps'; -import Dashboard from './views/Dashboard'; -import Issuers from './views/Issuers'; - -import './App.scss'; - -const useStyles = makeStyles(theme => ({ - main: { - boxSizing: 'border-box', - padding: '32px', - marginLeft: theme.navMenuWidth, - position: 'absolute', - width: `calc(100vw - ${theme.navMenuWidth})`, - top: theme.appBarHeight, - [theme.breakpoints.down('md')]: { - marginLeft: '0', - width: '100vw', - }, - }, - navMenu: { - [theme.breakpoints.down('md')]: { - display: 'none', - }, - }, -})); - -const App = () => { - const classes = useStyles(useTheme()); - return ( - - - - -
- - - - - - - - - - - - - - -
- -
- ); -}; - -export default App; diff --git a/packages/wallet/ui/src/App.scss b/packages/wallet/ui/src/App.scss deleted file mode 100644 index db96e008994..00000000000 --- a/packages/wallet/ui/src/App.scss +++ /dev/null @@ -1,24 +0,0 @@ -@import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap'); - -.App { - color: rgb(40, 34, 48); - - font-family: Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', - sans-serif; - font-weight: 400; - - h6 { - font-size: 18px; - font-family: Montserrat, Arial, sans-serif; - font-weight: bold; - margin: 0; - } - - .text-gray { - color: rgb(97, 97, 97); - } - - p { - margin: 0; - } -} diff --git a/packages/wallet/ui/src/bridge-dapp.jsx b/packages/wallet/ui/src/bridge-dapp.jsx deleted file mode 100644 index 466f8e40a03..00000000000 --- a/packages/wallet/ui/src/bridge-dapp.jsx +++ /dev/null @@ -1,205 +0,0 @@ -// @ts-check -import '@endo/eventual-send/shim'; -import './lockdown.js'; - -import React, { useEffect } from 'react'; -import ReactDOM from 'react-dom'; -import { BridgeProtocol } from '@agoric/web-components'; -import { addOffer, OfferUIStatus } from './store/Offers.js'; -import { loadDapp, upsertDapp, watchDapps } from './store/Dapps.js'; - -/** @typedef {import('./store/Dapps').DappKey} DappKey */ - -Error.stackTraceLimit = Infinity; - -/** - * Sends a message to the dapp in the parent window. - * - * @param {*} payload - */ -const sendMessage = payload => window.parent.postMessage(payload, '*'); - -/** - * Ensures this bridge is being loaded inside another window. - */ -const checkParentWindow = () => { - const me = window; - const { parent } = window; - if (me === parent) { - throw Error('window.parent === parent!!!'); - } -}; - -/** - * Requests a dapp at a given origin to connect to the wallet UI. This will - * prompt the user to accept the dapp in the wallet and allow it to propose - * offers if accepted. - * - * @param {DappKey} dappKey - * @param {string} proposedPetname - The suggested petname if the wallet does - * not already know about the dapp. - */ -const requestDappConnection = (dappKey, proposedPetname) => { - const dapp = loadDapp(dappKey); - if (dapp) { - return; - } - upsertDapp(dappKey.smartWalletKey, { - origin: dappKey.origin, - petname: proposedPetname, - }); -}; - -/** - * Watches for changes in local storage to the dapp's approval status and - * notifies the dapp. - * - * @param {DappKey} dappKey - * @param {boolean} currentlyApproved - */ -const watchDappApproval = (dappKey, currentlyApproved) => { - watchDapps(dappKey.smartWalletKey, dapps => { - const dapp = dapps.find(d => d.origin === dappKey.origin); - const isDappApproved = !!dapp?.isEnabled; - if (isDappApproved !== currentlyApproved) { - sendMessage({ - type: BridgeProtocol.dappApprovalChanged, - isDappApproved, - }); - currentlyApproved = isDappApproved; - } - }); -}; - -/** @typedef {import('@agoric/web-components/src/dapp-wallet-bridge/DappWalletBridge').OfferConfig} OfferConfig */ -/** - * Propose an offer from the dapp to the wallet UI. - * - * @param {DappKey} dappKey - * @param {OfferConfig} offerConfig - */ -const createAndAddOffer = (dappKey, offerConfig) => { - const dapp = loadDapp(dappKey); - const isDappApproved = !!dapp?.isEnabled; - if (!isDappApproved) return; - - const currentTime = new Date().getTime(); - // TODO(https://github.com/Agoric/agoric-sdk/issues/6478): Generate separate - // id for transaction when signing. - const id = currentTime; - - const offer = { - id, - meta: { - id, - creationStamp: currentTime, - }, - requestContext: { origin: dappKey.origin }, - status: OfferUIStatus.proposed, - ...offerConfig, - }; - addOffer(dappKey.smartWalletKey, offer); -}; - -/** - * Notifies the dapp about whether it's approved or not and watches for changes - * to its approval status. - * - * @param {DappKey} dappKey - */ -const checkAndWatchDappApproval = dappKey => { - // Dapps are keyed by origin. A dapp is basically an origin with a petname - // and an approval status. - const dapp = loadDapp(dappKey); - const isDappApproved = !!dapp?.isEnabled; - sendMessage({ - type: BridgeProtocol.checkIfDappApproved, - isDappApproved, - }); - watchDappApproval(dappKey, isDappApproved); -}; - -const handleIncomingMessages = () => { - /** @type {DappKey=} */ - let dappKey; - - window.addEventListener('message', ev => { - const type = ev.data?.type; - if (!type?.startsWith(BridgeProtocol.prefix)) { - return; - } - if (dappKey === undefined) { - const origin = ev.origin; - const chainId = ev.data?.chainId; - const address = ev.data?.address; - assert.equal( - type, - BridgeProtocol.checkIfDappApproved, - `First message from dapp should be type ${BridgeProtocol.checkIfDappApproved}`, - ); - assert.string( - address, - 'First message from dapp should include an address', - ); - assert.string( - chainId, - 'First message from dapp should include a chainId', - ); - const smartWalletKey = { chainId, address }; - dappKey = { smartWalletKey, origin }; - console.debug('bridge connected with dapp', dappKey); - } - - switch (type) { - case BridgeProtocol.requestDappConnection: - requestDappConnection(dappKey, ev.data?.petname); - break; - case BridgeProtocol.checkIfDappApproved: - checkAndWatchDappApproval(dappKey); - break; - case BridgeProtocol.addOffer: - createAndAddOffer(dappKey, ev.data?.offerConfig); - break; - default: - break; - } - }); -}; - -const connectDapp = async () => { - checkParentWindow(); - handleIncomingMessages(); - sendMessage({ - type: BridgeProtocol.loaded, - }); -}; - -const sendCookiesDisabledError = () => { - sendMessage({ - type: BridgeProtocol.error, - message: 'Please enable cross-site cookies to use this functionality.', - }); -}; - -const Bridge = () => { - useEffect(() => { - const tryConnect = async () => { - if ('requestStorageAccess' in document) { - if (await document.hasStorageAccess()) { - connectDapp(); - } else { - sendCookiesDisabledError(); - } - } else if ('localStorage' in window) { - connectDapp(); - } else { - sendCookiesDisabledError(); - } - }; - tryConnect(); - }, []); - - return <>; -}; - -ReactDOM.render(, document.getElementById('root')); diff --git a/packages/wallet/ui/src/components/AppBar.jsx b/packages/wallet/ui/src/components/AppBar.jsx deleted file mode 100644 index be6d3013b66..00000000000 --- a/packages/wallet/ui/src/components/AppBar.jsx +++ /dev/null @@ -1,145 +0,0 @@ -import { useState } from 'react'; - -import { makeStyles, useTheme } from '@mui/styles'; -import HelpIcon from '@mui/icons-material/HelpOutline'; -import SettingsIcon from '@mui/icons-material/SettingsOutlined'; -import IconButton from '@mui/material/IconButton'; -import Tooltip from '@mui/material/Tooltip'; - -import NavDrawer from './NavDrawer'; -import ConnectionSettingsDialog from './ConnectionSettingsDialog'; -import { withApplicationContext } from '../contexts/Application'; -import SmartWalletConnection from './SmartWalletConnection'; -import TermsDialog from './TermsDialog'; -import { checkLatestAgreement, acceptTerms } from '../service/Terms'; - -const logoUrl = - 'https://agoric.com/wp-content/themes/agoric_2021_theme/assets/img/logo.svg'; -const helpUrl = 'https://agoric.com/documentation/guides/wallet/ui.html'; - -const useStyles = makeStyles(theme => ({ - header: { - backgroundColor: theme.palette.background.default, - borderBottom: '1px solid #eaecef', - margin: 'auto', - position: 'fixed', - top: 0, - left: 0, - width: '100%', - height: theme.appBarHeight, - display: 'flex', - alignItems: 'center', - flexShrink: 0, - justifyContent: 'space-between', - flexDirection: 'row', - flexWrap: 'nowrap', - }, - connecting: { - animation: `$throb 2s infinite`, - }, - '@keyframes throb': { - '0%': { - opacity: 1, - }, - '50%': { - opacity: 0.2, - }, - '100%': { - opacity: 1, - }, - }, - productLink: { - alignItems: 'center', - display: 'flex', - }, - productLogo: { - transform: 'scale(0.85)', - }, - appBarSection: { - display: 'flex', - flexDirection: 'row', - alignItems: 'center', - padding: '4px', - margin: '8px', - height: '100%', - }, -})); - -// Exported for testing only. -export const AppBarWithoutContext = () => { - const theme = useTheme(); - const classes = useStyles(theme); - - const [areTermsAccepted, setAreTermsAccepted] = useState( - checkLatestAgreement(), - ); - const handleTermsAccepted = () => { - acceptTerms(); - setAreTermsAccepted(true); - }; - - const [isConnectionDialogOpen, setIsConnectionDialogOpen] = useState(false); - const handleConnectionDialogClosed = () => { - setIsConnectionDialogOpen(false); - }; - - return ( -
-
- - - Agoric - -
-
-
- {areTermsAccepted && } - -
-
- - setIsConnectionDialogOpen(true)} - > - Help - - - -
-
- - - Help - - -
-
-
- ); -}; - -export default withApplicationContext(AppBarWithoutContext, context => ({ - wantConnection: context.wantConnection, - setWantConnection: context.setWantConnection, - connectionStatus: context.connectionStatus, - connectionConfig: context.connectionConfig, -})); diff --git a/packages/wallet/ui/src/components/BrandIcon.jsx b/packages/wallet/ui/src/components/BrandIcon.jsx deleted file mode 100644 index 64a4c6fd07d..00000000000 --- a/packages/wallet/ui/src/components/BrandIcon.jsx +++ /dev/null @@ -1,16 +0,0 @@ -import Box from '@mui/material/Box'; -import { icons, defaultIcon } from '../util/Icons.js'; - -const BrandIcon = ({ brandPetname }) => { - const src = icons[brandPetname] ?? defaultIcon; - - const icon = src ? ( - icon - ) : ( - - ); - - return {icon}; -}; - -export default BrandIcon; diff --git a/packages/wallet/ui/src/components/Card.jsx b/packages/wallet/ui/src/components/Card.jsx deleted file mode 100644 index fb0c77a68b6..00000000000 --- a/packages/wallet/ui/src/components/Card.jsx +++ /dev/null @@ -1,16 +0,0 @@ -import './Card.scss'; - -const Card = ({ children, header }) => { - return ( -
- {header && ( -
-
{header}
-
- )} -
{children}
-
- ); -}; - -export default Card; diff --git a/packages/wallet/ui/src/components/Card.scss b/packages/wallet/ui/src/components/Card.scss deleted file mode 100644 index 21a375647be..00000000000 --- a/packages/wallet/ui/src/components/Card.scss +++ /dev/null @@ -1,21 +0,0 @@ -.Card { - display: flex; - justify-content: flex-start; - flex-direction: column; - padding: 16px 0 16px; - border-radius: 8px; - border-color: #e0e0e0; - border-width: 1px; - box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2); - width: 100%; -} - -.Content { - align-items: center; - display: flex; - flex-direction: column; -} - -.Header { - margin: 0 16px 16px 16px; -} diff --git a/packages/wallet/ui/src/components/CardItem.jsx b/packages/wallet/ui/src/components/CardItem.jsx deleted file mode 100644 index c778b4ab094..00000000000 --- a/packages/wallet/ui/src/components/CardItem.jsx +++ /dev/null @@ -1,12 +0,0 @@ -import './CardItem.scss'; - -const CardItem = ({ children, hideDivider }) => { - return ( -
- {hideDivider ||
} - {children} -
- ); -}; - -export default CardItem; diff --git a/packages/wallet/ui/src/components/CardItem.scss b/packages/wallet/ui/src/components/CardItem.scss deleted file mode 100644 index 79000d810fb..00000000000 --- a/packages/wallet/ui/src/components/CardItem.scss +++ /dev/null @@ -1,12 +0,0 @@ -.CardItem { - width: 100%; - padding: 0 16px 16px 16px; -} - -.Divider { - width: 100%; - margin-bottom: 16px; - padding: 0; - height: 1px; - background-color: #eeeeee; -} diff --git a/packages/wallet/ui/src/components/ConnectionSettingsDialog.jsx b/packages/wallet/ui/src/components/ConnectionSettingsDialog.jsx deleted file mode 100644 index 40343b530d7..00000000000 --- a/packages/wallet/ui/src/components/ConnectionSettingsDialog.jsx +++ /dev/null @@ -1,202 +0,0 @@ -import { FormControl, InputLabel, MenuItem, Select } from '@mui/material'; -import Autocomplete from '@mui/material/Autocomplete'; -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import Dialog from '@mui/material/Dialog'; -import DialogActions from '@mui/material/DialogActions'; -import DialogContent from '@mui/material/DialogContent'; -import DialogTitle from '@mui/material/DialogTitle'; -import TextField from '@mui/material/TextField'; -import { makeStyles } from '@mui/styles'; -import { useMemo, useState } from 'react'; -import { withApplicationContext } from '../contexts/Application'; -import { networkConfigUrl } from '../util/connections.js'; -import { deepEquals } from '../util/DeepEquals'; -import { maybeSave } from '../util/storage'; - -const useStyles = makeStyles(_ => ({ - centeredText: { - textAlign: 'center', - }, -})); - -const Errors = { - INVALID_URL: 'invalid url', - INVALID_ACCESS_TOKEN: 'invalid access token', - INVALID_ADDRESS: 'invalid address', -}; - -const ErrorLabel = ({ children }) => { - return ( - ({ - color: theme.palette.error.main, - fontSize: '14px', - paddingLeft: '4px', - height: '16px', - ml: 1, - mt: 0.5, - })} - > - {children} - - ); -}; - -const ConnectionSettingsDialog = ({ - onClose, - open, - disconnect, - connectionConfig, - setConnectionConfig, - allConnectionConfigs, - setAllConnectionConfigs, - tryKeplrConnect, -}) => { - const classes = useStyles(); - /** @type {string[]} */ - const smartConnectionHrefs = allConnectionConfigs.map(c => c.href); - - const [configSource, setConfigSource] = useState( - /** @type {keyof KnownNetworkConfigUrls | 'custom'} */ ( - networkConfigUrl.toSource(connectionConfig.href) - ), - ); - - const [config, setConfig] = useState( - connectionConfig || { href: networkConfigUrl.fromSource(configSource) }, - ); - - const errors = new Set(); - - try { - // eslint-disable-next-line no-unused-vars - const url = new URL(config.href); - } catch (e) { - errors.add(Errors.INVALID_URL); - } - - const hasChanges = useMemo( - () => !deepEquals(config, connectionConfig), - [config, connectionConfig], - ); - - const saveAndClose = () => { - if (!hasChanges) { - // Allow the user to force another retry to connect to Keplr without - // reloading the page. - tryKeplrConnect(); - onClose(); - return; - } - - if (config) { - if (config.accessToken) { - maybeSave('accessToken', config.accessToken); - } - setConnectionConfig(config); - disconnect(true); - const { href } = config; - const isKnown = allConnectionConfigs.some(c => c.href === href); - if (!isKnown) { - setAllConnectionConfigs(conns => [{ href }, ...conns]); - } - } - onClose(); - }; - - const smartWalletConfigForm = ( - <> - - Network name - - - - setConfig({ - href: newValue, - }) - } - filterOptions={(options, params) => { - const { inputValue } = params; - const isExisting = options.some(option => inputValue === option); - if (inputValue && !isExisting) { - options.unshift(inputValue); - } - return options; - }} - renderOption={(props, option) =>
  • {option}
  • } - freeSolo - renderInput={params => } - /> - - {errors.has(Errors.INVALID_URL) ? 'Enter a valid URL' : ''} - - - ); - - return ( - - - Connection Settings - - {smartWalletConfigForm} - - - - - - ); -}; - -export default withApplicationContext(ConnectionSettingsDialog, context => ({ - disconnect: context.disconnect, - connectionConfig: context.connectionConfig, - setConnectionConfig: context.setConnectionConfig, - allConnectionConfigs: context.allConnectionConfigs, - setAllConnectionConfigs: context.setAllConnectionConfigs, - tryKeplrConnect: context.tryKeplrConnect, -})); diff --git a/packages/wallet/ui/src/components/Dapp.jsx b/packages/wallet/ui/src/components/Dapp.jsx deleted file mode 100644 index ad81be22e79..00000000000 --- a/packages/wallet/ui/src/components/Dapp.jsx +++ /dev/null @@ -1,62 +0,0 @@ -import { useState, useEffect } from 'react'; -import TextField from '@mui/material/TextField'; -import { E } from '@endo/eventual-send'; -import { withApplicationContext } from '../contexts/Application'; - -const DappWithoutContext = ({ dapp, dapps }) => { - const { petname, origin, dappOrigin, isEnabled, actions } = dapp; - const [dappPetname, setDappPetname] = useState(petname); - const [isValid, setIsValid] = useState(true); - - useEffect(() => { - setIsValid( - petname === dappPetname || - !dapps.filter( - ({ petname: otherPetname }) => dappPetname === otherPetname, - ).length, - ); - }, [dappPetname]); - - const handleDappPetnameChange = event => setDappPetname(event.target.value); - - const handleKeydown = event => { - if (event.key === 'Escape') { - setDappPetname(petname); - event.stopPropagation(); - } else if (event.key === 'Enter') { - E(actions).setPetname(dappPetname); - event.stopPropagation(); - } - }; - - return ( - <> -
    - {petname}{' '} -
    -
    - {isEnabled ? 'User' : 'Alleged user'} interface:{' '} - {dappOrigin || origin} -
    -
    - -
    - - ); -}; - -export default withApplicationContext(DappWithoutContext, context => ({ - dapps: context.dapps, -})); diff --git a/packages/wallet/ui/src/components/DappConnection.jsx b/packages/wallet/ui/src/components/DappConnection.jsx deleted file mode 100644 index 42332c7300e..00000000000 --- a/packages/wallet/ui/src/components/DappConnection.jsx +++ /dev/null @@ -1,36 +0,0 @@ -import { E } from '@endo/eventual-send'; -import Chip from '@mui/material/Chip'; -import CheckIcon from '@mui/icons-material/Check'; -import CloseIcon from '@mui/icons-material/Close'; -import Request from './Request'; -import Dapp from './Dapp'; - -const DappConnection = ({ dapp }) => { - const enable = () => E(dapp.actions).enable(); - const reject = () => E(dapp.actions).delete(); - - return ( - - -
    - } - color="success" - /> - } - color="error" - /> -
    -
    - ); -}; - -export default DappConnection; diff --git a/packages/wallet/ui/src/components/ErrorBoundary.jsx b/packages/wallet/ui/src/components/ErrorBoundary.jsx deleted file mode 100644 index 30b030e16cc..00000000000 --- a/packages/wallet/ui/src/components/ErrorBoundary.jsx +++ /dev/null @@ -1,36 +0,0 @@ -import React from 'react'; - -class ErrorBoundary extends React.Component { - constructor(props) { - super(props); - this.state = { error: null, errorInfo: null }; - } - - componentDidCatch(error, errorInfo) { - // Catch errors in any components below and re-render with error message - this.setState({ - error, - errorInfo, - }); - } - - render() { - if (this.state.errorInfo) { - // Error path - return ( -
    -

    Something went wrong.

    -
    - {this.state.error && this.state.error.toString()} -
    - {this.state.errorInfo.componentStack} -
    -
    - ); - } - // Normally, just render children - return this.props.children; - } -} - -export default ErrorBoundary; diff --git a/packages/wallet/ui/src/components/ImportContact.jsx b/packages/wallet/ui/src/components/ImportContact.jsx deleted file mode 100644 index 8d9ca075806..00000000000 --- a/packages/wallet/ui/src/components/ImportContact.jsx +++ /dev/null @@ -1,116 +0,0 @@ -/* eslint-disable import/no-extraneous-dependencies */ -import { useEffect, useState } from 'react'; -import Button from '@mui/material/Button'; -import TextField from '@mui/material/TextField'; -import Dialog from '@mui/material/Dialog'; -import DialogActions from '@mui/material/DialogActions'; -import DialogContent from '@mui/material/DialogContent'; -import DialogTitle from '@mui/material/DialogTitle'; -import InputAdornment from '@mui/material/InputAdornment'; -import { withApplicationContext } from '../contexts/Application'; - -// Exported for testing only. -export const ImportContactWithoutContext = ({ - isOpen, - contacts, - handleClose, - handleImport, -}) => { - const [petname, setPetname] = useState(''); - const [isPetnameValid, setIsPetnameValid] = useState(true); - const handlePetnameChange = e => { - setPetname(e.target.value); - }; - useEffect(() => { - if (contacts?.find(({ contactPetname }) => contactPetname === petname)) { - setIsPetnameValid(false); - } else { - setIsPetnameValid(true); - } - }, [petname]); - - const [boardId, setBoardId] = useState(''); - const [isBoardIdValid, setIsBoardIdValid] = useState(true); - const handleBoardIdChange = e => { - setBoardId(e.target.value); - }; - useEffect(() => { - if (contacts?.find(({ depositBoardId }) => depositBoardId === boardId)) { - setIsBoardIdValid(false); - } else { - setIsBoardIdValid(true); - } - }, [boardId]); - - const close = () => { - setPetname(''); - setBoardId(''); - handleClose(); - }; - - const doImport = () => { - handleImport(petname, boardId); - setPetname(''); - setBoardId(''); - handleClose(); - }; - - const content = ( - <> - Import Contact - -
    - -
    -
    - board0 - ), - }} - /> -
    -
    - - - - - - ); - - return ( - - {content} - - ); -}; - -export default withApplicationContext(ImportContactWithoutContext, context => ({ - contacts: context.contacts, -})); diff --git a/packages/wallet/ui/src/components/ImportIssuer.jsx b/packages/wallet/ui/src/components/ImportIssuer.jsx deleted file mode 100644 index 141c2b77afe..00000000000 --- a/packages/wallet/ui/src/components/ImportIssuer.jsx +++ /dev/null @@ -1,116 +0,0 @@ -/* eslint-disable import/no-extraneous-dependencies */ -import { useEffect, useState } from 'react'; -import Button from '@mui/material/Button'; -import TextField from '@mui/material/TextField'; -import Dialog from '@mui/material/Dialog'; -import DialogActions from '@mui/material/DialogActions'; -import DialogContent from '@mui/material/DialogContent'; -import DialogTitle from '@mui/material/DialogTitle'; -import InputAdornment from '@mui/material/InputAdornment'; -import { withApplicationContext } from '../contexts/Application'; - -// Exported for testing only. -export const ImportIssuerWithoutContext = ({ - isOpen, - issuers, - handleClose, - handleImport, -}) => { - const [petname, setPetname] = useState(''); - const [isPetnameValid, setIsPetnameValid] = useState(true); - const handlePetnameChange = e => { - setPetname(e.target.value); - }; - useEffect(() => { - if (issuers?.find(({ issuerPetname }) => issuerPetname === petname)) { - setIsPetnameValid(false); - } else { - setIsPetnameValid(true); - } - }, [petname]); - - const [boardId, setBoardId] = useState(''); - const [isBoardIdValid, setIsBoardIdValid] = useState(true); - const handleBoardIdChange = e => { - setBoardId(e.target.value); - }; - useEffect(() => { - if (issuers?.find(({ issuerBoardId }) => issuerBoardId === boardId)) { - setIsBoardIdValid(false); - } else { - setIsBoardIdValid(true); - } - }, [boardId]); - - const close = () => { - setPetname(''); - setBoardId(''); - handleClose(); - }; - - const doImport = () => { - handleImport(petname, boardId); - setPetname(''); - setBoardId(''); - handleClose(); - }; - - const content = ( - <> - Import Issuer - -
    - -
    -
    - board0 - ), - }} - /> -
    -
    - - - - - - ); - - return ( - - {content} - - ); -}; - -export default withApplicationContext(ImportIssuerWithoutContext, context => ({ - issuers: context.issuers, -})); diff --git a/packages/wallet/ui/src/components/IssuerSuggestion.jsx b/packages/wallet/ui/src/components/IssuerSuggestion.jsx deleted file mode 100644 index 7a4c0913dcd..00000000000 --- a/packages/wallet/ui/src/components/IssuerSuggestion.jsx +++ /dev/null @@ -1,53 +0,0 @@ -import { E } from '@endo/eventual-send'; -import Chip from '@mui/material/Chip'; -import CheckIcon from '@mui/icons-material/Check'; -import CloseIcon from '@mui/icons-material/Close'; -import { useState } from 'react'; -import TextField from '@mui/material/TextField'; -import Request from './Request'; - -const IssuerSuggestion = ({ suggestion }) => { - const [petname, setPetname] = useState(suggestion.petname); - - const accept = () => E(suggestion.actions).accept(petname); - const decline = () => E(suggestion.actions).delete(); - - return ( - -
    - Board ID: ({suggestion.boardId}) -
    -
    - setPetname(e.target.value)} - /> -
    -
    - } - color="success" - /> - } - color="error" - /> -
    -
    - ); -}; - -export default IssuerSuggestion; diff --git a/packages/wallet/ui/src/components/Loading.jsx b/packages/wallet/ui/src/components/Loading.jsx deleted file mode 100644 index 501af967041..00000000000 --- a/packages/wallet/ui/src/components/Loading.jsx +++ /dev/null @@ -1,66 +0,0 @@ -import Typography from '@mui/material/Typography'; -import CircularProgress from '@mui/material/CircularProgress'; -import ErrorIcon from '@mui/icons-material/Error'; -import WarningIcon from '@mui/icons-material/Warning'; - -import { - ConnectionStatus, - withApplicationContext, -} from '../contexts/Application'; - -const statusMessage = (status, config, defaultMessage) => { - switch (status) { - case ConnectionStatus.Connecting: - return `Connecting to wallet at ${config.href}`; - case ConnectionStatus.Disconnected: - return `Disconnected from ${config.href}`; - case ConnectionStatus.Error: - return `Error connecting to wallet at ${config.href}`; - default: - return defaultMessage; - } -}; - -const Loading = ({ connectionConfig, connectionStatus, defaultMessage }) => { - const graphic = (() => { - if (connectionStatus === ConnectionStatus.Error) { - return ; - } - if (connectionStatus === ConnectionStatus.Disconnected) { - return ; - } - return ; - })(); - - return ( -
    - {connectionConfig ? ( - <> - {graphic} - - {statusMessage(connectionStatus, connectionConfig, defaultMessage)} - - - ) : ( - <> - - - No configured wallet connection—see settings. - - - )} -
    - ); -}; - -export default withApplicationContext(Loading, context => ({ - connectionStatus: context.connectionStatus, - connectionConfig: context.connectionConfig, -})); diff --git a/packages/wallet/ui/src/components/MakePurse.jsx b/packages/wallet/ui/src/components/MakePurse.jsx deleted file mode 100644 index 2a367fbc537..00000000000 --- a/packages/wallet/ui/src/components/MakePurse.jsx +++ /dev/null @@ -1,114 +0,0 @@ -/* eslint-disable import/no-extraneous-dependencies */ -import { useEffect, useState } from 'react'; -import { E } from '@endo/eventual-send'; -import Button from '@mui/material/Button'; -import TextField from '@mui/material/TextField'; -import Dialog from '@mui/material/Dialog'; -import DialogActions from '@mui/material/DialogActions'; -import DialogContent from '@mui/material/DialogContent'; -import DialogTitle from '@mui/material/DialogTitle'; -import Snackbar from '@mui/material/Snackbar'; -import { withApplicationContext } from '../contexts/Application'; - -// Exported for testing only. -export const MakePurseWithoutContext = ({ - issuerId, - issuers, - purses, - handleClose, - setPendingPurseCreations, - schemaActions, -}) => { - const [isSnackbarOpen, setIsSnackbarOpen] = useState(false); - const handleCloseSnackbar = _ => { - setIsSnackbarOpen(false); - }; - const [snackbarMessage, setSnackbarMessage] = useState(''); - const showSnackbar = msg => { - setSnackbarMessage(msg); - setIsSnackbarOpen(true); - }; - const [petname, setPetname] = useState(''); - const [isPetnameValid, setIsPetnameValid] = useState(true); - const handlePetnameChange = e => { - setPetname(e.target.value); - }; - - useEffect(() => { - if (purses?.find(({ pursePetname }) => pursePetname === petname)) { - setIsPetnameValid(false); - } else { - setIsPetnameValid(true); - } - }, [petname]); - - const close = () => { - setPetname(''); - handleClose(); - }; - - const issuer = issuers?.find(({ id }) => issuerId === id) ?? null; - - const create = async () => { - setPendingPurseCreations({ issuerId, isPending: true }); - close(); - try { - await E(schemaActions).createPurse(issuer, petname); - showSnackbar('Successfully created purse.'); - } catch (e) { - showSnackbar('Failed to create purse.'); - } finally { - setPendingPurseCreations({ issuerId, isPending: false }); - } - }; - - const content = issuer && ( - <> - Create New Purse for {issuer.issuerPetname} - -
    - -
    -
    - - - - - - ); - return ( - <> - - {content} - - - - ); -}; - -export default withApplicationContext(MakePurseWithoutContext, context => ({ - issuers: context.issuers, - purses: context.purses, - setPendingPurseCreations: context.setPendingPurseCreations, - schemaActions: context.schemaActions, -})); diff --git a/packages/wallet/ui/src/components/NavDrawer.jsx b/packages/wallet/ui/src/components/NavDrawer.jsx deleted file mode 100644 index ad0568e0880..00000000000 --- a/packages/wallet/ui/src/components/NavDrawer.jsx +++ /dev/null @@ -1,47 +0,0 @@ -import { useEffect, useState } from 'react'; -import { useMediaQuery, useTheme } from '@mui/material'; -import IconButton from '@mui/material/IconButton'; -import Menu from '@mui/icons-material/Menu'; -import Drawer from '@mui/material/Drawer'; - -import NavMenu from './NavMenu'; - -const NavDrawer = () => { - const theme = useTheme(); - const [drawerOpened, setDrawerOpened] = useState(false); - const isMobile = useMediaQuery(theme.breakpoints.down('md')); - - const toggleDrawer = open => event => { - if ( - event?.type === 'keydown' && - (event?.key === 'Tab' || event?.key === 'Shift') - ) { - return; - } - setDrawerOpened(open); - }; - - useEffect(() => { - if (!isMobile) setDrawerOpened(false); - }, [isMobile]); - - return ( - isMobile && ( - <> - - - - - - - - ) - ); -}; - -export default NavDrawer; diff --git a/packages/wallet/ui/src/components/NavMenu.jsx b/packages/wallet/ui/src/components/NavMenu.jsx deleted file mode 100644 index b02477ec366..00000000000 --- a/packages/wallet/ui/src/components/NavMenu.jsx +++ /dev/null @@ -1,120 +0,0 @@ -import { useMemo, forwardRef } from 'react'; -import { Link, useRouteMatch } from 'react-router-dom'; -import { makeStyles, useTheme } from '@mui/styles'; -import List from '@mui/material/List'; -import ListItem from '@mui/material/ListItem'; -import ListItemText from '@mui/material/ListItemText'; -import ListItemIcon from '@mui/material/ListItemIcon'; -import DashboardIcon from '@mui/icons-material/Dashboard'; -import Apps from '@mui/icons-material/Apps'; -import People from '@mui/icons-material/People'; -import AddCircle from '@mui/icons-material/AddCircle'; -import { withApplicationContext } from '../contexts/Application'; - -const useStyles = makeStyles(theme => ({ - nav: { - position: 'fixed', - top: theme.appBarHeight, - width: theme.navMenuWidth, - height: `calc(100vh - ${theme.appBarHeight})`, - overflowY: 'auto', - [theme.breakpoints.down('md')]: { - position: 'relative', - top: '0', - }, - }, - sectionHeader: { - padding: '16px', - fontFamily: ['Montserrat', 'Arial', 'sans-serif'].join(','), - fontWeight: 700, - letterSpacing: '0.15px', - fontSize: '16px', - }, -})); - -const ListItemLink = ({ icon, primary, to, onClick }) => { - const match = useRouteMatch({ - path: to, - exact: true, - }); - - const renderLink = useMemo( - () => - forwardRef((itemProps, ref) => { - return ( - - ); - }), - [to], - ); - - return ( -
  • - - {icon ? {icon} : null} - - -
  • - ); -}; - -const NavMenu = ({ setDrawerOpened, previewEnabled }) => { - const styles = useStyles(useTheme()); - const onLinkClick = () => { - if (setDrawerOpened) { - setDrawerOpened(false); - } - }; - - return ( - - ); -}; - -export default withApplicationContext(NavMenu, context => ({ - previewEnabled: context.previewEnabled, -})); diff --git a/packages/wallet/ui/src/components/Offer.jsx b/packages/wallet/ui/src/components/Offer.jsx deleted file mode 100644 index 427d9895424..00000000000 --- a/packages/wallet/ui/src/components/Offer.jsx +++ /dev/null @@ -1,171 +0,0 @@ -/* eslint-disable import/no-extraneous-dependencies */ -import Chip from '@mui/material/Chip'; -import CheckIcon from '@mui/icons-material/Check'; -import CloseIcon from '@mui/icons-material/Close'; -import { useState } from 'react'; -import Request from './Request'; -import Petname from './Petname'; -import { formatDateNow } from '../util/Date'; -import { withApplicationContext } from '../contexts/Application'; -import ErrorBoundary from './ErrorBoundary'; -import Proposal from './Proposal'; - -import './Offer.scss'; - -// XXX this isn't implemented yet so hide the button. -const ALLOW_EXIT_OFFER = false; - -const statusText = { - decline: 'Declined', - rejected: 'Rejected', - accept: 'Accepted', - complete: 'Accepted', - pending: 'Pending', - proposed: 'Proposed', - cancel: 'Cancelled', -}; - -const statusColors = { - accept: 'success', - rejected: 'error', - decline: 'error', - pending: 'warning', - proposed: 'default', - complete: 'success', - cancel: 'default', -}; - -const OfferWithoutContext = ({ - offer, - pendingOffers, - setPendingOffers, - declinedOffers, - setDeclinedOffers, - setClosedOffers, -}) => { - const [signingError, setSigningError] = useState(null); - - const { - instancePetname, - instanceHandleBoardId, - requestContext: { dappOrigin, origin = 'unknown origin' } = {}, - id, - meta: { creationStamp: date }, - } = offer; - let status = offer.status || 'proposed'; - - // Update context if component was rendered while pending. - if (status === 'pending' && !pendingOffers.has(id)) { - setPendingOffers({ offerId: id, isPending: true }); - } - - // Eagerly show pending and declined offers' states. - if (status === 'proposed' && pendingOffers.has(id)) { - status = 'pending'; - } - if (status === 'proposed' && declinedOffers.has(id)) { - status = 'decline'; - } - - const approve = async () => { - setPendingOffers({ offerId: id, isPending: true }); - setSigningError(null); - return offer.actions.accept().catch(e => { - setPendingOffers({ offerId: id, isPending: false }); - console.error('Failed to sign offer', e); - setSigningError(e); - }); - }; - - const decline = () => { - setDeclinedOffers({ offerId: id, isDeclined: true }); - offer.actions.decline().catch(console.error); - }; - - const exit = () => { - offer.actions.cancel().catch(console.error); - }; - - const close = () => { - setPendingOffers({ offerId: id, isPending: false }); - setDeclinedOffers({ offerId: id, isDeclined: false }); - setClosedOffers({ offerId: id, isClosed: true }); - }; - - const controls = ( -
    - {ALLOW_EXIT_OFFER && status === 'pending' && ( - } - /> - )} - {status === 'proposed' && ( - <> - } - color="success" - style={{ marginLeft: '8px' }} - /> - } - /> - - )} -
    - ); - - const isOfferCompleted = [ - 'accept', - 'decline', - 'complete', - 'rejected', - 'cancel', - ].includes(status); - - return ( - - - {formatDateNow(date)} -
    - - via - {dappOrigin || origin} -
    - - - - {signingError && ( -
    -
    Signing Error
    -
    - {String(signingError)} -
    -
    - )} - {controls} -
    - ); -}; - -export default withApplicationContext(OfferWithoutContext, context => ({ - pendingOffers: context.pendingOffers, - setPendingOffers: context.setPendingOffers, - declinedOffers: context.declinedOffers, - setDeclinedOffers: context.setDeclinedOffers, - setClosedOffers: context.setClosedOffers, -})); diff --git a/packages/wallet/ui/src/components/Offer.scss b/packages/wallet/ui/src/components/Offer.scss deleted file mode 100644 index 07075b37f59..00000000000 --- a/packages/wallet/ui/src/components/Offer.scss +++ /dev/null @@ -1,46 +0,0 @@ -.Date { - float: right; - font-size: 16px; - line-height: 32px; -} - -.Blue { - color: rgb(0, 176, 255); -} - -.OfferOrigin { - margin: 8px 0; - font-size: 16px; -} - -.OfferEntry { - margin-top: 8px; -} - -.Token { - margin-top: 8px; - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; - font-size: 16px; - - & > img { - margin-right: 16px; - } - - & .Value { - font-weight: 600; - } -} - -.Controls { - display: flex; - flex-direction: row-reverse; - margin-top: 16px; -} - -.Expiry { - font-size: 16px; - margin-top: 8px; -} diff --git a/packages/wallet/ui/src/components/Payment.jsx b/packages/wallet/ui/src/components/Payment.jsx deleted file mode 100644 index 31fc89c4844..00000000000 --- a/packages/wallet/ui/src/components/Payment.jsx +++ /dev/null @@ -1,7 +0,0 @@ -import Request from './Request'; - -const Payment = () => { - return ; -}; - -export default Payment; diff --git a/packages/wallet/ui/src/components/Petname.jsx b/packages/wallet/ui/src/components/Petname.jsx deleted file mode 100644 index e5be20e273a..00000000000 --- a/packages/wallet/ui/src/components/Petname.jsx +++ /dev/null @@ -1,26 +0,0 @@ -import clsx from 'clsx'; - -import './Petname.scss'; - -const Petname = ({ name, plural = false, color = true }) => { - if (Array.isArray(name)) { - return ( - - {name[0]} - - {name.slice(1).map(chunk => `.${chunk}`)} - {plural && 's'} - - - ); - } - - return ( - - {name} - {plural && 's'} - - ); -}; - -export default Petname; diff --git a/packages/wallet/ui/src/components/Petname.scss b/packages/wallet/ui/src/components/Petname.scss deleted file mode 100644 index 06b9fccd60e..00000000000 --- a/packages/wallet/ui/src/components/Petname.scss +++ /dev/null @@ -1,5 +0,0 @@ -.UntrustedName { - &.Color { - color: rgb(194, 50, 50); - } -} diff --git a/packages/wallet/ui/src/components/Proposal.jsx b/packages/wallet/ui/src/components/Proposal.jsx deleted file mode 100644 index 5306726fb50..00000000000 --- a/packages/wallet/ui/src/components/Proposal.jsx +++ /dev/null @@ -1,179 +0,0 @@ -import { Nat } from '@agoric/nat'; -import { stringifyPurseValue } from '@agoric/ui-components'; -import Petname from './Petname'; -import PurseValue from './PurseValue'; -import { formatDateNow } from '../util/Date'; -import { withApplicationContext } from '../contexts/Application.jsx'; -import BrandIcon from './BrandIcon'; - -import './Offer.scss'; - -const OfferEntryFromTemplate = ( - type, - [role, { value: stringifiedValue, pursePetname }], - purses, -) => { - const value = BigInt(stringifiedValue); - const purse = purses.find(p => p.pursePetname === pursePetname); - if (!purse) { - return null; - } - return ( -
    -
    - {type.header} {role} -
    -
    - -
    - - {type.move} -
    -
    -
    - ); -}; - -const OfferEntryFromDisplayInfo = (type, [role, { amount, pursePetname }]) => { - const value = - amount.displayInfo.assetKind === 'nat' ? Nat(amount.value) : amount.value; - return ( -
    -
    - {type.header} {role} -
    -
    - -
    - - {type.move} -
    -
    -
    - ); -}; - -const entryTypes = { - want: { header: 'Want', move: 'into' }, - give: { header: 'Give', move: 'from' }, -}; - -const GiveFromDisplayInfo = entry => - OfferEntryFromDisplayInfo(entryTypes.give, entry); -const WantFromDisplayInfo = entry => - OfferEntryFromDisplayInfo(entryTypes.want, entry); - -const GiveFromTemplate = (entry, purses) => - OfferEntryFromTemplate(entryTypes.give, entry, purses); -const WantFromTemplate = (entry, purses) => - OfferEntryFromTemplate(entryTypes.want, entry, purses); - -const cmp = (a, b) => { - if (a < b) { - return -1; - } - if (a > b) { - return 1; - } - return 0; -}; - -const sortedEntries = entries => - Object.entries(entries).sort(([kwa], [kwb]) => cmp(kwa, kwb)); - -const Proposal = ({ offer, purses }) => { - const { - proposalForDisplay, - proposalTemplate, - invitationDetails: { fee, feePursePetname, expiry } = {}, - error, - } = offer; - - let give = {}; - let want = {}; - let args; - let hasDisplayInfo = false; - - // Proposed offers only have a `proposalTemplate`. Offers from the wallet - // contract have a `proposalForDisplay`. - if (proposalForDisplay) { - give = proposalForDisplay.give ?? {}; - want = proposalForDisplay.want ?? {}; - args = proposalForDisplay.arguments; - hasDisplayInfo = true; - } else if (proposalTemplate) { - give = proposalTemplate.give ?? {}; - want = proposalTemplate.want ?? {}; - args = proposalTemplate.arguments; - } else { - // The offer does not have a proposal. - } - - if (!purses) return <>; - - const feeEntry = fee && ( -
    -
    Pay Fee
    -
    - {feePursePetname && } -
    -
    - {stringifyPurseValue({ - value: fee.value, - displayInfo: fee.displayInfo, - })}{' '} - -
    - from -
    -
    -
    - ); - - const Gives = sortedEntries(give).map(g => - hasDisplayInfo ? GiveFromDisplayInfo(g) : GiveFromTemplate(g, purses), - ); - const Wants = sortedEntries(want).map(w => - hasDisplayInfo ? WantFromDisplayInfo(w) : WantFromTemplate(w, purses), - ); - - return ( - <> - {Gives} - {Wants} - {feeEntry} - {expiry && ( -
    -
    Expiry
    -
    - {formatDateNow(parseFloat(expiry) * 1000)} -
    -
    - )} - {args !== undefined && ( -
    -
    Arguments
    -
    {JSON.stringify(args, null, 2)}
    -
    - )} - {error && ( -
    -
    Error
    -
    {error}
    -
    - )} - - ); -}; - -export default withApplicationContext(Proposal, ({ purses }) => ({ - purses, -})); diff --git a/packages/wallet/ui/src/components/ProvisionDialog.jsx b/packages/wallet/ui/src/components/ProvisionDialog.jsx deleted file mode 100644 index 3a20ce56032..00000000000 --- a/packages/wallet/ui/src/components/ProvisionDialog.jsx +++ /dev/null @@ -1,211 +0,0 @@ -// @ts-check -import { makeFollower, iterateLatest } from '@agoric/casting'; -import CircularProgress from '@mui/material/CircularProgress'; -import Dialog from '@mui/material/Dialog'; -import DialogTitle from '@mui/material/DialogTitle'; -import DialogContent from '@mui/material/DialogContent'; -import DialogContentText from '@mui/material/DialogContentText'; -import DialogActions from '@mui/material/DialogActions'; -import Button from '@mui/material/Button'; -import Box from '@mui/material/Box'; -import Link from '@mui/material/Link'; -import React, { useState, useEffect, useMemo } from 'react'; - -import { AmountMath } from '@agoric/ertp'; -import { withApplicationContext } from '../contexts/Application'; - -const steps = { - INITIAL: 0, - AWAITING_APPROVAL: 1, - IN_PROGRESS: 2, -}; - -const errors = { - NO_SIGNER: 'Cannot sign a transaction in read only mode, connect to keplr.', -}; - -// TODO: Read this from the chain via rpc. -const CREATION_FEE = '10 BLD'; - -// 100 IST -const MINIMUM_PROVISION_POOL_BALANCE = 100n * 1_000_000n; - -// XXX import from the contract - -/** - * @typedef {object} ProvisionPoolMetrics - * @property {bigint} walletsProvisioned count of new wallets provisioned - * @property {Amount<'nat'>} totalMintedProvided running sum of Minted provided to new wallets - * @property {Amount<'nat'>} totalMintedConverted running sum of Minted - * ever received by the contract from PSM - */ - -export const useProvisionPoolMetrics = (unserializer, leader) => { - const [data, setData] = useState(/** @type {ProvisionPoolMetrics?} */ (null)); - - useEffect(() => { - let cancelled = false; - const fetchData = async () => { - const follower = await makeFollower( - `:published.provisionPool.metrics`, - leader, - { - unserializer, - }, - ); - for await (const { value } of iterateLatest(follower)) { - if (cancelled) { - break; - } - console.log('provisionPoolData', value); - setData(value); - } - }; - fetchData().catch(e => - console.error('useProvisionPoolMetrics fetchData error', e), - ); - return () => { - cancelled = true; - }; - }, [unserializer, leader]); - - return data; -}; - -/** - * - * @param {ProvisionPoolMetrics} provisionPoolData - * @returns {boolean} - */ -const isProvisionPoolLow = provisionPoolData => - provisionPoolData && - AmountMath.subtract( - provisionPoolData.totalMintedConverted, - provisionPoolData.totalMintedProvided, - ).value < MINIMUM_PROVISION_POOL_BALANCE; - -const ProvisionDialog = ({ - onClose, - open, - address, - href, - keplrConnection, - unserializer, - leader, -}) => { - const [currentStep, setCurrentStep] = useState(steps.INITIAL); - const [error, setError] = useState(/** @type {string?} */ (null)); - const provisionPoolData = useProvisionPoolMetrics(unserializer, leader); - - const provisionWallet = async signer => { - setError(null); - setCurrentStep(steps.AWAITING_APPROVAL); - try { - await signer.submitProvision(); - } catch (e) { - setCurrentStep(steps.INITIAL); - setError(e.message); - return; - } - setCurrentStep(steps.IN_PROGRESS); - }; - - const handleCreateButtonClicked = () => { - const { - signers: { interactiveSigner }, - } = keplrConnection; - if (!interactiveSigner) { - setError(errors.NO_SIGNER); - return; - } - - provisionWallet(interactiveSigner); - }; - - const progressIndicator = text => ( - - - - - {text} - - ); - - const content = useMemo(() => { - switch (currentStep) { - case steps.INITIAL: - return ( -
    - - Network Config:{' '} - - {href} - - - - Wallet Address: {address} - - - There is no smart wallet provisioned for this address yet. A fee - of {CREATION_FEE} is required to create one. - -
    - ); - case steps.AWAITING_APPROVAL: - return progressIndicator('Please approve the transaction in Keplr.'); - case steps.IN_PROGRESS: - return progressIndicator('Awaiting smart wallet creation...'); - default: - return <>; - } - }, [currentStep, href, address]); - - const provisionPoolLow = - provisionPoolData !== null && isProvisionPoolLow(provisionPoolData); - - return ( - - - {currentStep === steps.INITIAL ? 'Create a' : 'Creating'} Smart Wallet - - - {content} - {provisionPoolLow && ( - - The pool of funds to provision smart wallets is too small at this - time. - - )} - {error && ( - - {error} - - )} - - {currentStep === steps.INITIAL && ( - - - - - )} - - ); -}; - -export default withApplicationContext(ProvisionDialog, context => ({ - keplrConnection: context.keplrConnection, -})); diff --git a/packages/wallet/ui/src/components/PurseAmount.jsx b/packages/wallet/ui/src/components/PurseAmount.jsx deleted file mode 100644 index da69417db0e..00000000000 --- a/packages/wallet/ui/src/components/PurseAmount.jsx +++ /dev/null @@ -1,21 +0,0 @@ -import Petname from './Petname'; -import PurseValue from './PurseValue'; -import BrandIcon from './BrandIcon'; - -const PurseAmount = ({ brandPetname, pursePetname, value, displayInfo }) => { - return ( -
    - -
    - - -
    -
    - ); -}; - -export default PurseAmount; diff --git a/packages/wallet/ui/src/components/PurseValue.jsx b/packages/wallet/ui/src/components/PurseValue.jsx deleted file mode 100644 index eb968a4893c..00000000000 --- a/packages/wallet/ui/src/components/PurseValue.jsx +++ /dev/null @@ -1,238 +0,0 @@ -import { AssetKind } from '@agoric/ertp'; -import { stringifyPurseValue } from '@agoric/ui-components'; -import Close from '@mui/icons-material/Close'; -import { - Box, - Link, - Dialog, - DialogContent, - List, - ListItem, - IconButton, - DialogTitle, - Divider, - Chip, - Collapse, -} from '@mui/material'; -import { useState, useEffect, useRef } from 'react'; -import Petname from './Petname'; -import { stringify } from '../util/marshal'; - -const Item = ({ showDivider, children }) => { - const [expanded, setExpanded] = useState(false); - const [collapsible, setCollapsible] = useState(true); - const [windowWidth, setWindowWidth] = useState(window.innerWidth); - const contentEl = useRef(null); - - useEffect(() => { - if (contentEl.current) { - if (contentEl.current.scrollHeight <= 160) { - setCollapsible(false); - } else { - setCollapsible(true); - } - } - }, [contentEl.current, windowWidth]); - - useEffect(() => { - const handleResize = () => { - setWindowWidth(window.innerWidth); - }; - - window.addEventListener('resize', handleResize); - - return () => { - window.removeEventListener('resize', handleResize); - }; - }, []); - - const containerStyles = { - backgroundColor: '#eaecef', - border: '1px solid #81d4db', - boxSizing: 'border-box', - mb: 2, - mt: 2, - borderRadius: '8px', - width: '100%', - whiteSpace: 'pre-wrap', - overflow: 'hidden', - }; - - const content = ( - <> - {collapsible && ( - setExpanded(val => !val)} - sx={{ - fontFamily: 'inherit', - fontSize: 'inherit', - cursor: 'pointer', - height: '32px', - lineHeight: '32px', - borderRadius: '0 0 8px 8px', - border: 'none', - color: 'rgba(255, 255, 255)', - position: 'absolute', - width: 'calc(100% - 2px)', - bottom: '16px', - backdropFilter: 'blur(2px)', - backgroundColor: 'rgba(4, 170, 180, 0.5)', - }} - > - {expanded ? 'Show less' : 'Show more'} - - )} - {children} - - ); - - return ( - <> - - {collapsible ? ( - - {content} - - ) : ( - {content} - )} - - {showDivider && } - - ); -}; - -const SetItem = ({ item, showDivider }) => { - return ( - - - {stringify(item, true)} - - - ); -}; - -const CopyBagItem = ({ count, record, showDivider }) => { - return ( - - - - - {stringify(record, true)} - - - - ); -}; - -const RichAmountDisplay = ({ text, items }) => { - const [open, setOpen] = useState(false); - - const handleClose = () => setOpen(false); - const handleAmountClicked = e => { - e.preventDefault(); - setOpen(true); - }; - - return ( - <> - - {text} - - - - {items.length} Item{items.length !== 1 && 's'} - - - - - - {items} - - - - ); -}; - -const PurseValue = ({ value, displayInfo, brandPetname }) => { - const isNat = displayInfo?.assetKind === AssetKind.NAT; - const isSet = displayInfo?.assetKind === AssetKind.SET; - const isCopyBag = displayInfo?.assetKind === AssetKind.COPY_BAG; - - if (isCopyBag && Object.prototype.hasOwnProperty.call(value, 'payload')) { - value = value.payload; - } - - const text = ( - <> - {stringifyPurseValue({ - value, - displayInfo, - })}{' '} - - - ); - - const setItems = - isSet && - value.map((item, index) => ( - - )); - - const copyBagItems = - isCopyBag && - value.map((entry, index) => ( - - )); - - return ( - - {isNat && text} - {isSet && } - {isCopyBag && } - - ); -}; - -export default PurseValue; diff --git a/packages/wallet/ui/src/components/Purses.jsx b/packages/wallet/ui/src/components/Purses.jsx deleted file mode 100644 index d9623ca5d96..00000000000 --- a/packages/wallet/ui/src/components/Purses.jsx +++ /dev/null @@ -1,80 +0,0 @@ -import { useState } from 'react'; -import { CircularProgress } from '@mui/material'; -import Button from '@mui/material/Button'; -import Transfer from './Transfer'; -import PurseAmount from './PurseAmount'; -import { withApplicationContext } from '../contexts/Application'; -import CardItem from './CardItem'; -import Card from './Card'; -import ErrorBoundary from './ErrorBoundary'; -import Loading from './Loading'; - -import './Purses.scss'; - -// Exported for testing only. -export const PursesWithoutContext = ({ - purses, - pendingTransfers, - previewEnabled, -}) => { - const [openPurse, setOpenPurse] = useState(null); - - const handleClickOpen = purse => { - setOpenPurse(purse); - }; - - const handleClose = () => { - setOpenPurse(null); - }; - - const Purse = purse => { - return ( - -
    - - - -
    - {previewEnabled && ( -
    - {pendingTransfers.has(purse.id) ? ( -
    - -
    - ) : ( - - )} -
    - )} -
    - ); - }; - - const purseItems = (purses && purses.map(Purse)) ?? ( - - ); - - return ( -
    - {purseItems} - -
    - ); -}; - -export default withApplicationContext(PursesWithoutContext, context => ({ - purses: context.purses, - pendingTransfers: context.pendingTransfers, - previewEnabled: context.previewEnabled, -})); diff --git a/packages/wallet/ui/src/components/Purses.scss b/packages/wallet/ui/src/components/Purses.scss deleted file mode 100644 index f65cfdd5ec4..00000000000 --- a/packages/wallet/ui/src/components/Purses.scss +++ /dev/null @@ -1,21 +0,0 @@ -.Amount { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; - font-size: 16px; -} - -.Left { - float: left; -} - -.Right { - float: right; -} - -.PurseProgressWrapper { - height: 30px; - text-align: center; - width: 64px; -} diff --git a/packages/wallet/ui/src/components/Request.jsx b/packages/wallet/ui/src/components/Request.jsx deleted file mode 100644 index eba095b13a3..00000000000 --- a/packages/wallet/ui/src/components/Request.jsx +++ /dev/null @@ -1,27 +0,0 @@ -import IconButton from '@mui/material/IconButton'; -import CloseIcon from '@mui/icons-material/Close'; - -import './Request.scss'; - -const Request = ({ close, header, completed, children }) => { - return ( -
    -
    -
    -
    {header}
    -
    - {completed && ( - - - - )} -
    - -
    {children}
    - - {completed &&
    } -
    - ); -}; - -export default Request; diff --git a/packages/wallet/ui/src/components/Request.scss b/packages/wallet/ui/src/components/Request.scss deleted file mode 100644 index 3c283d1c133..00000000000 --- a/packages/wallet/ui/src/components/Request.scss +++ /dev/null @@ -1,64 +0,0 @@ -.Request { - width: 420px; - max-width: 100%; - border-radius: 16px; - padding-bottom: 16px; - padding-left: 16px; - padding-right: 16px; - border: 1px solid #e0e0e0; - box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2); - margin-bottom: 16px; - animation: expand 0.4s; - position: relative; -} - -.RequestSummary { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - border-radius: 16px 16px 0 0; - width: 100%; - font-size: 18px; - font-weight: 500; - color: rgb(40, 34, 48); - margin-bottom: 16px; - padding: 4px 0; - border-bottom: 1px solid #eeeeee; -} - -.RequestHeader { - height: 48px; - line-height: 48px; - text-align: center; -} - -.Overlay { - position: absolute; - height: 100%; - width: 100%; - border-radius: 16px; - top: 0; - left: 0; - background-color: rgba(40, 34, 48, 0.1); - animation: fade-in 2s; - pointer-events: none; -} - -@keyframes expand { - 0% { - transform: scale(0); - } - 100% { - transform: scale(1); - } -} - -@keyframes fade-in { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } -} diff --git a/packages/wallet/ui/src/components/Requests.jsx b/packages/wallet/ui/src/components/Requests.jsx deleted file mode 100644 index 32e0fcc2c9a..00000000000 --- a/packages/wallet/ui/src/components/Requests.jsx +++ /dev/null @@ -1,106 +0,0 @@ -import Offer from './Offer'; -import Payment from './Payment'; -import DappConnection from './DappConnection'; -import { withApplicationContext } from '../contexts/Application'; -import IssuerSuggestion from './IssuerSuggestion'; - -import './Requests.scss'; - -// Exported for testing only. -const RequestsInternal = ({ - payments, - offers, - dapps, - purses, - issuerSuggestions, - pendingOffers, - declinedOffers, - closedOffers, -}) => { - const hasNoAutodeposit = payment => - payment.status !== 'deposited' && - !purses.filter( - p => p.brand === payment.brand && (p.depositBoardId || '').length, - ).length; - - const isDisabled = dapp => !dapp.isEnabled; - - payments = ((purses && payments) || []) - .filter(hasNoAutodeposit) - .map(p => ({ type: 'payment', data: p })); - - offers = (offers || []) - .filter( - ({ status, id }) => - ((status || 'proposed') === 'proposed' || - (status || 'proposed') === 'pending' || - pendingOffers.has(id) || - declinedOffers.has(id)) && - !closedOffers.has(id), - ) - .map(o => ({ - type: 'offer', - data: o, - })); - - dapps = (dapps || []).filter(isDisabled).map(d => ({ - type: 'dapp', - data: d, - })); - - issuerSuggestions = (issuerSuggestions || []).map(s => ({ - type: 'issuerSuggestion', - data: s, - })); - - const requests = [ - ...issuerSuggestions, - ...[...payments, ...offers, ...dapps].sort((a, b) => a.data.id - b.data.id), - ]; - - const Item = request => { - if (request.type === 'offer') { - return ; - } else if (request.type === 'payment') { - return ; - } else if (request.type === 'dapp') { - return ; - } else { - return ( - - ); - } - }; - return ( -
    - {requests.length ? ( - requests.map(Item) - ) : ( -
    - Empty Inbox -

    No requests

    -
    - )} -
    - ); -}; - -export default withApplicationContext(RequestsInternal, context => ({ - payments: context.payments, - offers: context.inbox, - dapps: context.dapps, - purses: context.purses, - pendingOffers: context.pendingOffers, - declinedOffers: context.declinedOffers, - closedOffers: context.closedOffers, - issuerSuggestions: context.issuerSuggestions, -})); diff --git a/packages/wallet/ui/src/components/Requests.scss b/packages/wallet/ui/src/components/Requests.scss deleted file mode 100644 index 9ecf5db759f..00000000000 --- a/packages/wallet/ui/src/components/Requests.scss +++ /dev/null @@ -1,38 +0,0 @@ -.Requests { - min-height: 380px; -} - -.RequestsHeader { - margin-bottom: 16px; -} - -.Splash-image { - opacity: 0.6; - max-width: 100%; -} - -.Empty { - border-radius: 16px; - background-image: linear-gradient(to bottom, #f1f1f1, #ffffff); - padding: 16px 0; - animation: fadeIn 1s; - text-align: center; - font-size: 16px; - width: 420px; - max-width: 100%; -} - -@keyframes fadeIn { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } -} - -@media screen and (max-width: 1280px) { - .Empty { - background-image: none; - } -} diff --git a/packages/wallet/ui/src/components/SmartWalletConnection.jsx b/packages/wallet/ui/src/components/SmartWalletConnection.jsx deleted file mode 100644 index cecd270d894..00000000000 --- a/packages/wallet/ui/src/components/SmartWalletConnection.jsx +++ /dev/null @@ -1,199 +0,0 @@ -import { makeFollower, makeLeader } from '@agoric/casting'; -import { observeIterator } from '@agoric/notifier'; -import { NO_SMART_WALLET_ERROR } from '@agoric/smart-wallet/src/utils'; -import { makeImportContext } from '@agoric/wallet/api/src/marshal-contexts'; -import { Far } from '@endo/marshal'; -import MuiAlert from '@mui/material/Alert'; -import Snackbar from '@mui/material/Snackbar'; -import React, { useEffect, useState, useMemo } from 'react'; -import { DEFAULT_CONNECTION_CONFIGS } from '../util/connections'; -import { maybeSave } from '../util/storage'; - -import { - ConnectionStatus, - withApplicationContext, -} from '../contexts/Application'; -import { - makeBackendFromWalletBridge, - makeWalletBridgeFromFollowers, -} from '../util/WalletBackendAdapter'; -import ProvisionDialog from './ProvisionDialog'; - -const Alert = React.forwardRef(function Alert({ children, ...props }, ref) { - return ( - - {children} - - ); -}); - -/** - * Wallet UI doesn't use objects as presences, only as identities. - * Use this to override the defaultMakePresence of makeImportContext. - * - * @param {string} iface - */ -const inertPresence = iface => Far(iface.replace(/^Alleged: /, ''), {}); - -const SmartWalletConnection = ({ - connectionConfig, - setConnectionStatus, - setBackend, - setBackendErrorHandler, - keplrConnection, - allConnectionConfigs, - tryKeplrConnect, -}) => { - const [snackbarMessages, setSnackbarMessages] = useState([]); - const [provisionDialogOpen, setProvisionDialogOpen] = useState(false); - - const onProvisionDialogClose = () => { - setProvisionDialogOpen(false); - }; - - const handleSnackbarClose = (_, reason) => { - if (reason === 'clickaway') { - return; - } - - setSnackbarMessages(sm => sm.slice(1)); - }; - - const showError = (message, e, severity = 'error') => { - if (e) { - console.error(`${message}:`, e); - message += `: ${e.message}`; - } - if (severity === 'error') { - setConnectionStatus(ConnectionStatus.Error); - } - setSnackbarMessages(sm => [...sm, { severity, message }]); - }; - - const { href } = connectionConfig; - - const publicAddress = (() => { - if (keplrConnection) { - return keplrConnection.address; - } - return undefined; - })(); - - const backendError = e => { - if (e.message === NO_SMART_WALLET_ERROR) { - setProvisionDialogOpen(true); - setConnectionStatus(ConnectionStatus.Error); - } else { - setBackend(null); - showError('Error in wallet backend', e); - } - }; - - const [context, leader] = useMemo( - () => [makeImportContext(inertPresence), makeLeader(href)], - [connectionConfig, keplrConnection], - ); - - useEffect(() => { - maybeSave('connectionConfig', connectionConfig); - - const updatedConnectionConfigs = []; - - for (const config of allConnectionConfigs) { - const found = DEFAULT_CONNECTION_CONFIGS.find( - defaultConfig => defaultConfig.href === config.href, - ); - if (!found) { - updatedConnectionConfigs.push(config); - } - } - maybeSave('userConnectionConfigs', updatedConnectionConfigs); - - if (connectionConfig) { - tryKeplrConnect().catch(reason => { - console.error('tryKeplrConnect failed', reason); - setConnectionStatus(ConnectionStatus.Error); - }); - } - }, [connectionConfig]); - - useEffect(() => { - if (!connectionConfig || !keplrConnection) { - return undefined; - } - - let cancelIterator; - - const follow = async () => { - const followPublished = path => - makeFollower(`:published.${path}`, leader, { - unserializer: context.fromMyWallet, - }); - const bridge = makeWalletBridgeFromFollowers( - { chainId: keplrConnection.chainId, address: publicAddress }, - context.fromBoard, - followPublished(`wallet.${publicAddress}.current`), - followPublished(`wallet.${publicAddress}`), - keplrConnection, - backendError, - () => { - setConnectionStatus(ConnectionStatus.Connected); - setProvisionDialogOpen(false); - }, - ); - const { backendIt, cancel } = makeBackendFromWalletBridge(bridge); - cancelIterator = cancel; - // Need to thunk the error handler, or it gets called immediately. - setBackendErrorHandler(() => backendError); - return observeIterator(backendIt, { - updateState: be => { - cancelIterator && setBackend(be); - }, - fail: e => { - cancelIterator && backendError(e); - }, - finish: be => { - cancelIterator && setBackend(be); - }, - }); - }; - follow().catch(e => showError('Cannot read Smart Wallet casting', e)); - - return () => { - cancelIterator && cancelIterator(); - cancelIterator = undefined; - }; - }, [connectionConfig, keplrConnection]); - - return ( -
    - 0}> - - {snackbarMessages[0]?.message} - - - -
    - ); -}; - -export default withApplicationContext(SmartWalletConnection, context => ({ - connectionConfig: context.connectionConfig, - setConnectionStatus: context.setConnectionStatus, - setBackend: context.setBackend, - setBackendErrorHandler: context.setBackendErrorHandler, - keplrConnection: context.keplrConnection, - allConnectionConfigs: context.allConnectionConfigs, - tryKeplrConnect: context.tryKeplrConnect, -})); diff --git a/packages/wallet/ui/src/components/TermsDialog.jsx b/packages/wallet/ui/src/components/TermsDialog.jsx deleted file mode 100644 index 4d9475ea69c..00000000000 --- a/packages/wallet/ui/src/components/TermsDialog.jsx +++ /dev/null @@ -1,55 +0,0 @@ -import Button from '@mui/material/Button'; -import Checkbox from '@mui/material/Checkbox'; -import Dialog from '@mui/material/Dialog'; -import DialogActions from '@mui/material/DialogActions'; -import DialogContent from '@mui/material/DialogContent'; -import DialogTitle from '@mui/material/DialogTitle'; -import FormControlLabel from '@mui/material/FormControlLabel'; -import { useState } from 'react'; - -import styles from './TermsDialog.module.scss'; - -const TermsDialog = ({ onClose, isOpen }) => { - const [isChecked, setIsChecked] = useState(false); - - const handleCheckboxChange = event => { - setIsChecked(event.target.checked); - }; - - return ( - - Disclaimer - - - By clicking here you are indicating that you have read and agree - to our{' '} - - Terms of Use - - . - - } - control={ - - } - /> - - - - - - ); -}; - -export default TermsDialog; diff --git a/packages/wallet/ui/src/components/TermsDialog.module.scss b/packages/wallet/ui/src/components/TermsDialog.module.scss deleted file mode 100644 index 6a1fd01b062..00000000000 --- a/packages/wallet/ui/src/components/TermsDialog.module.scss +++ /dev/null @@ -1,3 +0,0 @@ -.link { - color: rgb(0, 176, 255); -} diff --git a/packages/wallet/ui/src/components/Transfer.jsx b/packages/wallet/ui/src/components/Transfer.jsx deleted file mode 100644 index 8d9e1097b43..00000000000 --- a/packages/wallet/ui/src/components/Transfer.jsx +++ /dev/null @@ -1,232 +0,0 @@ -/* eslint-disable import/no-extraneous-dependencies */ -import { useEffect, useState } from 'react'; -import Button from '@mui/material/Button'; -import TextField from '@mui/material/TextField'; -import InputAdornment from '@mui/material/InputAdornment'; -import InputLabel from '@mui/material/InputLabel'; -import Dialog from '@mui/material/Dialog'; -import DialogActions from '@mui/material/DialogActions'; -import DialogContent from '@mui/material/DialogContent'; -import FormControlLabel from '@mui/material/FormControlLabel'; -import FormControl from '@mui/material/FormControl'; -import Radio from '@mui/material/Radio'; -import RadioGroup from '@mui/material/RadioGroup'; -import DialogTitle from '@mui/material/DialogTitle'; -import Select from '@mui/material/Select'; -import MenuItem from '@mui/material/MenuItem'; -import { parseAsValue } from '@agoric/ui-components'; -import { E } from '@endo/eventual-send'; -import Snackbar from '@mui/material/Snackbar'; -import PurseAmount from './PurseAmount'; -import { withApplicationContext } from '../contexts/Application'; - -const transferTypes = { WITHIN_WALLET: 'WITHIN_WALLET', ONE_WAY: 'ONE_WAY' }; - -// Exported for testing only. -export const TransferInternal = ({ - purse, - handleClose, - purses, - contacts, - setPendingTransfers, -}) => { - const [isSnackbarOpen, setIsSnackbarOpen] = useState(false); - const handleCloseSnackbar = _ => { - setIsSnackbarOpen(false); - }; - const [snackbarMessage, setSnackbarMessage] = useState(''); - const showSnackbar = msg => { - setSnackbarMessage(msg); - setIsSnackbarOpen(true); - }; - - const [amountValid, setAmountValid] = useState(false); - const [amount, setAmount] = useState(''); - const [parsedAmount, setParsedAmount] = useState(null); - const handleAmountChange = e => { - setAmount(e.target.value); - }; - - useEffect(() => { - try { - const val = parseAsValue( - amount, - purse.displayInfo.assetKind, - purse.displayInfo.decimalPlaces, - ); - setParsedAmount(val); - setAmountValid(val > 0 && val <= purse.currentAmount.value); - } catch { - setAmountValid(false); - } - }, [amount]); - - const [destination, setDestination] = useState(''); - const [type, setType] = useState(transferTypes.WITHIN_WALLET); - - const handleTypeChange = e => { - setType(e.target.value); - setDestination(''); - }; - - const handleDestinationChange = e => { - setDestination(e.target.value); - }; - - const close = _ => { - setAmount(''); - setDestination(''); - setType(transferTypes.WITHIN_WALLET); - handleClose(); - }; - - const send = async _ => { - const to = - type === transferTypes.WITHIN_WALLET - ? purses.find(({ id }) => id === destination) - : contacts.find(({ id }) => id === destination); - - setPendingTransfers({ purseId: purse.id, isPending: true }); - close(); - try { - await E(purse.actions).send(to.actions, parsedAmount); - showSnackbar('Transfer completed.'); - } catch (e) { - showSnackbar('Transfer failed.'); - } finally { - setPendingTransfers({ purseId: purse.id, isPending: false }); - } - }; - - const purseItems = purses - ?.filter(({ brand }) => brand === purse?.brand) - ?.map(p => ({ id: p.id, text: p.text })); - const contactItems = contacts?.map(c => ({ - id: c.id, - text: c.text, - })); - - const purseSelect = purseItems && ( - - Purse - - - ); - - const contactSelect = contactItems && ( - - Contact - - - ); - - const content = purse && ( - <> - Transfer from {purse.pursePetname} - - -
    - - {purse.brandPetname} - - ), - }} - /> -
    - - - {/* TODO by default hide "within wallet" until https://github.com/Agoric/agoric-sdk/issues/6126 */} - } - label="Transfer within wallet" - /> - {purseSelect} - } - label="Irrevocable one-way" - /> - {contactSelect} - - -
    - - - - - - ); - return ( - <> - - {content} - - - - ); -}; - -export default withApplicationContext(TransferInternal, context => ({ - purses: context.purses, - contacts: context.contacts, - setPendingTransfers: context.setPendingTransfers, -})); diff --git a/packages/wallet/ui/src/components/tests/Dapp.test.jsx b/packages/wallet/ui/src/components/tests/Dapp.test.jsx deleted file mode 100644 index 2619a14da1e..00000000000 --- a/packages/wallet/ui/src/components/tests/Dapp.test.jsx +++ /dev/null @@ -1,79 +0,0 @@ -import { act } from '@testing-library/react'; -import { mount } from 'enzyme'; -import TextField from '@mui/material/TextField'; -import Dapp from '../Dapp'; - -const dapps = [ - { - id: 0, - isEnabled: true, - petname: 'tokenPalace', - origin: 'https://tokenpalace.app', - actions: { setPetname: jest.fn() }, - }, - { - id: 1, - isEnabled: false, - petname: 'nftShop', - origin: 'https://nftshop.app', - }, -]; - -const withApplicationContext = - (Component, _) => - ({ ...props }) => { - return ; - }; - -jest.mock('../../contexts/Application', () => { - return { withApplicationContext }; -}); - -jest.mock('@endo/eventual-send', () => ({ - E: obj => - new Proxy(obj, { - get(target, propKey) { - const method = target[propKey]; - return (...args) => method.apply(this, args); - }, - }), -})); - -test('displays the dapp', () => { - const component = mount(); - - expect(component.text()).toContain(dapps[0].petname); - expect(component.text()).toContain(dapps[0].origin); -}); - -test('displays an error message when trying to use a taken petname', () => { - const component = mount(); - - let textField = component.find(TextField); - expect(textField.props().error).toEqual(false); - expect(textField.props().helperText).toEqual(false); - - act(() => textField.props().onChange({ target: { value: 'nftShop' } })); - component.update(); - - textField = component.find(TextField); - expect(textField.props().error).toEqual(true); - expect(textField.props().helperText).toEqual('Petname already in use'); -}); - -test('updates the petname when pressing enter on the textfield', () => { - const component = mount(); - - let textField = component.find(TextField); - act(() => - textField.props().onChange({ target: { value: 'Token Palace 2' } }), - ); - component.update(); - - textField = component.find(TextField); - act(() => - textField.props().onKeyDown({ key: 'Enter', stopPropagation: jest.fn() }), - ); - - expect(dapps[0].actions.setPetname).toHaveBeenCalledWith('Token Palace 2'); -}); diff --git a/packages/wallet/ui/src/components/tests/DappConnection.test.jsx b/packages/wallet/ui/src/components/tests/DappConnection.test.jsx deleted file mode 100644 index e5d2bdef170..00000000000 --- a/packages/wallet/ui/src/components/tests/DappConnection.test.jsx +++ /dev/null @@ -1,45 +0,0 @@ -import { mount } from 'enzyme'; -import Chip from '@mui/material/Chip'; -import Dapp from '../Dapp'; -import DappConnection from '../DappConnection'; - -jest.mock('../Dapp', () => () => 'Dapp'); -jest.mock('@endo/eventual-send', () => ({ - E: obj => - new Proxy(obj, { - get(target, propKey) { - const method = target[propKey]; - return (...args) => method.apply(this, args); - }, - }), -})); - -const dapp = { - id: 0, - isEnabled: false, - actions: { enable: jest.fn(), delete: jest.fn() }, -}; - -test('displays the dapp', () => { - const component = mount(); - - expect(component.find(Dapp)).toHaveLength(1); -}); - -test('enables the dapp when accept is clicked', () => { - const component = mount(); - - const acceptChipButton = component.find(Chip).at(0); - acceptChipButton.props().onClick(); - - expect(dapp.actions.enable).toHaveBeenCalled(); -}); - -test('deletes the dapp when reject is clicked', () => { - const component = mount(); - - const rejectChipButton = component.find(Chip).at(1); - rejectChipButton.props().onClick(); - - expect(dapp.actions.delete).toHaveBeenCalled(); -}); diff --git a/packages/wallet/ui/src/components/tests/ImportContact.test.jsx b/packages/wallet/ui/src/components/tests/ImportContact.test.jsx deleted file mode 100644 index 564714d0597..00000000000 --- a/packages/wallet/ui/src/components/tests/ImportContact.test.jsx +++ /dev/null @@ -1,131 +0,0 @@ -import { mount } from 'enzyme'; -import { act } from '@testing-library/react'; -import TextField from '@mui/material/TextField'; -import Button from '@mui/material/Button'; -import Dialog from '@mui/material/Dialog'; -import { createTheme, ThemeProvider } from '@mui/material'; -import ImportContact from '../ImportContact'; - -const contacts = [ - { - id: 0, - depositBoardId: '123', - contactPetname: 'Self', - }, - { - id: 1, - depositBoardId: '456', - contactPetname: 'Alice', - }, -]; - -const appTheme = createTheme({ - palette: { - cancel: { - main: '#595959', - }, - }, -}); - -const withApplicationContext = - (Component, _) => - ({ ...props }) => { - return ( - - - - ); - }; - -jest.mock('../../contexts/Application', () => { - return { withApplicationContext }; -}); - -test('shows and hides the dialog correctly', () => { - let component = mount(); - - expect(component.find(Dialog).props().open).toBe(false); - - const handleClose = jest.fn(); - component = mount(); - expect(component.find(Dialog).props().open).toBe(true); - act(() => component.find(Button).at(0).props().onClick()); - - expect(handleClose).toHaveBeenCalled(); -}); - -test('shows an error when using an existing board id', () => { - const component = mount(); - let textField = component.find(TextField).at(1); - - act(() => textField.props().onChange({ target: { value: '123' } })); - component.update(); - - textField = component.find(TextField).at(1); - const importButton = component.find(Button).get(1); - expect(importButton.props.disabled).toEqual(true); - expect(textField.props().error).toEqual(true); - expect(textField.props().helperText).toEqual('Board ID already imported'); -}); - -test('shows an error when using an existing petname', () => { - const component = mount(); - let textField = component.find(TextField).at(0); - - act(() => textField.props().onChange({ target: { value: 'Alice' } })); - component.update(); - - textField = component.find(TextField).at(0); - const importButton = component.find(Button).get(1); - expect(importButton.props.disabled).toEqual(true); - expect(textField.props().error).toEqual(true); - expect(textField.props().helperText).toEqual('Petname already exists'); -}); - -test('triggers an import when import is clicked', () => { - const handleImport = jest.fn(); - const handleClose = jest.fn(); - - const component = mount( - , - ); - let textFields = component.find(TextField); - let importButton = component.find(Button).get(1); - - expect(importButton.props.disabled).toEqual(true); - expect(textFields.at(0).props().error).toEqual(false); - expect(textFields.at(0).props().helperText).toEqual(''); - expect(textFields.at(1).props().error).toEqual(false); - expect(textFields.at(1).props().helperText).toEqual(''); - - act(() => - textFields - .at(0) - .props() - .onChange({ target: { value: 'Bob' } }), - ); - act(() => - textFields - .at(1) - .props() - .onChange({ target: { value: '789' } }), - ); - component.update(); - - importButton = component.find(Button).get(1); - expect(importButton.props.disabled).toEqual(false); - textFields = component.find(TextField); - expect(textFields.at(0).props().error).toEqual(false); - expect(textFields.at(0).props().helperText).toEqual(''); - expect(textFields.at(1).props().error).toEqual(false); - expect(textFields.at(1).props().helperText).toEqual(''); - - act(() => importButton.props.onClick()); - - expect(handleImport).toHaveBeenCalledWith('Bob', '789'); - expect(handleClose).toHaveBeenCalled(); -}); diff --git a/packages/wallet/ui/src/components/tests/ImportIssuer.test.jsx b/packages/wallet/ui/src/components/tests/ImportIssuer.test.jsx deleted file mode 100644 index 42bc0b9aa37..00000000000 --- a/packages/wallet/ui/src/components/tests/ImportIssuer.test.jsx +++ /dev/null @@ -1,131 +0,0 @@ -import { mount } from 'enzyme'; -import { act } from '@testing-library/react'; -import TextField from '@mui/material/TextField'; -import Button from '@mui/material/Button'; -import Dialog from '@mui/material/Dialog'; -import { createTheme, ThemeProvider } from '@mui/material'; -import ImportIssuer from '../ImportIssuer'; - -const issuers = [ - { - id: 0, - issuerBoardId: '123', - issuerPetname: 'zoe invite', - }, - { - id: 1, - issuerBoardId: '456', - issuerPetname: 'RUN', - }, -]; - -const appTheme = createTheme({ - palette: { - cancel: { - main: '#595959', - }, - }, -}); - -const withApplicationContext = - (Component, _) => - ({ ...props }) => { - return ( - - - - ); - }; - -jest.mock('../../contexts/Application', () => { - return { withApplicationContext }; -}); - -test('shows and hides the dialog correctly', () => { - let component = mount(); - - expect(component.find(Dialog).props().open).toBe(false); - - const handleClose = jest.fn(); - component = mount(); - expect(component.find(Dialog).props().open).toBe(true); - act(() => component.find(Button).at(0).props().onClick()); - - expect(handleClose).toHaveBeenCalled(); -}); - -test('shows an error when using an existing board id', () => { - const component = mount(); - let textField = component.find(TextField).at(1); - - act(() => textField.props().onChange({ target: { value: '123' } })); - component.update(); - - textField = component.find(TextField).at(1); - const importButton = component.find(Button).get(1); - expect(importButton.props.disabled).toEqual(true); - expect(textField.props().error).toEqual(true); - expect(textField.props().helperText).toEqual('Board ID already imported'); -}); - -test('shows an error when using an existing petname', () => { - const component = mount(); - let textField = component.find(TextField).at(0); - - act(() => textField.props().onChange({ target: { value: 'zoe invite' } })); - component.update(); - - textField = component.find(TextField).at(0); - const importButton = component.find(Button).get(1); - expect(importButton.props.disabled).toEqual(true); - expect(textField.props().error).toEqual(true); - expect(textField.props().helperText).toEqual('Petname already exists'); -}); - -test('triggers an import when import is clicked', () => { - const handleImport = jest.fn(); - const handleClose = jest.fn(); - - const component = mount( - , - ); - let textFields = component.find(TextField); - let importButton = component.find(Button).get(1); - - expect(importButton.props.disabled).toEqual(true); - expect(textFields.at(0).props().error).toEqual(false); - expect(textFields.at(0).props().helperText).toEqual(''); - expect(textFields.at(1).props().error).toEqual(false); - expect(textFields.at(1).props().helperText).toEqual(''); - - act(() => - textFields - .at(0) - .props() - .onChange({ target: { value: 'Lucky Coins' } }), - ); - act(() => - textFields - .at(1) - .props() - .onChange({ target: { value: '789' } }), - ); - component.update(); - - importButton = component.find(Button).get(1); - expect(importButton.props.disabled).toEqual(false); - textFields = component.find(TextField); - expect(textFields.at(0).props().error).toEqual(false); - expect(textFields.at(0).props().helperText).toEqual(''); - expect(textFields.at(1).props().error).toEqual(false); - expect(textFields.at(1).props().helperText).toEqual(''); - - act(() => importButton.props.onClick()); - - expect(handleImport).toHaveBeenCalledWith('Lucky Coins', '789'); - expect(handleClose).toHaveBeenCalled(); -}); diff --git a/packages/wallet/ui/src/components/tests/MakePurse.test.jsx b/packages/wallet/ui/src/components/tests/MakePurse.test.jsx deleted file mode 100644 index 5a934207440..00000000000 --- a/packages/wallet/ui/src/components/tests/MakePurse.test.jsx +++ /dev/null @@ -1,174 +0,0 @@ -import { mount } from 'enzyme'; -import Button from '@mui/material/Button'; -import { act } from '@testing-library/react'; -import TextField from '@mui/material/TextField'; -import Snackbar from '@mui/material/Snackbar'; -import { createTheme, ThemeProvider } from '@mui/material'; -import MakePurse from '../MakePurse'; - -jest.mock('@endo/eventual-send', () => ({ - E: obj => - new Proxy(obj, { - get(target, propKey) { - const method = target[propKey]; - return (...args) => method.apply(this, args); - }, - }), -})); - -const appTheme = createTheme({ - palette: { - cancel: { - main: '#595959', - }, - }, -}); - -const purses = [ - { - id: 0, - brandPetname: 'Moola', - pursePetname: 'YOLO Stack', - currentAmount: { value: 62000000n }, - displayInfo: { - assetKind: 'nat', - decimalPlaces: 6, - }, - actions: { - send: jest.fn(), - }, - }, -]; - -const issuers = [ - { - id: 0, - issuerBoardId: '123', - issuerPetname: 'zoe invite', - }, - { - id: 1, - issuerBoardId: '456', - issuerPetname: 'Moola', - }, -]; - -const setPendingPurseCreations = jest.fn(); -const schemaActions = { createPurse: jest.fn() }; - -const withApplicationContext = - (Component, _) => - ({ ...props }) => { - return ( - - - - ); - }; - -jest.mock('../../contexts/Application', () => { - return { withApplicationContext }; -}); - -test('renders the issuer petname', () => { - const component = mount(); - - expect(component.text()).toContain('Create New Purse for Moola'); -}); - -test('disables the send button with no input', () => { - const component = mount(); - - const sendButton = component.find(Button).get(1); - expect(sendButton.props.disabled).toEqual(true); -}); - -test('calls handleClose on cancel', () => { - const handleClose = jest.fn(); - const component = mount(); - - const closeButton = component.find(Button).get(0); - closeButton.props.onClick(); - expect(handleClose).toHaveBeenCalled(); -}); - -test('disallows existing petnames', () => { - const component = mount(); - - let textField = component.find(TextField); - - act(() => textField.props().onChange({ target: { value: 'YOLO Stack' } })); - component.update(); - - textField = component.find(TextField); - const sendButton = component.find(Button).get(1); - expect(sendButton.props.disabled).toEqual(true); - expect(textField.props().error).toEqual(true); - expect(textField.props().helperText).toEqual('Petname already exists'); -}); - -test('enables create button on valid input', () => { - const component = mount(); - - let textField = component.find(TextField); - - act(() => textField.props().onChange({ target: { value: 'College fund' } })); - component.update(); - - textField = component.find(TextField); - const createButton = component.find(Button).get(1); - expect(createButton.props.disabled).toEqual(false); - expect(textField.props().error).toEqual(false); - expect(textField.props().helperText).toEqual(''); -}); - -test('creates the purse', async () => { - const handleClose = jest.fn(); - const component = mount(); - - const textField = component.find(TextField); - act(() => textField.props().onChange({ target: { value: 'Savings' } })); - component.update(); - - const createButton = component.find(Button).get(1); - await act(async () => createButton.props.onClick()); - component.update(); - - expect(schemaActions.createPurse).toHaveBeenCalledWith(issuers[1], 'Savings'); - expect(setPendingPurseCreations).toHaveBeenCalledWith({ - isPending: true, - issuerId: 1, - }); - expect(setPendingPurseCreations).toHaveBeenCalledWith({ - isPending: false, - issuerId: 1, - }); - expect(handleClose).toHaveBeenCalled(); - const snackbar = component.find(Snackbar); - expect(snackbar.props().open).toEqual(true); - expect(snackbar.props().message).toEqual('Successfully created purse.'); -}); - -test('shows an error when purse creation fails', async () => { - schemaActions.createPurse.mockRejectedValue(new Error('Cannot create purse')); - - const component = mount(); - - const textField = component.find(TextField); - act(() => textField.props().onChange({ target: { value: 'Savings' } })); - component.update(); - - const createButton = component.find(Button).get(1); - await act(async () => createButton.props.onClick()); - component.update(); - - const snackbar = component.find(Snackbar); - expect(snackbar.props().open).toEqual(true); - expect(snackbar.props().message).toEqual('Failed to create purse.'); -}); diff --git a/packages/wallet/ui/src/components/tests/NavDrawer.test.jsx b/packages/wallet/ui/src/components/tests/NavDrawer.test.jsx deleted file mode 100644 index 8c3eabeb044..00000000000 --- a/packages/wallet/ui/src/components/tests/NavDrawer.test.jsx +++ /dev/null @@ -1,49 +0,0 @@ -import { act } from '@testing-library/react'; -import { mount } from 'enzyme'; -import Drawer from '@mui/material/Drawer'; -import IconButton from '@mui/material/IconButton'; -import NavDrawer from '../NavDrawer'; - -jest.mock('../NavMenu', () => () => 'NavMenu'); - -test('shows the drawer when the button is clicked', () => { - Object.defineProperty(window, 'matchMedia', { - writable: true, - value: jest.fn().mockImplementation(query => ({ - matches: true, - media: query, - onchange: null, - addListener: jest.fn(), // Deprecated - removeListener: jest.fn(), // Deprecated - addEventListener: jest.fn(), - removeEventListener: jest.fn(), - dispatchEvent: jest.fn(), - })), - }); - - const component = mount(); - act(() => component.find(IconButton).props().onClick()); - component.update(); - - expect(component.find(Drawer).props().open).toEqual(true); -}); - -test('hides the button on large viewports', () => { - Object.defineProperty(window, 'matchMedia', { - writable: true, - value: jest.fn().mockImplementation(query => ({ - matches: false, - media: query, - onchange: null, - addListener: jest.fn(), // Deprecated - removeListener: jest.fn(), // Deprecated - addEventListener: jest.fn(), - removeEventListener: jest.fn(), - dispatchEvent: jest.fn(), - })), - }); - - const component = mount(); - - expect(component.find(IconButton).length).toEqual(0); -}); diff --git a/packages/wallet/ui/src/components/tests/Offer.test.jsx b/packages/wallet/ui/src/components/tests/Offer.test.jsx deleted file mode 100644 index d283856ef17..00000000000 --- a/packages/wallet/ui/src/components/tests/Offer.test.jsx +++ /dev/null @@ -1,341 +0,0 @@ -/* eslint-disable import/no-extraneous-dependencies */ -import { act } from '@testing-library/react'; -import { stringifyPurseValue } from '@agoric/ui-components'; -import { mount } from 'enzyme'; -import Chip from '@mui/material/Chip'; -import Offer from '../Offer'; -import Request from '../Request'; -import { formatDateNow } from '../../util/Date'; - -jest.mock('@endo/eventual-send', () => ({ - E: obj => - new Proxy(obj, { - get(target, propKey) { - const method = target[propKey]; - return (...args) => Promise.resolve(method.apply(this, args)); - }, - }), -})); - -jest.mock('@agoric/ui-components', () => ({ - stringifyPurseValue: ({ value, displayInfo }) => - `${value} ${displayInfo?.assetKind} ${displayInfo?.decimalPlaces}`, -})); - -jest.mock( - '../PurseValue', - () => - ({ value, displayInfo, brandPetname }) => - `${value} ${displayInfo?.assetKind} ${displayInfo?.decimalPlaces} ${brandPetname}`, -); - -jest.mock('../../util/Date', () => ({ formatDateNow: stamp => String(stamp) })); - -const pendingOffers = new Set(); -const setPendingOffers = jest.fn(); -const declinedOffers = new Set(); -const setDeclinedOffers = jest.fn(); -const setClosedOffers = jest.fn(); -const purses = []; - -const withApplicationContext = - (Component, _) => - ({ ...props }) => { - return ( - - ); - }; - -jest.mock('../../contexts/Application', () => { - return { withApplicationContext }; -}); - -const offer = { - status: 'proposed', - id: '123', - offerId: 'https://tokenpalace.app#555', - instancePetname: ['TokenPalace', 'Installation'], - instanceHandleBoardId: '123', - requestContext: { - dappOrigin: 'https://tokenpalace.app', - origin: 'unknown origin', - }, - meta: { - creationStamp: 1636614038901, - }, - proposalForDisplay: { - arguments: [], - give: { - Collateral: { - amount: { - brand: { kind: 'brand', petname: 'PAL' }, - displayInfo: { assetKind: 'nat', decimalPlaces: 6 }, - value: 1000000n, - }, - pursePetname: 'Palace Token', - }, - }, - want: { - RUN: { - amount: { - brand: { kind: 'brand', petname: 'RUN' }, - displayInfo: { assetKind: 'nat', decimalPlaces: 6 }, - value: 18544198n, - }, - pursePetname: 'Zoe fees', - }, - }, - }, - invitationDetails: { - fee: { - value: 5000000n, - brand: { kind: 'brand', petname: 'RUN' }, - displayInfo: { assetKind: 'nat', decimalPlaces: 6 }, - }, - feePursePetname: 'Zoe fees', - expiry: 1723014088n, - }, -}; - -test('renders the gives', () => { - const component = mount(); - - const give = component.find('.OfferEntry').at(0); - - expect(give.text()).toContain('Give Collateral'); - expect(give.text()).toContain( - stringifyPurseValue({ - value: offer.proposalForDisplay.give.Collateral.amount.value, - displayInfo: offer.proposalForDisplay.give.Collateral.amount.displayInfo, - }), - ); - expect(give.text()).toContain('from Palace Token'); -}); - -test('renders the wants', () => { - const component = mount(); - - const want = component.find('.OfferEntry').at(1); - - expect(want.text()).toContain('Want RUN'); - expect(want.text()).toContain( - stringifyPurseValue({ - value: offer.proposalForDisplay.want.RUN.amount.value, - displayInfo: offer.proposalForDisplay.want.RUN.amount.displayInfo, - }), - ); - expect(want.text()).toContain('into Zoe fees'); -}); - -test('renders the fee', () => { - const component = mount(); - - const fee = component.find('.OfferEntry').at(2); - - expect(fee.text()).toContain('Pay Fee'); - expect(fee.text()).toContain( - stringifyPurseValue({ - value: offer.invitationDetails.fee.value, - displayInfo: offer.invitationDetails.fee.displayInfo, - }), - ); - expect(fee.text()).toContain('from Zoe fees'); -}); - -test('renders the expiry', () => { - const component = mount(); - - const expiry = component.find('.OfferEntry').at(3); - - expect(expiry.text()).toContain('Expiry'); - expect(expiry.text()).toContain( - formatDateNow(offer.invitationDetails.expiry), - ); -}); - -test('renders the arguments', () => { - const component = mount(); - - const args = component.find('.OfferEntry').at(4); - - expect(args.text()).toContain('Arguments'); - expect(args.text()).toContain( - JSON.stringify(offer.proposalForDisplay.arguments, null, 2), - ); -}); - -test('renders the timestamp', () => { - const component = mount(); - - expect(component.find('.Date').text()).toContain( - formatDateNow(offer.meta.creationStamp), - ); -}); - -test('renders the controls', () => { - const component = mount(); - - const controls = component.find('.Controls'); - - expect(controls.find(Chip).at(0).text()).toContain('Approve'); - expect(controls.find(Chip).at(1).text()).toContain('Decline'); -}); - -test.skip('renders the exit button while pending', () => { - const pendingOffer = { ...offer }; - pendingOffer.status = 'pending'; - - const component = mount(); - - expect(component.find(Chip).at(0).text()).toContain('Pending'); - expect(component.find('.Controls').find(Chip).text()).toContain('Exit'); -}); - -test('renders the pending state eagerly', () => { - const component = mount( - , - ); - - expect(component.find(Chip).at(0).text()).toContain('Pending'); -}); - -test('renders the declined state eagerly', () => { - const component = mount( - , - ); - - expect(component.find(Chip).at(0).text()).toContain('Declined'); - expect(component.find('.Controls').find(Chip)).toHaveLength(0); -}); - -test('renders the accepted state', () => { - const acceptedOffer = { ...offer }; - acceptedOffer.status = 'accept'; - - const component = mount(); - - expect(component.find(Chip).at(0).text()).toContain('Accepted'); - expect(component.find('.Controls').find(Chip)).toHaveLength(0); -}); - -test('renders the declined state', () => { - const declinedOffer = { ...offer }; - declinedOffer.status = 'decline'; - - const component = mount(); - - expect(component.find(Chip).at(0).text()).toContain('Declined'); - expect(component.find('.Controls').find(Chip)).toHaveLength(0); -}); - -test('renders the request as completed when appropriate', () => { - let component = mount(); - expect(component.find(Request).props().completed).toEqual(false); - - const declinedOffer = { ...offer }; - declinedOffer.status = 'decline'; - component = mount(); - expect(component.find(Request).props().completed).toEqual(true); - - const acceptedOffer = { ...offer }; - acceptedOffer.status = 'accept'; - component = mount(); - expect(component.find(Request).props().completed).toEqual(true); - - const completedOffer = { ...offer }; - completedOffer.status = 'complete'; - component = mount(); - expect(component.find(Request).props().completed).toEqual(true); - - const pendingOffer = { ...offer }; - pendingOffer.status = 'pending'; - component = mount(); - expect(component.find(Request).props().completed).toEqual(false); - - const rejectedOffer = { ...offer }; - rejectedOffer.status = 'rejected'; - component = mount(); - expect(component.find(Request).props().completed).toEqual(true); - - const cancelledOffer = { ...offer }; - cancelledOffer.status = 'cancel'; - component = mount(); - expect(component.find(Request).props().completed).toEqual(true); -}); - -test('closes the offer', () => { - const component = mount(); - - act(() => component.find(Request).props().close()); - - expect(setClosedOffers).toHaveBeenCalledWith({ - offerId: offer.id, - isClosed: true, - }); - expect(setPendingOffers).toHaveBeenCalledWith({ - offerId: offer.id, - isPending: false, - }); - expect(setDeclinedOffers).toHaveBeenCalledWith({ - offerId: offer.id, - isDeclined: false, - }); -}); - -test('accepts the offer', async () => { - const accept = jest.fn(); - offer.actions = { - accept: async () => accept(), - }; - const component = mount(); - - await act(async () => component.find(Chip).at(1).props().onClick()); - - expect(setPendingOffers).toHaveBeenCalledWith({ - offerId: offer.id, - isPending: true, - }); - expect(accept).toHaveBeenCalledWith(); -}); - -test('declines the offer', () => { - const decline = jest.fn(); - offer.actions = { - decline: async () => decline(), - }; - const component = mount(); - - act(() => component.find(Chip).at(2).props().onClick()); - - expect(setDeclinedOffers).toHaveBeenCalledWith({ - offerId: offer.id, - isDeclined: true, - }); - expect(decline).toHaveBeenCalledWith(); -}); - -test.skip('cancels the offer', () => { - const pendingOffer = { ...offer }; - pendingOffer.status = 'pending'; - const component = mount(); - - act(() => component.find(Chip).at(1).props().onClick()); - - expect(offer.actions.cancel).toHaveBeenCalledWith(); -}); - -test('renders the dapp origin', () => { - const component = mount(); - - expect(component.find('.OfferOrigin').text()).toContain( - 'TokenPalace.Installation via https://tokenpalace.app', - ); -}); diff --git a/packages/wallet/ui/src/components/tests/Purses.test.jsx b/packages/wallet/ui/src/components/tests/Purses.test.jsx deleted file mode 100644 index 7e3249c99e1..00000000000 --- a/packages/wallet/ui/src/components/tests/Purses.test.jsx +++ /dev/null @@ -1,130 +0,0 @@ -import { mount } from 'enzyme'; -import { act } from '@testing-library/react'; -import CircularProgress from '@mui/material/CircularProgress'; -import Button from '@mui/material/Button'; -import { createTheme, ThemeProvider } from '@mui/material'; -import Purses, { PursesWithoutContext } from '../Purses'; -import PurseAmount from '../PurseAmount'; -import Transfer from '../Transfer'; -import Loading from '../Loading'; - -jest.mock('../PurseAmount', () => () => 'PurseAmount'); - -jest.mock('@endo/eventual-send', () => ({ - E: obj => - new Proxy(obj, { - get(target, propKey) { - const method = target[propKey]; - return (...args) => method.apply(this, args); - }, - }), -})); - -jest.mock('@agoric/ui-components', () => ({ - parseAsValue: str => new BigInt(str), -})); - -const appTheme = createTheme({ - palette: { - cancel: { - main: '#595959', - }, - }, -}); - -const purses = [ - { - id: 0, - brandPetname: 'Moola', - pursePetname: 'Test currency', - currentAmount: { value: 62000000n }, - displayInfo: { - assetKind: 'nat', - decimalPlaces: 6, - }, - }, - { - id: 1, - brandPetname: 'TestNFT', - pursePetname: 'Non-fungible testing tokens', - currentAmount: { value: ['Test token 1', 'Test token 2'] }, - displayInfo: { - assetKind: 'set', - }, - }, -]; - -const pendingTransfers = new Set([0]); - -const withApplicationContext = - (Component, _) => - ({ ...props }) => { - // Test the preview features - props.previewEnabled = true; - return ( - - ); - }; - -jest.mock('../../contexts/Application', () => { - return { - withApplicationContext, - ConnectionStatus: { - Connected: 'connected', - Connecting: 'connecting', - Disconnected: 'disconnected', - Error: 'error', - }, - }; -}); - -test('renders the purse amounts', () => { - const component = mount( - - - , - ); - - expect(component.find(PurseAmount)).toHaveLength(2); -}); - -test('renders a loading indicator over pending transfers', () => { - const component = mount( - - - , - ); - - expect(component.find(CircularProgress)).toHaveLength(1); - expect(component.find(Button)).toHaveLength(1); -}); - -test('renders a loading indicator when purses is null', () => { - const component = mount( - - - , - ); - - expect(component.find(Loading)).toHaveLength(1); - expect(component.find(Button)).toHaveLength(0); -}); - -test('opens the transfer dialog when the button is clicked', async () => { - const component = mount( - - - , - ); - - const firstSendButton = component.find(Button).get(0); - await act(async () => firstSendButton.props.onClick()); - component.update(); - - const transfer = component.find(Transfer); - expect(transfer.props().purse).toEqual(purses[1]); -}); diff --git a/packages/wallet/ui/src/components/tests/Requests.test.jsx b/packages/wallet/ui/src/components/tests/Requests.test.jsx deleted file mode 100644 index 1333ef7f1f3..00000000000 --- a/packages/wallet/ui/src/components/tests/Requests.test.jsx +++ /dev/null @@ -1,97 +0,0 @@ -import { mount } from 'enzyme'; -import Requests from '../Requests'; -import Payment from '../Payment'; -import Offer from '../Offer'; -import DappConnection from '../DappConnection'; - -jest.mock('@endo/eventual-send', () => ({ - E: obj => - new Proxy(obj, { - get(target, propKey) { - const method = target[propKey]; - return (...args) => Promise.resolve(method.apply(this, args)); - }, - }), -})); -jest.mock('../Payment', () => () => 'Payment'); -jest.mock('../Offer', () => () => 'Offer'); -jest.mock('../DappConnection', () => () => 'DappConnection'); - -const purses = [ - { - id: 0, - brand: 'Moola', - brandPetname: 'Moola', - pursePetname: 'Test currency', - currentAmount: { value: 62000000n }, - depositBoardId: '123', - displayInfo: { - assetKind: 'nat', - decimalPlaces: 6, - }, - actions: { - send: jest.fn(), - }, - }, -]; - -const offers = [ - { id: 3, status: 'accept' }, - { id: 6, status: 'decline' }, - { id: 7 }, - { id: 8 }, - { id: 9, status: 'accept' }, -]; - -const dapps = [ - { isEnabled: false, id: 2 }, - { isEnabled: true, id: 5 }, -]; - -const payments = [ - { brand: 'Moola', id: 4 }, - { brand: 'Brouzouf', id: 1 }, -]; - -const pendingOffers = new Set([3]); -const declinedOffers = new Set([6]); -const closedOffers = new Set([7]); - -const withApplicationContext = - (Component, _) => - ({ ...props }) => { - return ( - - ); - }; - -jest.mock('../../contexts/Application', () => { - return { withApplicationContext }; -}); - -test('renders non-autodeposit payments', () => { - const component = mount(); - - expect(component.find(Payment).length).toEqual(1); -}); - -test('renders fresh offers', () => { - const component = mount(); - - expect(component.find(Offer).length).toEqual(3); -}); - -test('renders unapproved dapps', () => { - const component = mount(); - - expect(component.find(DappConnection).length).toEqual(1); -}); diff --git a/packages/wallet/ui/src/components/tests/Transfer.test.jsx b/packages/wallet/ui/src/components/tests/Transfer.test.jsx deleted file mode 100644 index 58942e3c3dd..00000000000 --- a/packages/wallet/ui/src/components/tests/Transfer.test.jsx +++ /dev/null @@ -1,227 +0,0 @@ -import { mount } from 'enzyme'; -import Button from '@mui/material/Button'; -import { act } from '@testing-library/react'; -import Select from '@mui/material/Select'; -import TextField from '@mui/material/TextField'; -import Snackbar from '@mui/material/Snackbar'; -import { createTheme, ThemeProvider } from '@mui/material'; -import Transfer from '../Transfer'; - -jest.mock('../PurseAmount', () => () => 'PurseAmount'); - -jest.mock('@endo/eventual-send', () => ({ - E: obj => - new Proxy(obj, { - get(target, propKey) { - const method = target[propKey]; - return (...args) => method.apply(this, args); - }, - }), -})); - -jest.mock('@agoric/ui-components', () => ({ - parseAsValue: str => BigInt(str), -})); - -const appTheme = createTheme({ - palette: { - cancel: { - main: '#595959', - }, - }, -}); - -const purses = [ - { - id: 0, - brandPetname: 'Moola', - pursePetname: 'Test currency', - currentAmount: { value: 62000000n }, - displayInfo: { - assetKind: 'nat', - decimalPlaces: 6, - }, - actions: { - send: jest.fn(), - }, - }, - { - id: 1, - brandPetname: 'Moola', - pursePetname: 'Test currency fees', - currentAmount: { value: 62000000n }, - displayInfo: { - assetKind: 'nat', - decimalPlaces: 6, - }, - actions: { - send: jest.fn(), - }, - }, - { - id: 2, - brandPetname: 'TestNFT', - pursePetname: 'Non-fungible testing tokens', - currentAmount: { value: ['Test token 1', 'Test token 2'] }, - displayInfo: { - assetKind: 'set', - }, - }, -]; -const contacts = [ - { - actions: { - send: jest.fn(), - }, - id: 3, - test: 'Self', - }, -]; -const setPendingTransfers = jest.fn(); - -const withApplicationContext = - (Component, _) => - ({ ...props }) => { - return ( - - ); - }; - -jest.mock('../../contexts/Application', () => { - return { withApplicationContext }; -}); - -test('renders the purse name', () => { - const component = mount( - - - , - ); - - expect(component.text()).toContain('Transfer from Test currency'); -}); - -test('disables the send button with no input', () => { - const component = mount( - - - , - ); - - const sendButton = component.find(Button).get(1); - expect(sendButton.props.disabled).toEqual(true); -}); - -test('calls handleClose on cancel', () => { - const handleClose = jest.fn(); - const component = mount( - - - , - ); - - const sendButton = component.find(Button).get(0); - sendButton.props.onClick(); - expect(handleClose).toHaveBeenCalled(); -}); - -test('displays invalid amount on invalid input', () => { - const component = mount( - - - , - ); - let textField = component.find(TextField); - let sendButton = component.find(Button).get(1); - - act(() => textField.props().onChange({ target: { value: 'asdf' } })); - component.update(); - - textField = component.find(TextField); - sendButton = component.find(Button).get(1); - expect(sendButton.props.disabled).toEqual(true); - expect(textField.props().error).toEqual(true); - expect(textField.props().helperText).toEqual('Invalid amount'); -}); - -test('enables send button on valid input', () => { - const component = mount( - - - , - ); - let textField = component.find(TextField); - let sendButton = component.find(Button).get(1); - const destinationSelect = component.find(Select).first(); - - act(() => textField.props().onChange({ target: { value: '1000000' } })); - act(() => destinationSelect.props().onChange({ target: { value: 1 } })); - component.update(); - - textField = component.find(TextField); - sendButton = component.find(Button).get(1); - expect(sendButton.props.disabled).toEqual(false); - expect(textField.props().error).toEqual(false); - expect(textField.props().helperText).toEqual(''); -}); - -test('sends the payment', async () => { - const handleClose = jest.fn(); - const component = mount( - - - , - ); - const textField = component.find(TextField); - const destinationSelect = component.find(Select).first(); - - act(() => textField.props().onChange({ target: { value: '1000000' } })); - act(() => destinationSelect.props().onChange({ target: { value: 1 } })); - component.update(); - const sendButton = component.find(Button).get(1); - await act(async () => sendButton.props.onClick()); - component.update(); - - expect(purses[0].actions.send).toHaveBeenCalledWith( - purses[1].actions, - BigInt(1000000), - ); - expect(setPendingTransfers).toHaveBeenCalledWith({ - isPending: true, - purseId: 0, - }); - expect(setPendingTransfers).toHaveBeenCalledWith({ - isPending: false, - purseId: 0, - }); - expect(handleClose).toHaveBeenCalled(); - const snackbar = component.find(Snackbar); - expect(snackbar.props().open).toEqual(true); - expect(snackbar.props().message).toEqual('Transfer completed.'); -}); - -test('shows an error when the transfer fails', async () => { - purses[0].actions.send.mockRejectedValue(new Error('Cannot send payment')); - const component = mount( - - - , - ); - const textField = component.find(TextField); - const destinationSelect = component.find(Select).first(); - - act(() => textField.props().onChange({ target: { value: '1000000' } })); - act(() => destinationSelect.props().onChange({ target: { value: 1 } })); - const sendButton = component.find(Button).get(1); - await act(async () => sendButton.props.onClick()); - component.update(); - - const snackbar = component.find(Snackbar); - expect(snackbar.props().open).toEqual(true); - expect(snackbar.props().message).toEqual('Transfer failed.'); -}); diff --git a/packages/wallet/ui/src/contexts/Application.jsx b/packages/wallet/ui/src/contexts/Application.jsx deleted file mode 100644 index 49c3fdcb058..00000000000 --- a/packages/wallet/ui/src/contexts/Application.jsx +++ /dev/null @@ -1,22 +0,0 @@ -import { createContext, memo, useContext } from 'react'; - -export const ApplicationContext = createContext(); - -export const ConnectionStatus = { - Connected: 'connected', - Connecting: 'connecting', - Disconnected: 'disconnected', - Error: 'error', -}; - -// Higher-order component wrapper for mapping context to props. This allows -// components to use `memo` and avoid rerendering when unrelated context -// changes. -export const withApplicationContext = (Component, mapContextToProps) => { - const MemoizedComponent = memo(Component); - return ({ ...props }) => { - const context = mapContextToProps(useContext(ApplicationContext)); - - return ; - }; -}; diff --git a/packages/wallet/ui/src/contexts/Provider.jsx b/packages/wallet/ui/src/contexts/Provider.jsx deleted file mode 100644 index af4138c29aa..00000000000 --- a/packages/wallet/ui/src/contexts/Provider.jsx +++ /dev/null @@ -1,377 +0,0 @@ -// @ts-check -/* eslint-disable react/display-name */ -import { observeIterator } from '@agoric/notifier'; -import { E } from '@endo/far'; -import React, { useEffect, useState, useReducer } from 'react'; -import { SigningStargateClient } from '@cosmjs/stargate'; -import { Random } from '@cosmjs/crypto'; -import { ApplicationContext, ConnectionStatus } from './Application'; - -import { - DEFAULT_CONNECTION_CONFIGS, - KnownNetworkConfigUrls, -} from '../util/connections'; -import { maybeLoad } from '../util/storage'; -import { suggestChain } from '../util/SuggestChain'; -import { - makeBackgroundSigner, - makeInteractiveSigner, -} from '../util/keyManagement'; -import { onLoadP } from '../util/onLoad'; - -/** - * @typedef KeplrUtils - * @property {string} address - * @property {{ interactiveSigner: import('../util/keyManagement').InteractiveSigner, backgroundSigner: import('../util/keyManagement').BackgroundSigner}} signers - * @property {string} chainId, - */ - -const useDebugLogging = (state, watch) => { - useEffect(() => console.debug('useDebugLogging', { state }), watch); -}; - -const cmp = (a, b) => { - if (a < b) { - return -1; - } - if (a > b) { - return 1; - } - return 0; -}; - -const kv = (keyObj, val) => { - const key = Object.values(keyObj)[0]; - const text = Array.isArray(key) ? key.join('.') : key; - const id = val.meta?.id; - return { ...val, ...keyObj, id: id ?? text, text, value: val }; -}; - -const inboxReducer = (_, newInbox) => { - console.log('got inbox', newInbox); - return ( - newInbox - ?.map(tx => ({ - ...tx, - offerId: tx.id, - id: tx.meta.id, - })) - .sort((a, b) => a.id - b.id) || null - ); -}; - -const pursesReducer = (_, newPurses) => - newPurses - ?.map(purse => kv({ pursePetname: purse.pursePetname }, purse)) - .sort( - (a, b) => - cmp(a.brandPetname, b.brandPetname) || - cmp(a.pursePetname, b.pursePetname), - ) || null; - -const dappsReducer = ( - _, - /** @type {import('../service/Dapps').DappWithActions[] | null} */ newDapps, -) => - newDapps - ?.map(dapp => ({ ...dapp, id: dapp.origin })) - .sort((a, b) => cmp(a.petname, b.petname)) || null; - -const contactsReducer = (_, newContacts) => - newContacts - ?.map(([contactPetname, contact]) => kv({ contactPetname }, contact)) - .sort((a, b) => cmp(a.contactPetname, b.contactPetname) || a.id - b.id) || - null; - -const issuersReducer = (_, newIssuers) => - newIssuers - ?.map(([issuerPetname, issuer]) => kv({ issuerPetname }, issuer)) - .sort((a, b) => a.id - b.id) || null; - -const paymentsReducer = (_, newPayments) => - newPayments - ?.map(payment => ({ ...payment, id: payment.meta.id })) - .sort((a, b) => a.id - b.id) || null; - -const pendingPurseCreationsReducer = ( - pendingPurseCreations, - { issuerId, isPending }, -) => { - if (isPending) pendingPurseCreations.add(issuerId); - else pendingPurseCreations.delete(issuerId); - - return new Set(pendingPurseCreations); -}; - -const pendingTransfersReducer = (pendingTransfers, { purseId, isPending }) => { - if (isPending) pendingTransfers.add(purseId); - else pendingTransfers.delete(purseId); - - return new Set(pendingTransfers); -}; - -const pendingOffersReducer = (pendingOffers, { offerId, isPending }) => { - if (isPending) pendingOffers.add(offerId); - else pendingOffers.delete(offerId); - - return new Set(pendingOffers); -}; - -const declinedOffersReducer = (declinedOffers, { offerId, isDeclined }) => { - if (isDeclined) declinedOffers.add(offerId); - else declinedOffers.delete(offerId); - - return new Set(declinedOffers); -}; - -const closedOffersReducer = (closedOffers, { offerId, isClosed }) => { - if (isClosed) closedOffers.add(offerId); - else closedOffers.delete(offerId); - - return new Set(closedOffers); -}; - -const Provider = ({ children }) => { - const [inbox, setInbox] = useReducer(inboxReducer, null); - const [purses, setPurses] = useReducer(pursesReducer, null); - const [dapps, setDapps] = useReducer(dappsReducer, null); - const [contacts, setContacts] = useReducer(contactsReducer, null); - const [payments, setPayments] = useReducer(paymentsReducer, null); - const [issuers, setIssuers] = useReducer(issuersReducer, null); - const [issuerSuggestions, setIssuerSuggestions] = useState(null); - const [services, setServices] = useState(null); - const [backend, setBackend] = useState( - /** @type {import('../util/WalletBackendAdapter').BackendSchema?} */ (null), - ); - const [schemaActions, setSchemaActions] = useState(null); - const [backendErrorHandler, setBackendErrorHandler] = useState(null); - const [previewEnabled, setPreviewEnabled] = useState(false); - // expose for development - // @ts-expect-error window keys - window.setPreviewEnabled = setPreviewEnabled; - - const RESTORED_CONNECTION_CONFIGS = [...DEFAULT_CONNECTION_CONFIGS]; - const userConnectionConfigs = maybeLoad('userConnectionConfigs'); - if (userConnectionConfigs) { - RESTORED_CONNECTION_CONFIGS.unshift(...userConnectionConfigs); - } - const restoredConnectionConfig = maybeLoad('connectionConfig') || null; - - const [connectionConfig, setConnectionConfig] = useState( - restoredConnectionConfig || { href: KnownNetworkConfigUrls.main }, - ); - const [allConnectionConfigs, setAllConnectionConfigs] = useState([ - ...RESTORED_CONNECTION_CONFIGS, - ]); - - const [wantConnection, setWantConnection] = useState( - restoredConnectionConfig !== null, - ); - const [connectionStatus, setConnectionStatus] = useState( - wantConnection - ? ConnectionStatus.Connecting - : ConnectionStatus.Disconnected, - ); - const [keplrConnection, setKeplrConnection] = useState(null); - - /** - * NOTE: relies on ambient window.fetch, window.keplr, Random.getBytes - */ - const tryKeplrConnect = async () => { - await onLoadP; - // @ts-expect-error window keys - const { keplr, fetch } = window; - assert(fetch, 'Missing window.fetch'); - assert(keplr, 'Missing window.keplr'); - const { getBytes } = Random; - - const chainInfo = await suggestChain(connectionConfig.href, { - fetch, - keplr, - random: Math.random, - }); - const offlineSigner = keplr.getOfflineSigner(chainInfo.chainId); - - const accounts = await offlineSigner.getAccounts(); - - const [interactiveSigner, backgroundSigner] = await Promise.all([ - makeInteractiveSigner( - chainInfo, - keplr, - SigningStargateClient.connectWithSigner, - ), - makeBackgroundSigner({ - localStorage, - csprng: getBytes, - }), - ]); - setKeplrConnection({ - // @ts-expect-error state typed as null - address: accounts[0]?.address, - signers: { interactiveSigner, backgroundSigner }, - chainId: chainInfo.chainId, - }); - }; - - const backendSetters = new Map([ - ['services', setServices], - ['offers', setInbox], - ['purses', setPurses], - ['contacts', setContacts], - ['payments', setPayments], - ['issuers', setIssuers], - ['dapps', setDapps], - ]); - - // Resubscribe when a new backend is set. - useEffect(() => { - setSchemaActions(null); - for (const setter of backendSetters.values()) { - setter(null); - } - - if (!backend) { - return () => {}; - } - - let cancelIteration = null; - const rethrowIfNotCancelled = e => { - if (e !== cancelIteration) { - throw e; - } - }; - setSchemaActions(E.get(backend).actions); - for (const [prop, setter] of backendSetters.entries()) { - const iterator = E.get(backend)[prop]; - observeIterator(iterator, { - fail: rethrowIfNotCancelled, - updateState: state => { - if (cancelIteration) { - throw cancelIteration; - } - setter(state); - }, - }).catch(rethrowIfNotCancelled); - } - - const issuerSuggestionsNotifier = E.get(backend).issuerSuggestions; - observeIterator(issuerSuggestionsNotifier, { - fail: rethrowIfNotCancelled, - updateState: state => { - if (cancelIteration) { - throw cancelIteration; - } - setIssuerSuggestions(state); - }, - }).catch(rethrowIfNotCancelled); - - return () => { - cancelIteration = Error('cancelled'); - }; - }, [backend]); - - const disconnect = wantReconnect => { - setBackend(null); - setConnectionStatus(ConnectionStatus.Disconnected); - if (typeof wantReconnect === 'boolean') { - setWantConnection(wantReconnect); - } - }; - - const [pendingPurseCreations, setPendingPurseCreations] = useReducer( - pendingPurseCreationsReducer, - new Set(), - ); - const [pendingTransfers, setPendingTransfers] = useReducer( - pendingTransfersReducer, - new Set(), - ); - - // Eager set of pending offer ids. - const [pendingOffers, setPendingOffers] = useReducer( - pendingOffersReducer, - new Set(), - ); - - // Eager set of declined offer ids. - const [declinedOffers, setDeclinedOffers] = useReducer( - declinedOffersReducer, - new Set(), - ); - - // Set of closed offers. Allows eagerly declined offers to be closed while - // still pending. - const [closedOffers, setClosedOffers] = useReducer( - closedOffersReducer, - new Set(), - ); - - const state = { - schemaActions, - setBackend, - services, - setServices, - inbox, - setInbox, - purses, - setPurses, - dapps, - setDapps, - contacts, - setContacts, - payments, - setPayments, - issuers, - setIssuers, - issuerSuggestions, - pendingPurseCreations, - setPendingPurseCreations, - pendingTransfers, - setPendingTransfers, - pendingOffers, - setPendingOffers, - declinedOffers, - setDeclinedOffers, - closedOffers, - setClosedOffers, - setWantConnection, - wantConnection, - connectionConfig, - setConnectionConfig, - allConnectionConfigs, - setAllConnectionConfigs, - disconnect, - connectionStatus, - setConnectionStatus, - backendErrorHandler, - setBackendErrorHandler, - keplrConnection, - tryKeplrConnect, - previewEnabled, - }; - - useDebugLogging(state, [ - schemaActions, - inbox, - purses, - dapps, - contacts, - payments, - issuers, - pendingPurseCreations, - services, - pendingTransfers, - pendingOffers, - declinedOffers, - closedOffers, - previewEnabled, - ]); - - return ( - - {children} - - ); -}; - -export default Provider; diff --git a/packages/wallet/ui/src/index.jsx b/packages/wallet/ui/src/index.jsx deleted file mode 100644 index b127687ec43..00000000000 --- a/packages/wallet/ui/src/index.jsx +++ /dev/null @@ -1,75 +0,0 @@ -// @ts-check -/* eslint-disable @typescript-eslint/prefer-ts-expect-error -- https://github.com/Agoric/agoric-sdk/issues/4620 */ -/// -import '@endo/eventual-send/shim'; - -// Ambient types. Needed only for dev but this does a runtime import. -import '@agoric/zoe/exported.js'; -import '@endo/captp/src/types.js'; - -import React from 'react'; -import ReactDOM from 'react-dom'; -import { BrowserRouter as Router } from 'react-router-dom'; -import { - CssBaseline, - createTheme, - ThemeProvider, - StyledEngineProvider, -} from '@mui/material'; -import App from './App'; -import ApplicationContextProvider from './contexts/Provider'; - -Error.stackTraceLimit = Infinity; - -const appTheme = createTheme({ - palette: { - primary: { - main: '#cb2328', - }, - secondary: { - main: 'hsla(0,0%,39.2%,.2)', - }, - success: { - main: 'rgb(76, 175, 80)', - }, - // @ts-expect-error unknown property - cancel: { - main: '#595959', - }, - warning: { - main: 'rgb(255, 152, 0)', - }, - background: { - default: '#ffffff', - }, - }, - typography: { - fontFamily: ['Roboto', 'Helvetica', 'Arial', 'sans-serif'].join(','), - fontWeightRegular: 400, - h1: { - fontFamily: ['Montserrat', 'Arial', 'sans-serif'].join(','), - fontSize: '32px', - fontWeight: '700', - letterSpacing: '-1.5px', - lineHeight: '48px', - margin: 0, - }, - }, - appBarHeight: '64px', - navMenuWidth: '240px', -}); - -ReactDOM.render( - - {/* @ts-ignore bad type */} - - - - - - - - - , - document.getElementById('root'), -); diff --git a/packages/wallet/ui/src/lockdown.js b/packages/wallet/ui/src/lockdown.js deleted file mode 100644 index 8eed88443e3..00000000000 --- a/packages/wallet/ui/src/lockdown.js +++ /dev/null @@ -1,26 +0,0 @@ -// Allow the React dev environment to extend the console for debugging -// features. -// eslint-disable-next-line no-constant-condition -const consoleTaming = '%NODE_ENV%' === 'development' ? 'unsafe' : 'safe'; -// eslint-disable-next-line no-constant-condition -const errorTaming = '%NODE_ENV%' === 'development' ? 'unsafe' : 'safe'; - -// eslint-disable-next-line no-restricted-properties -const { pow: mathPow } = Math; -// eslint-disable-next-line no-restricted-properties -Math.pow = (base, exp) => - typeof base === 'bigint' && typeof exp === 'bigint' - ? base ** exp - : mathPow(base, exp); - -lockdown({ - errorTaming, - overrideTaming: 'severe', - consoleTaming, -}); - -console.log('lockdown done.'); - -window.addEventListener('unhandledrejection', ev => { - ev.stopImmediatePropagation(); -}); diff --git a/packages/wallet/ui/src/service/Dapps.js b/packages/wallet/ui/src/service/Dapps.js deleted file mode 100644 index 13b6844e76a..00000000000 --- a/packages/wallet/ui/src/service/Dapps.js +++ /dev/null @@ -1,91 +0,0 @@ -// @ts-check -import { makeNotifierKit } from '@agoric/notifier'; -import { - loadDapp as load, - loadDapps as loadAll, - removeDapp as remove, - upsertDapp as upsert, - watchDapps as watch, -} from '../store/Dapps.js'; - -/** @typedef {import("../store/Dapps.js").Dapp} Dapp */ -/** @typedef {import('../store/Dapps.js').SmartWalletKey} SmartWalletKey */ - -/** - * @typedef {{ - * enable: () => void; - * disable: () => void; - * setPetname: (petname: string) => void; - * }} DappActions - */ - -/** @typedef {Dapp & {actions: DappActions}} DappWithActions */ - -export const getDappService = ( - /** @type {SmartWalletKey} */ smartWalletKey, -) => { - /** @type {NotifierRecord} */ - const { notifier, updater } = makeNotifierKit(); - - const broadcastUpdates = ( - /** @type {Map} */ dapps, - ) => updater.updateState([...dapps.values()]); - - const upsertDapp = (/** @type {Dapp} */ dapp) => upsert(smartWalletKey, dapp); - - const deleteDapp = ( - /** @type {string} */ origin, - /** @type { () => void } */ updateDapps, - ) => { - remove({ smartWalletKey, origin }); - updateDapps(); - }; - - const setDappPetname = ( - /** @type {string} */ origin, - /** @type {string} */ petname, - /** @type {{ (): void; (): void; }} */ updateDapps, - ) => { - const dapp = load({ smartWalletKey, origin }); - assert(dapp, `Tried to set petname on undefined dapp ${origin}`); - upsertDapp({ ...dapp, petname }); - updateDapps(); - }; - - const enableDapp = ( - /** @type {string} */ origin, - /** @type { () => void } */ updateDapps, - ) => { - const dapp = load({ smartWalletKey, origin }); - assert(dapp, `Tried to enable undefined dapp ${origin}`); - upsertDapp({ ...dapp, isEnabled: true }); - updateDapps(); - }; - - const updateDapps = () => { - const dapps = new Map(); - const storedDapps = loadAll(smartWalletKey); - storedDapps.forEach((/** @type {{origin: string}} */ d) => { - dapps.set(d.origin, { - ...d, - actions: { - enable: () => enableDapp(d.origin, updateDapps), - setPetname: petname => setDappPetname(d.origin, petname, updateDapps), - delete: () => deleteDapp(d.origin, updateDapps), - }, - }); - }); - broadcastUpdates(dapps); - }; - - watch(smartWalletKey, updateDapps); - updateDapps(); - - return { - notifier, - addDapp: upsertDapp, - setDappPetname, - deleteDapp, - enableDapp, - }; -}; diff --git a/packages/wallet/ui/src/service/Issuers.js b/packages/wallet/ui/src/service/Issuers.js deleted file mode 100644 index 241e919ccdd..00000000000 --- a/packages/wallet/ui/src/service/Issuers.js +++ /dev/null @@ -1,48 +0,0 @@ -import { makeNotifierKit } from '@agoric/notifier'; - -/** - * @param {(data: string) => Promise} signSpendAction - */ -export const getIssuerService = signSpendAction => { - const suggestions = new Map(); - // TODO: Upgrade to `makePublishKit`. - const { notifier, updater } = makeNotifierKit(); - const broadcastUpdates = () => updater.updateState([...suggestions.values()]); - - const deleteSuggestion = boardId => { - assert( - suggestions.has(boardId), - `Tried to delete undefined issuer suggestion ${boardId}`, - ); - suggestions.delete(boardId); - broadcastUpdates(); - }; - - const addSuggestion = (petname, boardId) => { - suggestions.set(boardId, { - boardId, - petname, - actions: { - delete: () => deleteSuggestion(boardId), - accept: async suggestedPetname => { - const action = JSON.stringify({ - type: 'suggestIssuer', - data: { boardId, petname: suggestedPetname }, - }); - try { - await signSpendAction(action); - deleteSuggestion(boardId); - } catch (e) { - console.error('Sign spend action failed', action); - } - }, - }, - }); - broadcastUpdates(); - }; - - return { - notifier, - addSuggestion, - }; -}; diff --git a/packages/wallet/ui/src/service/Offers.js b/packages/wallet/ui/src/service/Offers.js deleted file mode 100644 index e1fdbae15f1..00000000000 --- a/packages/wallet/ui/src/service/Offers.js +++ /dev/null @@ -1,226 +0,0 @@ -// @ts-check - -import { - makeNotifierKit, - makeAsyncIterableFromNotifier, -} from '@agoric/notifier'; -import { E } from '@endo/eventual-send'; - -import { - loadOffers as load, - removeOffer as remove, - addOffer as add, - watchOffers, - OfferUIStatus, -} from '../store/Offers.js'; - -/** @typedef {import('@agoric/smart-wallet/src/types.js').Petname} Petname */ - -/** @typedef {import('@agoric/smart-wallet/src/offers.js').OfferStatus} OfferStatus */ - -/** @typedef {import('../store/Offers').Offer} Offer */ -/** @typedef {import('../store/Dapps').SmartWalletKey} SmartWalletKey */ - -/** - * @param {SmartWalletKey} smartWalletKey - * @param {(data: string) => Promise} signSpendAction - * @param {Notifier} chainOffersNotifier - * @param {Marshaller} boardIdMarshaller - */ -export const getOfferService = ( - smartWalletKey, - signSpendAction, - chainOffersNotifier, - boardIdMarshaller, -) => { - /** @type {Map} */ - const offers = new Map(); - const { notifier, updater } = makeNotifierKit(); - const broadcastUpdates = () => updater.updateState([...offers.values()]); - - const addSpendActionAndInstancePetname = async ( - /** @type {Map} */ pursePetnameToBrand, - /** @type {Offer} */ offer, - ) => { - const { - id, - instanceHandle, - publicInvitationMaker, - proposalTemplate: { give, want }, - } = offer; - - const mapPursePetnamesToBrands = paymentProposals => - Object.fromEntries( - Object.entries(paymentProposals).map( - ([kw, { pursePetname, value }]) => { - const brand = pursePetnameToBrand.get(pursePetname); - if (!brand) { - return []; - } - return [ - kw, - { - brand, - value: BigInt(value), - }, - ]; - }, - ), - ); - - const instance = await E(boardIdMarshaller).unserialize(instanceHandle); - const { - slots: [instanceBoardId], - } = await E(boardIdMarshaller).serialize(instance); - - /** @type {import('@agoric/smart-wallet/src/offers.js').OfferSpec} */ - const offerForAction = { - id, - invitationSpec: { - source: 'contract', - instance, - publicInvitationMaker, - }, - proposal: { - give: mapPursePetnamesToBrands(give), - want: mapPursePetnamesToBrands(want), - }, - }; - - const spendAction = await E(boardIdMarshaller).serialize( - harden({ - method: 'executeOffer', - offer: offerForAction, - }), - ); - - return { - ...offer, - instancePetname: `instance@${instanceBoardId}`, - spendAction: JSON.stringify(spendAction), - }; - }; - - const upsertOffer = (/** @type {Offer} */ offer) => { - offers.set(offer.id, offer); - add(smartWalletKey, offer); - broadcastUpdates(); - }; - - const declineOffer = (/** @type {number} */ id) => { - const offer = offers.get(id); - assert(offer, `Tried to decline undefined offer ${id}`); - upsertOffer({ ...offer, status: OfferUIStatus.declined }); - broadcastUpdates(); - }; - - const acceptOffer = async (/** @type {number} */ id) => { - const offer = offers.get(id); - assert(offer, `Tried to accept undefined offer ${id}`); - assert(offer.spendAction, 'Missing spendAction'); - return signSpendAction(offer.spendAction); - }; - - const cancelOffer = _id => { - console.log('TODO: cancel offer'); - }; - - const watchChainOffers = async () => { - for await (const status of makeAsyncIterableFromNotifier( - chainOffersNotifier, - )) { - console.log('offerStatus', { status, offers }); - const oldOffer = offers.get(status?.id); - if (!oldOffer) { - console.warn('Update for unknown offer, doing nothing.'); - } else { - if (status.error !== undefined) { - offers.set(status.id, { - ...oldOffer, - id: status.id, - status: OfferUIStatus.rejected, - // @ts-expect-error xxx types debt - error: `${status.error}`, - }); - remove(smartWalletKey, status.id); - } else if (status.numWantsSatisfied !== undefined) { - offers.set(status.id, { - ...oldOffer, - id: status.id, - status: OfferUIStatus.accepted, - }); - remove(smartWalletKey, status.id); - } else if (status.numWantsSatisfied === undefined) { - offers.set(status.id, { - ...oldOffer, - id: status.id, - status: OfferUIStatus.pending, - }); - upsertOffer({ ...oldOffer, status: OfferUIStatus.pending }); - } - broadcastUpdates(); - } - } - }; - - /** - * Call once to load the offers from storage, watch storage and chain for new - * offers. - * - * @param {Map} pursePetnameToBrand - */ - const start = pursePetnameToBrand => { - const storedOffers = load(smartWalletKey); - const storedOffersP = Promise.all( - storedOffers.map(async (/** @type {Offer} */ o) => { - if (o.status === OfferUIStatus.declined) { - remove(smartWalletKey, o.id); - } - const ao = await addSpendActionAndInstancePetname( - pursePetnameToBrand, - o, - ); - offers.set(ao.id, { - ...ao, - }); - }), - ); - storedOffersP.then(() => broadcastUpdates()); - - watchChainOffers(); - - watchOffers(smartWalletKey, newOffers => { - const newOffersP = Promise.all( - newOffers.map(o => { - return addSpendActionAndInstancePetname(pursePetnameToBrand, o).then( - ao => { - const oldOffer = offers.get(ao.id); - const status = - oldOffer && - [OfferUIStatus.rejected, OfferUIStatus.accepted].includes( - oldOffer.status, - ) - ? oldOffer.status - : ao.status; - offers.set(ao.id, { - ...ao, - status, - }); - }, - ); - }), - ); - newOffersP.then(() => broadcastUpdates()); - }); - }; - - return { - start, - offers, - notifier, - addOffer: upsertOffer, - acceptOffer, - cancelOffer, - declineOffer, - }; -}; diff --git a/packages/wallet/ui/src/service/Terms.js b/packages/wallet/ui/src/service/Terms.js deleted file mode 100644 index 18a3af1224a..00000000000 --- a/packages/wallet/ui/src/service/Terms.js +++ /dev/null @@ -1,10 +0,0 @@ -import { - agreeToTerms, - getTermsIndexAccepted, - LATEST_TERMS_INDEX, -} from '../store/Terms.js'; - -export const checkLatestAgreement = () => - getTermsIndexAccepted() === LATEST_TERMS_INDEX; - -export const acceptTerms = () => agreeToTerms(LATEST_TERMS_INDEX); diff --git a/packages/wallet/ui/src/setupTests.js b/packages/wallet/ui/src/setupTests.js deleted file mode 100644 index 0ac3715cce3..00000000000 --- a/packages/wallet/ui/src/setupTests.js +++ /dev/null @@ -1,11 +0,0 @@ -// jest-dom adds custom jest matchers for asserting on DOM nodes. -// allows you to do things like: -// expect(element).toHaveTextContent(/react/i) -// learn more: https://github.com/testing-library/jest-dom -import '@testing-library/jest-dom'; -import Enzyme from 'enzyme'; -import Adapter from 'enzyme-adapter-react-16'; - -Enzyme.configure({ - adapter: new Adapter(), -}); diff --git a/packages/wallet/ui/src/store/Dapps.js b/packages/wallet/ui/src/store/Dapps.js deleted file mode 100644 index fe622390eb0..00000000000 --- a/packages/wallet/ui/src/store/Dapps.js +++ /dev/null @@ -1,61 +0,0 @@ -// @ ts-check -import { - maybeLoad, - maybeSave, - watchKey, - DAPPS_STORAGE_KEY, -} from '../util/storage.js'; - -/** - * @typedef {{ chainId: string, address: string }} SmartWalletKey - */ - -/** - * @typedef {{ origin: string, smartWalletKey: SmartWalletKey}} DappKey - */ - -/** - * @typedef {{ origin: string, isEnabled?: boolean, petname: string }} Dapp - */ - -/** - * @param {SmartWalletKey} smartWalletKey - * @returns {Dapp[]} - */ -export const loadDapps = ({ chainId, address }) => - maybeLoad([DAPPS_STORAGE_KEY, chainId, address]) ?? []; - -export const loadDapp = (/** @type {DappKey} */ { smartWalletKey, origin }) => - loadDapps(smartWalletKey).find(d => d.origin === origin); - -export const upsertDapp = ( - /** @type {SmartWalletKey} */ { chainId, address }, - /** @type {Dapp} */ dapp, -) => { - const { origin, isEnabled, petname } = dapp; - - const dapps = loadDapps(chainId, address); - maybeSave( - [DAPPS_STORAGE_KEY, chainId, address], - [...dapps.filter(d => d.origin !== origin), { origin, isEnabled, petname }], - ); -}; - -export const removeDapp = ( - /** @type {DappKey} */ { smartWalletKey: { chainId, address }, origin }, -) => { - const dapps = loadDapps({ chainId, address }); - maybeSave( - [DAPPS_STORAGE_KEY, chainId, address], - dapps.filter(d => d.origin !== origin), - ); -}; - -export const watchDapps = ( - /** @type {SmartWalletKey} */ { chainId, address }, - /** @type {(newDapps: Dapp[]) => void} */ onChange, -) => { - watchKey([DAPPS_STORAGE_KEY, chainId, address], newDapps => - onChange(newDapps ?? []), - ); -}; diff --git a/packages/wallet/ui/src/store/Offers.js b/packages/wallet/ui/src/store/Offers.js deleted file mode 100644 index 7865bba8783..00000000000 --- a/packages/wallet/ui/src/store/Offers.js +++ /dev/null @@ -1,73 +0,0 @@ -// @ts-check -import { - maybeLoad, - maybeSave, - watchKey, - OFFERS_STORAGE_KEY, -} from '../util/storage.js'; - -/** - * @enum {string} - */ -export const OfferUIStatus = { - proposed: 'proposed', - accepted: 'accept', - rejected: 'rejected', - pending: 'pending', - declined: 'decline', -}; - -/** @typedef {import('@agoric/web-components/src/dapp-wallet-bridge/DappWalletBridge').OfferConfig} OfferConfig */ -/** @typedef {import('./Dapps.js').SmartWalletKey} SmartWalletKey */ -/** - * @typedef {{ - * id: number; - * meta: { - * id: number, - * creationStamp: number, - * }; - * requestContext: { - * origin: string, - * }; - * status: OfferUIStatus; - * instancePetname?: string; - * spendAction?: string - * } & OfferConfig - * } Offer - */ - -export const loadOffers = ( - /** @type {SmartWalletKey} */ { chainId, address }, -) => maybeLoad([OFFERS_STORAGE_KEY, chainId, address]) ?? []; - -export const addOffer = ( - /** @type {SmartWalletKey} */ { chainId, address }, - /** @type {Offer} */ offer, -) => { - const offers = loadOffers({ chainId, address }) ?? []; - maybeSave( - [OFFERS_STORAGE_KEY, chainId, address], - [...offers.filter(o => o.id !== offer.id), offer], - ); -}; - -export const removeOffer = ( - /** @type {SmartWalletKey} */ { chainId, address }, - /** @type {number} */ id, -) => { - const offers = loadOffers({ chainId, address }) ?? []; - maybeSave( - [OFFERS_STORAGE_KEY, chainId, address], - offers.filter(o => o.id !== id), - ); -}; - -export const watchOffers = ( - /** @type {SmartWalletKey} */ { chainId, address }, - /** @type {(newOffers: Offer[]) => void} */ onChange, -) => { - watchKey( - [OFFERS_STORAGE_KEY, chainId, address], - (/** @type {Offer[]} */ newOffers) => onChange(newOffers ?? []), - ); -}; diff --git a/packages/wallet/ui/src/store/Terms.js b/packages/wallet/ui/src/store/Terms.js deleted file mode 100644 index 77b3af14108..00000000000 --- a/packages/wallet/ui/src/store/Terms.js +++ /dev/null @@ -1,10 +0,0 @@ -import { TERMS_KEY, maybeSave, maybeLoad } from '../util/storage.js'; - -// The index of the current revision of the terms agreement. This should -// increment every time the terms change. -export const LATEST_TERMS_INDEX = 0; - -export const agreeToTerms = (/** @type {number} */ index) => - maybeSave(TERMS_KEY, index); - -export const getTermsIndexAccepted = () => maybeLoad(TERMS_KEY) ?? -1; diff --git a/packages/wallet/ui/src/tests/App.test.jsx b/packages/wallet/ui/src/tests/App.test.jsx deleted file mode 100644 index a219c202818..00000000000 --- a/packages/wallet/ui/src/tests/App.test.jsx +++ /dev/null @@ -1,103 +0,0 @@ -import { mount } from 'enzyme'; -import { MemoryRouter } from 'react-router-dom'; -import { createTheme, ThemeProvider } from '@mui/material'; -import App from '../App'; -import Dashboard from '../views/Dashboard'; -import Dapps from '../views/Dapps'; -import Contacts from '../views/Contacts'; -import Issuers from '../views/Issuers'; - -jest.mock( - '../components/ConnectionSettingsDialog', - () => () => 'ConnectionSettingsDialog', -); -jest.mock('../views/Dashboard', () => () => 'Dashboard'); -jest.mock('../views/Dapps', () => () => 'Dapps'); -jest.mock('../views/Contacts', () => () => 'Contacts'); -jest.mock('../views/Issuers', () => () => 'Issuers'); -jest.mock( - '../components/SmartWalletConnection', - () => () => 'SmartWalletConnection', -); -jest.mock('@cosmjs/stargate', () => () => { - jest.mock(); -}); - -const withApplicationContext = - (Component, _) => - ({ ...props }) => { - return ( - - ); - }; - -jest.mock('../contexts/Application', () => { - return { - withApplicationContext, - ConnectionStatus: { - Connected: 'connected', - Connecting: 'connecting', - Disconnected: 'disconnected', - Error: 'error', - }, - }; -}); - -const appTheme = createTheme({ - appBarHeight: '64px', - navMenuWidth: '240px', -}); - -test('renders the dashboard view', () => { - const component = mount( - - - - - , - ); - - expect(component.find(Dashboard)).toHaveLength(1); -}); - -test('renders the dapps view', () => { - const component = mount( - - - - - , - ); - - expect(component.find(Dapps)).toHaveLength(1); -}); - -test('renders the contacts view', () => { - const component = mount( - - - - - , - ); - - expect(component.find(Contacts)).toHaveLength(1); -}); - -test('renders the issuers view', () => { - const component = mount( - - - - - , - ); - - expect(component.find(Issuers)).toHaveLength(1); -}); diff --git a/packages/wallet/ui/src/tests/keyManagement.test.js b/packages/wallet/ui/src/tests/keyManagement.test.js deleted file mode 100644 index d75d3fa7bf3..00000000000 --- a/packages/wallet/ui/src/tests/keyManagement.test.js +++ /dev/null @@ -1,65 +0,0 @@ -import { toBase64 } from '@cosmjs/encoding'; -import { - SwingsetMsgs, - SwingsetConverters, - toAccAddress, -} from '../util/keyManagement.js'; - -const addrToBase64 = a => toBase64(toAccAddress(a)); - -test('convert spendAction toAmino/fromAmino for Ledger signing', () => { - const converter = - SwingsetConverters[SwingsetMsgs.MsgWalletSpendAction.typeUrl]; - const owner = 'agoric168rp3ugmpu0jtla5wjkdlqg20rpv65xxzkh8yp'; - const spendAction = '{give:1, want:1}'; - expect( - converter.toAmino({ spendAction, owner: addrToBase64(owner) }), - ).toStrictEqual({ - owner: 'agoric168rp3ugmpu0jtla5wjkdlqg20rpv65xxzkh8yp', - // note spend_action, not spendAction - // per golang/cosmos/proto/agoric/swingset/msgs.proto - spend_action: '{give:1, want:1}', - }); - - expect( - converter.fromAmino({ - owner: 'agoric168rp3ugmpu0jtla5wjkdlqg20rpv65xxzkh8yp', - spend_action: '{give:1, want:1}', - }), - ).toStrictEqual({ spendAction, owner: addrToBase64(owner) }); -}); - -test('convert provision toAmino/fromAmino for Ledger signing', () => { - const converter = SwingsetConverters[SwingsetMsgs.MsgProvision.typeUrl]; - - const nickname = 'my wallet'; - const powerFlags = ['SMART_WALLET']; - const address = 'agoric168rp3ugmpu0jtla5wjkdlqg20rpv65xxzkh8yp'; - expect( - converter.toAmino({ - nickname, - powerFlags, - address: addrToBase64(address), - submitter: addrToBase64(address), - }), - ).toStrictEqual({ - address: 'agoric168rp3ugmpu0jtla5wjkdlqg20rpv65xxzkh8yp', - nickname: 'my wallet', - powerFlags: ['SMART_WALLET'], - submitter: 'agoric168rp3ugmpu0jtla5wjkdlqg20rpv65xxzkh8yp', - }); - - expect( - converter.fromAmino({ - address: 'agoric168rp3ugmpu0jtla5wjkdlqg20rpv65xxzkh8yp', - nickname: 'my wallet', - powerFlags: ['SMART_WALLET'], - submitter: 'agoric168rp3ugmpu0jtla5wjkdlqg20rpv65xxzkh8yp', - }), - ).toStrictEqual({ - nickname, - powerFlags, - address: addrToBase64(address), - submitter: addrToBase64(address), - }); -}); diff --git a/packages/wallet/ui/src/util/Date.js b/packages/wallet/ui/src/util/Date.js deleted file mode 100644 index 4bf2eee6297..00000000000 --- a/packages/wallet/ui/src/util/Date.js +++ /dev/null @@ -1,11 +0,0 @@ -export const formatDateNow = stamp => { - if (!stamp) { - return 'unknown time'; - } - const date = new Date(stamp); - const isoStamp = date.getTime() - date.getTimezoneOffset() * 60 * 1000; - const isoDate = new Date(isoStamp); - const isoStr = isoDate.toISOString(); - const match = isoStr.match(/^(.*)T(.*)\..*/); - return `${match[1]} ${match[2]}`; -}; diff --git a/packages/wallet/ui/src/util/DeepEquals.js b/packages/wallet/ui/src/util/DeepEquals.js deleted file mode 100644 index 7218cf23767..00000000000 --- a/packages/wallet/ui/src/util/DeepEquals.js +++ /dev/null @@ -1,22 +0,0 @@ -export const deepEquals = (a, b) => { - if (a === b) { - return true; - } - if (a instanceof Date && b instanceof Date) { - return a.getTime() === b.getTime(); - } - if (!a || !b || (typeof a !== 'object' && typeof b !== 'object')) { - return a === b; - } - if (a === null || a === undefined || b === null || b === undefined) { - return false; - } - if (a.prototype !== b.prototype) { - return false; - } - const keys = Object.keys(a); - if (keys.length !== Object.keys(b).length) { - return false; - } - return keys.every(k => deepEquals(a[k], b[k])); -}; diff --git a/packages/wallet/ui/src/util/Icons.js b/packages/wallet/ui/src/util/Icons.js deleted file mode 100644 index c4a394907ae..00000000000 --- a/packages/wallet/ui/src/util/Icons.js +++ /dev/null @@ -1,13 +0,0 @@ -export const icons = { - IST: 'tokens/IST.png', - BLD: 'tokens/BLD.svg', - ATOM: 'tokens/cosmos.svg', - LINK: 'tokens/chainlink.png', - USDC: 'tokens/usdc.svg', - USDC_grv: 'tokens/USDC_grv.webp', - USDC_axl: 'tokens/USDC_axl.png', - USDT_grv: 'tokens/USDT_grv.webp', - USDT_axl: 'tokens/USDT_axl.png', -}; - -export const defaultIcon = 'tokens/default.png'; diff --git a/packages/wallet/ui/src/util/SuggestChain.js b/packages/wallet/ui/src/util/SuggestChain.js deleted file mode 100644 index fe5eed15342..00000000000 --- a/packages/wallet/ui/src/util/SuggestChain.js +++ /dev/null @@ -1,92 +0,0 @@ -// @ts-check -import { stakeCurrency, stableCurrency, bech32Config } from './chainInfo.js'; - -export const AGORIC_COIN_TYPE = 564; -export const COSMOS_COIN_TYPE = 118; - -/** - * @param {import('@agoric/casting/src/netconfig.js').NetworkConfig} networkConfig - * @param {string} caption - * @param {number} randomFloat - * @param {string} [walletUrlForStaking] - * @returns {import('@keplr-wallet/types').ChainInfo} - */ -export const makeChainInfo = ( - networkConfig, - caption, - randomFloat, - walletUrlForStaking, -) => { - const { chainName, rpcAddrs, apiAddrs } = networkConfig; - const index = Math.floor(randomFloat * rpcAddrs.length); - - const rpcAddr = rpcAddrs[index]; - const rpc = rpcAddr.match(/:\/\//) ? rpcAddr : `http://${rpcAddr}`; - - const rest = apiAddrs - ? // pick the same index - apiAddrs[index] - : // adapt from rpc - rpc.replace(/(:\d+)?$/, ':1317'); - - return { - rpc, - rest, - chainId: chainName, - chainName: caption, - stakeCurrency, - walletUrlForStaking, - bip44: { - coinType: AGORIC_COIN_TYPE, - }, - bech32Config, - currencies: [stakeCurrency, stableCurrency], - feeCurrencies: [stableCurrency], - features: ['stargate', 'ibc-transfer'], - }; -}; - -/** - * @param {string} networkConfigHref - * @param {object} io - * @param {typeof fetch} io.fetch - * @param {import('@keplr-wallet/types').Keplr} io.keplr - * @param {typeof Math.random} io.random - * @param {string} [caption] - */ -export async function suggestChain( - networkConfigHref, - { fetch, keplr, random }, - caption = undefined, -) { - console.log('suggestChain: fetch', networkConfigHref); // log net IO - const url = new URL(networkConfigHref); - const res = await fetch(url); - if (!res.ok) { - throw Error(`Cannot fetch network: ${res.status}`); - } - - const networkConfig = await res.json(); - // XXX including this breaks the Jest test - // assertNetworkConfig(harden(networkConfig)); - - if (!caption) { - const subdomain = url.hostname.split('.')[0]; - caption = `Agoric ${subdomain}`; - } - - const walletUrlForStaking = `https://${url.hostname}.staking.agoric.app`; - - const chainInfo = makeChainInfo( - networkConfig, - caption, - random(), - walletUrlForStaking, - ); - console.log('chainInfo', chainInfo); - await keplr.experimentalSuggestChain(chainInfo); - await keplr.enable(chainInfo.chainId); - console.log('keplr.enable chainId =', chainInfo.chainId, 'done'); - - return chainInfo; -} diff --git a/packages/wallet/ui/src/util/WalletBackendAdapter.js b/packages/wallet/ui/src/util/WalletBackendAdapter.js deleted file mode 100644 index 5334368fb96..00000000000 --- a/packages/wallet/ui/src/util/WalletBackendAdapter.js +++ /dev/null @@ -1,347 +0,0 @@ -// @ts-check -import { iterateEach } from '@agoric/casting'; -import { AmountMath } from '@agoric/ertp'; -import { objectMap } from '@agoric/internal'; -import { - makeAsyncIterableFromNotifier, - makeNotifierKit, -} from '@agoric/notifier'; -import { - assertHasData, - NO_SMART_WALLET_ERROR, -} from '@agoric/smart-wallet/src/utils.js'; -import { E } from '@endo/eventual-send'; -import { Far } from '@endo/marshal'; -import { getDappService } from '../service/Dapps.js'; -import { getIssuerService } from '../service/Issuers.js'; -import { getOfferService } from '../service/Offers.js'; - -/** @typedef {import('@agoric/smart-wallet/src/types.js').Petname} Petname */ - -const newId = kind => `${kind}${Math.random()}`; - -/** @typedef {{actions: object, issuerSuggestions: Promise}} BackendSchema */ - -export const makeBackendFromWalletBridge = ( - /** @type {ReturnType} */ walletBridge, -) => { - /** - * @template T - * @param {ERef>} notifier - */ - const iterateNotifier = async notifier => - makeAsyncIterableFromNotifier(notifier)[Symbol.asyncIterator](); - - // XXX we don't have access to the board yet. - const { notifier: servicesNotifier } = makeNotifierKit(); - - /** - * @param {AsyncIterator} offersMembers - */ - const wrapOffersIterator = offersMembers => - harden({ - next: async () => { - const { done, value } = await E(offersMembers).next(); - return harden({ - done, - value: - value && - value.map(({ id, ...rest }) => - harden({ - id, - ...rest, - actions: { - // Provide these synthetic actions since offers don't have any yet. - accept: () => E(walletBridge).acceptOffer(id), - decline: () => E(walletBridge).declineOffer(id), - cancel: () => E(walletBridge).cancelOffer(id), - }, - }), - ), - }); - }, - return: offersMembers.return, - throw: offersMembers.throw, - }); - - /** @type {BackendSchema} */ - const firstSchema = harden({ - actions: Far('schemaActions', { - createPurse: (issuer, id = newId('Purse')) => - E(walletBridge).makeEmptyPurse(issuer?.issuerPetname, id), - createContact: (depositFacet, id = newId('Contact')) => - E(walletBridge).addContact(id, depositFacet), - createIssuer: (issuer, id = newId('Issuer')) => - E(walletBridge).addIssuer(id, issuer, true), - }), - services: iterateNotifier(servicesNotifier), - contacts: iterateNotifier(E(walletBridge).getContactsNotifier()), - dapps: iterateNotifier(E(walletBridge).getDappsNotifier()), - issuers: iterateNotifier(E(walletBridge).getIssuersNotifier()), - offers: wrapOffersIterator( - // @ts-expect-error xxx - iterateNotifier(E(walletBridge).getOffersNotifier()), - ), - payments: iterateNotifier(E(walletBridge).getPaymentsNotifier()), - purses: iterateNotifier(E(walletBridge).getPursesNotifier()), - issuerSuggestions: iterateNotifier( - E(walletBridge).getIssuerSuggestionsNotifier(), - ), - }); - - // Just produce a single update for the initial backend. - // TODO: allow further updates. - /** @type {NotifierRecord} */ - const { notifier: backendNotifier, updater: backendUpdater } = - makeNotifierKit(firstSchema); - - const backendIt = iterateNotifier(backendNotifier); - - const cancel = e => { - backendUpdater.fail(e); - }; - - return { backendIt, cancel }; -}; - -/** @typedef {import('../store/Dapps').SmartWalletKey} SmartWalletKey */ -/** - * @param {SmartWalletKey} smartWalletKey - * @param {ReturnType} marshaller - * @param {import('@agoric/casting').ValueFollower} currentFollower - * @param {import('@agoric/casting').ValueFollower} updateFollower - * @param {import('../contexts/Provider.jsx').KeplrUtils} keplrConnection - * @param {(e: unknown) => void} [errorHandler] - * @param {() => void} [firstCallback] - */ -export const makeWalletBridgeFromFollowers = ( - smartWalletKey, - marshaller, - currentFollower, - updateFollower, - keplrConnection, - errorHandler = e => { - // Make an unhandled rejection. - throw e; - }, - firstCallback = () => {}, -) => { - const notifiers = { - getPursesNotifier: 'purses', - getContactsNotifier: 'contacts', - getIssuersNotifier: 'issuers', - getOffersNotifier: 'offers', - getPaymentsNotifier: 'payments', - }; - - /** @type {Record>} */ - const notifierKits = Object.fromEntries( - Object.entries(notifiers).map(([_method, stateName]) => [ - stateName, - makeNotifierKit(null), - ]), - ); - - // We assume just one cosmos purse per brand. - /** - * @typedef {{ - * brand?: Brand, - * brandPetname?: Petname, - * currentAmount: Amount, - * pursePetname?: Petname, - * displayInfo?: DisplayInfo, - * }} PurseInfo - * @type {Map} - */ - const brandToPurse = new Map(); - /** @type {Map} */ - const pursePetnameToBrand = new Map(); - - const updatePurses = () => { - const purses = []; - for (const [brand, purse] of brandToPurse.entries()) { - if (purse.currentAmount && purse.brandPetname) { - assert(purse.pursePetname, 'missing purse.pursePetname'); - pursePetnameToBrand.set(purse.pursePetname, brand); - purses.push(purse); - } - } - notifierKits.purses.updater.updateState(harden(purses)); - }; - - /** @param {string} data */ - const signSpendAction = async data => { - const { - signers: { interactiveSigner }, - } = keplrConnection; - if (!interactiveSigner) { - throw new Error( - 'Cannot sign a transaction in read only mode, connect to keplr.', - ); - } - return interactiveSigner.submitSpendAction(data); - }; - - const getNotifierMethods = objectMap( - notifiers, - stateName => () => notifierKits[stateName].notifier, - ); - - /** @type {Notifier} */ - // @ts-expect-error - const offersNotifer = getNotifierMethods.getOffersNotifier(); - - const offerService = getOfferService( - smartWalletKey, - signSpendAction, - offersNotifer, - marshaller, - ); - - const fetchCurrent = async () => { - await assertHasData(currentFollower); - const latestIterable = await E(currentFollower).getLatestIterable(); - const iterator = latestIterable[Symbol.asyncIterator](); - const latest = await iterator.next(); - if (firstCallback) { - firstCallback(); - Object.values(notifierKits).forEach(({ updater }) => - updater.updateState([]), - ); - firstCallback = undefined; - } - /** @type {import('@agoric/casting').ValueFollowerElement} */ - const currentEl = latest.value; - const wallet = currentEl.value; - console.log('wallet current', wallet); - for (const purse of wallet.purses) { - console.debug('registering purse', purse); - const brandDescriptor = wallet.brands.find( - bd => purse.brand === bd.brand, - ); - assert(brandDescriptor, `missing descriptor for brand ${purse.brand}`); - /** @type {PurseInfo} */ - const purseInfo = { - brand: purse.brand, - currentAmount: purse.balance, - brandPetname: brandDescriptor.petname, - pursePetname: brandDescriptor.petname, - displayInfo: brandDescriptor.displayInfo, - }; - brandToPurse.set(purse.brand, purseInfo); - } - console.debug('brandToPurse map', brandToPurse); - updatePurses(); - offerService.start(pursePetnameToBrand); - return currentEl.blockHeight; - }; - - const followLatest = async startingHeight => { - for await (const { value } of iterateEach(updateFollower, { - height: startingHeight, - })) { - /** @type {import('@agoric/smart-wallet/src/smartWallet').UpdateRecord} */ - const updateRecord = value; - switch (updateRecord.updated) { - case 'brand': { - const { - descriptor: { brand, petname, displayInfo }, - } = updateRecord; - const prior = brandToPurse.get(brand); - const purseObj = { - brand, - brandPetname: petname, - pursePetname: petname, - displayInfo, - currentAmount: prior?.currentAmount || AmountMath.makeEmpty(brand), - }; - brandToPurse.set(brand, purseObj); - updatePurses(); - break; - } - case 'balance': { - // TODO: Don't assume just one purse per brand. - // https://github.com/Agoric/agoric-sdk/issues/6126 - const { currentAmount } = updateRecord; - const purseObj = { - ...brandToPurse.get(currentAmount.brand), - currentAmount, - value: currentAmount.value, - }; - brandToPurse.set(currentAmount.brand, purseObj); - updatePurses(); - break; - } - case 'offerStatus': { - const { status } = updateRecord; - notifierKits.offers.updater.updateState(status); - break; - } - default: { - // @ts-expect-error exhaustive switch - throw Error(`Unknown updateRecord ${updateRecord.updated}`); - } - } - } - }; - - const loadData = () => fetchCurrent().then(followLatest); - - const retry = () => { - loadData().catch(e => { - if (e.message === NO_SMART_WALLET_ERROR) { - setTimeout(retry, 5000); - } else { - errorHandler(e); - } - }); - }; - - loadData().catch(e => { - errorHandler(e); - if (e.message === NO_SMART_WALLET_ERROR) { - setTimeout(retry, 5000); - } - }); - - const makeEmptyPurse = (_issuerPetname, _purseId) => { - console.log('make empty purse'); - }; - - const addContact = (_boardId, _petname) => { - console.log('add contact'); - }; - - const addIssuer = (_boardId, _petname, _makeDefaultPurse) => { - console.log('add issuer'); - }; - - const issuerService = getIssuerService(signSpendAction); - const dappService = getDappService(smartWalletKey); - const { acceptOffer, declineOffer, cancelOffer } = offerService; - - const { - getContactsNotifier, - getIssuersNotifier, - getPaymentsNotifier, - getPursesNotifier, - } = getNotifierMethods; - - const walletBridge = Far('follower wallet bridge', { - getDappsNotifier: () => dappService.notifier, - getOffersNotifier: () => offerService.notifier, - getIssuerSuggestionsNotifier: () => issuerService.notifier, - getIssuersNotifier, - getContactsNotifier, - getPaymentsNotifier, - getPursesNotifier, - acceptOffer, - declineOffer, - cancelOffer, - makeEmptyPurse, - addContact, - addIssuer, - }); - - return walletBridge; -}; diff --git a/packages/wallet/ui/src/util/chainInfo.js b/packages/wallet/ui/src/util/chainInfo.js deleted file mode 100644 index ba874c49d66..00000000000 --- a/packages/wallet/ui/src/util/chainInfo.js +++ /dev/null @@ -1,37 +0,0 @@ -// @ts-check - -/** @type {import('@keplr-wallet/types').FeeCurrency} */ -export const stakeCurrency = { - coinDenom: 'BLD', - coinMinimalDenom: 'ubld', - coinDecimals: 6, - coinGeckoId: undefined, - gasPriceStep: { - low: 0, - average: 0, - high: 0, - }, -}; - -/** @type {import('@keplr-wallet/types').FeeCurrency} */ -export const stableCurrency = { - coinDenom: 'IST', - coinMinimalDenom: 'uist', - coinDecimals: 6, - coinGeckoId: undefined, - gasPriceStep: { - low: 0, - average: 0, - high: 0, - }, -}; - -/** @type {import('@keplr-wallet/types').Bech32Config} */ -export const bech32Config = { - bech32PrefixAccAddr: 'agoric', - bech32PrefixAccPub: 'agoricpub', - bech32PrefixValAddr: 'agoricvaloper', - bech32PrefixValPub: 'agoricvaloperpub', - bech32PrefixConsAddr: 'agoricvalcons', - bech32PrefixConsPub: 'agoricvalconspub', -}; diff --git a/packages/wallet/ui/src/util/connections.js b/packages/wallet/ui/src/util/connections.js deleted file mode 100644 index fd0227381d8..00000000000 --- a/packages/wallet/ui/src/util/connections.js +++ /dev/null @@ -1,28 +0,0 @@ -// @ts-check - -export const KnownNetworkConfigUrls = { - main: 'https://main.agoric.net/network-config', - devnet: 'https://devnet.agoric.net/network-config', - testnet: 'https://testnet.agoric.net/network-config', - // for localhost skip https and assume it's subpathed to /wallet - localhost: 'http://localhost:3000/wallet/network-config', -}; - -export const DEFAULT_CONNECTION_CONFIGS = Object.values( - KnownNetworkConfigUrls, -).map(href => ({ href })); - -export const networkConfigUrl = { - fromSource(source) { - return KnownNetworkConfigUrls[source]; - }, - toSource(href) { - const matchingEntry = Object.entries(KnownNetworkConfigUrls).find( - ([_, url]) => url === href, - ); - if (matchingEntry) { - return matchingEntry[0]; - } - return 'custom'; - }, -}; diff --git a/packages/wallet/ui/src/util/fixed-websocket-connector.js b/packages/wallet/ui/src/util/fixed-websocket-connector.js deleted file mode 100644 index 9bc7772e255..00000000000 --- a/packages/wallet/ui/src/util/fixed-websocket-connector.js +++ /dev/null @@ -1,87 +0,0 @@ -/* eslint-disable no-underscore-dangle */ -import { E } from '@endo/eventual-send'; - -const CONNECTION_TIMEOUT_MS = 5000; - -// Wait for the wallet to finish loading. -export const waitForBootstrap = async getBootstrap => { - const getLoadingUpdate = (...args) => - E(E.get(getBootstrap()).loadingNotifier).getUpdateSince(...args); - let update = await getLoadingUpdate(); - while (update.value.includes('wallet')) { - console.log('waiting for wallet'); - // eslint-disable-next-line no-await-in-loop - update = await getLoadingUpdate(update.updateCount); - } - - return getBootstrap(); -}; - -export const makeFixedWebSocketConnector = href => component => { - let ws; - - const onAdminOpen = () => { - const send = obj => { - if (ws.readyState !== WebSocket.OPEN) { - return; - } - ws.send(JSON.stringify(obj)); - }; - component._startCapTP(send, 'walletAdmin'); - - assert(component._captp); - const { dispatch, getBootstrap } = component._captp; - - ws.addEventListener('message', ev => { - const obj = JSON.parse(ev.data); - dispatch(obj); - }); - - const adminFacet = E( - E.get(waitForBootstrap(getBootstrap)).wallet, - ).getAdminFacet(); - adminFacet.then(component.service.send({ type: 'connected' })); - component._bridgePK.resolve(adminFacet); - }; - - return { - render: () => '', - hostConnected: () => { - const { - location, - connectionParams: { accessToken }, - } = component.service.context; - assert(location); - - const connect = () => { - // Cycle through the hrefs to find the websocket protocol for this path. - const url = new URL('/private/captp', href); - url.protocol = url.protocol.replace(/^http/, 'ws'); - - if (accessToken) { - url.searchParams.set('accessToken', accessToken); - } - - const onClose = _ev => { - return component.reset(); - }; - - ws = new WebSocket(url.href); - const timeout = window.setTimeout(() => { - ws.close(); - }, CONNECTION_TIMEOUT_MS); - - ws.addEventListener('open', ev => { - window.clearTimeout(timeout); - return onAdminOpen(ev); - }); - ws.addEventListener('close', onClose); - ws.addEventListener('error', () => {}); - }; - connect(location); - }, - hostDisconnected: () => { - ws.close(); - }, - }; -}; diff --git a/packages/wallet/ui/src/util/keyManagement.js b/packages/wallet/ui/src/util/keyManagement.js deleted file mode 100644 index 0599be9efd8..00000000000 --- a/packages/wallet/ui/src/util/keyManagement.js +++ /dev/null @@ -1,523 +0,0 @@ -// @ts-check -import { fromBech32, toBech32, fromBase64, toBase64 } from '@cosmjs/encoding'; -import { DirectSecp256k1Wallet, Registry } from '@cosmjs/proto-signing'; -import { - AminoTypes, - defaultRegistryTypes, - QueryClient, - createProtobufRpcClient, - assertIsDeliverTxSuccess, - createBankAminoConverters, - createAuthzAminoConverters, -} from '@cosmjs/stargate'; - -import { GenericAuthorization } from 'cosmjs-types/cosmos/authz/v1beta1/authz.js'; -import { QueryClientImpl } from 'cosmjs-types/cosmos/authz/v1beta1/query.js'; - -import { - MsgProvision, - MsgWalletAction, - MsgWalletSpendAction, -} from '@agoric/cosmic-proto/swingset/msgs.js'; - -import { stableCurrency, bech32Config } from './chainInfo.js'; - -/** @type {(address: string) => Uint8Array} */ -export function toAccAddress(address) { - return fromBech32(address).data; -} - -const KEY_SIZE = 32; // as in bech32 - -// XXX domain of @agoric/cosmic-proto -/** - * non-exhaustive list of powerFlags - * - * See also MsgProvision in golang/cosmos/proto/agoric/swingset/msgs.proto - */ -export const PowerFlags = /** @type {const} */ ({ - SMART_WALLET: 'SMART_WALLET', -}); - -/** - * The typeUrl of a message pairs a package name with a message name. - * For example, from: - * - * package cosmos.authz.v1beta1; - * message MsgGrant { ... } - * - * we get `/cosmos.authz.v1beta1.MsgGrant` - * - * https://github.com/cosmos/cosmos-sdk/blob/main/proto/cosmos/authz/v1beta1/tx.proto#L34 - * https://github.com/cosmos/cosmos-sdk/blob/00805e564755f696c4696c6abe656cf68678fc83/proto/cosmos/authz/v1beta1/tx.proto#L34 - */ -const CosmosMessages = /** @type {const} */ ({ - bank: { - MsgSend: { - typeUrl: '/cosmos.bank.v1beta1.MsgSend', - }, - }, - authz: { - MsgGrant: { - typeUrl: '/cosmos.authz.v1beta1.MsgGrant', - }, - GenericAuthorization: { - typeUrl: '/cosmos.authz.v1beta1.GenericAuthorization', - }, - MsgExec: { - typeUrl: '/cosmos.authz.v1beta1.MsgExec', - }, - }, - feegrant: { - MsgGrantAllowance: { - typeUrl: '/cosmos.feegrant.v1beta1.MsgGrantAllowance', - }, - BasicAllowance: { - typeUrl: '/cosmos.feegrant.v1beta1.BasicAllowance', - }, - }, -}); - -/** - * `/agoric.swingset.XXX` matches package agoric.swingset in swingset/msgs.proto - * aminoType taken from Type() in golang/cosmos/x/swingset/types/msgs.go - */ -export const SwingsetMsgs = /** @type {const} */ ({ - MsgProvision: { - typeUrl: '/agoric.swingset.MsgProvision', - aminoType: 'swingset/Provision', - }, - MsgWalletAction: { - typeUrl: '/agoric.swingset.MsgWalletAction', - aminoType: 'swingset/WalletAction', - }, - MsgWalletSpendAction: { - typeUrl: '/agoric.swingset.MsgWalletSpendAction', - aminoType: 'swingset/WalletSpendAction', - }, -}); - -// XXX repeating the TS definitions made by protoc -// TODO define these automatically from those -/** - * @typedef {{ - * nickname: string, - * address: string, // base64 of raw bech32 data - * powerFlags: string[], - * submitter: string, // base64 of raw bech32 data - * }} Provision - * @typedef {{ - * owner: string, // base64 of raw bech32 data - * action: string, - * }} WalletAction - * @typedef {{ - * owner: string, // base64 of raw bech32 data - * spendAction: string, - * }} WalletSpendAction - */ - -export const SwingsetRegistry = new Registry([ - ...defaultRegistryTypes, - // XXX should this list be "upstreamed" to @agoric/cosmic-proto? - [SwingsetMsgs.MsgProvision.typeUrl, MsgProvision], - [SwingsetMsgs.MsgWalletAction.typeUrl, MsgWalletAction], - [SwingsetMsgs.MsgWalletSpendAction.typeUrl, MsgWalletSpendAction], -]); - -/** - * TODO: estimate fee? use 'auto' fee? - * https://github.com/Agoric/agoric-sdk/issues/5888 - * - * @returns {import('@cosmjs/stargate').StdFee} - */ -export const zeroFee = () => { - const { coinMinimalDenom: denom } = stableCurrency; - const fee = { - amount: [{ amount: '0', denom }], - gas: '300000', // TODO: estimate gas? - }; - return fee; -}; - -const dbg = label => x => { - console.log(label, x); - return x; -}; - -/** @type {import('@cosmjs/stargate').AminoConverters} */ -export const SwingsetConverters = { - [SwingsetMsgs.MsgProvision.typeUrl]: { - aminoType: SwingsetMsgs.MsgProvision.aminoType, - toAmino: protoVal => { - const { nickname, address, powerFlags, submitter } = dbg( - 'provision toAmino protoVal', - )(protoVal); - return { - address: toBech32( - bech32Config.bech32PrefixAccAddr, - fromBase64(address), - ), - nickname, - powerFlags, - submitter: toBech32( - bech32Config.bech32PrefixAccAddr, - fromBase64(submitter), - ), - }; - }, - fromAmino: aminoVal => { - const { nickname, address, powerFlags, submitter } = dbg( - 'provision fromAmino aminoVal', - )(aminoVal); - return { - address: toBase64(toAccAddress(address)), - nickname, - powerFlags, - submitter: toBase64(toAccAddress(submitter)), - }; - }, - }, - [SwingsetMsgs.MsgWalletAction.typeUrl]: { - aminoType: SwingsetMsgs.MsgWalletAction.aminoType, - toAmino: ({ action, owner }) => ({ - action, - owner: toBech32(bech32Config.bech32PrefixAccAddr, fromBase64(owner)), - }), - fromAmino: ({ action, owner }) => ({ - action, - owner: toBase64(toAccAddress(owner)), - }), - }, - [SwingsetMsgs.MsgWalletSpendAction.typeUrl]: { - aminoType: SwingsetMsgs.MsgWalletSpendAction.aminoType, - toAmino: ({ spendAction, owner }) => ({ - spend_action: spendAction, - owner: toBech32(bech32Config.bech32PrefixAccAddr, fromBase64(owner)), - }), - fromAmino: ({ spend_action: spendAction, owner }) => ({ - spendAction, - owner: toBase64(toAccAddress(owner)), - }), - }, -}; - -export const BROWSER_STORAGE_KEY = 'agoric.wallet.backgroundSignerKey'; - -/** - * Maintain a key for signing non-spending messages in localStorage. - * - * See also `delegateWalletAction()` below. - * - * @param {object} io - * @param {typeof window.localStorage} io.localStorage - * @param {typeof import('@cosmjs/crypto').Random.getBytes} io.csprng - */ -export const makeBackgroundSigner = async ({ localStorage, csprng }) => { - const provideLocalKey = () => { - const stored = localStorage.getItem(BROWSER_STORAGE_KEY); - if (stored) { - return fromBase64(stored); - } - console.debug( - `localStorage.setItem(${BROWSER_STORAGE_KEY}, Random.getBytes(${KEY_SIZE}))`, - ); - const seed = csprng(KEY_SIZE); - localStorage.setItem(BROWSER_STORAGE_KEY, toBase64(seed)); - return seed; - }; - const seed = provideLocalKey(); - const wallet = await DirectSecp256k1Wallet.fromKey( - seed, - bech32Config.bech32PrefixAccAddr, - ); - - const accounts = await wallet.getAccounts(); - console.debug('device account(s):', accounts); - - const [{ address }] = accounts; - - /** - * Query grants for granter / grantee pair - * - * For example, to check whether `delegateWalletAction()` is necessary. - * - * @param {string} granter address - * @param {import('@cosmjs/tendermint-rpc').Tendermint34Client} rpcClient - * @returns {Promise} - */ - const queryGrants = async (granter, rpcClient) => { - const base = QueryClient.withExtensions(rpcClient); - const rpc = createProtobufRpcClient(base); - const queryService = new QueryClientImpl(rpc); - console.log('query Grants', { granter, grantee: address }); - const result = await queryService.Grants({ - granter, - grantee: address, - msgTypeUrl: '', // wildcard - }); - - const decoded = result.grants.flatMap(grant => - grant.authorization - ? [GenericAuthorization.decode(grant.authorization.value)] - : [], - ); - - return decoded; - }; - - return harden({ - address, - registry: SwingsetRegistry, - wallet, - queryGrants, - }); -}; -/** @typedef {Awaited>} BackgroundSigner */ -/** - * @param {string} granter bech32 address - * @param {string} grantee bech32 address - * @param {number} seconds expiration as seconds (Date.now() / 1000) - */ -const makeGrantWalletActionMessage = (granter, grantee, seconds) => { - return { - typeUrl: CosmosMessages.authz.MsgGrant.typeUrl, - value: { - granter, - grantee, - grant: { - authorization: { - typeUrl: CosmosMessages.authz.GenericAuthorization.typeUrl, - value: GenericAuthorization.encode( - GenericAuthorization.fromPartial({ - msg: SwingsetMsgs.MsgWalletAction.typeUrl, - }), - ).finish(), - }, - expiration: { seconds }, - }, - }, - }; -}; - -/** - * TODO: test this, once we have a solution for cosmjs/issues/1155 - * - * @param {string} granter bech32 address - * @param {string} grantee bech32 address - * @param {string} allowance number of uist (TODO: fix uist magic string denom) - * @param {number} seconds expiration as seconds (Date.now() / 1000) - */ -const makeFeeGrantMessage = (granter, grantee, allowance, seconds) => { - return { - typeUrl: CosmosMessages.feegrant.MsgGrantAllowance.typeUrl, - value: { - granter, - grantee, - allowance: { - typeUrl: CosmosMessages.feegrant.BasicAllowance.typeUrl, - value: { - spendLimit: [{ denom: 'uist', amount: allowance }], - expiration: { seconds }, - }, - }, - }, - }; -}; - -/** - * @param {string} grantee - * @param {EncodeObject[]} msgObjs - * @param {import('@cosmjs/proto-signing').Registry} registry - * @typedef {import('@cosmjs/proto-signing').EncodeObject} EncodeObject - */ -const makeExecMessage = (grantee, msgObjs, registry) => { - const msgs = msgObjs.map(obj => ({ - typeUrl: obj.typeUrl, - value: registry.encode(obj), - })); - return { - typeUrl: CosmosMessages.authz.MsgExec.typeUrl, - value: { grantee, msgs }, - }; -}; - -/** - * Make Exec messages for grantee to do WalletAction on behalf of granter - * - * @param {string} granter in the authz sense - * @param {string} grantee in the authz sense - * @param {string} action MsgWalletAction.action - * @returns {EncodeObject[]} - */ -export const makeExecActionMessages = (granter, grantee, action) => { - const act1 = { - typeUrl: SwingsetMsgs.MsgWalletAction.typeUrl, - value: { - owner: toBase64(toAccAddress(granter)), - action, - }, - }; - const msgs = [makeExecMessage(grantee, [act1], SwingsetRegistry)]; - return msgs; -}; - -/** - * Use Keplr to sign offers and delegate object messaging to local storage key. - * - * Ref: https://docs.keplr.app/api/ - * - * @param {import('@keplr-wallet/types').ChainInfo} chainInfo - * @param {NonNullable} keplr - * @param {typeof import('@cosmjs/stargate').SigningStargateClient.connectWithSigner} connectWithSigner - * @typedef {import('@keplr-wallet/types').Window} KeplrWindow - */ -export const makeInteractiveSigner = async ( - chainInfo, - keplr, - connectWithSigner, -) => { - const { chainId } = chainInfo; - - const key = await keplr.getKey(chainId); - - // Until we have SIGN_MODE_TEXTUAL, - // Use Amino because Direct results in ugly protobuf in the keplr UI. - const offlineSigner = await keplr.getOfflineSignerOnlyAmino(chainId); - console.log('InteractiveSigner', { offlineSigner }); - - // Currently, Keplr extension manages only one address/public key pair. - const [account] = await offlineSigner.getAccounts(); - const { address } = account; - - const converters = { - ...SwingsetConverters, - ...createBankAminoConverters(), - ...createAuthzAminoConverters(), - }; - const signingClient = await connectWithSigner(chainInfo.rpc, offlineSigner, { - aminoTypes: new AminoTypes(converters), - registry: SwingsetRegistry, - }); - console.debug('InteractiveSigner', { signingClient }); - - const fee = zeroFee(); - - return harden({ - address, // TODO: address can change - isNanoLedger: key.isNanoLedger, - - /** - * TODO: integrate support for fee-account in MsgExec - * https://github.com/cosmos/cosmjs/issues/1155 - * https://github.com/cosmos/cosmjs/pull/1159 - * - * @param {string} grantee - * @param {number} t0 current time (as from Date.now()) as basis for 4hr expiration - */ - delegateWalletAction: async (grantee, t0) => { - const expiration = t0 / 1000 + 4 * 60 * 60; - // TODO: parameterize allowance? - const allowance = '250000'; // 0.25 IST - - // TODO: support for fee-account in MsgExec - console.warn( - 'cannot yet makeFeeGrantMessage', - makeFeeGrantMessage(address, grantee, allowance, expiration), - '(using feeGrantWorkAround)', - ); - - const feeGrantWorkAround = { - typeUrl: CosmosMessages.bank.MsgSend.typeUrl, - value: { - fromAddress: address, - toAddress: grantee, - amount: [{ denom: 'ubld', amount: '25000' }], - }, - }; - - /** @type {EncodeObject[]} */ - const msgs = [ - // TODO: makeFeeGrantMessage(address, grantee, allowance, expiration), - feeGrantWorkAround, - makeGrantWalletActionMessage(address, grantee, expiration), - ]; - - console.log('sign Grant', { address, msgs, fee }); - const tx = await signingClient.signAndBroadcast(address, msgs, fee); - console.log('Grant sign result tx', tx); - assertIsDeliverTxSuccess(tx); - - return tx; - }, - - /** - * Sign and broadcast Provision for a new smart wallet - * - * @throws if account does not exist on chain, user cancels, - * RPC connection fails, RPC service fails to broadcast ( - * for example, if signature verification fails) - */ - submitProvision: async () => { - const { accountNumber, sequence } = await signingClient.getSequence( - address, - ); - console.log({ accountNumber, sequence }); - - const b64address = toBase64(toAccAddress(address)); - - const act1 = { - typeUrl: SwingsetMsgs.MsgProvision.typeUrl, - /** @type {Provision} */ - value: { - address: b64address, - nickname: 'my wallet', - powerFlags: [PowerFlags.SMART_WALLET], - submitter: b64address, - }, - }; - - const msgs = [act1]; - console.log('sign provision', { address, msgs, fee }); - - const tx = await signingClient.signAndBroadcast(address, msgs, fee); - console.log('spend action result tx', tx); - assertIsDeliverTxSuccess(tx); - - return tx; - }, - - /** - * Sign and broadcast WalletSpendAction - * - * @param {string} spendAction marshaled offer - * @throws if account does not exist on chain, user cancels, - * RPC connection fails, RPC service fails to broadcast ( - * for example, if signature verification fails) - */ - submitSpendAction: async spendAction => { - const { accountNumber, sequence } = await signingClient.getSequence( - address, - ); - console.log({ accountNumber, sequence }); - - const act1 = { - typeUrl: SwingsetMsgs.MsgWalletSpendAction.typeUrl, - /** @type {WalletSpendAction} */ - value: { - owner: toBase64(toAccAddress(address)), - spendAction, - }, - }; - - const msgs = [act1]; - console.log('sign spend action', { address, msgs, fee }); - - const tx = await signingClient.signAndBroadcast(address, msgs, fee); - console.log('spend action result tx', tx); - assertIsDeliverTxSuccess(tx); - - return tx; - }, - }); -}; -/** @typedef {Awaited>} InteractiveSigner */ diff --git a/packages/wallet/ui/src/util/marshal.js b/packages/wallet/ui/src/util/marshal.js deleted file mode 100644 index 3f5aba103ab..00000000000 --- a/packages/wallet/ui/src/util/marshal.js +++ /dev/null @@ -1,7 +0,0 @@ -import { makeMarshal } from '@endo/marshal'; -import { decodeToJustin } from '@endo/marshal/src/marshal-justin.js'; - -const { serialize } = makeMarshal(); - -export const stringify = (x, pretty = false) => - decodeToJustin(JSON.parse(serialize(harden(x)).body), pretty); diff --git a/packages/wallet/ui/src/util/onLoad.js b/packages/wallet/ui/src/util/onLoad.js deleted file mode 100644 index e3f2be56e1b..00000000000 --- a/packages/wallet/ui/src/util/onLoad.js +++ /dev/null @@ -1,7 +0,0 @@ -export const onLoadP = new Promise(res => { - if (document.readyState === 'complete') { - res(); - } else { - window.addEventListener('load', () => res()); - } -}); diff --git a/packages/wallet/ui/src/util/storage.js b/packages/wallet/ui/src/util/storage.js deleted file mode 100644 index 4427757e824..00000000000 --- a/packages/wallet/ui/src/util/storage.js +++ /dev/null @@ -1,63 +0,0 @@ -// @ts-check - -export const DAPPS_STORAGE_KEY = 'DAPPS'; - -export const OFFERS_STORAGE_KEY = 'OFFERS'; - -export const TERMS_KEY = 'TERMS'; - -/** - * @param {unknown} key - * @param {unknown} value - */ -export const maybeSave = (key, value) => { - if (window?.localStorage) { - try { - window.localStorage.setItem(JSON.stringify(key), JSON.stringify(value)); - } catch (e) { - console.error(e); - } - } else { - // TODO: More user friendly way of handling this. - console.error('No localStorage found on "window"'); - } -}; - -/** - * @param {unknown} key - */ -export const maybeLoad = key => { - if (window?.localStorage) { - try { - const json = window.localStorage.getItem(JSON.stringify(key)); - if (json) { - return JSON.parse(json); - } - } catch (e) { - console.error(e); - return undefined; - } - } else { - console.error('No localStorage found on "window"'); - } - return undefined; -}; - -/** - * @param {unknown} key - * @param {(newValue: unknown) => void} onValueChange - */ -export const watchKey = (key, onValueChange) => { - window.addEventListener('storage', ev => { - if (ev.key !== JSON.stringify(key)) return; - - try { - const json = ev.newValue; - if (json) { - onValueChange(JSON.parse(json)); - } - } catch (e) { - console.error('Error parsing storage event', ev); - } - }); -}; diff --git a/packages/wallet/ui/src/views/Contacts.jsx b/packages/wallet/ui/src/views/Contacts.jsx deleted file mode 100644 index ae1bb026526..00000000000 --- a/packages/wallet/ui/src/views/Contacts.jsx +++ /dev/null @@ -1,114 +0,0 @@ -import { useState, useReducer } from 'react'; -import { E } from '@endo/eventual-send'; -import { Typography } from '@mui/material'; -import Button from '@mui/material/Button'; -import CircularProgress from '@mui/material/CircularProgress'; -import Add from '@mui/icons-material/Add'; -import Snackbar from '@mui/material/Snackbar'; -import Card from '../components/Card'; -import ImportContact from '../components/ImportContact'; -import Loading from '../components/Loading'; -import { withApplicationContext } from '../contexts/Application'; - -import './Contacts.scss'; - -const importingContactsReducer = (state, action) => { - return { count: state.count + action.difference }; -}; - -// Exported for testing only. -export const ContactsWithoutContext = ({ - contacts, - services, - schemaActions, -}) => { - const [isSnackbarOpen, setIsSnackbarOpen] = useState(false); - const handleCloseSnackbar = _ => { - setIsSnackbarOpen(false); - }; - const [snackbarMessage, setSnackbarMessage] = useState(''); - const showSnackbar = msg => { - setSnackbarMessage(msg); - setIsSnackbarOpen(true); - }; - - const [importingContacts, dispatchImportingContacts] = useReducer( - importingContactsReducer, - { count: 0 }, - ); - const incrementImportingContacts = () => - dispatchImportingContacts({ difference: 1 }); - const decrementImportingContacts = () => - dispatchImportingContacts({ difference: -1 }); - - const [showImport, setShowImport] = useState(false); - const closeImport = () => setShowImport(false); - - const handleImport = async (petname, boardId) => { - incrementImportingContacts(); - try { - const contactObj = await E(services.board).getValue(boardId); - await E(schemaActions).createContact(contactObj, petname); - showSnackbar('Successfully imported contact.'); - } catch { - showSnackbar('Failed to import contact.'); - } finally { - decrementImportingContacts(); - } - }; - - const Contact = contact => ( -
    - -
    -
    {contact.text}
    -
    - Board ID: ({contact.depositBoardId}) -
    -
    -
    -
    - ); - const contactCards = (contacts && contacts.map(Contact)) ?? ( - - ); - - return ( - <> - Contacts -
    - -
    - {importingContacts.count > 0 && } -
    -
    -
    {contactCards}
    - - - - ); -}; - -export default withApplicationContext(ContactsWithoutContext, context => ({ - contacts: context.contacts, - services: context.services, - schemaActions: context.schemaActions, - walletBridge: context.walletBridge, -})); diff --git a/packages/wallet/ui/src/views/Contacts.scss b/packages/wallet/ui/src/views/Contacts.scss deleted file mode 100644 index 33e7068262d..00000000000 --- a/packages/wallet/ui/src/views/Contacts.scss +++ /dev/null @@ -1,32 +0,0 @@ -.Contact { - width: 320px; - max-width: 320px; -} - -.ContactContent { - padding: 8px 16px; - width: 100%; - font-size: 16px; -} - -.ContactList { - width: 100%; - margin-top: 16px; - display: flex; - flex-direction: row; - flex-wrap: wrap; - gap: 16px; - justify-content: flex-start; -} - -.ImportContactsProgress { - height: 36px; - text-align: center; - margin-left: 8px; -} - -.ImportButton { - margin-top: 16px; - display: flex; - flex-direction: row; -} diff --git a/packages/wallet/ui/src/views/Dapps.jsx b/packages/wallet/ui/src/views/Dapps.jsx deleted file mode 100644 index e879c5f537c..00000000000 --- a/packages/wallet/ui/src/views/Dapps.jsx +++ /dev/null @@ -1,99 +0,0 @@ -import { useState } from 'react'; -import { E } from '@endo/eventual-send'; -import { Typography } from '@mui/material'; -import IconButton from '@mui/material/IconButton'; -import Button from '@mui/material/Button'; -import Popover from '@mui/material/Popover'; -import SettingsIcon from '@mui/icons-material/SettingsOutlined'; -import Card from '../components/Card'; -import Dapp from '../components/Dapp'; -import Loading from '../components/Loading'; -import { withApplicationContext } from '../contexts/Application'; - -import './Dapps.scss'; - -// Exported for testing only. -export const DappsWithoutContext = ({ dapps }) => { - dapps = dapps?.filter(({ isEnabled }) => isEnabled); - - const remove = ({ actions }) => E(actions).delete(); - - const DappCard = ({ dapp }) => { - const [anchorEl, setAnchorEl] = useState(null); - const handleClick = event => { - setAnchorEl(event.currentTarget); - }; - const handleClose = () => { - setAnchorEl(null); - }; - const isPopoverOpen = Boolean(anchorEl); - - return ( -
    - -
    - - - - - - - -
    -
    -
    - ); - }; - - const dappCards = (dapps && - dapps.map(dapp => )) ?? ( - - ); - - return ( - <> - Dapps -
    - {dapps?.length || dapps === undefined ? ( - dappCards - ) : ( -
    - No Dapps -

    No Dapps

    -
    - )} -
    - - ); -}; - -export default withApplicationContext(DappsWithoutContext, context => ({ - dapps: context.dapps, -})); diff --git a/packages/wallet/ui/src/views/Dapps.scss b/packages/wallet/ui/src/views/Dapps.scss deleted file mode 100644 index adba72b0ac7..00000000000 --- a/packages/wallet/ui/src/views/Dapps.scss +++ /dev/null @@ -1,41 +0,0 @@ -.Dapp { - width: 360px; - max-width: 360px; -} - -.DappContent { - padding: 8px 16px; - width: 100%; - font-size: 16px; -} - -.DappList { - width: 100%; - margin-top: 16px; - display: flex; - flex-direction: row; - flex-wrap: wrap; - gap: 16px; - justify-content: flex-start; -} - -.EmptyDapps { - animation: fadeIn 1s; - width: 100%; - text-align: center; - & > img { - width: 100%; - height: auto; - max-width: 360px; - opacity: 0.6; - } -} - -@keyframes fadeIn { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } -} diff --git a/packages/wallet/ui/src/views/Dashboard.jsx b/packages/wallet/ui/src/views/Dashboard.jsx deleted file mode 100644 index 775db3f1693..00000000000 --- a/packages/wallet/ui/src/views/Dashboard.jsx +++ /dev/null @@ -1,23 +0,0 @@ -import { Typography } from '@mui/material'; -import Purses from '../components/Purses'; -import Requests from '../components/Requests'; - -import './Dashboard.scss'; - -const Dashboard = () => { - return ( - <> - Dashboard - -
    - -
    -
    - -
    -
    - - ); -}; - -export default Dashboard; diff --git a/packages/wallet/ui/src/views/Dashboard.scss b/packages/wallet/ui/src/views/Dashboard.scss deleted file mode 100644 index 524a6391f68..00000000000 --- a/packages/wallet/ui/src/views/Dashboard.scss +++ /dev/null @@ -1,29 +0,0 @@ -.Content { - display: flex; - flex-direction: row-reverse; - flex-wrap: wrap; - justify-content: flex-end; - align-items: flex-start; - width: 100%; - column-gap: 16px; -} - -.Flex-item { - margin: 16px 0 0 0; - max-width: 100%; -} - -.Purses { - width: calc(100% - 448px); - min-width: 540px; -} - -@media screen and (max-width: 1280px) { - .Content { - justify-content: center; - } - - .Purses { - min-width: 100%; - } -} diff --git a/packages/wallet/ui/src/views/Issuers.jsx b/packages/wallet/ui/src/views/Issuers.jsx deleted file mode 100644 index 86ef5245793..00000000000 --- a/packages/wallet/ui/src/views/Issuers.jsx +++ /dev/null @@ -1,145 +0,0 @@ -import { useState, useReducer } from 'react'; -import { Typography } from '@mui/material'; -import { E } from '@endo/eventual-send'; -import Button from '@mui/material/Button'; -import Add from '@mui/icons-material/Add'; -import CircularProgress from '@mui/material/CircularProgress'; -import Snackbar from '@mui/material/Snackbar'; -import Card from '../components/Card'; -import CardItem from '../components/CardItem'; -import MakePurse from '../components/MakePurse'; -import ImportIssuer from '../components/ImportIssuer'; -import Loading from '../components/Loading'; -import Petname from '../components/Petname'; -import BrandIcon from '../components/BrandIcon'; -import { withApplicationContext } from '../contexts/Application'; - -import './Issuers.scss'; - -const importingIssuersReducer = (state, action) => { - return { count: state.count + action.difference }; -}; - -// Exported for testing only. -export const IssuersWithoutContext = ({ - issuers, - pendingPurseCreations, - schemaActions, - services, -}) => { - const [selectedIssuer, setSelectedIssuer] = useState(null); - const handleCreatePurse = id => setSelectedIssuer(id); - const closeMakePurse = () => setSelectedIssuer(null); - - const [isSnackbarOpen, setIsSnackbarOpen] = useState(false); - const handleCloseSnackbar = _ => { - setIsSnackbarOpen(false); - }; - const [snackbarMessage, setSnackbarMessage] = useState(''); - const showSnackbar = msg => { - setSnackbarMessage(msg); - setIsSnackbarOpen(true); - }; - - const [importingIssuers, dispatchImportingIssuers] = useReducer( - importingIssuersReducer, - { count: 0 }, - ); - const incrementImportingIssuers = () => - dispatchImportingIssuers({ difference: 1 }); - const decrementImportingIssuers = () => - dispatchImportingIssuers({ difference: -1 }); - - const [showImport, setShowImport] = useState(false); - const closeImport = () => setShowImport(false); - - const handleImport = async (petname, boardId) => { - incrementImportingIssuers(); - try { - const issuerObj = await E(services.board).getValue(boardId); - await E(schemaActions).createIssuer(issuerObj, petname); - showSnackbar('Successfully imported issuer.'); - } catch { - showSnackbar('Failed to import issuer.'); - } finally { - decrementImportingIssuers(); - } - }; - - const Issuer = (issuer, index) => { - return ( - -
    - -
    - -
    - Board ID: ({issuer.issuerBoardId}) -
    -
    -
    -
    - {pendingPurseCreations.has(issuer.id) ? ( -
    - -
    - ) : ( - - )} -
    -
    - ); - }; - - const issuerItems = (issuers && issuers.map(Issuer)) ?? ( - - ); - - return ( - <> - Asset Issuers -
    - -
    - {importingIssuers.count > 0 && } -
    -
    -
    - {issuerItems} -
    - - - - - ); -}; - -export default withApplicationContext(IssuersWithoutContext, context => ({ - issuers: context.issuers, - pendingPurseCreations: context.pendingPurseCreations, - schemaActions: context.schemaActions, - services: context.services, -})); diff --git a/packages/wallet/ui/src/views/Issuers.scss b/packages/wallet/ui/src/views/Issuers.scss deleted file mode 100644 index 8ef6735985e..00000000000 --- a/packages/wallet/ui/src/views/Issuers.scss +++ /dev/null @@ -1,49 +0,0 @@ -.Card-wrapper { - margin-top: 16px; -} - -.ImportButton { - margin-top: 16px; - display: flex; - flex-direction: row; -} - -.Left { - float: left; - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; - font-size: 16px; -} - -.Right { - margin-top: 9px; - float: right; -} - -.Left > img { - margin-right: 16px; -} - -.Board { - font-weight: 800; -} - -.Top-bar { - display: flex; - flex-direction: row; - justify-content: space-between; -} - -.IssuerProgressWrapper { - height: 30px; - text-align: center; - width: 96px; -} - -.ImportIssuerProgress { - height: 36px; - text-align: center; - margin-left: 8px; -} diff --git a/packages/wallet/ui/src/views/tests/Contacts.test.jsx b/packages/wallet/ui/src/views/tests/Contacts.test.jsx deleted file mode 100644 index 0ce6c8c566e..00000000000 --- a/packages/wallet/ui/src/views/tests/Contacts.test.jsx +++ /dev/null @@ -1,160 +0,0 @@ -import { act } from '@testing-library/react'; -import { mount } from 'enzyme'; -import CircularProgress from '@mui/material/CircularProgress'; -import Snackbar from '@mui/material/Snackbar'; -import Button from '@mui/material/Button'; -import { createTheme, ThemeProvider } from '@mui/material'; -import Contacts, { ContactsWithoutContext } from '../Contacts'; -import ImportContact from '../../components/ImportContact'; -import Loading from '../../components/Loading'; - -const contacts = [ - { - id: 0, - text: 'Self', - depositBoardId: 'board0231', - }, - { - id: 1, - text: 'Friend', - depositBoardId: 'board0564', - }, -]; - -const board = { - getValue: jest.fn(), -}; - -const services = { - board, -}; - -const schemaActions = { - createContact: jest.fn(), -}; - -const appTheme = createTheme({ - palette: { - cancel: { - main: '#595959', - }, - }, -}); - -const withApplicationContext = - (Component, _) => - ({ ...props }) => { - return ( - - - - ); - }; - -jest.mock('../../contexts/Application', () => { - return { - withApplicationContext, - ConnectionStatus: { - Connected: 'connected', - Connecting: 'connecting', - Disconnected: 'disconnected', - Error: 'error', - }, - }; -}); - -jest.mock('@endo/eventual-send', () => ({ - E: obj => - new Proxy(obj, { - get(target, propKey) { - const method = target[propKey]; - return (...args) => method.apply(this, args); - }, - }), -})); - -test('renders a loading indicator when contacts is empty', () => { - const component = mount(); - - expect(component.find(Loading)).toHaveLength(1); - expect(component.find('.Contact')).toHaveLength(0); -}); - -test('renders the contact cards', () => { - const component = mount(); - - expect(component.find('.Contact')).toHaveLength(2); - expect(component.find(Loading)).toHaveLength(0); -}); - -test('cards display the correct data', () => { - const component = mount(); - - const self = component.find('.Contact').at(0); - expect(self.text()).toContain('Self'); - expect(self.text()).toContain('Board ID: (board0231)'); -}); - -test('opens the import contact dialog when the button is clicked', async () => { - const component = mount(); - expect(component.find(ImportContact).props().isOpen).toBe(false); - - const importContactButton = component.find(Button).get(0); - await act(async () => importContactButton.props.onClick()); - component.update(); - - const importContact = component.find(ImportContact); - expect(importContact.props().isOpen).toBe(true); - - await act(async () => importContact.props().handleClose()); - component.update(); - - expect(component.find(ImportContact).props().isOpen).toBe(false); -}); - -test('shows the snackbar after successfully importing a contact', async () => { - const component = mount(); - const importContact = component.find(ImportContact); - board.getValue.mockImplementation(id => id); - let resolveContactP; - const contactP = new Promise(res => (resolveContactP = res)); - schemaActions.createContact.mockImplementation(_ => contactP); - - expect(component.find(Snackbar).props().open).toBe(false); - - act(() => { - importContact.props().handleImport('foo', 'board0231'); - }); - component.update(); - - expect(component.find(CircularProgress).length).toBe(1); - - await act(async () => resolveContactP()); - component.update(); - - const snackbar = component.find(Snackbar); - expect(board.getValue).toHaveBeenCalledWith('board0231'); - expect(schemaActions.createContact).toHaveBeenCalledWith('board0231', 'foo'); - expect(snackbar.props().open).toBe(true); - expect(snackbar.props().message).toBe('Successfully imported contact.'); - expect(component.find(CircularProgress).length).toBe(0); -}); - -test('shows the snackbar when failing to import a contact', async () => { - const component = mount(); - const importContact = component.find(ImportContact); - board.getValue.mockRejectedValue(new Error('Cannot find id')); - - await act(async () => importContact.props().handleImport('foo', 'board0231')); - component.update(); - - const snackbar = component.find(Snackbar); - expect(snackbar.props().open).toBe(true); - expect(snackbar.props().message).toBe('Failed to import contact.'); - expect(component.find(CircularProgress).length).toBe(0); -}); diff --git a/packages/wallet/ui/src/views/tests/Dapps.test.jsx b/packages/wallet/ui/src/views/tests/Dapps.test.jsx deleted file mode 100644 index 0eaece26f0e..00000000000 --- a/packages/wallet/ui/src/views/tests/Dapps.test.jsx +++ /dev/null @@ -1,91 +0,0 @@ -import { mount } from 'enzyme'; -import { act } from '@testing-library/react'; -import Button from '@mui/material/Button'; -import IconButton from '@mui/material/IconButton'; -import Popover from '@mui/material/Popover'; -import Dapps, { DappsWithoutContext } from '../Dapps'; -import Dapp from '../../components/Dapp'; -import Loading from '../../components/Loading'; - -const dapps = [ - { - id: 0, - isEnabled: true, - actions: { - delete: jest.fn(), - }, - }, - { - id: 1, - isEnabled: false, - }, - { - id: 2, - isEnabled: true, - }, -]; - -const withApplicationContext = - (Component, _) => - ({ ...props }) => { - return ; - }; - -jest.mock('../../contexts/Application', () => { - return { - withApplicationContext, - ConnectionStatus: { - Connected: 'connected', - Connecting: 'connecting', - Disconnected: 'disconnected', - Error: 'error', - }, - }; -}); - -jest.mock('@endo/eventual-send', () => ({ - E: obj => - new Proxy(obj, { - get(target, propKey) { - const method = target[propKey]; - return (...args) => method.apply(this, args); - }, - }), -})); - -test('renders a loading indicator while loading', () => { - const component = mount(); - - expect(component.find(Loading)).toHaveLength(1); - expect(component.find(Dapp)).toHaveLength(0); -}); - -test('displays the dapps', () => { - const component = mount(); - - expect(component.find(Dapp)).toHaveLength(2); -}); - -test('renders a message when there are no dapps', () => { - const component = mount(); - - expect(component.text()).toContain('No Dapps'); -}); - -test('lets you remove a dapp', async () => { - const component = mount(); - const firstDappSettingsButton = component.find(IconButton).at(0); - let firstDappPopover = component.find(Popover).at(0); - expect(firstDappPopover.props().open).toBe(false); - await act(async () => - firstDappSettingsButton - .props() - .onClick({ currentTarget: firstDappPopover.getDOMNode() }), - ); - component.update(); - - firstDappPopover = component.find(Popover).at(0); - expect(firstDappPopover.props().open).toBe(true); - await act(async () => firstDappPopover.find(Button).props().onClick()); - expect(dapps[0].actions.delete).toHaveBeenCalled(); -}); diff --git a/packages/wallet/ui/src/views/tests/Issuers.test.jsx b/packages/wallet/ui/src/views/tests/Issuers.test.jsx deleted file mode 100644 index a4427a9fb08..00000000000 --- a/packages/wallet/ui/src/views/tests/Issuers.test.jsx +++ /dev/null @@ -1,168 +0,0 @@ -import { mount } from 'enzyme'; -import { act } from '@testing-library/react'; -import CircularProgress from '@mui/material/CircularProgress'; -import Button from '@mui/material/Button'; -import { createTheme, ThemeProvider } from '@mui/material'; -import Snackbar from '@mui/material/Snackbar'; -import Issuers, { IssuersWithoutContext } from '../Issuers'; -import MakePurse from '../../components/MakePurse'; -import ImportIssuer from '../../components/ImportIssuer'; -import Loading from '../../components/Loading'; - -jest.mock('../../components/MakePurse', () => () => 'MakePurse'); - -jest.mock('@endo/eventual-send', () => ({ - E: obj => - new Proxy(obj, { - get(target, propKey) { - const method = target[propKey]; - return (...args) => method.apply(this, args); - }, - }), -})); - -const issuers = [ - { - id: 0, - issuerBoardId: '123', - issuerPetname: 'zoe invite', - }, - { - id: 1, - issuerBoardId: '456', - issuerPetname: 'RUN', - }, -]; - -const pendingPurseCreations = new Set([0]); - -const appTheme = createTheme({ - palette: { - cancel: { - main: '#595959', - }, - }, -}); - -const board = { - getValue: jest.fn(), -}; - -const services = { - board, -}; -const schemaActions = { - createIssuer: jest.fn(), -}; - -const withApplicationContext = - (Component, _) => - ({ ...props }) => { - return ( - - - - ); - }; - -jest.mock('../../contexts/Application', () => { - return { - withApplicationContext, - ConnectionStatus: { - Connected: 'connected', - Connecting: 'connecting', - Disconnected: 'disconnected', - Error: 'error', - }, - }; -}); - -test('renders a loading indicator over pending transfers', () => { - const component = mount(); - - expect(component.find(CircularProgress)).toHaveLength(1); - expect(component.find(Button)).toHaveLength(2); -}); - -test('renders a loading indicator when issuers is null', () => { - const component = mount(); - - expect(component.find(Loading)).toHaveLength(1); - expect(component.find(Button)).toHaveLength(1); -}); - -test('opens the make purse dialog when the button is clicked', async () => { - const component = mount(); - - const firstMakePurseButton = component.find(Button).get(1); - await act(async () => firstMakePurseButton.props.onClick()); - component.update(); - - const makePurse = component.find(MakePurse); - expect(makePurse.props().issuerId).toEqual(1); -}); - -test('opens the import issuer dialog when the button is clicked', async () => { - const component = mount(); - expect(component.find(ImportIssuer).props().isOpen).toBe(false); - - const importIssuersButton = component.find(Button).get(0); - await act(async () => importIssuersButton.props.onClick()); - component.update(); - - const importIssuer = component.find(ImportIssuer); - expect(importIssuer.props().isOpen).toBe(true); - - await act(async () => importIssuer.props().handleClose()); - component.update(); - - expect(component.find(ImportIssuer).props().isOpen).toBe(false); -}); - -test('shows the snackbar after successfully importing an issuer', async () => { - const component = mount(); - const importIssuer = component.find(ImportIssuer); - board.getValue.mockImplementation(id => id); - let resolveIssuerP; - const issuerP = new Promise(res => (resolveIssuerP = res)); - schemaActions.createIssuer.mockImplementation(_ => issuerP); - - expect(component.find(Snackbar).props().open).toBe(false); - - act(() => { - importIssuer.props().handleImport('foo', '123'); - }); - component.update(); - - expect(component.find(CircularProgress).length).toBe(2); - - await act(async () => resolveIssuerP()); - component.update(); - - const snackbar = component.find(Snackbar); - expect(board.getValue).toHaveBeenCalledWith('123'); - expect(schemaActions.createIssuer).toHaveBeenCalledWith('123', 'foo'); - expect(snackbar.props().open).toBe(true); - expect(snackbar.props().message).toBe('Successfully imported issuer.'); - expect(component.find(CircularProgress).length).toBe(1); -}); - -test('shows the snackbar when failing to import an issuer', async () => { - const component = mount(); - const importIssuer = component.find(ImportIssuer); - board.getValue.mockRejectedValue(new Error('Cannot find id')); - - await act(async () => importIssuer.props().handleImport('foo', '123')); - component.update(); - - const snackbar = component.find(Snackbar); - expect(snackbar.props().open).toBe(true); - expect(snackbar.props().message).toBe('Failed to import issuer.'); - expect(component.find(CircularProgress).length).toBe(1); -}); From f1ce60362aaec9f3bd2e215b07d501347ff86f9c Mon Sep 17 00:00:00 2001 From: Turadg Aleahmad Date: Mon, 31 Oct 2022 13:14:49 -0700 Subject: [PATCH 2/2] chore: yarn install --- yarn.lock | 5735 +++-------------------------------------------------- 1 file changed, 239 insertions(+), 5496 deletions(-) diff --git a/yarn.lock b/yarn.lock index 08d677ba30f..0bdd4fef0e4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -29,15 +29,6 @@ "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" -"@apideck/better-ajv-errors@^0.3.1": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.3.tgz#ab0b1e981e1749bf59736cf7ebe25cfc9f949c15" - integrity sha512-9o+HO2MbJhJHjDYZaDxJmSDckvDpiuItEsrIShV0DXeCshXWRHhqYyU/PKHMkuClOmFnZhRd6wzv4vpDu/dRKg== - dependencies: - json-schema "^0.4.0" - jsonpointer "^5.0.0" - leven "^3.1.0" - "@babel/cli@^7.12.13": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.17.10.tgz#5ea0bf6298bb78f3b59c7c06954f9bd1c79d5943" @@ -54,7 +45,7 @@ "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" chokidar "^3.4.0" -"@babel/code-frame@7.12.11", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": +"@babel/code-frame@7.12.11", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.11", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.5.5": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== @@ -66,7 +57,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== -"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.13", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": +"@babel/core@^7.12.13", "@babel/core@^7.16.0": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.9.tgz#805461f967c77ff46c74ca0460ccf4fe933ddd59" integrity sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g== @@ -96,7 +87,7 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.18.9", "@babel/generator@^7.7.2": +"@babel/generator@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.9.tgz#68337e9ea8044d6ddc690fb29acae39359cca0a5" integrity sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug== @@ -199,7 +190,7 @@ dependencies: "@babel/types" "^7.18.9" -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": +"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== @@ -312,7 +303,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.17.3", "@babel/parser@^7.18.6", "@babel/parser@^7.18.9", "@babel/parser@^7.7.0": +"@babel/parser@^7.17.3", "@babel/parser@^7.18.6", "@babel/parser@^7.18.9", "@babel/parser@^7.7.0": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== @@ -481,14 +472,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== @@ -537,13 +521,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" @@ -551,14 +528,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.12.1", "@babel/plugin-syntax-jsx@^7.12.13", "@babel/plugin-syntax-jsx@^7.17.12": +"@babel/plugin-syntax-jsx@^7.12.1", "@babel/plugin-syntax-jsx@^7.17.12": version "7.17.12" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz#834035b45061983a491f60096f61a2e7c5674a47" integrity sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog== dependencies: "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== @@ -572,7 +549,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": +"@babel/plugin-syntax-numeric-separator@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== @@ -607,14 +584,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": +"@babel/plugin-syntax-top-level-await@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.17.12", "@babel/plugin-syntax-typescript@^7.7.2": +"@babel/plugin-syntax-typescript@^7.17.12": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz#1c09cd25795c7c2b8a4ba9ae49394576d4133285" integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA== @@ -815,13 +792,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-react-constant-elements@^7.12.1": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.17.12.tgz#cc580857696b6dd9e5e3d079e673d060a0657f37" - integrity sha512-maEkX2xs2STuv2Px8QuqxqjhV2LsFobT1elCgyU5704fcyTu9DyD/bJXxD/mrRiVyhpHweOQ00OJ5FKhHq9oEw== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340" @@ -942,7 +912,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": +"@babel/preset-env@^7.16.4": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.9.tgz#9b3425140d724fbe590322017466580844c7eaff" integrity sha512-75pt/q95cMIHWssYtyfjVlvI+QEZQThQbKvR9xH+F/Agtw/s4Wfc2V9Bwd/P39VtixB7oWxGdH4GteTTwYJWMg== @@ -1034,7 +1004,7 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": +"@babel/preset-react@^7.16.0": version "7.17.12" resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.17.12.tgz#62adbd2d1870c0de3893095757ed5b00b492ab3d" integrity sha512-h5U+rwreXtZaRBEQhW1hOJLMq8XNJBQ/9oymXiCXTuT/0uOwpbT0gUt+sXeOqoXBgNuUKI7TaObVwoEyWkpFgA== @@ -1063,14 +1033,14 @@ core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.16.7", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.18.6", "@babel/template@^7.3.3": +"@babel/template@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" integrity sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw== @@ -1079,7 +1049,7 @@ "@babel/parser" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.17.3", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.13.0", "@babel/traverse@^7.17.3", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.0": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98" integrity sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg== @@ -1095,7 +1065,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": +"@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.4.4", "@babel/types@^7.7.0": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.9.tgz#7148d64ba133d8d73a41b3172ac4b83a1452205f" integrity sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg== @@ -1139,24 +1109,6 @@ elliptic "^6.5.3" libsodium-wrappers "^0.7.6" -"@cosmjs/crypto@^0.24.1": - version "0.24.1" - resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.24.1.tgz#62da59c32b26344f26b10dd31a02b93655586d04" - integrity sha512-GPhaWmQO06mXldKj/b+oKF5o3jMNfRKpAw+Q8XQhrD7ItinVPDMu8Xgl6frUXWTUdgpYwqpvqOcpm85QUsYV0Q== - dependencies: - "@cosmjs/encoding" "^0.24.1" - "@cosmjs/math" "^0.24.1" - "@cosmjs/utils" "^0.24.1" - bip39 "^3.0.2" - bn.js "^4.11.8" - elliptic "^6.5.3" - js-sha3 "^0.8.0" - libsodium-wrappers "^0.7.6" - pbkdf2 "^3.1.1" - ripemd160 "^2.0.2" - sha.js "^2.4.11" - unorm "^1.5.0" - "@cosmjs/encoding@0.29.0", "@cosmjs/encoding@^0.29.0": version "0.29.0" resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.29.0.tgz#75b1b41a2f31f71fcb0982cd1b210d6410739fd0" @@ -1166,24 +1118,6 @@ bech32 "^1.1.4" readonly-date "^1.0.0" -"@cosmjs/encoding@^0.20.0": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.20.1.tgz#1d1162b3eca51b7244cd45102e313612cea77281" - integrity sha512-aBp153iq2LD4GwDGwodDWZk/eyAUZ8J8bbiqZ1uK8rrylzm9Rdw84aa6JxykezJe+uBPtoI4lx9eH7VQXCGDXw== - dependencies: - base64-js "^1.3.0" - bech32 "^1.1.4" - readonly-date "^1.0.0" - -"@cosmjs/encoding@^0.24.1": - version "0.24.1" - resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.24.1.tgz#b30e92cdb70fc200a163b8c7aa5254606c8a09ab" - integrity sha512-PMr+gaXAuM0XgjeXwB1zdX1QI0t+PgVhbmjgI/RSgswDzdExNH97qUopecL0/HG3p64vhIT/6ZjXYYTljZL7WA== - dependencies: - base64-js "^1.3.0" - bech32 "^1.1.4" - readonly-date "^1.0.0" - "@cosmjs/json-rpc@^0.29.0": version "0.29.0" resolved "https://registry.yarnpkg.com/@cosmjs/json-rpc/-/json-rpc-0.29.0.tgz#481f282bcb3457c71f393342691e957a4fa56535" @@ -1192,18 +1126,6 @@ "@cosmjs/stream" "^0.29.0" xstream "^11.14.0" -"@cosmjs/launchpad@^0.24.0-alpha.25", "@cosmjs/launchpad@^0.24.1": - version "0.24.1" - resolved "https://registry.yarnpkg.com/@cosmjs/launchpad/-/launchpad-0.24.1.tgz#fe7e80734dfd60ea093429a646d7a38634c70134" - integrity sha512-syqVGKRH6z1vw4DdAJOSu4OgUXJdkXQozqvDde0cXYwnvhb7EXGSg5CTtp+2GqTBJuNVfMZ2DSvrC2Ig8cWBQQ== - dependencies: - "@cosmjs/crypto" "^0.24.1" - "@cosmjs/encoding" "^0.24.1" - "@cosmjs/math" "^0.24.1" - "@cosmjs/utils" "^0.24.1" - axios "^0.21.1" - fast-deep-equal "^3.1.3" - "@cosmjs/math@0.29.0", "@cosmjs/math@^0.29.0": version "0.29.0" resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.29.0.tgz#2c34f96d94055fe82ca310bec7b2d8a9f1c507cb" @@ -1211,20 +1133,6 @@ dependencies: bn.js "^5.2.0" -"@cosmjs/math@^0.20.0": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.20.1.tgz#c3c2be821b8b5dbbb9b2c0401bd9f1472e821f2a" - integrity sha512-xt7BmpSw2OVGM2+JhlJvKv9OJs9+3DqgVL6+byUDC355CSISrZhFjJg9GFko1EFssDXz5YgvBZR5FkifC0xazw== - dependencies: - bn.js "^4.11.8" - -"@cosmjs/math@^0.24.1": - version "0.24.1" - resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.24.1.tgz#9eed507885aacc9b269441fc9ecb00fb5876883a" - integrity sha512-eBQk8twgzmpHFCVkoNjTZhsZwWRbR+JXt0FhjXJoD85SBm4K8b2OnOyTg68uPHVKOJjLRwzyRVYgMrg5TBVgwQ== - dependencies: - bn.js "^4.11.8" - "@cosmjs/proto-signing@0.29.0", "@cosmjs/proto-signing@^0.29.0": version "0.29.0" resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.29.0.tgz#4d9c10fc3a5c64b454bd2d9b407861fcffdfbbe0" @@ -1238,15 +1146,6 @@ cosmjs-types "^0.5.0" long "^4.0.0" -"@cosmjs/proto-signing@^0.24.0-alpha.25": - version "0.24.1" - resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.24.1.tgz#4ee38d4e0d29c626344fb832235fda8e8d645c28" - integrity sha512-/rnyNx+FlG6b6O+igsb42eMN1/RXY+pTrNnAE8/YZaRloP9A6MXiTMO5JdYSTcjaD0mEVhejiy96bcyflKYXBg== - dependencies: - "@cosmjs/launchpad" "^0.24.1" - long "^4.0.0" - protobufjs "~6.10.2" - "@cosmjs/socket@^0.29.0": version "0.29.0" resolved "https://registry.yarnpkg.com/@cosmjs/socket/-/socket-0.29.0.tgz#6f8f56799e69ead02f9ffe8925c782804635ac89" @@ -1298,118 +1197,11 @@ readonly-date "^1.0.0" xstream "^11.14.0" -"@cosmjs/utils@^0.20.0": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.20.1.tgz#4d239b7d93c15523cdf109f225cbf61326fb69cd" - integrity sha512-xl9YnIrAAaBd6nFffwFbyrnKjqjD9zKGP8OBKxzyglxamHfqAS+PcJPEiaEpt+oUt7HAIOyhL3KK75Dh52hGvA== - -"@cosmjs/utils@^0.24.1": - version "0.24.1" - resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.24.1.tgz#0adfefe63b7f17222bc2bc12f71296f35e7ad378" - integrity sha512-VA3WFx1lMFb7esp9BqHWkDgMvHoA3D9w+uDRvWhVRpUpDc7RYHxMbWExASjz+gNblTCg556WJGzF64tXnf9tdQ== - "@cosmjs/utils@^0.29.0": version "0.29.0" resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.29.0.tgz#0a61e6d608e9f6f89a278cc71f4e7cee01199657" integrity sha512-NiJk3ISX+FU1cQcTTgmJcY84A8mV/p8L5CRewp/2jc/lUmo8j9lMGbX17U7NxVQ9RX5RmrwgdjYnBASzhRCVmA== -"@csstools/normalize.css@*": - version "12.0.0" - resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-12.0.0.tgz#a9583a75c3f150667771f30b60d9f059473e62c4" - integrity sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg== - -"@csstools/postcss-cascade-layers@^1.0.4": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.0.5.tgz#f16f2c4396ace855541e1aa693f5f27ec972e6ad" - integrity sha512-Id/9wBT7FkgFzdEpiEWrsVd4ltDxN0rI0QS0SChbeQiSuux3z21SJCRLu6h2cvCEUmaRi+VD0mHFj+GJD4GFnw== - dependencies: - "@csstools/selector-specificity" "^2.0.2" - postcss-selector-parser "^6.0.10" - -"@csstools/postcss-color-function@^1.1.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz#2bd36ab34f82d0497cfacdc9b18d34b5e6f64b6b" - integrity sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw== - dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - postcss-value-parser "^4.2.0" - -"@csstools/postcss-font-format-keywords@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz#677b34e9e88ae997a67283311657973150e8b16a" - integrity sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-hwb-function@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz#ab54a9fce0ac102c754854769962f2422ae8aa8b" - integrity sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-ic-unit@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz#28237d812a124d1a16a5acc5c3832b040b303e58" - integrity sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw== - dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - postcss-value-parser "^4.2.0" - -"@csstools/postcss-is-pseudo-class@^2.0.6": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz#846ae6c0d5a1eaa878fce352c544f9c295509cd1" - integrity sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA== - dependencies: - "@csstools/selector-specificity" "^2.0.0" - postcss-selector-parser "^6.0.10" - -"@csstools/postcss-normalize-display-values@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz#15da54a36e867b3ac5163ee12c1d7f82d4d612c3" - integrity sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-oklab-function@^1.1.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz#88cee0fbc8d6df27079ebd2fa016ee261eecf844" - integrity sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA== - dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - postcss-value-parser "^4.2.0" - -"@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz#542292558384361776b45c85226b9a3a34f276fa" - integrity sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-stepped-value-functions@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz#f8772c3681cc2befed695e2b0b1d68e22f08c4f4" - integrity sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-trigonometric-functions@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz#94d3e4774c36d35dcdc88ce091336cb770d32756" - integrity sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-unset-value@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz#c99bb70e2cdc7312948d1eb41df2412330b81f77" - integrity sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g== - -"@csstools/selector-specificity@^2.0.0", "@csstools/selector-specificity@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz#1bfafe4b7ed0f3e4105837e056e0a89b108ebe36" - integrity sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg== - "@custom-elements-manifest/analyzer@^0.4.17": version "0.4.17" resolved "https://registry.yarnpkg.com/@custom-elements-manifest/analyzer/-/analyzer-0.4.17.tgz#d5683a90b981b55d99ce28ba3c73aa93e6a30633" @@ -1462,140 +1254,11 @@ resolved "https://registry.yarnpkg.com/@datadog/sketches-js/-/sketches-js-2.1.0.tgz#8c7e8028a5fc22ad102fa542b0a446c956830455" integrity sha512-smLocSfrt3s53H/XSVP3/1kP42oqvrkjUPtyaFd1F79ux24oE31BKt+q0c6lsa6hOYrFzsIwyc5GXAI5JmfOew== -"@date-io/core@^2.13.1": - version "2.13.1" - resolved "https://registry.yarnpkg.com/@date-io/core/-/core-2.13.1.tgz#f041765aff5c55fbc7e37fdd75fc1792733426d6" - integrity sha512-pVI9nfkf2qClb2Cxdq0Q4zJhdawMG4ybWZUVGifT78FDwzRMX2SwXBb55s5NRJk0HcIicDuxktmCtemZqMH1Zg== - -"@date-io/date-fns@^2.11.0": - version "2.13.1" - resolved "https://registry.yarnpkg.com/@date-io/date-fns/-/date-fns-2.13.1.tgz#19d8a245dab61c03c95ba492d679d98d2b0b4af5" - integrity sha512-8fmfwjiLMpFLD+t4NBwDx0eblWnNcgt4NgfT/uiiQTGI81fnPu9tpBMYdAcuWxaV7LLpXgzLBx1SYWAMDVUDQQ== - dependencies: - "@date-io/core" "^2.13.1" - -"@date-io/dayjs@^2.11.0": - version "2.13.1" - resolved "https://registry.yarnpkg.com/@date-io/dayjs/-/dayjs-2.13.1.tgz#98461d22ee98179b9f2dca3b36f1b618704ae593" - integrity sha512-5bL4WWWmlI4uGZVScANhHJV7Mjp93ec2gNeUHDqqLaMZhp51S0NgD25oqj/k0LqBn1cdU2MvzNpk/ObMmVv5cQ== - dependencies: - "@date-io/core" "^2.13.1" - -"@date-io/luxon@^2.11.1": - version "2.13.1" - resolved "https://registry.yarnpkg.com/@date-io/luxon/-/luxon-2.13.1.tgz#3701b3cabfffda5102af302979aa6e58acfda91a" - integrity sha512-yG+uM7lXfwLyKKEwjvP8oZ7qblpmfl9gxQYae55ifbwiTs0CoCTkYkxEaQHGkYtTqGTzLqcb0O9Pzx6vgWg+yg== - dependencies: - "@date-io/core" "^2.13.1" - -"@date-io/moment@^2.11.0": - version "2.13.1" - resolved "https://registry.yarnpkg.com/@date-io/moment/-/moment-2.13.1.tgz#122a51e4bdedf71ff3babb264427737dc022c1e6" - integrity sha512-XX1X/Tlvl3TdqQy2j0ZUtEJV6Rl8tOyc5WOS3ki52He28Uzme4Ro/JuPWTMBDH63weSWIZDlbR7zBgp3ZA2y1A== - dependencies: - "@date-io/core" "^2.13.1" - -"@emotion/babel-plugin@^11.3.0": - version "11.3.0" - resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.3.0.tgz#3a16850ba04d8d9651f07f3fb674b3436a4fb9d7" - integrity sha512-UZKwBV2rADuhRp+ZOGgNWg2eYgbzKzQXfQPtJbu/PLy8onurxlNCLvxMQEvlr1/GudguPI5IU9qIY1+2z1M5bA== - dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/plugin-syntax-jsx" "^7.12.13" - "@babel/runtime" "^7.13.10" - "@emotion/hash" "^0.8.0" - "@emotion/memoize" "^0.7.5" - "@emotion/serialize" "^1.0.2" - babel-plugin-macros "^2.6.1" - convert-source-map "^1.5.0" - escape-string-regexp "^4.0.0" - find-root "^1.1.0" - source-map "^0.5.7" - stylis "^4.0.3" - -"@emotion/cache@^11.6.0", "@emotion/cache@^11.7.1": - version "11.7.1" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.7.1.tgz#08d080e396a42e0037848214e8aa7bf879065539" - integrity sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A== - dependencies: - "@emotion/memoize" "^0.7.4" - "@emotion/sheet" "^1.1.0" - "@emotion/utils" "^1.0.0" - "@emotion/weak-memoize" "^0.2.5" - stylis "4.0.13" - "@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== -"@emotion/is-prop-valid@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.1.1.tgz#cbd843d409dfaad90f9404e7c0404c55eae8c134" - integrity sha512-bW1Tos67CZkOURLc0OalnfxtSXQJMrAMV0jZTVGJUPSOd4qgjF3+tTD5CwJM13PHA8cltGW1WGbbvV9NpvUZPw== - dependencies: - "@emotion/memoize" "^0.7.4" - -"@emotion/memoize@^0.7.4", "@emotion/memoize@^0.7.5": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50" - integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ== - -"@emotion/react@^11.5.0": - version "11.7.0" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.7.0.tgz#b179da970ac0e8415de3ac165deadf8d9c4bf89f" - integrity sha512-WL93hf9+/2s3cA1JVJlz8+Uy6p6QWukqQFOm2OZO5ki51hfucHMOmbSjiyC3t2Y4RI8XUmBoepoc/24ny/VBbA== - dependencies: - "@babel/runtime" "^7.13.10" - "@emotion/cache" "^11.6.0" - "@emotion/serialize" "^1.0.2" - "@emotion/sheet" "^1.1.0" - "@emotion/utils" "^1.0.0" - "@emotion/weak-memoize" "^0.2.5" - hoist-non-react-statics "^3.3.1" - -"@emotion/serialize@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.0.2.tgz#77cb21a0571c9f68eb66087754a65fa97bfcd965" - integrity sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A== - dependencies: - "@emotion/hash" "^0.8.0" - "@emotion/memoize" "^0.7.4" - "@emotion/unitless" "^0.7.5" - "@emotion/utils" "^1.0.0" - csstype "^3.0.2" - -"@emotion/sheet@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.1.0.tgz#56d99c41f0a1cda2726a05aa6a20afd4c63e58d2" - integrity sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g== - -"@emotion/styled@^11.3.0": - version "11.6.0" - resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.6.0.tgz#9230d1a7bcb2ebf83c6a579f4c80e0664132d81d" - integrity sha512-mxVtVyIOTmCAkFbwIp+nCjTXJNgcz4VWkOYQro87jE2QBTydnkiYusMrRGFtzuruiGK4dDaNORk4gH049iiQuw== - dependencies: - "@babel/runtime" "^7.13.10" - "@emotion/babel-plugin" "^11.3.0" - "@emotion/is-prop-valid" "^1.1.1" - "@emotion/serialize" "^1.0.2" - "@emotion/utils" "^1.0.0" - -"@emotion/unitless@^0.7.5": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" - integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== - -"@emotion/utils@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.0.0.tgz#abe06a83160b10570816c913990245813a2fd6af" - integrity sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA== - -"@emotion/weak-memoize@^0.2.5": - version "0.2.5" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" - integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== - "@endo/base64@^0.2.27": version "0.2.27" resolved "https://registry.yarnpkg.com/@endo/base64/-/base64-0.2.27.tgz#6c68fe83092c621e2d46f77523e0e898e7f7fa68" @@ -1799,21 +1462,6 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@eslint/eslintrc@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" - integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.3.2" - globals "^13.15.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - "@esm-bundle/chai@^4.3.4": version "4.3.4" resolved "https://registry.yarnpkg.com/@esm-bundle/chai/-/chai-4.3.4.tgz#74ed4a0794b3a9f9517ff235744ac6f4be0d34dc" @@ -1916,16 +1564,7 @@ debug "^4.1.1" minimatch "^3.0.4" -"@humanwhocodes/config-array@^0.9.2": - version "0.9.5" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" - integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/object-schema@^1.2.0", "@humanwhocodes/object-schema@^1.2.1": +"@humanwhocodes/object-schema@^1.2.0": version "1.2.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== @@ -1935,59 +1574,6 @@ resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.3.tgz#f060bf6eaafae4d56a7dac618980838b0696e2ab" integrity sha512-FmuxfCuolpLl0AnQ2NHSzoUKWEJDFl63qXjzdoWBVyFCXzMGm1spBzk7LeHNoVCiWCF7mRVms9e6jEV9+MoPbg== -"@iov/crypto@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@iov/crypto/-/crypto-2.1.0.tgz#10e91b6692e154958c11626dfd096a80e8a481a4" - integrity sha512-jnb4XuK50admolm7fBxOcxfAW2TO+wYrZlhDWiMETItY/Y5gNNa1zaDSO2wNIjjfGng+8nQ1yqnNhqy7busV2Q== - dependencies: - "@iov/encoding" "^2.1.0" - bip39 "^3.0.2" - bn.js "^4.11.8" - elliptic "^6.4.0" - js-sha3 "^0.8.0" - libsodium-wrappers "^0.7.6" - pbkdf2 "^3.0.16" - ripemd160 "^2.0.2" - sha.js "^2.4.11" - type-tagger "^1.0.0" - unorm "^1.5.0" - -"@iov/encoding@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@iov/encoding/-/encoding-2.1.0.tgz#434203c39874c68bc1d96e1278251f0feb23be07" - integrity sha512-5IOdLO7Xg/uRykuiCqeMYghQ3IjWDtGxv7NTWXkgpHuna0aewx43mRpT2NPCpOZd1tpuorDtQ7/zbDNRaIIF/w== - dependencies: - base64-js "^1.3.0" - bech32 "^1.1.3" - bn.js "^4.11.8" - readonly-date "^1.0.0" - -"@iov/encoding@^2.1.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@iov/encoding/-/encoding-2.5.0.tgz#9612e529f45e63633b2375c13db28b9330ce6293" - integrity sha512-HGHLlQEvD23rFjW5PQrxD2B/6LiBHVSxqX6gjOz9KfcmIMIftRA0qROrTITfjjjUr/yZZEeNk4qjuBls9TaYcA== - dependencies: - "@cosmjs/encoding" "^0.20.0" - "@cosmjs/math" "^0.20.0" - "@cosmjs/utils" "^0.20.0" - readonly-date "^1.0.0" - -"@iov/utils@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@iov/utils/-/utils-2.0.2.tgz#3527f376d26100e07ac823bf87bebd0f24680d1c" - integrity sha512-4D8MEvTcFc/DVy5q25vHxRItmgJyeX85dixMH+MxdKr+yy71h3sYk+sVBEIn70uqGP7VqAJkGOPNFs08/XYELw== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - "@istanbuljs/schema@^0.1.2": version "0.1.3" resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" @@ -2000,227 +1586,6 @@ dependencies: requireindex "~1.1.0" -"@jest/console@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" - integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^27.5.1" - jest-util "^27.5.1" - slash "^3.0.0" - -"@jest/console@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" - integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== - dependencies: - "@jest/types" "^28.1.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - slash "^3.0.0" - -"@jest/core@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" - integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== - dependencies: - "@jest/console" "^27.5.1" - "@jest/reporters" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.8.1" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^27.5.1" - jest-config "^27.5.1" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-resolve-dependencies "^27.5.1" - jest-runner "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - jest-watcher "^27.5.1" - micromatch "^4.0.4" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" - integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== - dependencies: - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - -"@jest/fake-timers@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" - integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== - dependencies: - "@jest/types" "^27.5.1" - "@sinonjs/fake-timers" "^8.0.1" - "@types/node" "*" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-util "^27.5.1" - -"@jest/globals@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" - integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/types" "^27.5.1" - expect "^27.5.1" - -"@jest/reporters@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" - integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^5.1.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-haste-map "^27.5.1" - jest-resolve "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^8.1.0" - -"@jest/schemas@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" - integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== - dependencies: - "@sinclair/typebox" "^0.24.1" - -"@jest/source-map@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" - integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.9" - source-map "^0.6.0" - -"@jest/test-result@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" - integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== - dependencies: - "@jest/console" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-result@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" - integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== - dependencies: - "@jest/console" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" - integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== - dependencies: - "@jest/test-result" "^27.5.1" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-runtime "^27.5.1" - -"@jest/transform@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" - integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.5.1" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-regex-util "^27.5.1" - jest-util "^27.5.1" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@jest/types@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" - integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - -"@jest/types@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" - integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== - dependencies: - "@jest/schemas" "^28.1.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - "@jridgewell/gen-mapping@^0.1.0": version "0.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" @@ -2229,7 +1594,7 @@ "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": +"@jridgewell/gen-mapping@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== @@ -2248,20 +1613,12 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/source-map@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" - integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.14" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.8", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.8", "@jridgewell/trace-mapping@^0.3.9": version "0.3.14" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== @@ -2269,22 +1626,6 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@keplr-wallet/types@^0.11.7": - version "0.11.7" - resolved "https://registry.yarnpkg.com/@keplr-wallet/types/-/types-0.11.7.tgz#4fdf6dcc5f7a83ba9fd800544eaa09cdc2ceef11" - integrity sha512-2WQ91leM0IytzQbw5g8R9BCmLSfQEbZ1mSgy23L/TJII/3F7Uxv8C30T59rHt55sw0e2IabLWDkrWox+jIDvvA== - dependencies: - "@cosmjs/launchpad" "^0.24.0-alpha.25" - "@cosmjs/proto-signing" "^0.24.0-alpha.25" - axios "^0.27.2" - long "^4.0.0" - secretjs "0.17.7" - -"@leichtgewicht/ip-codec@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" - integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== - "@lerna/add@3.21.0": version "3.21.0" resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.21.0.tgz#27007bde71cc7b0a2969ab3c2f0ae41578b4577b" @@ -3127,169 +2468,28 @@ resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-2.0.2.tgz#baea7764b1adf201ce4a792fe971fd7211dad2e4" integrity sha512-fpnI00dt+yO1cKx9qBXelKhPBdEgvc8ZPav1+0r09j0woYQU2N79w/jcGawSY5UGlgQ3vjaJsFHnGbGvvqdLzg== -"@mui/base@5.0.0-alpha.58": - version "5.0.0-alpha.58" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.58.tgz#01ab59a028f314e2f9a79f903a8336ac45853652" - integrity sha512-YZorCbbzkokQZUnj+sdjUWIe+jaesuSVpKgwWS2mWdE50v1Ti/qMmevIrOT1lvFAilpj80Bkcg4KtlGWBJ6utQ== - dependencies: - "@babel/runtime" "^7.16.3" - "@emotion/is-prop-valid" "^1.1.1" - "@mui/utils" "^5.2.2" - "@popperjs/core" "^2.4.4" - clsx "^1.1.1" - prop-types "^15.7.2" - react-is "^17.0.2" - -"@mui/base@5.0.0-alpha.67": - version "5.0.0-alpha.67" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.67.tgz#da2423b96204f71cf37bcfcf3054667f38361eb8" - integrity sha512-yK2++NivZUitAVpheMc5QVuwrVCphrTw85L6qjKcvnSpB8wmVYne58CY2vzMCNEuHkuHG2jccq9/JlRZFGAanw== - dependencies: - "@babel/runtime" "^7.16.7" - "@emotion/is-prop-valid" "^1.1.1" - "@mui/utils" "^5.3.0" - "@popperjs/core" "^2.4.4" - clsx "^1.1.1" - prop-types "^15.7.2" - react-is "^17.0.2" - -"@mui/icons-material@^5.1.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.2.0.tgz#6c6135bb2d7891e29d6f9419df402b82dd663517" - integrity sha512-NvyrVaGKpP4R1yFw8BCnE0QcsQ67RtpgxPr4FtH8q60MDYPuPVczLOn5Ash5CFavoDWur/NfM/4DpT54yf3InA== - dependencies: - "@babel/runtime" "^7.16.3" +"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": + version "2.1.8-no-fsevents.3" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b" + integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ== -"@mui/lab@^5.0.0-alpha.67": - version "5.0.0-alpha.67" - resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-5.0.0-alpha.67.tgz#2b906cabf15351429c9967199e093cc510506826" - integrity sha512-pL6O2teso3tpAv38FXiFNWGcXjakgO66/Os5p2KX4QbkPKvzzeSxNU7hI02Ye8BIEYqTR5Oaz8njcdQgcNI7Cg== - dependencies: - "@babel/runtime" "^7.16.7" - "@date-io/date-fns" "^2.11.0" - "@date-io/dayjs" "^2.11.0" - "@date-io/luxon" "^2.11.1" - "@date-io/moment" "^2.11.0" - "@mui/base" "5.0.0-alpha.67" - "@mui/system" "^5.4.0" - "@mui/utils" "^5.3.0" - clsx "^1.1.1" - prop-types "^15.7.2" - react-is "^17.0.2" - react-transition-group "^4.4.2" - rifm "^0.12.1" +"@noble/hashes@^1", "@noble/hashes@^1.0.0": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" + integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== -"@mui/material@^5.1.0": - version "5.2.2" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.2.2.tgz#4dfbc9186a83e16a9dcdcc10e4a70ecaf641b1a3" - integrity sha512-vqmZq+v59CT4V84WcvYkYldnjC6uRddYx0TJqgl2h5YRbbPYCGVVywVvg9cBwxy4j5xI3F2WH6z7WGkHqkJIQA== +"@nodelib/fs.scandir@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" + integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== dependencies: - "@babel/runtime" "^7.16.3" - "@mui/base" "5.0.0-alpha.58" - "@mui/system" "^5.2.2" - "@mui/types" "^7.1.0" - "@mui/utils" "^5.2.2" - "@types/react-transition-group" "^4.4.4" - clsx "^1.1.1" - csstype "^3.0.10" - hoist-non-react-statics "^3.3.2" - prop-types "^15.7.2" - react-is "^17.0.2" - react-transition-group "^4.4.2" + "@nodelib/fs.stat" "2.0.3" + run-parallel "^1.1.9" -"@mui/private-theming@^5.2.2", "@mui/private-theming@^5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.3.0.tgz#1ec32766fc4467f221663a4945b6c972c7d2567b" - integrity sha512-EBobUEyM9fMnteKrVPp8pTMUh81xXakyfdpkoh7Y19q9JpD2eh7QGAQVJVj0JBFlcUJD60NIE4K8rdokrRmLwg== - dependencies: - "@babel/runtime" "^7.16.7" - "@mui/utils" "^5.3.0" - prop-types "^15.7.2" - -"@mui/styled-engine@^5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.3.0.tgz#b260a06398fc7335a62fd65ebbb9fc3c4071027b" - integrity sha512-I4YemFy9WnCLUdZ5T+6egpzc8e7Jq/uh9AJ3QInZHbyNu/9I2SWvNn7vHjWOT/D8Y8LMzIOhu5WwZbzjez7YRw== - dependencies: - "@babel/runtime" "^7.16.7" - "@emotion/cache" "^11.7.1" - prop-types "^15.7.2" - -"@mui/styles@^5.1.0": - version "5.2.2" - resolved "https://registry.yarnpkg.com/@mui/styles/-/styles-5.2.2.tgz#34c9ba1d6d5a0b9399fbd0c6e85b8f2dcfe54fbd" - integrity sha512-Hfg/3nAU+25RVzpgB0xyE1JjrOCI4rjujrJ0K4tS7M/U4NKZQrmtinc5ldvCaZUlxb51bZGs5V1MGn2dLKZVNQ== - dependencies: - "@babel/runtime" "^7.16.3" - "@emotion/hash" "^0.8.0" - "@mui/private-theming" "^5.2.2" - "@mui/types" "^7.1.0" - "@mui/utils" "^5.2.2" - clsx "^1.1.1" - csstype "^3.0.10" - hoist-non-react-statics "^3.3.2" - jss "^10.8.2" - jss-plugin-camel-case "^10.8.2" - jss-plugin-default-unit "^10.8.2" - jss-plugin-global "^10.8.2" - jss-plugin-nested "^10.8.2" - jss-plugin-props-sort "^10.8.2" - jss-plugin-rule-value-function "^10.8.2" - jss-plugin-vendor-prefixer "^10.8.2" - prop-types "^15.7.2" - -"@mui/system@^5.2.2", "@mui/system@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.4.0.tgz#ff79c4922b8cea8c6e05946587fa9a3b938ab729" - integrity sha512-LX7g5gK5yCwiueSUVG73uVNc0yeHjsWUIFLrnPjP3m+J7O38RkPqyao5nZahhaSL1PGNbR9+zfkxljXthO9QqA== - dependencies: - "@babel/runtime" "^7.16.7" - "@mui/private-theming" "^5.3.0" - "@mui/styled-engine" "^5.3.0" - "@mui/types" "^7.1.0" - "@mui/utils" "^5.3.0" - clsx "^1.1.1" - csstype "^3.0.10" - prop-types "^15.7.2" - -"@mui/types@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.1.0.tgz#5ed928c5a41cfbf9a4be82ea3bbdc47bcc9610d5" - integrity sha512-Hh7ALdq/GjfIwLvqH3XftuY3bcKhupktTm+S6qRIDGOtPtRuq2L21VWzOK4p7kblirK0XgGVH5BLwa6u8z/6QQ== - -"@mui/utils@^5.2.2", "@mui/utils@^5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.3.0.tgz#5f31915063d25c56f1d3ba9e289bf447472a868c" - integrity sha512-O/E9IQKPMg0OrN7+gkn7Ga5o5WA2iXQGdyqNBFPNrYzxOvwzsEtM5K7MtTCGGYKFe8mhTRM0ZOjh5OM0dglw+Q== - dependencies: - "@babel/runtime" "^7.16.7" - "@types/prop-types" "^15.7.4" - "@types/react-is" "^16.7.1 || ^17.0.0" - prop-types "^15.7.2" - react-is "^17.0.2" - -"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": - version "2.1.8-no-fsevents.3" - resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b" - integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ== - -"@noble/hashes@^1", "@noble/hashes@^1.0.0": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" - integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== - -"@nodelib/fs.scandir@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" - integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== - dependencies: - "@nodelib/fs.stat" "2.0.3" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== +"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" + integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== "@nodelib/fs.stat@^1.1.2": version "1.1.3" @@ -3553,26 +2753,6 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.0.1.tgz#9349c3860a53468fa2108b5df09aa843f22dbf94" integrity sha512-7XU1sfQ8uCVcXLxtAHA8r3qaLJ2oq7sKtEwzZhzuEXqYmjW+n+J4yM3kNo0HQo3Xp1eUe47UM6Wy6yuAvIyllg== -"@pmmmwh/react-refresh-webpack-plugin@^0.5.3": - version "0.5.7" - resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.7.tgz#58f8217ba70069cc6a73f5d7e05e85b458c150e2" - integrity sha512-bcKCAzF0DV2IIROp9ZHkRJa6O4jy7NlnHdWL3GmcUxYWNjLXkK5kfELELwEfSP5hXPfVL/qOGMAROuMQb9GG8Q== - dependencies: - ansi-html-community "^0.0.8" - common-path-prefix "^3.0.0" - core-js-pure "^3.8.1" - error-stack-parser "^2.0.6" - find-up "^5.0.0" - html-entities "^2.1.0" - loader-utils "^2.0.0" - schema-utils "^3.0.0" - source-map "^0.7.3" - -"@popperjs/core@^2.4.4": - version "2.11.0" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.0.tgz#6734f8ebc106a0860dff7f92bf90df193f0935d7" - integrity sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ== - "@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" @@ -3626,14 +2806,6 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== -"@rollup/plugin-babel@^5.2.0": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" - integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@rollup/pluginutils" "^3.1.0" - "@rollup/plugin-commonjs@^19.0.0": version "19.0.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-19.0.0.tgz#8c3e71f9a66908e60d70cc1be205834ef3e45f71" @@ -3669,7 +2841,7 @@ estree-walker "^2.0.1" magic-string "^0.25.7" -"@rollup/plugin-node-resolve@^11.0.1", "@rollup/plugin-node-resolve@^11.2.1": +"@rollup/plugin-node-resolve@^11.0.1": version "11.2.1" resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== @@ -3704,14 +2876,6 @@ is-module "^1.0.0" resolve "^1.11.1" -"@rollup/plugin-replace@^2.4.1": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" - integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - magic-string "^0.25.7" - "@rollup/pluginutils@^3.0.0", "@rollup/pluginutils@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" @@ -3726,11 +2890,6 @@ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.1.0.tgz#7f698254aadf921e48dda8c0a6b304026b8a9323" integrity sha512-JLo+Y592QzIE+q7Dl2pMUtt4q8SKYI5jDrZxrozEQxnGVOyYE+GWK9eLkwTaeN9DDctlaRAQ3TBmzZ1qdLE30A== -"@sinclair/typebox@^0.24.1": - version "0.24.20" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.20.tgz#11a657875de6008622d53f56e063a6347c51a6dd" - integrity sha512-kVaO5aEFZb33nPMTZBxiPEkY+slxiPtqC7QX8f9B3eGOMBvEfuMfxp9DSTTCsRJPumPKjrge4yagyssO4q6qzQ== - "@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.3": version "1.8.3" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" @@ -3745,7 +2904,7 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@sinonjs/fake-timers@^8.0.1", "@sinonjs/fake-timers@^8.1.0": +"@sinonjs/fake-timers@^8.1.0": version "8.1.0" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== @@ -3766,173 +2925,11 @@ resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== -"@surma/rollup-plugin-off-main-thread@^2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" - integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== - dependencies: - ejs "^3.1.6" - json5 "^2.2.0" - magic-string "^0.25.0" - string.prototype.matchall "^4.0.6" - -"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" - integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== - -"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" - integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== - -"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" - integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== - -"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" - integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== - -"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" - integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== - -"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" - integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== - -"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" - integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== - -"@svgr/babel-plugin-transform-svg-component@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" - integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== - -"@svgr/babel-preset@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" - integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" - "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" - "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" - "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" - "@svgr/babel-plugin-transform-svg-component" "^5.5.0" - -"@svgr/core@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" - integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== - dependencies: - "@svgr/plugin-jsx" "^5.5.0" - camelcase "^6.2.0" - cosmiconfig "^7.0.0" - -"@svgr/hast-util-to-babel-ast@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" - integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== - dependencies: - "@babel/types" "^7.12.6" - -"@svgr/plugin-jsx@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" - integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== - dependencies: - "@babel/core" "^7.12.3" - "@svgr/babel-preset" "^5.5.0" - "@svgr/hast-util-to-babel-ast" "^5.5.0" - svg-parser "^2.0.2" - -"@svgr/plugin-svgo@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" - integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== - dependencies: - cosmiconfig "^7.0.0" - deepmerge "^4.2.2" - svgo "^1.2.2" - -"@svgr/webpack@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" - integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== - dependencies: - "@babel/core" "^7.12.3" - "@babel/plugin-transform-react-constant-elements" "^7.12.1" - "@babel/preset-env" "^7.12.1" - "@babel/preset-react" "^7.12.5" - "@svgr/core" "^5.5.0" - "@svgr/plugin-jsx" "^5.5.0" - "@svgr/plugin-svgo" "^5.5.0" - loader-utils "^2.0.0" - -"@testing-library/dom@^7.28.1": - version "7.31.2" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.31.2.tgz#df361db38f5212b88555068ab8119f5d841a8c4a" - integrity sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^4.2.0" - aria-query "^4.2.2" - chalk "^4.1.0" - dom-accessibility-api "^0.5.6" - lz-string "^1.4.4" - pretty-format "^26.6.2" - -"@testing-library/jest-dom@^5.11.4": - version "5.16.4" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.4.tgz#938302d7b8b483963a3ae821f1c0808f872245cd" - integrity sha512-Gy+IoFutbMQcky0k+bqqumXZ1cTGswLsFqmNLzNdSKkU9KGV2u9oXhukCbbJ9/LRPKiqwxEE8VpV/+YZlfkPUA== - dependencies: - "@babel/runtime" "^7.9.2" - "@types/testing-library__jest-dom" "^5.9.1" - aria-query "^5.0.0" - chalk "^3.0.0" - css "^3.0.0" - css.escape "^1.5.1" - dom-accessibility-api "^0.5.6" - lodash "^4.17.15" - redent "^3.0.0" - -"@testing-library/react@^11.1.0": - version "11.2.7" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-11.2.7.tgz#b29e2e95c6765c815786c0bc1d5aed9cb2bf7818" - integrity sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA== - dependencies: - "@babel/runtime" "^7.12.5" - "@testing-library/dom" "^7.28.1" - -"@testing-library/user-event@^12.1.10": - version "12.8.3" - resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-12.8.3.tgz#1aa3ed4b9f79340a1e1836bc7f57c501e838704a" - integrity sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ== - dependencies: - "@babel/runtime" "^7.12.5" - "@tootallnate/once@1": version "1.1.2" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== - "@tsd/typescript@~4.7.4": version "4.7.4" resolved "https://registry.yarnpkg.com/@tsd/typescript/-/typescript-4.7.4.tgz#f1e4e6c3099a174a0cb7aa51cf53f34f6494e528" @@ -3945,49 +2942,11 @@ dependencies: "@types/node" "*" -"@types/aria-query@^4.2.0": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" - integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== - "@types/babel__code-frame@^7.0.2": version "7.0.3" resolved "https://registry.yarnpkg.com/@types/babel__code-frame/-/babel__code-frame-7.0.3.tgz#eda94e1b7c9326700a4b69c485ebbc9498a0b63f" integrity sha512-2TN6oiwtNjOezilFVl77zwdNPwQWaDBBCCWWxyo1ctiO3vAtd7H/aB/CBJdw9+kqq3+latD0SXoedIuHySSZWw== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.1.19" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" - integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.3.tgz#f456b4b2ce79137f768aa130d2423d2f0ccfaba5" - integrity sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" - integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== - dependencies: - "@babel/types" "^7.3.0" - "@types/better-sqlite3@^7.5.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@types/better-sqlite3/-/better-sqlite3-7.6.0.tgz#603d1c7a72527dd946e2bf641ed4c0b74a547423" @@ -4003,13 +2962,6 @@ "@types/connect" "*" "@types/node" "*" -"@types/bonjour@^3.5.9": - version "3.5.10" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" - integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== - dependencies: - "@types/node" "*" - "@types/chai-dom@^0.0.9": version "0.0.9" resolved "https://registry.yarnpkg.com/@types/chai-dom/-/chai-dom-0.0.9.tgz#77379354efec2568284ca355fff6a4f85f5a66f4" @@ -4035,14 +2987,6 @@ resolved "https://registry.yarnpkg.com/@types/command-line-args/-/command-line-args-5.2.0.tgz#adbb77980a1cc376bb208e3f4142e907410430f6" integrity sha512-UuKzKpJJ/Ief6ufIaIzr3A/0XnluX7RvFgwkV89Yzvm77wCh1kFaFmqN8XEnGcN62EuHdedQjEMb8mYxFLGPyA== -"@types/connect-history-api-fallback@^1.3.5": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" - integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== - dependencies: - "@types/express-serve-static-core" "*" - "@types/node" "*" - "@types/connect@*": version "3.4.35" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" @@ -4075,22 +3019,6 @@ resolved "https://registry.yarnpkg.com/@types/debounce/-/debounce-1.2.0.tgz#9ee99259f41018c640b3929e1bb32c3dcecdb192" integrity sha512-bWG5wapaWgbss9E238T0R6bfo5Fh3OkeoSt245CM7JJwVwpw6MEBCbIxLq5z8KzsE3uJhzcIuQkyiZmzV3M/Dw== -"@types/eslint-scope@^3.7.3": - version "3.7.4" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" - integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": - version "8.4.5" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.5.tgz#acdfb7dd36b91cc5d812d7c093811a8f3d9b31e4" - integrity sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - "@types/eslint@^7.2.13": version "7.29.0" resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.29.0.tgz#e56ddc8e542815272720bb0b4ccc2aff9c3e1c78" @@ -4099,7 +3027,7 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^0.0.51": +"@types/estree@*": version "0.0.51" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== @@ -4114,7 +3042,7 @@ resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": +"@types/express-serve-static-core@^4.17.18": version "4.17.29" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz#2a1795ea8e9e9c91b4a4bbe475034b20c1ec711c" integrity sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q== @@ -4123,7 +3051,7 @@ "@types/qs" "*" "@types/range-parser" "*" -"@types/express@*", "@types/express@^4.17.13": +"@types/express@*": version "4.17.13" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== @@ -4142,18 +3070,6 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/graceful-fs@^4.1.2": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" - integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== - dependencies: - "@types/node" "*" - -"@types/html-minifier-terser@^6.0.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" - integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== - "@types/http-assert@*": version "1.5.3" resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.3.tgz#ef8e3d1a8d46c387f04ab0f2e8ab8cb0c5078661" @@ -4171,7 +3087,7 @@ dependencies: "@types/node" "*" -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1", "@types/istanbul-lib-coverage@^2.0.3": +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.1", "@types/istanbul-lib-coverage@^2.0.3": version "2.0.4" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== @@ -4190,15 +3106,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@*": - version "27.0.3" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.0.3.tgz#0cf9dfe9009e467f70a342f0f94ead19842a783a" - integrity sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg== - dependencies: - jest-diff "^27.0.0" - pretty-format "^27.0.0" - -"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== @@ -4269,16 +3177,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.7.10.tgz#7aa732cc47341c12a16b7d562f519c2383b6d4fc" integrity sha512-S63Dlv4zIPb8x6MMTgDq5WWRJQe56iBEY0O3SOFA9JrRienkOVDXSXBjjJw6HTNQYSE2JI6GMCR6LVbIMHJVvA== -"@types/node@11.11.6": - version "11.11.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" - integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== - -"@types/node@^13.7.0": - version "13.13.52" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.52.tgz#03c13be70b9031baaed79481c0c0cfb0045e53f7" - integrity sha512-s3nugnZumCC//n4moGGe6tkNMyYEdaDBitVjwPxXmR5lnMG5dHePinH2EdxkG3Rh1ghFHHixAG4NJhpJW1rthQ== - "@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" @@ -4306,21 +3204,11 @@ resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.1.tgz#f8ae4fbcd2b9ba4ff934698e28778961f9cb22ca" integrity sha512-ARATsLdrGPUnaBvxLhUlnltcMgn7pQG312S8ccdYlnyijabrX9RN/KN/iGj9Am96CoW8e/K9628BA7Bv4XHdrA== -"@types/prettier@^2.1.5": - version "2.6.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.3.tgz#68ada76827b0010d0db071f739314fa429943d0a" - integrity sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg== - -"@types/prop-types@*", "@types/prop-types@^15.7.4": +"@types/prop-types@*": version "15.7.4" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== -"@types/q@^1.5.1": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" - integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== - "@types/qs@*": version "6.9.7" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" @@ -4331,14 +3219,7 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== -"@types/react-is@^16.7.1 || ^17.0.0": - version "17.0.3" - resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-17.0.3.tgz#2d855ba575f2fc8d17ef9861f084acc4b90a137a" - integrity sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw== - dependencies: - "@types/react" "*" - -"@types/react-transition-group@^4.2.0", "@types/react-transition-group@^4.4.4": +"@types/react-transition-group@^4.2.0": version "4.4.4" resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.4.tgz#acd4cceaa2be6b757db61ed7b432e103242d163e" integrity sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug== @@ -4368,24 +3249,12 @@ dependencies: "@types/node" "*" -"@types/retry@0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== - "@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/serve-index@^1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" - integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== - dependencies: - "@types/express" "*" - -"@types/serve-static@*", "@types/serve-static@^1.13.10": +"@types/serve-static@*": version "1.13.10" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== @@ -4408,25 +3277,6 @@ dependencies: "@sinonjs/fake-timers" "^7.1.0" -"@types/sockjs@^0.3.33": - version "0.3.33" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" - integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== - dependencies: - "@types/node" "*" - -"@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== - -"@types/testing-library__jest-dom@^5.9.1": - version "5.14.1" - resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.1.tgz#014162a5cee6571819d48e999980694e2f657c3c" - integrity sha512-Gk9vaXfbzc5zCXI9eYE9BI5BNHEp4D3FWjgqBE/ePGYElLAP+KvxBcsdkwfIVvezs605oiyd/VrpiHe3Oeg+Aw== - dependencies: - "@types/jest" "*" - "@types/tmp@^0.2.0": version "0.2.1" resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.2.1.tgz#83ecf4ec22a8c218c71db25f316619fe5b986011" @@ -4444,39 +3294,6 @@ dependencies: "@types/node" "*" -"@types/ws@^8.5.1": - version "8.5.3" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" - integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "20.2.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" - integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== - -"@types/yargs@^15.0.0": - version "15.0.14" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" - integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^16.0.0": - version "16.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" - integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^17.0.8": - version "17.0.10" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.10.tgz#591522fce85d8739bca7b8bb90d048e4478d186a" - integrity sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA== - dependencies: - "@types/yargs-parser" "*" - "@types/yauzl@^2.9.1": version "2.9.2" resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.2.tgz#c48e5d56aff1444409e39fa164b0b4d4552a7b7a" @@ -4740,142 +3557,11 @@ portfinder "^1.0.28" source-map "^0.7.3" -"@webassemblyjs/ast@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" - integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - -"@webassemblyjs/floating-point-hex-parser@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" - integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== - -"@webassemblyjs/helper-api-error@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" - integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== - -"@webassemblyjs/helper-buffer@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" - integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== - -"@webassemblyjs/helper-numbers@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" - integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" - integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== - -"@webassemblyjs/helper-wasm-section@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" - integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - -"@webassemblyjs/ieee754@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" - integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" - integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" - integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== - -"@webassemblyjs/wasm-edit@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" - integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/helper-wasm-section" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-opt" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - "@webassemblyjs/wast-printer" "1.11.1" - -"@webassemblyjs/wasm-gen@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" - integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wasm-opt@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" - integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - -"@webassemblyjs/wasm-parser@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" - integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wast-printer@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" - integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@xtuc/long" "4.2.2" - "@webcomponents/scoped-custom-element-registry@0.0.2": version "0.0.2" resolved "https://registry.yarnpkg.com/@webcomponents/scoped-custom-element-registry/-/scoped-custom-element-registry-0.0.2.tgz#c863d163cb39c60063808e5ae23e06a1766fbe5f" integrity sha512-lKCoZfKoE3FHvmmj2ytaLBB8Grxp4HaxfSzaGlIZN6xXnOILfpCO0PFJkAxanefLGJWMho4kRY5PhgxWFhmSOw== -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - "@yarnpkg/lockfile@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" @@ -4898,17 +3584,12 @@ JSONStream@^1.0.4, JSONStream@^1.3.4: jsonparse "^1.2.0" through ">=2.2.7 <3" -abab@^2.0.3, abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== - abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -accepts@^1.3.5, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: +accepts@^1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== @@ -4916,61 +3597,21 @@ accepts@^1.3.5, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -acorn-import-assertions@^1.7.6: - version "1.8.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" - integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== - -acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: +acorn-jsx@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-node@^1.8.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" - integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== - dependencies: - acorn "^7.0.0" - acorn-walk "^7.0.0" - xtend "^4.0.2" - -acorn-walk@^7.0.0, acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - acorn-walk@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^7.0.0, acorn@^7.1.1, acorn@^7.4.0, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1: +acorn@^7.4.0, acorn@^8.2.4, acorn@^8.7.1: version "8.7.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== -address@^1.0.1, address@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/address/-/address-1.2.0.tgz#d352a62c92fee90f89a693eccd2a8b2139ab02d9" - integrity sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig== - -adjust-sourcemap-loader@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99" - integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== - dependencies: - loader-utils "^2.0.0" - regex-parser "^2.2.11" - agent-base@4, agent-base@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" @@ -5039,26 +3680,7 @@ airbnb-prop-types@^2.16.0: prop-types-exact "^1.2.0" react-is "^16.13.1" -ajv-formats@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - -ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv-keywords@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== - dependencies: - fast-deep-equal "^3.1.3" - -ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.5: +ajv@^6.10.0, ajv@^6.12.4, ajv@^6.5.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -5068,7 +3690,7 @@ ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.0.1, ajv@^8.6.0, ajv@^8.8.0: +ajv@^8.0.1: version "8.11.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== @@ -5093,18 +3715,13 @@ ansi-escapes@^3.2.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0, ansi-escapes@^4.3.1: +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: type-fest "^0.21.3" -ansi-html-community@^0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" - integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== - ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -5120,7 +3737,7 @@ ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== -ansi-regex@^5.0.0, ansi-regex@^5.0.1: +ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== @@ -5144,11 +3761,6 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -ansi-styles@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.1.0.tgz#a436bcc51d81f4fab5080b2ba94242e377c41573" - integrity sha512-osxifZo3ar56+e8tdYreU6p8FZGciBHo5O0JoDAxMUqZuyNUb+yHEwYtJZ+Z32R459jEgtwVf1u8D7qYwU0l6w== - ansi-styles@^6.0.0, ansi-styles@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3" @@ -5164,7 +3776,7 @@ anylogger@^0.21.0: resolved "https://registry.yarnpkg.com/anylogger/-/anylogger-0.21.0.tgz#b6cbea631cd5e1c884e5c0fa007d80bde1b22bd4" integrity sha512-XJVplwflEff43l7aE48lW9gNoS0fpb1Ha4WttzjfTFlN3uJUIKALZ5oNWtwgRXPm/Q2dbp1EIddMbQ/AGHVX1A== -anymatch@^3.0.3, anymatch@~3.1.2: +anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== @@ -5190,11 +3802,6 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" -arg@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" - integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -5202,11 +3809,6 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - aria-query@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" @@ -5215,11 +3817,6 @@ aria-query@^4.2.2: "@babel/runtime" "^7.10.2" "@babel/runtime-corejs3" "^7.10.2" -aria-query@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.0.0.tgz#210c21aaf469613ee8c9a62c7f86525e058db52c" - integrity sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg== - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -5265,11 +3862,6 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= -array-flatten@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - array-ify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" @@ -5349,7 +3941,7 @@ arrify@^3.0.0: resolved "https://registry.yarnpkg.com/arrify/-/arrify-3.0.0.tgz#ccdefb8eaf2a1d2ab0da1ca2ce53118759fd46bc" integrity sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw== -asap@^2.0.0, asap@~2.0.6: +asap@^2.0.0: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= @@ -5388,21 +3980,11 @@ async@^2.6.2: dependencies: lodash "^4.17.14" -async@^3.2.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - atob-lite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" @@ -5413,18 +3995,6 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^10.4.7: - version "10.4.7" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf" - integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA== - dependencies: - browserslist "^4.20.3" - caniuse-lite "^1.0.30001335" - fraction.js "^4.2.0" - normalize-range "^0.1.2" - picocolors "^1.0.0" - postcss-value-parser "^4.2.0" - ava@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/ava/-/ava-4.3.1.tgz#376a788a5a863c39a9dd2dab9fcbbbcf94bf6c38" @@ -5491,28 +4061,13 @@ axe-core@^4.0.2, axe-core@^4.3.5: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.5.tgz#78d6911ba317a8262bfee292aeafcc1e04b49cc5" integrity sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA== -axios@0.21.1: - version "0.21.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" - integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== - dependencies: - follow-redirects "^1.10.0" - -axios@^0.21.1, axios@^0.21.2: +axios@^0.21.2: version "0.21.4" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== dependencies: follow-redirects "^1.14.0" -axios@^0.27.2: - version "0.27.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" - integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== - dependencies: - follow-redirects "^1.14.9" - form-data "^4.0.0" - axobject-query@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" @@ -5530,30 +4085,6 @@ babel-eslint@^10.0.3, babel-eslint@^10.1.0: eslint-visitor-keys "^1.0.0" resolve "^1.12.0" -babel-jest@^27.4.2, babel-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" - integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== - dependencies: - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^27.5.1" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-loader@^8.2.3: - version "8.2.5" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" - integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ== - dependencies: - find-cache-dir "^3.3.1" - loader-utils "^2.0.0" - make-dir "^3.1.0" - schema-utils "^2.6.5" - babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" @@ -5561,36 +4092,6 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" - integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" - -babel-plugin-macros@^2.6.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" - integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== - dependencies: - "@babel/runtime" "^7.7.2" - cosmiconfig "^6.0.0" - resolve "^1.12.0" - babel-plugin-macros@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" @@ -5600,7 +4101,7 @@ babel-plugin-macros@^3.1.0: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-named-asset-import@^0.3.7, babel-plugin-named-asset-import@^0.3.8: +babel-plugin-named-asset-import@^0.3.7: version "0.3.8" resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== @@ -5634,32 +4135,6 @@ babel-plugin-transform-react-remove-prop-types@^0.4.24: resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" - integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== - dependencies: - babel-plugin-jest-hoist "^27.5.1" - babel-preset-current-node-syntax "^1.0.0" - babel-preset-react-app@^10.0.0, babel-preset-react-app@^10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz#ed6005a20a24f2c88521809fa9aea99903751584" @@ -5687,7 +4162,7 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.0.2, base64-js@^1.3.0, base64-js@^1.3.1: +base64-js@^1.3.0, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -5712,11 +4187,6 @@ basic-auth@~2.0.0: dependencies: safe-buffer "5.1.2" -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" @@ -5724,7 +4194,7 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -bech32@^1.1.3, bech32@^1.1.4: +bech32@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== @@ -5742,21 +4212,6 @@ better-sqlite3@^7.5.0: bindings "^1.5.0" prebuild-install "^7.0.0" -bfj@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2" - integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== - dependencies: - bluebird "^3.5.5" - check-types "^11.1.1" - hoopy "^0.1.4" - tryer "^1.0.1" - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - binary-extensions@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" @@ -5769,16 +4224,6 @@ bindings@^1.2.1, bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -bip39@^3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.4.tgz#5b11fed966840b5e1b8539f0f54ab6392969b2a0" - integrity sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw== - dependencies: - "@types/node" "11.11.6" - create-hash "^1.1.0" - pbkdf2 "^3.0.9" - randombytes "^2.0.1" - bl@^4.0.3, bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" @@ -5798,7 +4243,7 @@ blueimp-md5@^2.10.0: resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.17.0.tgz#f4fcac088b115f7b4045f19f5da59e9d01b1bb96" integrity sha512-x5PKJHY5rHQYaADj6NwPUR2QRCUVSggPzrUKkeENpj871o9l9IefJbO2jkT5UvYykeOK9dx0VmkIo6dZ+vThYw== -bn.js@^4.11.8, bn.js@^4.11.9: +bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== @@ -5826,17 +4271,7 @@ body-parser@1.20.0: type-is "~1.6.18" unpipe "1.0.0" -bonjour-service@^1.0.11: - version "1.0.13" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.0.13.tgz#4ac003dc1626023252d58adf2946f57e5da450c1" - integrity sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA== - dependencies: - array-flatten "^2.1.2" - dns-equal "^1.0.0" - fast-deep-equal "^3.1.3" - multicast-dns "^7.2.5" - -boolbase@^1.0.0, boolbase@~1.0.0: +boolbase@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= @@ -5849,13 +4284,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -5884,17 +4312,12 @@ brorand@^1.1.0: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.18.1, browserslist@^4.20.2, browserslist@^4.20.3, browserslist@^4.21.0, browserslist@^4.21.2: +browserslist@^4.20.2, browserslist@^4.21.2: version "4.21.2" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.2.tgz#59a400757465535954946a400b841ed37e2b4ecf" integrity sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA== @@ -5904,13 +4327,6 @@ browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4 node-releases "^2.0.6" update-browserslist-db "^1.0.4" -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - btoa-lite@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" @@ -5926,14 +4342,6 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -buffer@6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - buffer@^5.2.1, buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" @@ -5942,14 +4350,6 @@ buffer@^5.2.1, buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -buffer@~5.4.3: - version "5.4.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.4.3.tgz#3fbc9c69eb713d323e3fc1a895eee0710c072115" - integrity sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - bufferfromfile@agoric-labs/BufferFromFile#Agoric-built: version "0.4.360" resolved "https://codeload.github.com/agoric-labs/BufferFromFile/tar.gz/620ad350bfa6789b297ebab937e22d582fbd19ba" @@ -5985,11 +4385,6 @@ byte-size@^5.0.1: resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-5.0.1.tgz#4b651039a5ecd96767e71a3d7ed380e48bed4191" integrity sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw== -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -6123,19 +4518,6 @@ callsites@^4.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-4.0.0.tgz#8014cea4fedfe681a30e2f7d2d557dd95808a92a" integrity sha512-y3jRROutgpKdz5vzEhWM34TidDU8vkJppF8dszITeb1PQmSqV3DTxyV8G/lyO/DNvtE1YTedehmw9MPZsCBHxQ== -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase-css@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" - integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== - camelcase-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" @@ -6177,31 +4559,16 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.2.0, camelcase@^6.2.1: +camelcase@^6.2.0: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001366: +caniuse-lite@^1.0.30001366: version "1.0.30001367" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001367.tgz#2b97fe472e8fa29c78c5970615d7cd2ee414108a" integrity sha512-XDgbeOHfifWV3GEES2B8rtsrADx4Jf+juKX2SICJcaUhjYBO3bR96kvEIHa15VU6ohtOhBZuPGGYGbXMRn0NCw== -case-sensitive-paths-webpack-plugin@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" - integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== - caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -6230,15 +4597,7 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -6251,16 +4610,6 @@ chalk@^5.0.1: resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.0.1.tgz#ca57d71e82bb534a296df63bbacc4a1c22b2a4b6" integrity sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w== -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -char-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.1.tgz#6dafdb25f9d3349914079f010ba8d0e6ff9cd01e" - integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== - charcodes@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/charcodes/-/charcodes-0.2.0.tgz#5208d327e6cc05f99eb80ffc814707572d1f14e4" @@ -6271,16 +4620,6 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -charenc@~0.0.1: - version "0.0.2" - resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" - integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== - -check-types@^11.1.1: - version "11.1.2" - resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f" - integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ== - cheerio-select-tmp@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/cheerio-select-tmp/-/cheerio-select-tmp-0.1.1.tgz#55bbef02a4771710195ad736d5e346763ca4e646" @@ -6305,7 +4644,7 @@ cheerio@^1.0.0-rc.3: parse5 "^6.0.0" parse5-htmlparser2-tree-adapter "^6.0.0" -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.0, chokidar@^3.4.2, chokidar@^3.4.3, chokidar@^3.5.2, chokidar@^3.5.3: +chokidar@^3.4.0, chokidar@^3.4.3, chokidar@^3.5.2, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -6340,11 +4679,6 @@ chrome-launcher@^0.15.0: is-wsl "^2.2.0" lighthouse-logger "^1.0.0" -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - chunkd@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/chunkd/-/chunkd-2.0.1.tgz#49cd1d7b06992dc4f7fccd962fe2a101ee7da920" @@ -6355,7 +4689,7 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -ci-info@^3.2.0, ci-info@^3.3.1: +ci-info@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== @@ -6365,19 +4699,6 @@ ci-parallel-vars@^1.0.1: resolved "https://registry.yarnpkg.com/ci-parallel-vars/-/ci-parallel-vars-1.0.1.tgz#e87ff0625ccf9d286985b29b4ada8485ca9ffbc2" integrity sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg== -cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -cjs-module-lexer@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" - integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== - class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -6388,13 +4709,6 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -clean-css@^5.2.2: - version "5.3.1" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.1.tgz#d0610b0b90d125196a2894d35366f734e5d7aa32" - integrity sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg== - dependencies: - source-map "~0.6.0" - clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -6514,15 +4828,6 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - code-excerpt@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/code-excerpt/-/code-excerpt-4.0.0.tgz#2de7d46e98514385cb01f7b3b741320115f4c95e" @@ -6535,11 +4840,6 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -6567,26 +4867,16 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@^1.1.4, color-name@~1.1.4: +color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colord@^2.9.1: - version "2.9.2" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" - integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== - colorette@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== -colorette@^2.0.10: - version "2.0.19" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" - integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== - columnify@^1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" @@ -6595,7 +4885,7 @@ columnify@^1.5.4: strip-ansi "^3.0.0" wcwidth "^1.0.0" -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: +combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -6642,16 +4932,6 @@ commander@^6.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -commander@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - comment-parser@1.3.1, comment-parser@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.3.1.tgz#3d7ea3adaf9345594aedee6563f422348f165c1b" @@ -6662,11 +4942,6 @@ common-path-prefix@^3.0.0: resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== -common-tags@^1.8.0: - version "1.8.2" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" - integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== - commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -6693,26 +4968,6 @@ component-emitter@^1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -6765,11 +5020,6 @@ confusing-browser-globals@^1.0.10, confusing-browser-globals@^1.0.11: resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== -connect-history-api-fallback@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" - integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== - console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" @@ -6879,7 +5129,7 @@ conventional-recommended-bump@^5.0.0: meow "^4.0.0" q "^1.5.1" -convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.1.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== @@ -6934,16 +5184,11 @@ core-js-compat@^3.21.0, core-js-compat@^3.22.1: browserslist "^4.21.2" semver "7.0.0" -core-js-pure@^3.20.2, core-js-pure@^3.8.1: +core-js-pure@^3.20.2: version "3.23.5" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.23.5.tgz#23daaa9af9230e50f10b0fa4b8e6b87402be4c33" integrity sha512-8t78LdpKSuCq4pJYCYk8hl7XEkAX+BP16yRIwL3AanTksxuEf7CM83vRyctmiEL8NDZ3jpUcv56fk9/zG3aIuw== -core-js@^3.19.2: - version "3.23.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.23.5.tgz#1f82b0de5eece800827a2f59d597509c67650475" - integrity sha512-7Vh11tujtAZy82da4duVreQysIoO2EvVrur7y6IzZkH1IHPSekuDi8Vuw1+YKjkbfWLRD7Nc9ICQ/sIUDutcyg== - core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -6959,17 +5204,6 @@ cosmiconfig@^5.1.0: js-yaml "^3.13.1" parse-json "^4.0.0" -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - cosmiconfig@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" @@ -6989,29 +5223,6 @@ cosmjs-types@^0.5.0: long "^4.0.0" protobufjs "~6.11.2" -create-hash@^1.1.0, create-hash@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.4: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -7023,7 +5234,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -7032,86 +5243,11 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crypt@~0.0.1: - version "0.0.2" - resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" - integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== - -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - crypto-randomuuid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/crypto-randomuuid/-/crypto-randomuuid-1.0.0.tgz#acf583e5e085e867ae23e107ff70279024f9e9e7" integrity sha512-/RC5F4l1SCqD/jazwUF6+t34Cd8zTSAGZ7rvvZu1whZUhD2a5MOGKjSGowoGcpj/cbVZk1ZODIooJEQQq3nNAA== -css-blank-pseudo@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz#36523b01c12a25d812df343a32c322d2a2324561" - integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ== - dependencies: - postcss-selector-parser "^6.0.9" - -css-declaration-sorter@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz#72ebd995c8f4532ff0036631f7365cce9759df14" - integrity sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og== - -css-has-pseudo@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz#57f6be91ca242d5c9020ee3e51bbb5b89fc7af73" - integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw== - dependencies: - postcss-selector-parser "^6.0.9" - -css-loader@^6.5.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" - integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== - dependencies: - icss-utils "^5.1.0" - postcss "^8.4.7" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.0" - postcss-modules-scope "^3.0.0" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.2.0" - semver "^7.3.5" - -css-minimizer-webpack-plugin@^3.2.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" - integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== - dependencies: - cssnano "^5.0.6" - jest-worker "^27.0.2" - postcss "^8.3.5" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - source-map "^0.6.1" - -css-prefers-color-scheme@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349" - integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - css-select@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/css-select/-/css-select-3.1.2.tgz#d52cbdc6fee379fba97fb0d3925abbd18af2d9d8" @@ -7123,33 +5259,6 @@ css-select@^3.1.2: domutils "^2.4.3" nth-check "^2.0.0" -css-select@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" - integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== - dependencies: - boolbase "^1.0.0" - css-what "^5.0.0" - domhandler "^4.2.0" - domutils "^2.6.0" - nth-check "^2.0.0" - -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - 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" @@ -7158,133 +5267,21 @@ css-vendor@^2.0.8: "@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" - integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== - css-what@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-4.0.0.tgz#35e73761cab2eeb3d3661126b23d7aa0e8432233" integrity sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A== -css-what@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" - integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== - -css.escape@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" - integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= - -css@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" - integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== - dependencies: - inherits "^2.0.4" - source-map "^0.6.1" - source-map-resolve "^0.6.0" - -cssdb@^6.6.3: - version "6.6.3" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-6.6.3.tgz#1f331a2fab30c18d9f087301e6122a878bb1e505" - integrity sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^5.2.12: - version "5.2.12" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz#ebe6596ec7030e62c3eb2b3c09f533c0644a9a97" - integrity sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew== - dependencies: - css-declaration-sorter "^6.3.0" - cssnano-utils "^3.1.0" - postcss-calc "^8.2.3" - postcss-colormin "^5.3.0" - postcss-convert-values "^5.1.2" - postcss-discard-comments "^5.1.2" - postcss-discard-duplicates "^5.1.0" - postcss-discard-empty "^5.1.1" - postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.6" - postcss-merge-rules "^5.1.2" - postcss-minify-font-values "^5.1.0" - postcss-minify-gradients "^5.1.1" - postcss-minify-params "^5.1.3" - postcss-minify-selectors "^5.2.1" - postcss-normalize-charset "^5.1.0" - postcss-normalize-display-values "^5.1.0" - postcss-normalize-positions "^5.1.1" - postcss-normalize-repeat-style "^5.1.1" - postcss-normalize-string "^5.1.0" - postcss-normalize-timing-functions "^5.1.0" - postcss-normalize-unicode "^5.1.0" - postcss-normalize-url "^5.1.0" - postcss-normalize-whitespace "^5.1.1" - postcss-ordered-values "^5.1.3" - postcss-reduce-initial "^5.1.0" - postcss-reduce-transforms "^5.1.0" - postcss-svgo "^5.1.0" - postcss-unique-selectors "^5.1.1" - -cssnano-utils@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" - integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== - -cssnano@^5.0.6: - version "5.1.12" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.12.tgz#bcd0b64d6be8692de79332c501daa7ece969816c" - integrity sha512-TgvArbEZu0lk/dvg2ja+B7kYoD7BBCmn3+k58xD0qjrGHsFzXY/wKTo9M5egcUCabPol05e/PVoIu79s2JN4WQ== - dependencies: - cssnano-preset-default "^5.2.12" - lilconfig "^2.0.3" - yaml "^1.10.2" - -csso@^4.0.2, csso@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - csstype@^2.5.2: version "2.6.16" resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.16.tgz#544d69f547013b85a40d15bff75db38f34fe9c39" integrity sha512-61FBWoDHp/gRtsoDkq/B1nWrCUG/ok1E3tUrcNbZjsE9Cxd9yzUirjS3+nAATB8U4cTtaQmAHbNndoFz5L6C9Q== -csstype@^3.0.10, csstype@^3.0.2: +csstype@^3.0.2: version "3.0.10" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5" integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA== -cuint@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" - integrity sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw== - currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -7292,11 +5289,6 @@ currently-unhandled@^0.4.1: dependencies: array-find-index "^1.0.1" -curve25519-js@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/curve25519-js/-/curve25519-js-0.0.4.tgz#e6ad967e8cd284590d657bbfc90d8b50e49ba060" - integrity sha512-axn2UMEnkhyDUPWOwVKBMVIzSQy2ejH2xRGy1wq81dqRwApXfIzfbE3hIX0ZRFBIihf/KDqK158DLwESu4AK1w== - custom-elements-manifest@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/custom-elements-manifest/-/custom-elements-manifest-1.0.0.tgz#b35c2129076a1dc9f95d720c6f7b5b71a857274b" @@ -7326,15 +5318,6 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - dataloader@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-1.4.0.tgz#bca11d867f5d3f1b9ed9f737bd15970c65dff5c8" @@ -7386,7 +5369,7 @@ debounce@^1.2.0, debounce@^1.2.1: resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -7407,7 +5390,7 @@ debug@3.2.6: dependencies: ms "^2.1.1" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.2, debug@^4.3.4: +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -7446,11 +5429,6 @@ decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decimal.js@^10.2.1: - version "10.3.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" - integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== - decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -7478,7 +5456,7 @@ deep-extend@^0.6.0, deep-extend@~0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-is@^0.1.3, deep-is@~0.1.3: +deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== @@ -7493,13 +5471,6 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -default-gateway@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" - integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== - dependencies: - execa "^5.0.0" - defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -7541,11 +5512,6 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ== - del@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" @@ -7610,33 +5576,6 @@ detect-libc@^2.0.0: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -detect-port-alt@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" - integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== - dependencies: - address "^1.0.1" - debug "^2.6.0" - -detective@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.1.tgz#6af01eeda11015acb0e73f933242b70f24f91034" - integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw== - dependencies: - acorn-node "^1.8.2" - defined "^1.0.0" - minimist "^1.2.6" - deterministic-json@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/deterministic-json/-/deterministic-json-1.0.5.tgz#718230459840122a1558007b483cf72753c00f21" @@ -7662,16 +5601,6 @@ diagnostics_channel@^1.1.0: resolved "https://registry.yarnpkg.com/diagnostics_channel/-/diagnostics_channel-1.1.0.tgz#bd66c49124ce3bac697dff57466464487f57cea5" integrity sha512-OE1ngLDjSBPG6Tx0YATELzYzy3RKHC+7veQ8gLa8yS7AAgw65mFbVdcsu3501abqOZCEZqZyAIemB0zXlqDSuw== -didyoumean@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" - integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== - -diff-sequences@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" - integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== - diff@3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -7701,23 +5630,6 @@ discontinuous-range@1.0.0: resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" integrity sha1-44Mx8IRLukm5qctxx3FYWqsbxlo= -dlv@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" - integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= - -dns-packet@^5.2.2: - version "5.4.0" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.4.0.tgz#1f88477cf9f27e78a213fb6d118ae38e759a879b" - integrity sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g== - dependencies: - "@leichtgewicht/ip-codec" "^2.0.1" - doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -7732,18 +5644,6 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-accessibility-api@^0.5.6: - version "0.5.10" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.10.tgz#caa6d08f60388d0bb4539dd75fe458a9a1d0014c" - integrity sha512-Xu9mD0UjrJisTmv7lmVSDMagQcU9R5hwAbxsaAE/35XPnPLJobbuREfV/rraiSaEj/UOvgrzQs66zyTWTlyd+g== - -dom-converter@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - dom-helpers@^5.0.1: version "5.2.0" resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.0.tgz#57fd054c5f8f34c52a3eeffdb7e7e93cd357d95b" @@ -7752,14 +5652,6 @@ dom-helpers@^5.0.1: "@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" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - dom-serializer@^1.0.1, dom-serializer@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.2.0.tgz#3433d9136aeb3c627981daa385fc7f32d27c48f1" @@ -7778,23 +5670,11 @@ dom5@^3.0.1: clone "^2.1.0" parse5 "^4.0.0" -domelementtype@1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - domelementtype@^2.0.1, domelementtype@^2.1.0, domelementtype@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - domhandler@^4.0.0, domhandler@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.0.tgz#f9768a5f034be60a89a27c2e4d0f74eba0d8b059" @@ -7802,15 +5682,7 @@ domhandler@^4.0.0, domhandler@^4.2.0: dependencies: domelementtype "^2.2.0" -domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^2.4.3, domutils@^2.4.4, domutils@^2.5.2, domutils@^2.6.0: +domutils@^2.4.3, domutils@^2.4.4, domutils@^2.5.2: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== @@ -7819,14 +5691,6 @@ domutils@^2.4.3, domutils@^2.4.4, domutils@^2.5.2, domutils@^2.6.0: domelementtype "^2.2.0" domhandler "^4.2.0" -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - dot-prop@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" @@ -7848,17 +5712,7 @@ dot-prop@^5.1.0: dependencies: is-obj "^2.0.0" -dotenv-expand@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== - -dotenv@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== - -duplexer@^0.1.1, duplexer@^0.1.2: +duplexer@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== @@ -7891,19 +5745,12 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^3.1.6: - version "3.1.8" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" - integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== - dependencies: - jake "^10.8.5" - electron-to-chromium@^1.4.188: version "1.4.195" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.195.tgz#139b2d95a42a3f17df217589723a1deac71d1473" integrity sha512-vefjEh0sk871xNmR5whJf9TEngX+KTKS3hOHpjoMpauKkwlGwtMz1H8IaIjAT/GNnX0TbGwAdmVoXCAzXf+PPg== -elliptic@^6.4.0, elliptic@^6.5.3: +elliptic@^6.5.3: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -7916,21 +5763,11 @@ elliptic@^6.4.0, elliptic@^6.5.3: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -emittery@^0.10.2: - version "0.10.2" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" - integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== - emittery@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.11.0.tgz#eb5f756a200d3431de2c6e850cb2d8afd97a03b9" integrity sha512-S/7tzL6v5i+4iJd627Nhv9cLFIo5weAIlGccqJFpnBoDB8U1TF2k5tez4J/QNuxyyhWuFqHg1L84Kd3m7iXg6g== -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== - emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -7946,11 +5783,6 @@ emoji-regex@^9.0.0, emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - encodeurl@^1.0.2, encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -7970,14 +5802,6 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" -enhanced-resolve@^5.9.3: - version "5.10.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6" - integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - enquirer@^2.3.5, enquirer@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" @@ -8081,19 +5905,12 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -error-stack-parser@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" - integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== - dependencies: - stackframe "^1.1.1" - errorstacks@^2.2.0: version "2.3.2" resolved "https://registry.yarnpkg.com/errorstacks/-/errorstacks-2.3.2.tgz#cab2c7c83e199a2b2862de3fea46f68372094166" integrity sha512-cJp8qf5t2cXmVZJjZVrcU4ODFJeQOcUyjJEtPFtWO+3N6JPM6vCe4Sfv3cwIs/qS7gnUo/fvKX/mDCVQZq+P7A== -es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.18.0-next.2, es-abstract@^1.19.0, es-abstract@^1.19.1: +es-abstract@^1.17.4, es-abstract@^1.18.0-next.2, es-abstract@^1.19.0, es-abstract@^1.19.1: version "1.19.1" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== @@ -8175,18 +5992,6 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - eslint-config-airbnb-base@^14.0.0, eslint-config-airbnb-base@^14.2.0: version "14.2.1" resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz#8a2eb38455dc5a312550193b319cdaeef042cd1e" @@ -8208,7 +6013,7 @@ eslint-config-prettier@^6.15.0: dependencies: get-stdin "^6.0.0" -eslint-config-react-app@^7.0.0, eslint-config-react-app@^7.0.1: +eslint-config-react-app@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz#73ba3929978001c5c86274c017ea57eb5fa644b4" integrity sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA== @@ -8328,7 +6133,7 @@ eslint-plugin-jsdoc@^39.2.9: semver "^7.3.7" spdx-expression-parse "^3.0.1" -eslint-plugin-jsx-a11y@^6.4.0, eslint-plugin-jsx-a11y@^6.5.1: +eslint-plugin-jsx-a11y@^6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8" integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g== @@ -8434,7 +6239,7 @@ eslint-rule-extender@0.0.1: resolved "https://registry.yarnpkg.com/eslint-rule-extender/-/eslint-rule-extender-0.0.1.tgz#ae9faf15d1e651a714d579af0961fd80456f3b16" integrity sha512-F0j1Twve3lamL3J0rRSVAynlp58sDPG39JFcQrM+u9Na7PmCgiPHNODh6YE9mduaGcsn3NBqbf6LZRj0cLr8Ng== -eslint-scope@5.1.1, eslint-scope@^5.1.1: +eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -8442,14 +6247,6 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" @@ -8479,17 +6276,6 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint-webpack-plugin@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz#1978cdb9edc461e4b0195a20da950cf57988347c" - integrity sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w== - dependencies: - "@types/eslint" "^7.29.0 || ^8.4.1" - jest-worker "^28.0.2" - micromatch "^4.0.5" - normalize-path "^3.0.0" - schema-utils "^4.0.0" - eslint@^7.32.0, eslint@^7.6.0: version "7.32.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" @@ -8536,70 +6322,20 @@ eslint@^7.32.0, eslint@^7.6.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -eslint@^8.3.0: - version "8.20.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.20.0.tgz#048ac56aa18529967da8354a478be4ec0a2bc81b" - integrity sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA== - dependencies: - "@eslint/eslintrc" "^1.3.0" - "@humanwhocodes/config-array" "^0.9.2" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.3.2" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" - globals "^13.15.0" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -esm@agoric-labs/esm#Agoric-built: - version "3.2.25" - resolved "https://codeload.github.com/agoric-labs/esm/tar.gz/3603726ad4636b2f865f463188fcaade6375638e" - -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== +esm@agoric-labs/esm#Agoric-built: + version "3.2.25" + resolved "https://codeload.github.com/agoric-labs/esm/tar.gz/3603726ad4636b2f865f463188fcaade6375638e" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== dependencies: acorn "^7.4.0" acorn-jsx "^5.3.1" eslint-visitor-keys "^1.3.0" -espree@^9.3.2: - version "9.3.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" - integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== - dependencies: - acorn "^8.7.1" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" - -esprima@^4.0.0, esprima@^4.0.1: +esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -8663,11 +6399,6 @@ eventemitter3@^4.0.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -8696,26 +6427,6 @@ execa@^4.1.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -8734,22 +6445,12 @@ expand-template@^2.0.3: resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== -expect@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" - integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== - dependencies: - "@jest/types" "^27.5.1" - jest-get-type "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - expose-gc@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/expose-gc/-/expose-gc-1.0.0.tgz#ba0e825b390cc3e7ab38fc5b945cd2b4018584b3" integrity sha512-ecOHrdm+zyOCGIwX18/1RHkUWgxDqGGRiGhaNC+42jReTtudbm2ID/DMa/wpaHwqy5YQHPZvsDqRM2F2iZ0uVA== -express@^4.17.1, express@^4.17.3: +express@^4.17.1: version "4.18.1" resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== @@ -8857,11 +6558,6 @@ fast-check@^3.0.0: dependencies: pure-rand "^5.0.1" -fast-deep-equal@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" - integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -8895,12 +6591,12 @@ fast-glob@^3.2.11, fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: +fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -8912,20 +6608,6 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -faye-websocket@^0.11.3: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - fd-slicer@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" @@ -8967,31 +6649,11 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-loader@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" - integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== -filelist@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - -filesize@^8.0.6: - version "8.0.7" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" - integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -9022,15 +6684,6 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" -find-cache-dir@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - find-replace@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" @@ -9038,11 +6691,6 @@ find-replace@^3.0.0: dependencies: array-back "^3.0.1" -find-root@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" - integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== - find-up@3.0.0, find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -9129,7 +6777,7 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -follow-redirects@^1.0.0, follow-redirects@^1.10.0, follow-redirects@^1.14.0, follow-redirects@^1.14.9: +follow-redirects@^1.0.0, follow-redirects@^1.14.0: version "1.15.2" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== @@ -9152,43 +6800,6 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -fork-ts-checker-webpack-plugin@^6.5.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz#4f67183f2f9eb8ba7df7177ce3cf3e75cdafb340" - integrity sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA== - dependencies: - "@babel/code-frame" "^7.8.3" - "@types/json-schema" "^7.0.5" - chalk "^4.1.0" - chokidar "^3.4.2" - cosmiconfig "^6.0.0" - deepmerge "^4.2.2" - fs-extra "^9.0.0" - glob "^7.1.6" - memfs "^3.1.2" - minimatch "^3.0.4" - schema-utils "2.7.0" - semver "^7.3.2" - tapable "^1.0.0" - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -9203,11 +6814,6 @@ forwarded@0.2.0: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fraction.js@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" - integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== - fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -9233,15 +6839,6 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -9260,16 +6857,6 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.0, fs-extra@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs-minipass@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" @@ -9284,11 +6871,6 @@ fs-minipass@^2.0.0: dependencies: minipass "^3.0.0" -fs-monkey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" - integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== - fs-readdir-recursive@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -9309,7 +6891,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^2.3.2, fsevents@~2.3.2: +fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -9382,11 +6964,6 @@ get-own-enumerable-property-symbols@^3.0.0: resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - get-pkg-repo@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" @@ -9521,23 +7098,11 @@ glob-parent@^5.0.0, glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^6.0.1, glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - glob@7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" @@ -9550,7 +7115,7 @@ glob@7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.0.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -9562,28 +7127,12 @@ glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.15.0, globals@^13.6.0, globals@^13.9.0: +globals@^13.6.0, globals@^13.9.0: version "13.16.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.16.0.tgz#9be4aca28f311aaeb974ea54978ebbb5e35ce46a" integrity sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q== @@ -9634,7 +7183,7 @@ globby@^9.2.0: pify "^4.0.1" slash "^2.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.6: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== @@ -9644,18 +7193,6 @@ growl@1.10.5: resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - handlebars@^4.4.0: version "4.7.7" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" @@ -9686,11 +7223,6 @@ hard-rejection@^2.1.0: resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== -harmony-reflect@^1.4.6: - version "1.6.2" - resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" - integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== - has-bigints@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" @@ -9761,16 +7293,7 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3, hash.js@~1.1.7: +hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== @@ -9778,23 +7301,11 @@ hash.js@^1.0.0, hash.js@^1.0.3, hash.js@~1.1.7: inherits "^2.0.3" minimalistic-assert "^1.0.1" -he@1.2.0, he@^1.2.0: +he@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -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" @@ -9804,18 +7315,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.1, hoist-non-react-statics@^3.3.2: +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" - integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== - hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -9828,16 +7334,6 @@ hosted-git-info@^4.0.1: dependencies: lru-cache "^6.0.0" -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - html-element-map@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.3.0.tgz#fcf226985d7111e6c2b958169312ec750d02f0d3" @@ -9846,48 +7342,12 @@ html-element-map@^1.2.0: array-filter "^1.0.0" call-bind "^1.0.2" -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - -html-entities@^2.1.0, html-entities@^2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" - integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== - html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -html-minifier-terser@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" - integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== - dependencies: - camel-case "^4.1.2" - clean-css "^5.2.2" - commander "^8.3.0" - he "^1.2.0" - param-case "^3.0.4" - relateurl "^0.2.7" - terser "^5.10.0" - -html-webpack-plugin@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50" - integrity sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw== - dependencies: - "@types/html-minifier-terser" "^6.0.0" - html-minifier-terser "^6.0.2" - lodash "^4.17.21" - pretty-error "^4.0.0" - tapable "^2.0.0" - -htmlparser2@^6.0.0, htmlparser2@^6.0.1, htmlparser2@^6.1.0: +htmlparser2@^6.0.0, htmlparser2@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== @@ -9915,11 +7375,6 @@ http-cache-semantics@^4.1.0: resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -9952,11 +7407,6 @@ http-errors@~1.6.2: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-parser-js@>=0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5" - integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA== - http-proxy-agent@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" @@ -9974,7 +7424,7 @@ http-proxy-agent@^4.0.1: agent-base "6" debug "4" -http-proxy-middleware@^2.0.3, http-proxy-middleware@^2.0.6: +http-proxy-middleware@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== @@ -10024,11 +7474,6 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -10048,31 +7493,14 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.6.2, iconv-lite@^0.6.3: +iconv-lite@^0.6.2: version "0.6.3" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -icss-utils@^5.0.0, icss-utils@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -idb@^6.1.4: - version "6.1.5" - resolved "https://registry.yarnpkg.com/idb/-/idb-6.1.5.tgz#dbc53e7adf1ac7c59f9b2bf56e00b4ea4fce8c7b" - integrity sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw== - -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" - integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== - dependencies: - harmony-reflect "^1.4.6" - -ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: +ieee754@^1.1.13: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -10104,16 +7532,6 @@ ignore@^5.0.5, ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== -immer@^9.0.7: - version "9.0.15" - resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.15.tgz#0b9169e5b1d22137aba7d43f8a81a495dd1b62dc" - integrity sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ== - -immutable@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" - integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== - import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" @@ -10122,7 +7540,7 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" -import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: +import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -10145,14 +7563,6 @@ import-local@^2.0.0: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" -import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" - integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - import-meta-resolve@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-1.1.1.tgz#244fd542fd1fae73550d4f8b3cde3bba1d7b2b18" @@ -10215,7 +7625,7 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== @@ -10345,7 +7755,7 @@ is-boolean-object@^1.0.1, is-boolean-object@^1.1.0: dependencies: call-bind "^1.0.0" -is-buffer@^1.1.5, is-buffer@~1.1.1: +is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== @@ -10470,11 +7880,6 @@ is-fullwidth-code-point@^4.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - is-generator-function@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" @@ -10587,7 +7992,7 @@ is-plain-object@^5.0.0: resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== -is-potential-custom-element-name@^1.0.0, is-potential-custom-element-name@^1.0.1: +is-potential-custom-element-name@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== @@ -10617,11 +8022,6 @@ is-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= -is-root@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" - integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== - is-shared-array-buffer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" @@ -10670,7 +8070,7 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" -is-typedarray@^1.0.0, is-typedarray@~1.0.0: +is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= @@ -10763,22 +8163,11 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-lib-coverage@3.2.0, istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.1, istanbul-lib-coverage@^3.2.0: +istanbul-lib-coverage@3.2.0, istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.1: version "3.2.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== -istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" - integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - istanbul-lib-report@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" @@ -10788,16 +8177,7 @@ istanbul-lib-report@^3.0.0: make-dir "^3.0.0" supports-color "^7.1.0" -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.0.2, istanbul-reports@^3.1.3: +istanbul-reports@^3.0.2: version "3.1.5" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== @@ -10805,654 +8185,71 @@ istanbul-reports@^3.0.2, istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jake@^10.8.5: - version "10.8.5" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" - integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== +jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.1" - minimatch "^3.0.4" + merge-stream "^2.0.0" + supports-color "^6.1.0" -jest-changed-files@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" - integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== - dependencies: - "@jest/types" "^27.5.1" - execa "^5.0.0" - throat "^6.0.1" +js-levenshtein-esm@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/js-levenshtein-esm/-/js-levenshtein-esm-1.2.0.tgz#96532c34e0c90df198c9419963c64ca3cf43ae92" + integrity sha512-fzreKVq1eD7eGcQr7MtRpQH94f8gIfhdrc7yeih38xh684TNMK9v5aAu2wxfIRMk/GpAJRrzcirMAPIaSDaByQ== -jest-circus@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" - integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^0.7.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - slash "^3.0.0" - stack-utils "^2.0.3" - throat "^6.0.1" +js-string-escape@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" + integrity sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8= -jest-cli@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" - integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== - dependencies: - "@jest/core" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - import-local "^3.0.2" - jest-config "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - prompts "^2.0.1" - yargs "^16.2.0" +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -jest-config@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" - integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== +js-yaml@3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== dependencies: - "@babel/core" "^7.8.0" - "@jest/test-sequencer" "^27.5.1" - "@jest/types" "^27.5.1" - babel-jest "^27.5.1" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.9" - jest-circus "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-get-type "^27.5.1" - jest-jasmine2 "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runner "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^27.5.1" - slash "^3.0.0" - strip-json-comments "^3.1.1" + argparse "^1.0.7" + esprima "^4.0.0" -jest-diff@^27.0.0, jest-diff@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== +js-yaml@^3.13.1, js-yaml@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: - chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" + argparse "^1.0.7" + esprima "^4.0.0" -jest-docblock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" - integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== - dependencies: - detect-newline "^3.0.0" +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jest-each@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" - integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== - dependencies: - "@jest/types" "^27.5.1" - chalk "^4.0.0" - jest-get-type "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - -jest-environment-jsdom@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" - integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - jsdom "^16.6.0" - -jest-environment-node@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" - integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" +jsdoc-type-pratt-parser@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.1.0.tgz#a4a56bdc6e82e5865ffd9febc5b1a227ff28e67e" + integrity sha512-MgtD0ZiCDk9B+eI73BextfRrVQl0oyzRG8B2BjORts6jbunj4ScKPcyXGTbB6eXL4y9TzxCm6hyeLq/2ASzNdw== -jest-get-type@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" - integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -jest-haste-map@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" - integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== - dependencies: - "@jest/types" "^27.5.1" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^27.5.1" - jest-serializer "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - micromatch "^4.0.4" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.3.2" - -jest-jasmine2@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" - integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - throat "^6.0.1" - -jest-leak-detector@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" - integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== - dependencies: - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-matcher-utils@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" - integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== - dependencies: - chalk "^4.0.0" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-message-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" - integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.5.1" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^27.5.1" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-message-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" - integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^28.1.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^28.1.3" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" - integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - -jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== - -jest-regex-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" - integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== - -jest-regex-util@^28.0.0: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" - integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== - -jest-resolve-dependencies@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" - integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== - dependencies: - "@jest/types" "^27.5.1" - jest-regex-util "^27.5.1" - jest-snapshot "^27.5.1" - -jest-resolve@^27.4.2, jest-resolve@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" - integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== - dependencies: - "@jest/types" "^27.5.1" - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-pnp-resolver "^1.2.2" - jest-util "^27.5.1" - jest-validate "^27.5.1" - resolve "^1.20.0" - resolve.exports "^1.1.0" - slash "^3.0.0" - -jest-runner@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" - integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== - dependencies: - "@jest/console" "^27.5.1" - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.8.1" - graceful-fs "^4.2.9" - jest-docblock "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-haste-map "^27.5.1" - jest-leak-detector "^27.5.1" - jest-message-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runtime "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - source-map-support "^0.5.6" - throat "^6.0.1" - -jest-runtime@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" - integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/globals" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - execa "^5.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-serializer@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" - integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.9" - -jest-snapshot@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" - integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== - dependencies: - "@babel/core" "^7.7.2" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.0.0" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.1.5" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^27.5.1" - graceful-fs "^4.2.9" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - jest-haste-map "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-util "^27.5.1" - natural-compare "^1.4.0" - pretty-format "^27.5.1" - semver "^7.3.2" - -jest-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" - integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" - integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== - dependencies: - "@jest/types" "^28.1.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" - integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== - dependencies: - "@jest/types" "^27.5.1" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^27.5.1" - leven "^3.1.0" - pretty-format "^27.5.1" - -jest-watch-typeahead@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz#b4a6826dfb9c9420da2f7bc900de59dad11266a9" - integrity sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw== - dependencies: - ansi-escapes "^4.3.1" - chalk "^4.0.0" - jest-regex-util "^28.0.0" - jest-watcher "^28.0.0" - slash "^4.0.0" - string-length "^5.0.1" - strip-ansi "^7.0.1" - -jest-watcher@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" - integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== - dependencies: - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - jest-util "^27.5.1" - string-length "^4.0.1" - -jest-watcher@^28.0.0: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" - integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== - dependencies: - "@jest/test-result" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.10.2" - jest-util "^28.1.3" - string-length "^4.0.1" - -jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== - dependencies: - merge-stream "^2.0.0" - supports-color "^6.1.0" - -jest-worker@^26.2.1: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest-worker@^27.0.2, jest-worker@^27.4.5, jest-worker@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest-worker@^28.0.2: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" - integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^27.4.3: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" - integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== - dependencies: - "@jest/core" "^27.5.1" - import-local "^3.0.2" - jest-cli "^27.5.1" - -js-crypto-env@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/js-crypto-env/-/js-crypto-env-0.3.2.tgz#02195723469da14449338ca2789fd7ff6784c533" - integrity sha512-F1uHiCkSOo36qBuuZABA4sBf+xeFBzhJZ0Sd7af8FAruszIhm1Xxv+Zr5Ne90Zlh7/fnxCsrdkj0N8f0a3lVlQ== - -js-crypto-hash@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/js-crypto-hash/-/js-crypto-hash-0.6.3.tgz#748e3e1853f69dad714636db3290736825506641" - integrity sha512-SG8c9tM8y3sUb4k7WvpVfu5vU7zfPvX+eaYR5578TvehkehdaQbqAc+y+1FwxnqQ3WZ0gsYoOKp/mW+mqtNoWA== - dependencies: - buffer "~5.4.3" - hash.js "~1.1.7" - js-crypto-env "^0.3.2" - md5 "~2.2.1" - sha3 "~2.1.0" - -js-crypto-hkdf@0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/js-crypto-hkdf/-/js-crypto-hkdf-0.7.3.tgz#537c394a2e65bca80032daa07d2ffe7e4f78d32f" - integrity sha512-eAaVArAjS2GCacWGXY4hjBiexrLQYlI0PMOcbwtrSEj84XU3kUfMYZm9bpTyaTXgdHC/eQoXe/Of6biG+RSEaQ== - dependencies: - js-crypto-env "^0.3.2" - js-crypto-hmac "^0.6.3" - js-crypto-random "^0.4.3" - js-encoding-utils "0.5.6" - -js-crypto-hmac@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/js-crypto-hmac/-/js-crypto-hmac-0.6.3.tgz#c33352c1ee6076b17b8f4cb0e2167814b2b77d6d" - integrity sha512-T0pKOaHACOSG6Xs6/06G8RDDeZouQwIQNBq9L/zoUGsd4F67gAjpT3q2lGigAGpUd1hiyy7vnhvLpz7VDt6DbA== - dependencies: - js-crypto-env "^0.3.2" - js-crypto-hash "^0.6.3" - -js-crypto-random@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/js-crypto-random/-/js-crypto-random-0.4.3.tgz#898c2d91991eead02b4e461005e878fa9827fd74" - integrity sha512-C3gzphPPfw9jfQ9Q/LjhJMZxQNp3AaoVRDvyZkiB+zYltfs8tKQPsskWkXACpg1Nzh01PtSRUvVijjptd2qGHQ== - dependencies: - js-crypto-env "^0.3.2" - -js-encoding-utils@0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/js-encoding-utils/-/js-encoding-utils-0.5.6.tgz#517351d8f4a85b2ad121183d41df8319981bee03" - integrity sha512-qnAGsUIWrmzh5n+3AXqbxX1KsB9hkQmJZf3aA9DLAS7GpL/NEHCBreFFbW+imramoU+Q0TDyvkwhRbBRH1TVkg== - -js-levenshtein-esm@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/js-levenshtein-esm/-/js-levenshtein-esm-1.2.0.tgz#96532c34e0c90df198c9419963c64ca3cf43ae92" - integrity sha512-fzreKVq1eD7eGcQr7MtRpQH94f8gIfhdrc7yeih38xh684TNMK9v5aAu2wxfIRMk/GpAJRrzcirMAPIaSDaByQ== - -js-sha3@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -js-string-escape@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" - integrity sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8= - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^3.13.1, js-yaml@^3.14.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdoc-type-pratt-parser@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.1.0.tgz#a4a56bdc6e82e5865ffd9febc5b1a227ff28e67e" - integrity sha512-MgtD0ZiCDk9B+eI73BextfRrVQl0oyzRG8B2BjORts6jbunj4ScKPcyXGTbB6eXL4y9TzxCm6hyeLq/2ASzNdw== - -jsdom@^16.6.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.6" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: +json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -11472,11 +8269,6 @@ json-schema@0.2.3: resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= -json-schema@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" @@ -11501,7 +8293,7 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.2, json5@^2.2.0, json5@^2.2.1: +json5@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== @@ -11513,15 +8305,6 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" @@ -11532,11 +8315,6 @@ jsonparse@^1.2.0: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= -jsonpointer@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" - integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== - jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -11547,7 +8325,7 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jss-plugin-camel-case@^10.5.1, jss-plugin-camel-case@^10.8.2: +jss-plugin-camel-case@^10.5.1: version "10.8.2" resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.8.2.tgz#8d7f915c8115afaff8cbde08faf610ec9892fba6" integrity sha512-2INyxR+1UdNuKf4v9It3tNfPvf7IPrtkiwzofeKuMd5D58/dxDJVUQYRVg/n460rTlHUfsEQx43hDrcxi9dSPA== @@ -11556,7 +8334,7 @@ jss-plugin-camel-case@^10.5.1, jss-plugin-camel-case@^10.8.2: hyphenate-style-name "^1.0.3" jss "10.8.2" -jss-plugin-default-unit@^10.5.1, jss-plugin-default-unit@^10.8.2: +jss-plugin-default-unit@^10.5.1: version "10.8.2" resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.8.2.tgz#c66f12e02e0815d911b85c02c2a979ee7b4ce69a" integrity sha512-UZ7cwT9NFYSG+SEy7noRU50s4zifulFdjkUNKE+u6mW7vFP960+RglWjTgMfh79G6OENZmaYnjHV/gcKV4nSxg== @@ -11564,7 +8342,7 @@ jss-plugin-default-unit@^10.5.1, jss-plugin-default-unit@^10.8.2: "@babel/runtime" "^7.3.1" jss "10.8.2" -jss-plugin-global@^10.5.1, jss-plugin-global@^10.8.2: +jss-plugin-global@^10.5.1: version "10.8.2" resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.8.2.tgz#1a35632a693cf50113bcc5ffe6b51969df79c4ec" integrity sha512-UaYMSPsYZ7s/ECGoj4KoHC2jwQd5iQ7K+FFGnCAILdQrv7hPmvM2Ydg45ThT/sH46DqktCRV2SqjRuxeBH8nRA== @@ -11572,7 +8350,7 @@ jss-plugin-global@^10.5.1, jss-plugin-global@^10.8.2: "@babel/runtime" "^7.3.1" jss "10.8.2" -jss-plugin-nested@^10.5.1, jss-plugin-nested@^10.8.2: +jss-plugin-nested@^10.5.1: version "10.8.2" resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.8.2.tgz#79f3c7f75ea6a36ae72fe52e777035bb24d230c7" integrity sha512-acRvuPJOb930fuYmhkJaa994EADpt8TxI63Iyg96C8FJ9T2xRyU5T6R1IYKRwUiqZo+2Sr7fdGzRTDD4uBZaMA== @@ -11581,7 +8359,7 @@ jss-plugin-nested@^10.5.1, jss-plugin-nested@^10.8.2: jss "10.8.2" tiny-warning "^1.0.2" -jss-plugin-props-sort@^10.5.1, jss-plugin-props-sort@^10.8.2: +jss-plugin-props-sort@^10.5.1: version "10.8.2" resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.8.2.tgz#e25a7471868652c394562b6dc5433dcaea7dff6f" integrity sha512-wqdcjayKRWBZnNpLUrXvsWqh+5J5YToAQ+8HNBNw0kZxVvCDwzhK2Nx6AKs7p+5/MbAh2PLgNW5Ym/ysbVAuqQ== @@ -11589,7 +8367,7 @@ jss-plugin-props-sort@^10.5.1, jss-plugin-props-sort@^10.8.2: "@babel/runtime" "^7.3.1" jss "10.8.2" -jss-plugin-rule-value-function@^10.5.1, jss-plugin-rule-value-function@^10.8.2: +jss-plugin-rule-value-function@^10.5.1: version "10.8.2" resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.8.2.tgz#55354b55f1b2968a15976729968f767f02d64049" integrity sha512-bW0EKAs+0HXpb6BKJhrn94IDdiWb0CnSluTkh0rGEgyzY/nmD1uV/Wf6KGlesGOZ9gmJzQy+9FFdxIUID1c9Ug== @@ -11598,7 +8376,7 @@ jss-plugin-rule-value-function@^10.5.1, jss-plugin-rule-value-function@^10.8.2: jss "10.8.2" tiny-warning "^1.0.2" -jss-plugin-vendor-prefixer@^10.5.1, jss-plugin-vendor-prefixer@^10.8.2: +jss-plugin-vendor-prefixer@^10.5.1: version "10.8.2" resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.8.2.tgz#ebb4a482642f34091e454901e21176441dd5f475" integrity sha512-DeGv18QsSiYLSVIEB2+l0af6OToUe0JB+trpzUxyqD2QRC/5AzzDrCrYffO5AHZ81QbffYvSN/pkfZaTWpRXlg== @@ -11607,7 +8385,7 @@ jss-plugin-vendor-prefixer@^10.5.1, jss-plugin-vendor-prefixer@^10.8.2: css-vendor "^2.0.8" jss "10.8.2" -jss@10.8.2, jss@^10.5.1, jss@^10.8.2: +jss@10.8.2, jss@^10.5.1: version "10.8.2" resolved "https://registry.yarnpkg.com/jss/-/jss-10.8.2.tgz#4b2a30b094b924629a64928236017a52c7c97505" integrity sha512-FkoUNxI329CKQ9OQC8L72MBF9KPf5q8mIupAJ5twU7G7XREW7ahb+7jFfrjZ4iy1qvhx1HwIWUIvkZBDnKkEdQ== @@ -11668,16 +8446,6 @@ klaw-sync@^6.0.0: dependencies: graceful-fs "^4.1.11" -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -klona@^2.0.4, klona@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" - integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== - koa-compose@^3.0.0: version "3.2.1" resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-3.2.1.tgz#a85ccb40b7d986d8e5a345b3a1ace8eabcf54de7" @@ -11792,11 +8560,6 @@ lerna@^3.22.1: import-local "^2.0.0" npmlog "^4.1.2" -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -11805,14 +8568,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - libsodium-wrappers@^0.7.6: version "0.7.10" resolved "https://registry.yarnpkg.com/libsodium-wrappers/-/libsodium-wrappers-0.7.10.tgz#13ced44cacb0fc44d6ac9ce67d725956089ce733" @@ -11833,11 +8588,6 @@ lighthouse-logger@^1.0.0: debug "^2.6.9" marky "^1.2.2" -lilconfig@^2.0.3, lilconfig@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4" - integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== - limiter@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.5.tgz#8f92a25b3b16c6131293a0cc834b4a838a2aa7c2" @@ -11961,25 +8711,6 @@ load-json-file@^7.0.0: resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-7.0.1.tgz#a3c9fde6beffb6bedb5acf104fad6bb1604e1b00" integrity sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ== -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== - -loader-utils@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" - integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -loader-utils@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.0.tgz#bcecc51a7898bee7473d4bc6b845b23af8304d4f" - integrity sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ== - locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -12067,11 +8798,6 @@ lodash.kebabcase@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -12117,7 +8843,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.2.1, lodash@^4.7.0: +lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21, lodash@^4.2.1: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -12157,7 +8883,7 @@ long@^5.0.0: resolved "https://registry.yarnpkg.com/long/-/long-5.2.0.tgz#2696dadf4b4da2ce3f6f6b89186085d94d52fd61" integrity sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w== -loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: +loose-envify@^1.1.0, 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== @@ -12172,13 +8898,6 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -12198,17 +8917,12 @@ lru-cache@^7.14.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.14.0.tgz#21be64954a4680e303a09e9468f880b98a0b3c7f" integrity sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ== -lz-string@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" - integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= - macos-release@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== -magic-string@^0.25.0, magic-string@^0.25.7: +magic-string@^0.25.7: version "0.25.7" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== @@ -12230,7 +8944,7 @@ make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: +make-dir@^3.0.0, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -12275,13 +8989,6 @@ make-fetch-happen@^8.0.14: socks-proxy-agent "^5.0.0" ssri "^8.0.0" -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - map-age-cleaner@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" @@ -12335,34 +9042,6 @@ md5-hex@^3.0.1: dependencies: blueimp-md5 "^2.10.0" -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -md5@~2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" - integrity sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ== - dependencies: - charenc "~0.0.1" - crypt "~0.0.1" - is-buffer "~1.1.1" - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -12376,13 +9055,6 @@ mem@^9.0.2: map-age-cleaner "^0.1.3" mimic-fn "^4.0.0" -memfs@^3.1.2, memfs@^3.4.3: - version "3.4.7" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.7.tgz#e5252ad2242a724f938cb937e3c4f7ceb1f70e5a" - integrity sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw== - dependencies: - fs-monkey "^1.0.3" - memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" @@ -12491,7 +9163,7 @@ micromatch@^3.1.10: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: +micromatch@^4.0.2, micromatch@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -12507,12 +9179,12 @@ microtime@^3.1.0: node-addon-api "^5.0.0" node-gyp-build "^4.4.0" -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": +mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@^2.1.18, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.18, mime-types@^2.1.27, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -12549,21 +9221,6 @@ 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@^2.4.5: - version "2.6.1" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz#9a1251d15f2035c342d99a468ab9da7a0451b71e" - integrity sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg== - dependencies: - schema-utils "^4.0.0" - minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -12581,20 +9238,13 @@ minimatch@3.0.4: dependencies: brace-expansion "^1.1.7" -minimatch@^3.0.4, minimatch@^3.1.2: +minimatch@^3.0.4: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" - integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== - dependencies: - brace-expansion "^2.0.1" - minimist-options@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -12686,11 +9336,6 @@ minizlib@^2.0.0, minizlib@^2.1.1: minipass "^3.0.0" yallist "^4.0.0" -miscreant@0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/miscreant/-/miscreant-0.3.2.tgz#a91c046566cca70bd6b5e9fbdd3f67617fa85034" - integrity sha512-fL9KxsQz9BJB2KGPMHFrReioywkiomBiuaLk6EuChijK0BsJsIKJXdVomR+/bPj5mvbFD6wM0CM3bZio9g7OHA== - mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -12739,7 +9384,7 @@ mkdirp@0.5.4: dependencies: minimist "^1.2.5" -mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.1: +mkdirp@^0.5.1, mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -12861,14 +9506,6 @@ msgpackr@^1.5.4: optionalDependencies: msgpackr-extract "^2.0.2" -multicast-dns@^7.2.5: - version "7.2.5" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" - integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== - dependencies: - dns-packet "^5.2.2" - thunky "^1.0.2" - multimatch@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-3.0.0.tgz#0e2534cc6bc238d9ab67e1b9cd5fcd85a6dbf70b" @@ -12913,7 +9550,7 @@ nanocolors@^0.2.1: resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.2.13.tgz#dfd1ed0bfab05e9fe540eb6874525f0a1684099b" integrity sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA== -nanoid@^3.1.25, nanoid@^3.3.4: +nanoid@^3.1.25: version "3.3.4" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== @@ -12965,7 +9602,7 @@ negotiator@0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.6.0, neo-async@^2.6.2: +neo-async@^2.6.0: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -12986,14 +9623,6 @@ nise@^5.1.0: just-extend "^4.0.2" path-to-regexp "^1.7.0" -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - node-abi@^3.3.0: version "3.8.0" resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.8.0.tgz#679957dc8e7aa47b0a02589dbfde4f77b29ccb32" @@ -13040,11 +9669,6 @@ node-fetch@2.6.5, node-fetch@^2.3.0, node-fetch@^2.5.0, node-fetch@^2.6.0, node- dependencies: whatwg-url "^5.0.0" -node-forge@^1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" - integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== - node-gyp-build-optional-packages@5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.2.tgz#3de7d30bd1f9057b5dfbaeab4a4442b7fe9c5901" @@ -13098,11 +9722,6 @@ node-gyp@^5.0.2: tar "^4.4.12" which "^1.3.1" -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - node-releases@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" @@ -13153,21 +9772,11 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - normalize-url@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== -normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - npm-bundled@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" @@ -13244,7 +9853,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-run-path@^4.0.0, npm-run-path@^4.0.1: +npm-run-path@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== @@ -13261,13 +9870,6 @@ npmlog@^4.0.1, npmlog@^4.1.2: gauge "~2.7.3" set-blocking "~2.0.0" -nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - nth-check@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125" @@ -13280,11 +9882,6 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -13309,11 +9906,6 @@ object-hash@^1.3.1: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== -object-hash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" - integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== - object-inspect@^1.11.0, object-inspect@^1.7.0, object-inspect@^1.9.0: version "1.12.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" @@ -13377,7 +9969,7 @@ object.fromentries@^2.0.3, object.fromentries@^2.0.5: define-properties "^1.1.3" es-abstract "^1.19.1" -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: +object.getownpropertydescriptors@^2.0.3: version "2.1.3" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== @@ -13401,7 +9993,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0, object.values@^1.1.1, object.values@^1.1.2, object.values@^1.1.5: +object.values@^1.1.1, object.values@^1.1.2, object.values@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== @@ -13410,11 +10002,6 @@ object.values@^1.1.0, object.values@^1.1.1, object.values@^1.1.2, object.values@ define-properties "^1.1.3" es-abstract "^1.19.1" -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - octokit-pagination-methods@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" @@ -13434,7 +10021,7 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -on-headers@~1.0.1, on-headers@~1.0.2: +on-headers@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== @@ -13453,7 +10040,7 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -onetime@^5.1.0, onetime@^5.1.2: +onetime@^5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== @@ -13473,7 +10060,7 @@ open@^7.4.2: is-docker "^2.0.0" is-wsl "^2.1.1" -open@^8.0.2, open@^8.0.9, open@^8.4.0: +open@^8.0.2: version "8.4.0" resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== @@ -13492,18 +10079,6 @@ opentracing@>=0.12.1: resolved "https://registry.yarnpkg.com/opentracing/-/opentracing-0.14.7.tgz#25d472bd0296dc0b64d7b94cbc995219031428f5" integrity sha512-vz9iS7MJ5+Bp1URw8Khvdyw1H/hGvzHWlKQ7eRrQojSCDL1/SrWfrY9QebLw97n2deyRtzHRC3MkQfVNUCo91Q== -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - optionator@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" @@ -13685,14 +10260,6 @@ p-reduce@^1.0.0: resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= -p-retry@^4.5.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" - integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== - dependencies: - "@types/retry" "0.12.0" - retry "^0.13.1" - p-timeout@^5.0.2: version "5.1.0" resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-5.1.0.tgz#b3c691cf4415138ce2d9cfe071dba11f0fee085b" @@ -13715,11 +10282,6 @@ p-waterfall@^1.0.0: dependencies: p-reduce "^1.0.0" -pako@1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - parallel-transform@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" @@ -13729,14 +10291,6 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -13764,7 +10318,7 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse-json@^5.0.0, parse-json@^5.2.0: +parse-json@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -13804,11 +10358,6 @@ parse5-htmlparser2-tree-adapter@^6.0.0, parse5-htmlparser2-tree-adapter@^6.0.1: dependencies: parse5 "^6.0.1" -parse5@6.0.1, parse5@^6.0.0, parse5@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - parse5@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" @@ -13819,19 +10368,16 @@ parse5@^5.1.1: resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== -parseurl@^1.3.2, parseurl@~1.3.2, parseurl@~1.3.3: +parse5@^6.0.0, parse5@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseurl@^1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -13936,17 +10482,6 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pbkdf2@^3.0.16, pbkdf2@^3.0.9, pbkdf2@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -13957,17 +10492,12 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picocolors@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" - integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== - picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -14009,11 +10539,6 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= -pirates@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== - pkg-conf@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-4.0.0.tgz#63ace00cbacfa94c2226aee133800802d3e3b80c" @@ -14022,7 +10547,7 @@ pkg-conf@^4.0.0: find-up "^6.0.0" load-json-file "^7.0.0" -pkg-dir@4.2.0, pkg-dir@^4.1.0, pkg-dir@^4.2.0: +pkg-dir@4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== @@ -14036,13 +10561,6 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -pkg-up@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - please-upgrade-node@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" @@ -14083,556 +10601,6 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss-attribute-case-insensitive@^5.0.1: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz#03d761b24afc04c09e757e92ff53716ae8ea2741" - integrity sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ== - dependencies: - postcss-selector-parser "^6.0.10" - -postcss-browser-comments@^4: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz#bcfc86134df5807f5d3c0eefa191d42136b5e72a" - integrity sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg== - -postcss-calc@^8.2.3: - version "8.2.4" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" - integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== - dependencies: - postcss-selector-parser "^6.0.9" - postcss-value-parser "^4.2.0" - -postcss-clamp@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-clamp/-/postcss-clamp-4.1.0.tgz#7263e95abadd8c2ba1bd911b0b5a5c9c93e02363" - integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-color-functional-notation@^4.2.3: - version "4.2.4" - resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz#21a909e8d7454d3612d1659e471ce4696f28caec" - integrity sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-color-hex-alpha@^8.0.4: - version "8.0.4" - resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz#c66e2980f2fbc1a63f5b079663340ce8b55f25a5" - integrity sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-color-rebeccapurple@^7.1.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz#63fdab91d878ebc4dd4b7c02619a0c3d6a56ced0" - integrity sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-colormin@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.0.tgz#3cee9e5ca62b2c27e84fce63affc0cfb5901956a" - integrity sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg== - dependencies: - browserslist "^4.16.6" - caniuse-api "^3.0.0" - colord "^2.9.1" - postcss-value-parser "^4.2.0" - -postcss-convert-values@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz#31586df4e184c2e8890e8b34a0b9355313f503ab" - integrity sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g== - dependencies: - browserslist "^4.20.3" - postcss-value-parser "^4.2.0" - -postcss-custom-media@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz#c8f9637edf45fef761b014c024cee013f80529ea" - integrity sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-custom-properties@^12.1.8: - version "12.1.8" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-12.1.8.tgz#aa003e1885c5bd28e2e32496cd597e389ca889e4" - integrity sha512-8rbj8kVu00RQh2fQF81oBqtduiANu4MIxhyf0HbbStgPtnFlWn0yiaYTpLHrPnJbffVY1s9apWsIoVZcc68FxA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-custom-selectors@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz#1ab4684d65f30fed175520f82d223db0337239d9" - integrity sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-dir-pseudo-class@^6.0.4: - version "6.0.5" - resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz#2bf31de5de76added44e0a25ecf60ae9f7c7c26c" - integrity sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA== - dependencies: - postcss-selector-parser "^6.0.10" - -postcss-discard-comments@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" - integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== - -postcss-discard-duplicates@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" - integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== - -postcss-discard-empty@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" - integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== - -postcss-discard-overridden@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" - integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== - -postcss-double-position-gradients@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz#b96318fdb477be95997e86edd29c6e3557a49b91" - integrity sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ== - dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - postcss-value-parser "^4.2.0" - -postcss-env-function@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-4.0.6.tgz#7b2d24c812f540ed6eda4c81f6090416722a8e7a" - integrity sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-flexbugs-fixes@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz#2028e145313074fc9abe276cb7ca14e5401eb49d" - integrity sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ== - -postcss-focus-visible@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz#50c9ea9afa0ee657fb75635fabad25e18d76bf9e" - integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw== - dependencies: - postcss-selector-parser "^6.0.9" - -postcss-focus-within@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz#5b1d2ec603195f3344b716c0b75f61e44e8d2e20" - integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ== - dependencies: - postcss-selector-parser "^6.0.9" - -postcss-font-variant@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66" - integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== - -postcss-gap-properties@^3.0.3: - version "3.0.5" - resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz#f7e3cddcf73ee19e94ccf7cb77773f9560aa2fff" - integrity sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg== - -postcss-image-set-function@^4.0.6: - version "4.0.7" - resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz#08353bd756f1cbfb3b6e93182c7829879114481f" - integrity sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-import@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" - integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== - dependencies: - postcss-value-parser "^4.0.0" - read-cache "^1.0.0" - resolve "^1.1.7" - -postcss-initial@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-4.0.1.tgz#529f735f72c5724a0fb30527df6fb7ac54d7de42" - integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== - -postcss-js@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00" - integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== - dependencies: - camelcase-css "^2.0.1" - -postcss-lab-function@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz#6fe4c015102ff7cd27d1bd5385582f67ebdbdc98" - integrity sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w== - dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - postcss-value-parser "^4.2.0" - -postcss-load-config@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" - integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== - dependencies: - lilconfig "^2.0.5" - yaml "^1.10.2" - -postcss-loader@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" - integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== - dependencies: - cosmiconfig "^7.0.0" - klona "^2.0.5" - semver "^7.3.5" - -postcss-logical@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-5.0.4.tgz#ec75b1ee54421acc04d5921576b7d8db6b0e6f73" - integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g== - -postcss-media-minmax@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz#7140bddec173e2d6d657edbd8554a55794e2a5b5" - integrity sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ== - -postcss-merge-longhand@^5.1.6: - version "5.1.6" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz#f378a8a7e55766b7b644f48e5d8c789ed7ed51ce" - integrity sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw== - dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^5.1.0" - -postcss-merge-rules@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz#7049a14d4211045412116d79b751def4484473a5" - integrity sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ== - dependencies: - browserslist "^4.16.6" - caniuse-api "^3.0.0" - cssnano-utils "^3.1.0" - postcss-selector-parser "^6.0.5" - -postcss-minify-font-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" - integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-minify-gradients@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" - integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== - dependencies: - colord "^2.9.1" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-params@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz#ac41a6465be2db735099bbd1798d85079a6dc1f9" - integrity sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg== - dependencies: - browserslist "^4.16.6" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-selectors@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" - integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-modules-extract-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== - -postcss-modules-local-by-default@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" - integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" - integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" - -postcss-nested@5.0.6: - version "5.0.6" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.6.tgz#466343f7fc8d3d46af3e7dba3fcd47d052a945bc" - integrity sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA== - dependencies: - postcss-selector-parser "^6.0.6" - -postcss-nesting@^10.1.9: - version "10.1.10" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.1.10.tgz#9c396df3d8232cbedfa95baaac6b765b8fd2a817" - integrity sha512-lqd7LXCq0gWc0wKXtoKDru5wEUNjm3OryLVNRZ8OnW8km6fSNUuFrjEhU3nklxXE2jvd4qrox566acgh+xQt8w== - dependencies: - "@csstools/selector-specificity" "^2.0.0" - postcss-selector-parser "^6.0.10" - -postcss-normalize-charset@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" - integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== - -postcss-normalize-display-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" - integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-positions@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" - integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-repeat-style@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" - integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-string@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" - integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-timing-functions@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" - integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-unicode@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz#3d23aede35e160089a285e27bf715de11dc9db75" - integrity sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ== - dependencies: - browserslist "^4.16.6" - postcss-value-parser "^4.2.0" - -postcss-normalize-url@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" - integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== - dependencies: - normalize-url "^6.0.1" - postcss-value-parser "^4.2.0" - -postcss-normalize-whitespace@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" - integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-10.0.1.tgz#464692676b52792a06b06880a176279216540dd7" - integrity sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA== - dependencies: - "@csstools/normalize.css" "*" - postcss-browser-comments "^4" - sanitize.css "*" - -postcss-opacity-percentage@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz#bd698bb3670a0a27f6d657cc16744b3ebf3b1145" - integrity sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w== - -postcss-ordered-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" - integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== - dependencies: - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-overflow-shorthand@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz#7ed6486fec44b76f0eab15aa4866cda5d55d893e" - integrity sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-page-break@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f" - integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== - -postcss-place@^7.0.4: - version "7.0.5" - resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-7.0.5.tgz#95dbf85fd9656a3a6e60e832b5809914236986c4" - integrity sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-preset-env@^7.0.1: - version "7.7.2" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-7.7.2.tgz#769f7f21779b4688c9a6082ae1572416cab415cf" - integrity sha512-1q0ih7EDsZmCb/FMDRvosna7Gsbdx8CvYO5hYT120hcp2ZAuOHpSzibujZ4JpIUcAC02PG6b+eftxqjTFh5BNA== - dependencies: - "@csstools/postcss-cascade-layers" "^1.0.4" - "@csstools/postcss-color-function" "^1.1.0" - "@csstools/postcss-font-format-keywords" "^1.0.0" - "@csstools/postcss-hwb-function" "^1.0.1" - "@csstools/postcss-ic-unit" "^1.0.0" - "@csstools/postcss-is-pseudo-class" "^2.0.6" - "@csstools/postcss-normalize-display-values" "^1.0.0" - "@csstools/postcss-oklab-function" "^1.1.0" - "@csstools/postcss-progressive-custom-properties" "^1.3.0" - "@csstools/postcss-stepped-value-functions" "^1.0.0" - "@csstools/postcss-trigonometric-functions" "^1.0.1" - "@csstools/postcss-unset-value" "^1.0.1" - autoprefixer "^10.4.7" - browserslist "^4.21.0" - css-blank-pseudo "^3.0.3" - css-has-pseudo "^3.0.4" - css-prefers-color-scheme "^6.0.3" - cssdb "^6.6.3" - postcss-attribute-case-insensitive "^5.0.1" - postcss-clamp "^4.1.0" - postcss-color-functional-notation "^4.2.3" - postcss-color-hex-alpha "^8.0.4" - postcss-color-rebeccapurple "^7.1.0" - postcss-custom-media "^8.0.2" - postcss-custom-properties "^12.1.8" - postcss-custom-selectors "^6.0.3" - postcss-dir-pseudo-class "^6.0.4" - postcss-double-position-gradients "^3.1.1" - postcss-env-function "^4.0.6" - postcss-focus-visible "^6.0.4" - postcss-focus-within "^5.0.4" - postcss-font-variant "^5.0.0" - postcss-gap-properties "^3.0.3" - postcss-image-set-function "^4.0.6" - postcss-initial "^4.0.1" - postcss-lab-function "^4.2.0" - postcss-logical "^5.0.4" - postcss-media-minmax "^5.0.0" - postcss-nesting "^10.1.9" - postcss-opacity-percentage "^1.1.2" - postcss-overflow-shorthand "^3.0.3" - postcss-page-break "^3.0.4" - postcss-place "^7.0.4" - postcss-pseudo-class-any-link "^7.1.5" - postcss-replace-overflow-wrap "^4.0.0" - postcss-selector-not "^6.0.0" - postcss-value-parser "^4.2.0" - -postcss-pseudo-class-any-link@^7.1.5: - version "7.1.6" - resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz#2693b221902da772c278def85a4d9a64b6e617ab" - integrity sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w== - dependencies: - postcss-selector-parser "^6.0.10" - -postcss-reduce-initial@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz#fc31659ea6e85c492fb2a7b545370c215822c5d6" - integrity sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw== - dependencies: - browserslist "^4.16.6" - caniuse-api "^3.0.0" - -postcss-reduce-transforms@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" - integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-replace-overflow-wrap@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" - integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== - -postcss-selector-not@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz#8f0a709bf7d4b45222793fc34409be407537556d" - integrity sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ== - dependencies: - postcss-selector-parser "^6.0.10" - -postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.6, postcss-selector-parser@^6.0.9: - version "6.0.10" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-svgo@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" - integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== - dependencies: - postcss-value-parser "^4.2.0" - svgo "^2.7.0" - -postcss-unique-selectors@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" - integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@^7.0.35: - version "7.0.39" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" - integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== - dependencies: - picocolors "^0.2.1" - source-map "^0.6.1" - -postcss@^8.3.5, postcss@^8.4.14, postcss@^8.4.4, postcss@^8.4.7: - version "8.4.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" - integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== - dependencies: - nanoid "^3.3.4" - picocolors "^1.0.0" - source-map-js "^1.0.2" - prebuild-install@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.0.1.tgz#c10075727c318efe72412f333e0ef625beaf3870" @@ -14657,11 +10625,6 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" @@ -14674,48 +10637,6 @@ prettier@^2.5.1, prettier@^2.6.2: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== -pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - -pretty-error@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" - integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== - dependencies: - lodash "^4.17.20" - renderkid "^3.0.0" - -pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - -pretty-format@^27.0.0, pretty-format@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== - dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -pretty-format@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" - integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== - dependencies: - "@jest/schemas" "^28.1.3" - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^18.0.0" - pretty-ms@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-7.0.1.tgz#7d903eaab281f7d8e03c66f867e239dc32fb73e8" @@ -14728,11 +10649,6 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - progress@2.0.3, progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" @@ -14759,21 +10675,6 @@ promise-retry@^2.0.1: err-code "^2.0.2" retry "^0.12.0" -promise@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" - integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== - dependencies: - asap "~2.0.6" - -prompts@^2.0.1, prompts@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - promzard@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" @@ -14804,7 +10705,7 @@ proto-list@~1.2.1: resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= -protobufjs@6.11.3, protobufjs@^6.11.3, protobufjs@^6.8.8, protobufjs@~6.11.2, protobufjs@~6.11.3: +protobufjs@^6.11.3, protobufjs@^6.8.8, protobufjs@~6.11.2, protobufjs@~6.11.3: version "6.11.3" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74" integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg== @@ -14842,25 +10743,6 @@ protobufjs@^7.0.0: "@types/node" ">=13.7.0" long "^5.0.0" -protobufjs@~6.10.2: - version "6.10.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.10.3.tgz#11ed1dd02acbfcb330becf1611461d4b407f9eef" - integrity sha512-yvAslS0hNdBhlSKckI4R1l7wunVilX66uvrjzE4MimiAt7/qw1nLpMhZrn/ObuUTM/c3Xnfl01LYMdcSJe6dwg== - 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" - protocols@^1.1.0, protocols@^1.4.0: version "1.4.7" resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32" @@ -14886,7 +10768,7 @@ proxy-from-env@1.1.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== -psl@^1.1.24, psl@^1.1.33: +psl@^1.1.24: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== @@ -14949,7 +10831,7 @@ pure-rand@^5.0.1: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-5.0.1.tgz#97a287b4b4960b2a3448c0932bf28f2405cac51d" integrity sha512-ksWccjmXOHU2gJBnH0cK1lSYdvSZ0zLoCMSz/nTGh6hDvCSgcRxDyIcOBD6KNxFz3xhMPm/T267Tbe2JRymKEQ== -q@^1.1.2, q@^1.5.1: +q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= @@ -14981,11 +10863,6 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== - raf@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" @@ -15006,14 +10883,14 @@ randexp@0.4.6: discontinuous-range "1.0.0" ret "~0.1.10" -randombytes@^2.0.1, randombytes@^2.1.0: +randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -range-parser@^1.2.1, range-parser@~1.2.1: +range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== @@ -15038,62 +10915,6 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-app-polyfill@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz#95221e0a9bd259e5ca6b177c7bb1cb6768f68fd7" - integrity sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w== - dependencies: - core-js "^3.19.2" - object-assign "^4.1.1" - promise "^8.1.0" - raf "^3.4.1" - regenerator-runtime "^0.13.9" - whatwg-fetch "^3.6.2" - -react-app-rewire-multiple-entry@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/react-app-rewire-multiple-entry/-/react-app-rewire-multiple-entry-2.2.3.tgz#50bc510adf215c4610b62c9463186d40f966618e" - integrity sha512-7lGrGLuzLwoINQFQ6ikBvMxZwb58pqmG2gMTsoX8jefSICnj4LWp8Bu3IQ8MZDej8NdshhD8ihk+b/cFWhJzgQ== - dependencies: - xxhashjs "^0.2.2" - -react-app-rewired@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/react-app-rewired/-/react-app-rewired-2.2.1.tgz#84901ee1e3f26add0377ebec0b41bcdfce9fc211" - integrity sha512-uFQWTErXeLDrMzOJHKp0h8P1z0LV9HzPGsJ6adOtGlA/B9WfT6Shh4j2tLTTGlXOfiVx6w6iWpp7SOC5pvk+gA== - dependencies: - semver "^5.6.0" - -react-dev-utils@^12.0.1: - version "12.0.1" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" - integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== - dependencies: - "@babel/code-frame" "^7.16.0" - address "^1.1.2" - browserslist "^4.18.1" - chalk "^4.1.2" - cross-spawn "^7.0.3" - detect-port-alt "^1.1.6" - escape-string-regexp "^4.0.0" - filesize "^8.0.6" - find-up "^5.0.0" - fork-ts-checker-webpack-plugin "^6.5.0" - global-modules "^2.0.0" - globby "^11.0.4" - gzip-size "^6.0.0" - immer "^9.0.7" - is-root "^2.1.0" - loader-utils "^3.2.0" - open "^8.4.0" - pkg-up "^3.1.0" - prompts "^2.4.2" - react-error-overlay "^6.0.11" - recursive-readdir "^2.2.2" - shell-quote "^1.7.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - react-dom@^16.8.0: version "16.14.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89" @@ -15104,115 +10925,16 @@ react-dom@^16.8.0: prop-types "^15.6.2" scheduler "^0.19.1" -react-error-overlay@^6.0.11: - version "6.0.11" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" - integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== - -react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6: +react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6: 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", react-is@^17.0.1, react-is@^17.0.2: +"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@^18.0.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" - integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== - -react-refresh@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" - integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== - -react-router-dom@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.0.tgz#da1bfb535a0e89a712a93b97dd76f47ad1f32363" - integrity sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ== - dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - loose-envify "^1.3.1" - prop-types "^15.6.2" - react-router "5.2.1" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - -react-router@5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.1.tgz#4d2e4e9d5ae9425091845b8dbc6d9d276239774d" - integrity sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ== - dependencies: - "@babel/runtime" "^7.12.13" - 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@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-5.0.1.tgz#6285dbd65a8ba6e49ca8d651ce30645a6d980003" - integrity sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ== - dependencies: - "@babel/core" "^7.16.0" - "@pmmmwh/react-refresh-webpack-plugin" "^0.5.3" - "@svgr/webpack" "^5.5.0" - babel-jest "^27.4.2" - babel-loader "^8.2.3" - babel-plugin-named-asset-import "^0.3.8" - babel-preset-react-app "^10.0.1" - bfj "^7.0.2" - browserslist "^4.18.1" - camelcase "^6.2.1" - case-sensitive-paths-webpack-plugin "^2.4.0" - css-loader "^6.5.1" - css-minimizer-webpack-plugin "^3.2.0" - dotenv "^10.0.0" - dotenv-expand "^5.1.0" - eslint "^8.3.0" - eslint-config-react-app "^7.0.1" - eslint-webpack-plugin "^3.1.1" - file-loader "^6.2.0" - fs-extra "^10.0.0" - html-webpack-plugin "^5.5.0" - identity-obj-proxy "^3.0.0" - jest "^27.4.3" - jest-resolve "^27.4.2" - jest-watch-typeahead "^1.0.0" - mini-css-extract-plugin "^2.4.5" - postcss "^8.4.4" - postcss-flexbugs-fixes "^5.0.2" - postcss-loader "^6.2.1" - postcss-normalize "^10.0.1" - postcss-preset-env "^7.0.1" - prompts "^2.4.2" - react-app-polyfill "^3.0.0" - react-dev-utils "^12.0.1" - react-refresh "^0.11.0" - resolve "^1.20.0" - resolve-url-loader "^4.0.0" - sass-loader "^12.3.0" - semver "^7.3.5" - source-map-loader "^3.0.0" - style-loader "^3.3.1" - tailwindcss "^3.0.2" - terser-webpack-plugin "^5.2.5" - webpack "^5.64.4" - webpack-dev-server "^4.6.0" - webpack-manifest-plugin "^4.0.2" - workbox-webpack-plugin "^6.4.1" - optionalDependencies: - fsevents "^2.3.2" - react-test-renderer@^16.0.0-0: version "16.14.0" resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" @@ -15223,7 +10945,7 @@ react-test-renderer@^16.0.0-0: react-is "^16.8.6" scheduler "^0.19.1" -react-transition-group@^4.4.0, react-transition-group@^4.4.2: +react-transition-group@^4.4.0: version "4.4.2" resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470" integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg== @@ -15233,7 +10955,7 @@ react-transition-group@^4.4.0, react-transition-group@^4.4.2: loose-envify "^1.4.0" prop-types "^15.6.2" -react@^16.14.0, react@^16.8.0: +react@^16.14.0: version "16.14.0" resolved "https://registry.yarnpkg.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== @@ -15242,13 +10964,6 @@ react@^16.14.0, react@^16.8.0: object-assign "^4.1.1" prop-types "^15.6.2" -read-cache@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" - integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== - dependencies: - pify "^2.3.0" - read-cmd-shim@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" @@ -15337,7 +11052,7 @@ read@1, read@~1.0.1: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -15350,7 +11065,7 @@ read@1, read@~1.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -"readable-stream@2 || 3", readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +"readable-stream@2 || 3", readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -15386,13 +11101,6 @@ readonly-date@^1.0.0: resolved "https://registry.yarnpkg.com/readonly-date/-/readonly-date-1.0.0.tgz#5af785464d8c7d7c40b9d738cbde8c646f97dcd9" integrity sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ== -recursive-readdir@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" - integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== - dependencies: - minimatch "3.0.4" - redent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" @@ -15439,7 +11147,7 @@ regenerate@^1.4.2: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.9: +regenerator-runtime@^0.13.4: version "0.13.9" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== @@ -15459,11 +11167,6 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regex-parser@^2.2.11: - version "2.2.11" - resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" - integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== - regexp.prototype.flags@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" @@ -15501,22 +11204,6 @@ regjsparser@^0.8.2: dependencies: jsesc "~0.5.0" -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -renderkid@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" - integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== - dependencies: - css-select "^4.1.3" - dom-converter "^0.2.0" - htmlparser2 "^6.1.0" - lodash "^4.17.21" - strip-ansi "^6.0.1" - repeat-element@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" @@ -15627,33 +11314,12 @@ resolve-path@^1.4.0: http-errors "~1.6.2" path-is-absolute "1.0.1" -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@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" - integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA== - dependencies: - adjust-sourcemap-loader "^4.0.0" - convert-source-map "^1.7.0" - loader-utils "^2.0.0" - postcss "^7.0.35" - source-map "0.6.1" - resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve.exports@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" - integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== - -resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1: +resolve@^1.10.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -15701,21 +11367,11 @@ retry@^0.12.0: resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= -retry@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rifm@^0.12.1: - version "0.12.1" - resolved "https://registry.yarnpkg.com/rifm/-/rifm-0.12.1.tgz#8fa77f45b7f1cda2a0068787ac821f0593967ac4" - integrity sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg== - rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -15737,14 +11393,6 @@ rimraf@~2.6.2: dependencies: glob "^7.1.3" -ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - robot3@^0.2.19: version "0.2.19" resolved "https://registry.yarnpkg.com/robot3/-/robot3-0.2.19.tgz#11b132617fb88a2ea094278f4a3e79ce804aae55" @@ -15775,16 +11423,6 @@ rollup-plugin-terser@^5.1.3: serialize-javascript "^4.0.0" terser "^4.6.2" -rollup-plugin-terser@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" - integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== - dependencies: - "@babel/code-frame" "^7.10.4" - jest-worker "^26.2.1" - serialize-javascript "^4.0.0" - terser "^5.0.0" - rollup-pluginutils@^2.4.1, rollup-pluginutils@^2.8.2: version "2.8.2" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" @@ -15792,7 +11430,7 @@ rollup-pluginutils@^2.4.1, rollup-pluginutils@^2.8.2: dependencies: estree-walker "^0.6.1" -rollup@^2.43.1, rollup@^2.58.0: +rollup@^2.58.0: version "2.77.0" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.77.0.tgz#749eaa5ac09b6baa52acc076bc46613eddfd53f4" integrity sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g== @@ -15849,7 +11487,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -15857,48 +11495,14 @@ safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sanitize.css@*: - version "13.0.0" - resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-13.0.0.tgz#2675553974b27964c75562ade3bd85d79879f173" - integrity sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA== - -sass-loader@^12.3.0: - version "12.6.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.6.0.tgz#5148362c8e2cdd4b950f3c63ac5d16dbfed37bcb" - integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== - dependencies: - klona "^2.0.4" - neo-async "^2.6.2" - -sass@^1.49.9: - version "1.49.9" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.9.tgz#b15a189ecb0ca9e24634bae5d1ebc191809712f9" - integrity sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A== - dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" - source-map-js ">=0.6.2 <2.0.0" - -sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= dependencies: - xmlchars "^2.2.0" + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== scheduler@^0.19.1: version "0.19.1" @@ -15908,77 +11512,6 @@ scheduler@^0.19.1: loose-envify "^1.1.0" object-assign "^4.1.1" -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" - -schema-utils@^2.6.5: - version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== - dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" - -schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" - integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" - integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.8.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.0.0" - -secretjs@0.17.7: - version "0.17.7" - resolved "https://registry.yarnpkg.com/secretjs/-/secretjs-0.17.7.tgz#a1aef5866a35cf673be9ddd717d20729afd056ac" - integrity sha512-j39l9+vR2A8067QBqDDejS7LmRLgdkG4uRw2Ar6HMfzDGo26eTh7cIXVlVu/yHBumxtQzKun20epOXwuYHXjQg== - dependencies: - "@iov/crypto" "2.1.0" - "@iov/encoding" "2.1.0" - "@iov/utils" "2.0.2" - axios "0.21.1" - curve25519-js "0.0.4" - fast-deep-equal "3.1.1" - js-crypto-hkdf "0.7.3" - miscreant "0.3.2" - pako "1.0.11" - protobufjs "6.11.3" - secure-random "1.1.2" - -secure-random@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/secure-random/-/secure-random-1.1.2.tgz#ed103b460a851632d420d46448b2a900a41e7f7c" - integrity sha512-H2bdSKERKdBV1SwoqYm6C0y+9EA94v6SUBOWO8kDndc4NoUih7Dv6Tsgma7zO1lv27wIvjlD0ZpMQk7um5dheQ== - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -selfsigned@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.0.1.tgz#8b2df7fa56bf014d19b6007655fff209c0ef0a56" - integrity sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ== - dependencies: - node-forge "^1" - semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" @@ -16039,26 +11572,6 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" -serialize-javascript@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== - dependencies: - randombytes "^2.1.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - serve-static@1.15.0: version "1.15.0" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" @@ -16099,21 +11612,6 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -sha3@~2.1.0: - version "2.1.4" - resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" - integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== - dependencies: - buffer "6.0.3" - shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" @@ -16145,7 +11643,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.6.1, shell-quote@^1.7.3: +shell-quote@^1.6.1: version "1.7.3" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== @@ -16159,7 +11657,7 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -16190,11 +11688,6 @@ sinon@^12.0.1: nise "^5.1.0" supports-color "^7.2.0" -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - slash@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" @@ -16276,15 +11769,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sockjs@^0.3.24: - version "0.3.24" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" - integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== - dependencies: - faye-websocket "^0.11.3" - uuid "^8.3.2" - websocket-driver "^0.7.4" - socks-proxy-agent@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" @@ -16325,25 +11809,6 @@ sort-keys@^2.0.0: dependencies: is-plain-obj "^1.0.0" -source-list-map@^2.0.0, source-list-map@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -source-map-loader@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.1.tgz#9ae5edc7c2d42570934be4c95d1ccc6352eba52d" - integrity sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA== - dependencies: - abab "^2.0.5" - iconv-lite "^0.6.3" - source-map-js "^1.0.1" - source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -16355,15 +11820,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-resolve@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" - integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - -source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20: +source-map-support@~0.5.12: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -16376,28 +11833,21 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: +source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + source-map@^0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== -source-map@^0.8.0-beta.0: - version "0.8.0-beta.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" - integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== - dependencies: - whatwg-url "^7.0.0" - sourcemap-codec@^1.4.4: version "1.4.6" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz#e30a74f0402bad09807640d39e971090a08ce1e9" @@ -16429,29 +11879,6 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -16507,23 +11934,13 @@ ssri@^8.0.0, ssri@^8.0.1: dependencies: minipass "^3.1.1" -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stack-utils@^2.0.3, stack-utils@^2.0.5: +stack-utils@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== dependencies: escape-string-regexp "^2.0.0" -stackframe@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" - integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== - static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -16560,22 +11977,6 @@ string-argv@0.3.1: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-length@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-5.0.1.tgz#3d647f497b6e8e8d41e422f7e0b23bc536c8381e" - integrity sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow== - dependencies: - char-regex "^2.0.0" - strip-ansi "^7.0.1" - string-natural-compare@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" @@ -16743,16 +12144,6 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-comments@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" - integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== - strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -16801,24 +12192,6 @@ strong-log-transformer@^2.0.0: minimist "^1.2.0" through "^2.3.4" -style-loader@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575" - integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ== - -stylehacks@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.0.tgz#a40066490ca0caca04e96c6b02153ddc39913520" - integrity sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q== - dependencies: - browserslist "^4.16.6" - postcss-selector-parser "^6.0.4" - -stylis@4.0.13, stylis@^4.0.3: - version "4.0.13" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91" - integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag== - supertap@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/supertap/-/supertap-3.0.1.tgz#aa89e4522104402c6e8fe470a7d2db6dc4037c6a" @@ -16857,13 +12230,6 @@ supports-color@^7.0.0, supports-color@^7.1.0, supports-color@^7.2.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - supports-hyperlinks@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" @@ -16877,53 +12243,11 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -svg-parser@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" - integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== - -svgo@^1.2.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -svgo@^2.7.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" - picocolors "^1.0.0" - stable "^0.1.8" - symbol-observable@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a" integrity sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA== -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - table-layout@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" @@ -16945,44 +12269,6 @@ table@^6.0.9: string-width "^4.2.3" strip-ansi "^6.0.1" -tailwindcss@^3.0.2: - version "3.1.6" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.1.6.tgz#bcb719357776c39e6376a8d84e9834b2b19a49f1" - integrity sha512-7skAOY56erZAFQssT1xkpk+kWt2NrO45kORlxFPXUt3CiGsVPhH1smuH5XoDH6sGPXLyBv+zgCKA2HWBsgCytg== - dependencies: - arg "^5.0.2" - chokidar "^3.5.3" - color-name "^1.1.4" - detective "^5.2.1" - didyoumean "^1.2.2" - dlv "^1.1.3" - fast-glob "^3.2.11" - glob-parent "^6.0.2" - is-glob "^4.0.3" - lilconfig "^2.0.5" - normalize-path "^3.0.0" - object-hash "^3.0.0" - picocolors "^1.0.0" - postcss "^8.4.14" - postcss-import "^14.1.0" - postcss-js "^4.0.0" - postcss-load-config "^3.1.4" - postcss-nested "5.0.6" - postcss-selector-parser "^6.0.10" - postcss-value-parser "^4.2.0" - quick-lru "^5.1.1" - resolve "^1.22.1" - -tapable@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - tar-fs@2.1.1, tar-fs@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" @@ -17058,35 +12344,6 @@ temp@^0.9.0, temp@^0.9.1: dependencies: rimraf "~2.6.2" -tempy@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" - integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== - dependencies: - is-stream "^2.0.0" - temp-dir "^2.0.0" - type-fest "^0.16.0" - unique-string "^2.0.0" - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.5: - version "5.3.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz#8033db876dd5875487213e87c627bca323e5ed90" - integrity sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ== - dependencies: - "@jridgewell/trace-mapping" "^0.3.7" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.0" - terser "^5.7.2" - terser@^4.6.2: version "4.8.0" resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" @@ -17096,16 +12353,6 @@ terser@^4.6.2: source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.0.0, terser@^5.10.0, terser@^5.7.2: - version "5.14.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10" - integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA== - dependencies: - "@jridgewell/source-map" "^0.3.2" - acorn "^8.5.0" - commander "^2.20.0" - source-map-support "~0.5.20" - test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -17139,11 +12386,6 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" -throat@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" - integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== - through2@^2.0.0, through2@^2.0.2: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -17164,22 +12406,12 @@ through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - time-zone@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/time-zone/-/time-zone-1.0.0.tgz#99c5bf55958966af6d06d83bdf3800dc82faec5d" integrity sha1-mcW/VZWJZq9tBtg73zgA3IL67F0= -tiny-invariant@^1.0.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" - integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg== - -tiny-warning@^1.0.0, tiny-warning@^1.0.2, tiny-warning@^1.0.3: +tiny-warning@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== @@ -17198,11 +12430,6 @@ tmp@^0.2.1: dependencies: rimraf "^3.0.0" -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -17250,15 +12477,6 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" @@ -17274,13 +12492,6 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - tr46@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" @@ -17313,11 +12524,6 @@ trim-off-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.3.tgz#8df24847fcb821b0ab27d58ab6efec9f2fe961a1" integrity sha512-kh6Tu6GbeSNMGfrrZh6Bb/4ZEHV1QlB4xNDBeog8Y9/QwFlKTRyWvY3Fs9tRDAMZliVUwieMgEdIeL/FtqjkJg== -tryer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" - integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== - ts-poet@^4.15.0: version "4.15.0" resolved "https://registry.yarnpkg.com/ts-poet/-/ts-poet-4.15.0.tgz#637145fa554d3b27c56541578df0ce08cd9eb328" @@ -17373,7 +12579,7 @@ tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== -tslib@^2.0.3, tslib@^2.1.0: +tslib@^2.1.0: version "2.3.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== @@ -17409,13 +12615,6 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - type-detect@4.0.8, type-detect@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" @@ -17426,11 +12625,6 @@ type-fest@^0.13.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== -type-fest@^0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" - integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== - type-fest@^0.18.0: version "0.18.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" @@ -17469,18 +12663,6 @@ type-is@^1.6.16, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -type-tagger@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/type-tagger/-/type-tagger-1.0.0.tgz#dc6297e52e17097c1b92b42c16816a18f631e7f4" - integrity sha512-FIPqqpmDgdaulCnRoKv1/d3U4xVBUrYn42QXWNP3XYmgfPUDuBUsgFOb9ntT0aIe0UsUP+lknpQ5d9Kn36RssA== - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -17584,13 +12766,6 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - universal-user-agent@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557" @@ -17605,31 +12780,16 @@ universal-user-agent@^5.0.0: dependencies: os-name "^3.1.0" -universalify@^0.1.0, universalify@^0.1.2: +universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unorm@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" - integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== - unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -17676,7 +12836,7 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= @@ -17688,21 +12848,6 @@ util-promisify@^2.1.0: dependencies: object.getownpropertydescriptors "^2.0.3" -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= - utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -17713,17 +12858,12 @@ uuid@^3.0.1, uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -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== - v8-compile-cache@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== -v8-to-istanbul@^8.0.0, v8-to-istanbul@^8.1.0: +v8-to-istanbul@^8.0.0: version "8.1.1" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== @@ -17747,11 +12887,6 @@ validate-npm-package-name@^3.0.0: dependencies: builtins "^1.0.3" -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, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -17766,47 +12901,11 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -walker@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -watchpack@^2.3.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - wbasenodejscpp@alpha: version "0.3.124" resolved "https://registry.yarnpkg.com/wbasenodejscpp/-/wbasenodejscpp-0.3.124.tgz#0fee456904d9a570b106fe6c7225af3d71e2b960" integrity sha512-5SnpuYtZZbQ7cfJXKk0MEiNgFF3w1GkGnQL8T7JJrf6m8uWdolq9zlHrhpoGTRdf97JVJ1Bh1Q8LoCW+KISanw== -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - wcwidth@^1.0.0, wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -17829,162 +12928,16 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - webidl-conversions@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== -webpack-dev-middleware@^5.3.1: - version "5.3.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" - integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== - dependencies: - colorette "^2.0.10" - memfs "^3.4.3" - mime-types "^2.1.31" - range-parser "^1.2.1" - schema-utils "^4.0.0" - -webpack-dev-server@^4.6.0: - version "4.9.3" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.9.3.tgz#2360a5d6d532acb5410a668417ad549ee3b8a3c9" - integrity sha512-3qp/eoboZG5/6QgiZ3llN8TUzkSpYg1Ko9khWX1h40MIEUNS2mDoIa8aXsPfskER+GbTvs/IJZ1QTBBhhuetSw== - dependencies: - "@types/bonjour" "^3.5.9" - "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" - "@types/serve-index" "^1.9.1" - "@types/serve-static" "^1.13.10" - "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.1" - ansi-html-community "^0.0.8" - bonjour-service "^1.0.11" - chokidar "^3.5.3" - colorette "^2.0.10" - compression "^1.7.4" - connect-history-api-fallback "^2.0.0" - default-gateway "^6.0.3" - express "^4.17.3" - graceful-fs "^4.2.6" - html-entities "^2.3.2" - http-proxy-middleware "^2.0.3" - ipaddr.js "^2.0.1" - open "^8.0.9" - p-retry "^4.5.0" - rimraf "^3.0.2" - schema-utils "^4.0.0" - selfsigned "^2.0.1" - serve-index "^1.9.1" - sockjs "^0.3.24" - spdy "^4.0.2" - webpack-dev-middleware "^5.3.1" - ws "^8.4.2" - -webpack-manifest-plugin@^4.0.2: - version "4.1.1" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz#10f8dbf4714ff93a215d5a45bcc416d80506f94f" - integrity sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow== - dependencies: - tapable "^2.0.0" - webpack-sources "^2.2.0" - -webpack-sources@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack-sources@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd" - integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== - dependencies: - source-list-map "^2.0.1" - source-map "^0.6.1" - -webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - -webpack@^5.64.4: - version "5.73.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.73.0.tgz#bbd17738f8a53ee5760ea2f59dce7f3431d35d38" - integrity sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^0.0.51" - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/wasm-edit" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - acorn "^8.4.1" - acorn-import-assertions "^1.7.6" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.9.3" - es-module-lexer "^0.9.0" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.1.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.1.3" - watchpack "^2.3.1" - webpack-sources "^3.2.3" - -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - well-known-symbols@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/well-known-symbols/-/well-known-symbols-2.0.0.tgz#e9c7c07dbd132b7b84212c8174391ec1f9871ba5" integrity sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q== -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-fetch@^3.6.2: - version "3.6.2" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" - integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - whatwg-url@^11.0.0: version "11.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" @@ -18010,15 +12963,6 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" -whatwg-url@^8.0.0, whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -18063,7 +13007,7 @@ windows-release@^3.1.0: dependencies: execa "^1.0.0" -word-wrap@^1.2.3, word-wrap@~1.2.3: +word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== @@ -18081,175 +13025,6 @@ wordwrapjs@^4.0.0: reduce-flatten "^2.0.0" typical "^5.2.0" -workbox-background-sync@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.3.tgz#7c66c1836aeca6f3762dc48d17a1852a33b3168c" - integrity sha512-0DD/V05FAcek6tWv9XYj2w5T/plxhDSpclIcAGjA/b7t/6PdaRkQ7ZgtAX6Q/L7kV7wZ8uYRJUoH11VjNipMZw== - dependencies: - idb "^6.1.4" - workbox-core "6.5.3" - -workbox-broadcast-update@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.5.3.tgz#fc2ad79cf507e22950cda9baf1e9a0ccc43f31bc" - integrity sha512-4AwCIA5DiDrYhlN+Miv/fp5T3/whNmSL+KqhTwRBTZIL6pvTgE4lVuRzAt1JltmqyMcQ3SEfCdfxczuI4kwFQg== - dependencies: - workbox-core "6.5.3" - -workbox-build@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.3.tgz#38e3f286d63d2745bff4d1478bb3a6ab5c8b1170" - integrity sha512-8JNHHS7u13nhwIYCDea9MNXBNPHXCs5KDZPKI/ZNTr3f4sMGoD7hgFGecbyjX1gw4z6e9bMpMsOEJNyH5htA/w== - dependencies: - "@apideck/better-ajv-errors" "^0.3.1" - "@babel/core" "^7.11.1" - "@babel/preset-env" "^7.11.0" - "@babel/runtime" "^7.11.2" - "@rollup/plugin-babel" "^5.2.0" - "@rollup/plugin-node-resolve" "^11.2.1" - "@rollup/plugin-replace" "^2.4.1" - "@surma/rollup-plugin-off-main-thread" "^2.2.3" - ajv "^8.6.0" - common-tags "^1.8.0" - fast-json-stable-stringify "^2.1.0" - fs-extra "^9.0.1" - glob "^7.1.6" - lodash "^4.17.20" - pretty-bytes "^5.3.0" - rollup "^2.43.1" - rollup-plugin-terser "^7.0.0" - source-map "^0.8.0-beta.0" - stringify-object "^3.3.0" - strip-comments "^2.0.1" - tempy "^0.6.0" - upath "^1.2.0" - workbox-background-sync "6.5.3" - workbox-broadcast-update "6.5.3" - workbox-cacheable-response "6.5.3" - workbox-core "6.5.3" - workbox-expiration "6.5.3" - workbox-google-analytics "6.5.3" - workbox-navigation-preload "6.5.3" - workbox-precaching "6.5.3" - workbox-range-requests "6.5.3" - workbox-recipes "6.5.3" - workbox-routing "6.5.3" - workbox-strategies "6.5.3" - workbox-streams "6.5.3" - workbox-sw "6.5.3" - workbox-window "6.5.3" - -workbox-cacheable-response@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.5.3.tgz#b1f8c2bc599a7be8f7e3c262535629c558738e47" - integrity sha512-6JE/Zm05hNasHzzAGKDkqqgYtZZL2H06ic2GxuRLStA4S/rHUfm2mnLFFXuHAaGR1XuuYyVCEey1M6H3PdZ7SQ== - dependencies: - workbox-core "6.5.3" - -workbox-core@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.3.tgz#bca038a9ef0d7a634a6db2a60f45313ed22ac249" - integrity sha512-Bb9ey5n/M9x+l3fBTlLpHt9ASTzgSGj6vxni7pY72ilB/Pb3XtN+cZ9yueboVhD5+9cNQrC9n/E1fSrqWsUz7Q== - -workbox-expiration@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.3.tgz#efc0811f371a2ede1052b9de1c4f072b71d50503" - integrity sha512-jzYopYR1zD04ZMdlbn/R2Ik6ixiXbi15c9iX5H8CTi6RPDz7uhvMLZPKEndZTpfgmUk8mdmT9Vx/AhbuCl5Sqw== - dependencies: - idb "^6.1.4" - workbox-core "6.5.3" - -workbox-google-analytics@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.3.tgz#cc8c3a61f449131660a4ed2f5362d9a3599b18fe" - integrity sha512-3GLCHotz5umoRSb4aNQeTbILETcrTVEozSfLhHSBaegHs1PnqCmN0zbIy2TjTpph2AGXiNwDrWGF0AN+UgDNTw== - dependencies: - workbox-background-sync "6.5.3" - workbox-core "6.5.3" - workbox-routing "6.5.3" - workbox-strategies "6.5.3" - -workbox-navigation-preload@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.5.3.tgz#81b74f598b11aa07e2cf1c21af7a826a4f0f70b3" - integrity sha512-bK1gDFTc5iu6lH3UQ07QVo+0ovErhRNGvJJO/1ngknT0UQ702nmOUhoN9qE5mhuQSrnK+cqu7O7xeaJ+Rd9Tmg== - dependencies: - workbox-core "6.5.3" - -workbox-precaching@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.3.tgz#c870312b2ef901d790ab9e48da084e776c62af47" - integrity sha512-sjNfgNLSsRX5zcc63H/ar/hCf+T19fRtTqvWh795gdpghWb5xsfEkecXEvZ8biEi1QD7X/ljtHphdaPvXDygMQ== - dependencies: - workbox-core "6.5.3" - workbox-routing "6.5.3" - workbox-strategies "6.5.3" - -workbox-range-requests@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.3.tgz#e624ac82ff266a5e4f236d055797def07949d941" - integrity sha512-pGCP80Bpn/0Q0MQsfETSfmtXsQcu3M2QCJwSFuJ6cDp8s2XmbUXkzbuQhCUzKR86ZH2Vex/VUjb2UaZBGamijA== - dependencies: - workbox-core "6.5.3" - -workbox-recipes@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.5.3.tgz#15beac9d8ae7a3a1c100218094a824b4dd3fd59a" - integrity sha512-IcgiKYmbGiDvvf3PMSEtmwqxwfQ5zwI7OZPio3GWu4PfehA8jI8JHI3KZj+PCfRiUPZhjQHJ3v1HbNs+SiSkig== - dependencies: - workbox-cacheable-response "6.5.3" - workbox-core "6.5.3" - workbox-expiration "6.5.3" - workbox-precaching "6.5.3" - workbox-routing "6.5.3" - workbox-strategies "6.5.3" - -workbox-routing@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.3.tgz#a0a699d8cc90b5692bd3df24679acbbda3913777" - integrity sha512-DFjxcuRAJjjt4T34RbMm3MCn+xnd36UT/2RfPRfa8VWJGItGJIn7tG+GwVTdHmvE54i/QmVTJepyAGWtoLPTmg== - dependencies: - workbox-core "6.5.3" - -workbox-strategies@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.3.tgz#4bea9a48fee16cf43766e0d8138296773c8a9783" - integrity sha512-MgmGRrDVXs7rtSCcetZgkSZyMpRGw8HqL2aguszOc3nUmzGZsT238z/NN9ZouCxSzDu3PQ3ZSKmovAacaIhu1w== - dependencies: - workbox-core "6.5.3" - -workbox-streams@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.5.3.tgz#b6860290031caa7d0e46ad7142315c94359c780b" - integrity sha512-vN4Qi8o+b7zj1FDVNZ+PlmAcy1sBoV7SC956uhqYvZ9Sg1fViSbOpydULOssVJ4tOyKRifH/eoi6h99d+sJ33w== - dependencies: - workbox-core "6.5.3" - workbox-routing "6.5.3" - -workbox-sw@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.3.tgz#cd2f0c086f4496acd25774ed02c48504189bebdd" - integrity sha512-BQBzm092w+NqdIEF2yhl32dERt9j9MDGUTa2Eaa+o3YKL4Qqw55W9yQC6f44FdAHdAJrJvp0t+HVrfh8AiGj8A== - -workbox-webpack-plugin@^6.4.1: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.3.tgz#c37bb323be4952311565c07db51054fe59c87d73" - integrity sha512-Es8Xr02Gi6Kc3zaUwR691ZLy61hz3vhhs5GztcklQ7kl5k2qAusPh0s6LF3wEtlpfs9ZDErnmy5SErwoll7jBA== - dependencies: - fast-json-stable-stringify "^2.1.0" - pretty-bytes "^5.4.1" - upath "^1.2.0" - webpack-sources "^1.4.3" - workbox-build "6.5.3" - -workbox-window@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.3.tgz#4ade70056cb73477ef1cd8fea7cfd0ecbd825c7f" - integrity sha512-GnJbx1kcKXDtoJBVZs/P7ddP0Yt52NNy4nocjBpYPiRhMqTpJCNrSL+fGHZ/i/oP6p/vhE8II0sA6AZGKGnssw== - dependencies: - "@types/trusted-types" "^2.0.2" - workbox-core "6.5.3" - wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -18291,16 +13066,6 @@ write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: imurmurhash "^0.1.4" signal-exit "^3.0.2" -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - write-file-atomic@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" @@ -18346,26 +13111,11 @@ ws@8.2.3: resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== -ws@^7, ws@^7.2.0, ws@^7.4.2, ws@^7.4.6: +ws@^7, ws@^7.2.0, ws@^7.4.2: version "7.5.7" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== -ws@^8.4.2: - version "8.8.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.1.tgz#5dbad0feb7ade8ecc99b830c1d77c913d4955ff0" - integrity sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - xstream@^11.14.0: version "11.14.0" resolved "https://registry.yarnpkg.com/xstream/-/xstream-11.14.0.tgz#2c071d26b18310523b6877e86b4e54df068a9ae5" @@ -18374,18 +13124,11 @@ xstream@^11.14.0: globalthis "^1.0.1" symbol-observable "^2.0.3" -xtend@^4.0.2, xtend@~4.0.1: +xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -xxhashjs@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" - integrity sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw== - dependencies: - cuint "^0.2.2" - y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" @@ -18406,7 +13149,7 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: +yaml@^1.10.0: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==