diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c02985b1b5..16189ce3e2 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -27,11 +27,24 @@ jobs: if [[ ! $STAGE_NAME =~ ^[a-z][a-z0-9-]*$ ]]; then echo "ERROR: Your branch name, $STAGE_NAME, is not a valid Serverless Framework stage name." && exit 1 fi + cache: + runs-on: ubuntu-20.04 + needs: + - init + environment: + name: ${{ github.ref_name }} + steps: + - name: Checkout + uses: actions/checkout@v3 + + - uses: ./.github/actions/setup + + - run: run install deploy: runs-on: ubuntu-20.04 needs: - - init + - cache environment: name: ${{ github.ref_name }} url: ${{ steps.deployment-data.outputs.APPURL }} @@ -89,7 +102,7 @@ jobs: test: runs-on: ubuntu-20.04 needs: - - deploy + - cache environment: name: ${{ github.ref_name }} steps: @@ -108,33 +121,33 @@ jobs: - name: Test run: yarn test-ci - # e2e: - # timeout-minutes: 5 - # runs-on: ubuntu-20.04 - # needs: - # - deploy - # env: - # baseurl: ${{ needs.deploy.outputs.app-url }} - # if: ${{ github.ref != 'refs/heads/production' }} - # steps: - # - name: Checkout - # uses: actions/checkout@v3 - # - name: Setup - # uses: ./.github/actions/setup - # - name: Configure AWS credentials - # uses: aws-actions/configure-aws-credentials@v2 - # with: - # role-to-assume: ${{ secrets.AWS_OIDC_ROLE_TO_ASSUME }} - # aws-region: us-east-1 - # role-duration-seconds: 10800 - # - name: Run e2e tests - # run: run e2e - # - uses: actions/upload-artifact@v3 - # if: always() - # with: - # name: playwright-report - # path: src/services/ui/playwright-report/ - # retention-days: 30 + e2e: + timeout-minutes: 5 + runs-on: ubuntu-20.04 + needs: + - deploy + env: + baseurl: ${{ needs.deploy.outputs.app-url }} + if: ${{ github.ref != 'refs/heads/production' }} + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup + uses: ./.github/actions/setup + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + role-to-assume: ${{ secrets.AWS_OIDC_ROLE_TO_ASSUME }} + aws-region: us-east-1 + role-duration-seconds: 10800 + - name: Run e2e tests + run: run e2e + - uses: actions/upload-artifact@v3 + if: always() + with: + name: playwright-report + path: src/services/ui/playwright-report/ + retention-days: 30 cfn-nag: runs-on: ubuntu-20.04 @@ -210,6 +223,7 @@ jobs: needs: - test - cfn-nag + - e2e steps: - name: Checkout uses: actions/checkout@v3 diff --git a/.github/workflows/destroy.yml b/.github/workflows/destroy.yml index 2410fa3fa7..ed62b9b9c0 100644 --- a/.github/workflows/destroy.yml +++ b/.github/workflows/destroy.yml @@ -13,12 +13,12 @@ jobs: if: | ( github.event.ref_type == 'branch' && - !startsWith(github.event.ref, 'skipci') && - !contains(fromJson('["master", "staging", "production"]'), github.event.ref) + (!startsWith(github.event.ref, 'skipci')) && + (!contains(fromJson('["master", "staging", "production"]'), github.event.ref)) ) || ( inputs.environment != '' && - !contains(fromJson('["master", "staging", "production"]'), inputs.environment) + (!contains(fromJson('["master", "staging", "production"]'), inputs.environment)) ) runs-on: ubuntu-20.04 environment: @@ -51,7 +51,7 @@ jobs: SLACK_COLOR: ${{job.status}} SLACK_ICON: https://github.com/Enterprise-CMCS.png?size=48 SLACK_TITLE: Failure - SLACK_USERNAME: ${{ github.repository }} ${{job.status}} + SLACK_USERNAME: ${{ github.repository }} - ${{job.status}} SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} delete_environment: diff --git a/.github/workflows/running-stage-notifier.yml b/.github/workflows/running-stage-notifier.yml index 5e60de757e..75374591b7 100644 --- a/.github/workflows/running-stage-notifier.yml +++ b/.github/workflows/running-stage-notifier.yml @@ -21,7 +21,7 @@ jobs: - uses: ./.github/actions/setup - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v1 + uses: aws-actions/configure-aws-credentials@v2 with: role-to-assume: ${{ secrets.AWS_OIDC_ROLE_TO_ASSUME }} aws-region: us-east-1 diff --git a/.github/workflows/security-group-cleanup.yml b/.github/workflows/security-group-cleanup.yml index 4abacdf66c..ee17e37221 100644 --- a/.github/workflows/security-group-cleanup.yml +++ b/.github/workflows/security-group-cleanup.yml @@ -17,9 +17,11 @@ jobs: steps: - name: Checkout uses: actions/checkout@v3 + - uses: ./.github/actions/setup # We need this largely for the PROJECT variable setting + - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v1 + uses: aws-actions/configure-aws-credentials@v2 with: role-to-assume: ${{ secrets.AWS_OIDC_ROLE_TO_ASSUME }} aws-region: us-east-1 diff --git a/.vscode/settings.json b/.vscode/settings.json index ad92582bd0..17c1158d65 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,6 @@ { - "editor.formatOnSave": true + "editor.formatOnSave": true, + "tailwindCSS.experimental.classRegex": [ + ["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"] + ] } diff --git a/docs/Gemfile b/docs/Gemfile index 0cac141058..af39f3fe7c 100644 --- a/docs/Gemfile +++ b/docs/Gemfile @@ -2,6 +2,7 @@ source "https://rubygems.org" gem "jekyll" gem "jekyll-remote-theme" +gem "jekyll-include-cache" gem "jekyll-seo-tag" gem "rake" gem "webrick" diff --git a/docs/_deploy-metrics/package.json b/docs/_deploy-metrics/package.json index 55836bb5a0..79765bcbad 100644 --- a/docs/_deploy-metrics/package.json +++ b/docs/_deploy-metrics/package.json @@ -18,7 +18,7 @@ "date-fns": "^2.29.3", "framer-motion": "^6", "jszip": "^3.10.1", - "next": "12.3.1", + "next": "^13.5.4", "octokit": "^2.0.9", "react": "18.2.0", "react-aws-icons": "^1.2.1", diff --git a/docs/_deploy-metrics/pages/_app.tsx b/docs/_deploy-metrics/pages/_app.tsx index cb18c76685..d5806bc9c9 100644 --- a/docs/_deploy-metrics/pages/_app.tsx +++ b/docs/_deploy-metrics/pages/_app.tsx @@ -2,9 +2,10 @@ import type { AppProps } from "next/app"; import { ChakraProvider } from "@chakra-ui/react"; function MyApp({ Component, pageProps }: AppProps) { + const AnyComponent = Component as any; return ( - + ); } diff --git a/docs/_deploy-metrics/yarn.lock b/docs/_deploy-metrics/yarn.lock index 3ba01770a8..f7dfcf24af 100644 --- a/docs/_deploy-metrics/yarn.lock +++ b/docs/_deploy-metrics/yarn.lock @@ -2,100 +2,106 @@ # yarn lockfile v1 +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + "@babel/code-frame@^7.0.0": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" - integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== dependencies: - "@babel/highlight" "^7.18.6" + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" "@babel/helper-module-imports@^7.16.7": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" - integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== dependencies: - "@babel/types" "^7.21.4" + "@babel/types" "^7.22.15" -"@babel/helper-string-parser@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd" - integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w== +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== -"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" js-tokens "^4.0.0" "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200" - integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q== + version "7.23.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.1.tgz#72741dc4d413338a91dcb044a86f3c0bc402646d" + integrity sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g== dependencies: - regenerator-runtime "^0.13.11" + regenerator-runtime "^0.14.0" -"@babel/types@^7.21.4": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" - integrity sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q== +"@babel/types@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== dependencies: - "@babel/helper-string-parser" "^7.21.5" - "@babel/helper-validator-identifier" "^7.19.1" + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" -"@chakra-ui/accordion@2.1.11": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/accordion/-/accordion-2.1.11.tgz#c6df0100c543645d0631df3aefde2ea2b8ed6313" - integrity sha512-mfVPmqETp9pyRDHJ33AdF19oHv/LyxVzQJtlxUByuvs8Cj9QQZ2LQLg5kejm+b3mj03A7A6yfbuo3RNaI4Bhsg== - dependencies: - "@chakra-ui/descendant" "3.0.14" - "@chakra-ui/icon" "3.0.16" - "@chakra-ui/react-context" "2.0.8" - "@chakra-ui/react-use-controllable-state" "2.0.8" - "@chakra-ui/react-use-merge-refs" "2.0.7" +"@chakra-ui/accordion@2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/accordion/-/accordion-2.3.1.tgz#a326509e286a5c4e8478de9bc2b4b05017039e6b" + integrity sha512-FSXRm8iClFyU+gVaXisOSEw0/4Q+qZbFRiuhIAkVU6Boj0FxAMrlo9a8AV5TuF77rgaHytCdHk0Ng+cyUijrag== + dependencies: + "@chakra-ui/descendant" "3.1.0" + "@chakra-ui/icon" "3.2.0" + "@chakra-ui/react-context" "2.1.0" + "@chakra-ui/react-use-controllable-state" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" - "@chakra-ui/transition" "2.0.16" + "@chakra-ui/transition" "2.1.0" -"@chakra-ui/alert@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/alert/-/alert-2.1.0.tgz#7a234ac6426231b39243088648455cbcf1cbdf24" - integrity sha512-OcfHwoXI5VrmM+tHJTHT62Bx6TfyfCxSa0PWUOueJzSyhlUOKBND5we6UtrOB7D0jwX45qKKEDJOLG5yCG21jQ== +"@chakra-ui/alert@2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/alert/-/alert-2.2.1.tgz#69f4fae19e4f8204ae1db906784139d416063d04" + integrity sha512-GduIqqWCkvID8hxRlKw29Jp3w93r/E9S30J2F8By3ODon9Bhk1o/KVolcPiSiQvRwKNBJCd/rBTpPpLkB+s7pw== dependencies: - "@chakra-ui/icon" "3.0.16" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/icon" "3.2.0" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" - "@chakra-ui/spinner" "2.0.13" + "@chakra-ui/spinner" "2.1.0" -"@chakra-ui/anatomy@2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/anatomy/-/anatomy-2.1.2.tgz#ea66b1841e7195da08ddc862daaa3f3e56e565f5" - integrity sha512-pKfOS/mztc4sUXHNc8ypJ1gPWSolWT770jrgVRfolVbYlki8y5Y+As996zMF6k5lewTu6j9DQequ7Cc9a69IVQ== +"@chakra-ui/anatomy@2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/anatomy/-/anatomy-2.2.1.tgz#f7ef088dcb8be4f1d075f37101830199fb93f763" + integrity sha512-bbmyWTGwQo+aHYDMtLIj7k7hcWvwE7GFVDViLFArrrPhfUTDdQTNqhiDp1N7eh2HLyjNhc2MKXV8s2KTQqkmTg== -"@chakra-ui/avatar@2.2.10": - version "2.2.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/avatar/-/avatar-2.2.10.tgz#b73cb4712927102aa8239c08f7169741eee774df" - integrity sha512-Scc0qJtJcxoGOaSS4TkoC2PhVLMacrBcfaNfLqV6wES56BcsjegHvpxREFunZkgVNph/XRHW6J1xOclnsZiPBQ== +"@chakra-ui/avatar@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/avatar/-/avatar-2.3.0.tgz#f018a2714d1e3ba5970bcf66558887925fdfccf4" + integrity sha512-8gKSyLfygnaotbJbDMHDiJoF38OHXUYVme4gGxZ1fLnQEdPVEaIWfH+NndIjOM0z8S+YEFnT9KyGMUtvPrBk3g== dependencies: - "@chakra-ui/image" "2.0.16" + "@chakra-ui/image" "2.1.0" "@chakra-ui/react-children-utils" "2.0.6" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/breadcrumb@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/breadcrumb/-/breadcrumb-2.1.5.tgz#a43b22cc8005291a615696a8c88efc37064562f3" - integrity sha512-p3eQQrHQBkRB69xOmNyBJqEdfCrMt+e0eOH+Pm/DjFWfIVIbnIaFbmDCeWClqlLa21Ypc6h1hR9jEmvg8kmOog== +"@chakra-ui/breadcrumb@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/breadcrumb/-/breadcrumb-2.2.0.tgz#751bc48498f3c403f97b5d9aae528ebfd405ef48" + integrity sha512-4cWCG24flYBxjruRi4RJREWTGF74L/KzI2CognAW/d/zWR0CjiScuJhf37Am3LFbCySP6WSoyBOtTIoTA4yLEA== dependencies: "@chakra-ui/react-children-utils" "2.0.6" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" "@chakra-ui/breakpoint-utils@2.0.8": @@ -105,107 +111,107 @@ dependencies: "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/button@2.0.18": - version "2.0.18" - resolved "https://registry.yarnpkg.com/@chakra-ui/button/-/button-2.0.18.tgz#c13d2e404e22a9873ba5373fde494bedafe32fdd" - integrity sha512-E3c99+lOm6ou4nQVOTLkG+IdOPMjsQK+Qe7VyP8A/xeAMFONuibrWPRPpprr4ZkB4kEoLMfNuyH2+aEza3ScUA== +"@chakra-ui/button@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/button/-/button-2.1.0.tgz#623ed32cc92fc8e52492923e9924791fc6f25447" + integrity sha512-95CplwlRKmmUXkdEp/21VkEWgnwcx2TOBG6NfYlsuLBDHSLlo5FKIiE2oSi4zXc4TLcopGcWPNcm/NDaSC5pvA== dependencies: - "@chakra-ui/react-context" "2.0.8" - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-context" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" - "@chakra-ui/spinner" "2.0.13" + "@chakra-ui/spinner" "2.1.0" -"@chakra-ui/card@2.1.6": - version "2.1.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/card/-/card-2.1.6.tgz#27176bdee363ecab7d563c4997c4b2fe9e835ecc" - integrity sha512-fFd/WAdRNVY/WOSQv4skpy0WeVhhI0f7dTY1Sm0jVl0KLmuP/GnpsWtKtqWjNcV00K963EXDyhlk6+9oxbP4gw== +"@chakra-ui/card@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/card/-/card-2.2.0.tgz#b5e59dc51c171fced76ea76bf26088803b8bc184" + integrity sha512-xUB/k5MURj4CtPAhdSoXZidUbm8j3hci9vnc+eZJVDqhDOShNlD6QeniQNRPRys4lWAQLCbFcrwL29C8naDi6g== dependencies: "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/checkbox@2.2.15": - version "2.2.15" - resolved "https://registry.yarnpkg.com/@chakra-ui/checkbox/-/checkbox-2.2.15.tgz#e5ff65159f698d50edecee6b661b87e341eace70" - integrity sha512-Ju2yQjX8azgFa5f6VLPuwdGYobZ+rdbcYqjiks848JvPc75UsPhpS05cb4XlrKT7M16I8txDA5rPJdqqFicHCA== +"@chakra-ui/checkbox@2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/checkbox/-/checkbox-2.3.1.tgz#bde33a655a8f033656378e3e95ae0dc4c8e73864" + integrity sha512-e6qL9ntVI/Ui6g0+iljUV2chX86YMsXafldpTHBNYDEoNLjGo1lqLFzq3y6zs3iuB3DHI0X7eAG3REmMVs0A0w== dependencies: - "@chakra-ui/form-control" "2.0.18" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/form-control" "2.1.1" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/react-types" "2.0.7" - "@chakra-ui/react-use-callback-ref" "2.0.7" - "@chakra-ui/react-use-controllable-state" "2.0.8" - "@chakra-ui/react-use-merge-refs" "2.0.7" - "@chakra-ui/react-use-safe-layout-effect" "2.0.5" - "@chakra-ui/react-use-update-effect" "2.0.7" + "@chakra-ui/react-use-callback-ref" "2.1.0" + "@chakra-ui/react-use-controllable-state" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" + "@chakra-ui/react-use-safe-layout-effect" "2.1.0" + "@chakra-ui/react-use-update-effect" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" - "@chakra-ui/visually-hidden" "2.0.15" - "@zag-js/focus-visible" "0.2.2" + "@chakra-ui/visually-hidden" "2.2.0" + "@zag-js/focus-visible" "0.16.0" -"@chakra-ui/clickable@2.0.14": - version "2.0.14" - resolved "https://registry.yarnpkg.com/@chakra-ui/clickable/-/clickable-2.0.14.tgz#88093008672a2a30bdd2a30ff815dcc2c88c01a5" - integrity sha512-jfsM1qaD74ZykLHmvmsKRhDyokLUxEfL8Il1VoZMNX5RBI0xW/56vKpLTFF/v/+vLPLS+Te2cZdD4+2O+G6ulA== +"@chakra-ui/clickable@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/clickable/-/clickable-2.1.0.tgz#800fa8d10cf45a41fc50a3df32c679a3ce1921c3" + integrity sha512-flRA/ClPUGPYabu+/GLREZVZr9j2uyyazCAUHAdrTUEdDYCr31SVGhgh7dgKdtq23bOvAQJpIJjw/0Bs0WvbXw== dependencies: - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-use-merge-refs" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/close-button@2.0.17": - version "2.0.17" - resolved "https://registry.yarnpkg.com/@chakra-ui/close-button/-/close-button-2.0.17.tgz#d43d3a2ea1f08250f8d0da7704baf0e1fbd91b4b" - integrity sha512-05YPXk456t1Xa3KpqTrvm+7smx+95dmaPiwjiBN3p7LHUQVHJd8ZXSDB0V+WKi419k3cVQeJUdU/azDO2f40sw== +"@chakra-ui/close-button@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/close-button/-/close-button-2.1.1.tgz#995b245c56eb41465a71d8667840c238618a7b66" + integrity sha512-gnpENKOanKexswSVpVz7ojZEALl2x5qjLYNqSQGbxz+aP9sOXPfUS56ebyBrre7T7exuWGiFeRwnM0oVeGPaiw== dependencies: - "@chakra-ui/icon" "3.0.16" + "@chakra-ui/icon" "3.2.0" -"@chakra-ui/color-mode@2.1.12": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/color-mode/-/color-mode-2.1.12.tgz#c0caeadd5f87fadbeefc6826beabac6c4a88d8f5" - integrity sha512-sYyfJGDoJSLYO+V2hxV9r033qhte5Nw/wAn5yRGGZnEEN1dKPEdWQ3XZvglWSDTNd0w9zkoH2w6vP4FBBYb/iw== +"@chakra-ui/color-mode@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/color-mode/-/color-mode-2.2.0.tgz#828d47234c74ba2fb4c5dd63a63331aead20b9f6" + integrity sha512-niTEA8PALtMWRI9wJ4LL0CSBDo8NBfLNp4GD6/0hstcm3IlbBHTVKxN6HwSaoNYfphDQLxCjT4yG+0BJA5tFpg== dependencies: - "@chakra-ui/react-use-safe-layout-effect" "2.0.5" + "@chakra-ui/react-use-safe-layout-effect" "2.1.0" -"@chakra-ui/control-box@2.0.13": - version "2.0.13" - resolved "https://registry.yarnpkg.com/@chakra-ui/control-box/-/control-box-2.0.13.tgz#ffe9634d0c3aecb8e1eb7da19e64fb3d2b181d03" - integrity sha512-FEyrU4crxati80KUF/+1Z1CU3eZK6Sa0Yv7Z/ydtz9/tvGblXW9NFanoomXAOvcIFLbaLQPPATm9Gmpr7VG05A== +"@chakra-ui/control-box@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/control-box/-/control-box-2.1.0.tgz#0f4586797b3154c02463bc5c106782e70c88f04f" + integrity sha512-gVrRDyXFdMd8E7rulL0SKeoljkLQiPITFnsyMO8EFHNZ+AHt5wK4LIguYVEq88APqAGZGfHFWXr79RYrNiE3Mg== -"@chakra-ui/counter@2.0.14": - version "2.0.14" - resolved "https://registry.yarnpkg.com/@chakra-ui/counter/-/counter-2.0.14.tgz#6e37a863afd2e87d7c94208245e81777640e76e2" - integrity sha512-KxcSRfUbb94dP77xTip2myoE7P2HQQN4V5fRJmNAGbzcyLciJ+aDylUU/UxgNcEjawUp6Q242NbWb1TSbKoqog== +"@chakra-ui/counter@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/counter/-/counter-2.1.0.tgz#e413a2f1093a18f847bb7aa240117fde788a59e6" + integrity sha512-s6hZAEcWT5zzjNz2JIWUBzRubo9la/oof1W7EKZVVfPYHERnl5e16FmBC79Yfq8p09LQ+aqFKm/etYoJMMgghw== dependencies: "@chakra-ui/number-utils" "2.0.7" - "@chakra-ui/react-use-callback-ref" "2.0.7" + "@chakra-ui/react-use-callback-ref" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/css-reset@2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/css-reset/-/css-reset-2.1.1.tgz#c61f3d2103c13e62a86fd2d359682092e961852c" - integrity sha512-jwEOfIAWmQsnChHQTW/eRE+dfE4MjmhvSvoUug5nkV1pI7veC/20noFlIZxzi82EbiQI8Fs0+Jnusgxr2yaOHA== +"@chakra-ui/css-reset@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/css-reset/-/css-reset-2.3.0.tgz#83e3160a9c2a12431cad0ee27ebfbf3aedc5c9c7" + integrity sha512-cQwwBy5O0jzvl0K7PLTLgp8ijqLPKyuEMiDXwYzl95seD3AoeuoCLyzZcJtVqaUZ573PiBdAbY/IlZcwDOItWg== -"@chakra-ui/descendant@3.0.14": - version "3.0.14" - resolved "https://registry.yarnpkg.com/@chakra-ui/descendant/-/descendant-3.0.14.tgz#fe8bac3f0e1ffe562e3e73eac393dbf222d57e13" - integrity sha512-+Ahvp9H4HMpfScIv9w1vaecGz7qWAaK1YFHHolz/SIsGLaLGlbdp+5UNabQC7L6TUnzzJDQDxzwif78rTD7ang== +"@chakra-ui/descendant@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/descendant/-/descendant-3.1.0.tgz#f3b80ed13ffc4bf1d615b3ed5541bd0905375cca" + integrity sha512-VxCIAir08g5w27klLyi7PVo8BxhW4tgU/lxQyujkmi4zx7hT9ZdrcQLAted/dAa+aSIZ14S1oV0Q9lGjsAdxUQ== dependencies: - "@chakra-ui/react-context" "2.0.8" - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-context" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" -"@chakra-ui/dom-utils@2.0.6": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/dom-utils/-/dom-utils-2.0.6.tgz#68f49f3b4a0bdebd5e416d6fd2c012c9ad64b76a" - integrity sha512-PVtDkPrDD5b8aoL6Atg7SLjkwhWb7BwMcLOF1L449L3nZN+DAO3nyAh6iUhZVJyunELj9d0r65CDlnMREyJZmA== +"@chakra-ui/dom-utils@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/dom-utils/-/dom-utils-2.1.0.tgz#d15df89e458ef19756db04c7cfd084eb552454f0" + integrity sha512-ZmF2qRa1QZ0CMLU8M1zCfmw29DmPNtfjR9iTo74U5FPr3i1aoAh7fbJ4qAlZ197Xw9eAW28tvzQuoVWeL5C7fQ== -"@chakra-ui/editable@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/editable/-/editable-3.0.0.tgz#b61d4fba5a581b41856ebd85fd5d17c96a224323" - integrity sha512-q/7C/TM3iLaoQKlEiM8AY565i9NoaXtS6N6N4HWIEL5mZJPbMeHKxrCHUZlHxYuQJqFOGc09ZPD9fAFx1GkYwQ== +"@chakra-ui/editable@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/editable/-/editable-3.1.0.tgz#065783c2e3389c3bb9ab0582cb50d38e1dc00fa1" + integrity sha512-j2JLrUL9wgg4YA6jLlbU88370eCRyor7DZQD9lzpY95tSOXpTljeg3uF9eOmDnCs6fxp3zDWIfkgMm/ExhcGTg== dependencies: - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/react-types" "2.0.7" - "@chakra-ui/react-use-callback-ref" "2.0.7" - "@chakra-ui/react-use-controllable-state" "2.0.8" - "@chakra-ui/react-use-focus-on-pointer-down" "2.0.6" - "@chakra-ui/react-use-merge-refs" "2.0.7" - "@chakra-ui/react-use-safe-layout-effect" "2.0.5" - "@chakra-ui/react-use-update-effect" "2.0.7" + "@chakra-ui/react-use-callback-ref" "2.1.0" + "@chakra-ui/react-use-controllable-state" "2.1.0" + "@chakra-ui/react-use-focus-on-pointer-down" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" + "@chakra-ui/react-use-safe-layout-effect" "2.1.0" + "@chakra-ui/react-use-update-effect" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" "@chakra-ui/event-utils@2.0.8": @@ -213,71 +219,71 @@ resolved "https://registry.yarnpkg.com/@chakra-ui/event-utils/-/event-utils-2.0.8.tgz#e6439ba200825a2f15d8f1973d267d1c00a6d1b4" integrity sha512-IGM/yGUHS+8TOQrZGpAKOJl/xGBrmRYJrmbHfUE7zrG3PpQyXvbLDP1M+RggkCFVgHlJi2wpYIf0QtQlU0XZfw== -"@chakra-ui/focus-lock@2.0.16": - version "2.0.16" - resolved "https://registry.yarnpkg.com/@chakra-ui/focus-lock/-/focus-lock-2.0.16.tgz#bfb705b565d70b2f908d7c7a27f40426ac48dff8" - integrity sha512-UuAdGCPVrCa1lecoAvpOQD7JFT7a9RdmhKWhFt5ioIcekSLJcerdLHuuL3w0qz//8kd1/SOt7oP0aJqdAJQrCw== +"@chakra-ui/focus-lock@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/focus-lock/-/focus-lock-2.1.0.tgz#580e5450fe85356987b9a246abaff8333369c667" + integrity sha512-EmGx4PhWGjm4dpjRqM4Aa+rCWBxP+Rq8Uc/nAVnD4YVqkEhBkrPTpui2lnjsuxqNaZ24fIAZ10cF1hlpemte/w== dependencies: - "@chakra-ui/dom-utils" "2.0.6" - react-focus-lock "^2.9.2" + "@chakra-ui/dom-utils" "2.1.0" + react-focus-lock "^2.9.4" -"@chakra-ui/form-control@2.0.18": - version "2.0.18" - resolved "https://registry.yarnpkg.com/@chakra-ui/form-control/-/form-control-2.0.18.tgz#1923f293afde70b2b07ca731d98fef3660098c56" - integrity sha512-I0a0jG01IAtRPccOXSNugyRdUAe8Dy40ctqedZvznMweOXzbMCF1m+sHPLdWeWC/VI13VoAispdPY0/zHOdjsQ== +"@chakra-ui/form-control@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/form-control/-/form-control-2.1.1.tgz#05b06a52432642ddc7ed795bfe127108d160927d" + integrity sha512-LJPDzA1ITc3lhd/iDiINqGeca5bJD09PZAjePGEmmZyLPZZi8nPh/iii0RMxvKyJArsTBwXymCh+dEqK9aDzGQ== dependencies: - "@chakra-ui/icon" "3.0.16" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/icon" "3.2.0" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/react-types" "2.0.7" - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-use-merge-refs" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/hooks@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/hooks/-/hooks-2.2.0.tgz#f779bf85542dacd607abe7e67f4571cf8a1102fa" - integrity sha512-GZE64mcr20w+3KbCUPqQJHHmiFnX5Rcp8jS3YntGA4D5X2qU85jka7QkjfBwv/iduZ5Ei0YpCMYGCpi91dhD1Q== +"@chakra-ui/hooks@2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/hooks/-/hooks-2.2.1.tgz#b86ce5eeaaab877ddcb11a50842d1227306ace28" + integrity sha512-RQbTnzl6b1tBjbDPf9zGRo9rf/pQMholsOudTxjy4i9GfTfz6kgp5ValGjQm2z7ng6Z31N1cnjZ1AlSzQ//ZfQ== dependencies: "@chakra-ui/react-utils" "2.0.12" "@chakra-ui/utils" "2.0.15" - compute-scroll-into-view "1.0.20" + compute-scroll-into-view "3.0.3" copy-to-clipboard "3.3.3" -"@chakra-ui/icon@3.0.16": - version "3.0.16" - resolved "https://registry.yarnpkg.com/@chakra-ui/icon/-/icon-3.0.16.tgz#6413ec637c0c3acc204301485f05451b5bcd6ba4" - integrity sha512-RpA1X5Ptz8Mt39HSyEIW1wxAz2AXyf9H0JJ5HVx/dBdMZaGMDJ0HyyPBVci0m4RCoJuyG1HHG/DXJaVfUTVAeg== +"@chakra-ui/icon@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/icon/-/icon-3.2.0.tgz#92b9454aa0d561b4994bcd6a1b3bb1fdd5c67bef" + integrity sha512-xxjGLvlX2Ys4H0iHrI16t74rG9EBcpFvJ3Y3B7KMQTrnW34Kf7Da/UC8J67Gtx85mTHW020ml85SVPKORWNNKQ== dependencies: "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/image@2.0.16": - version "2.0.16" - resolved "https://registry.yarnpkg.com/@chakra-ui/image/-/image-2.0.16.tgz#0e3a48c3caa6dc1d340502ea96766d9ef31e27e8" - integrity sha512-iFypk1slgP3OK7VIPOtkB0UuiqVxNalgA59yoRM43xLIeZAEZpKngUVno4A2kFS61yKN0eIY4hXD3Xjm+25EJA== +"@chakra-ui/image@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/image/-/image-2.1.0.tgz#6c205f1ca148e3bf58345b0b5d4eb3d959eb9f87" + integrity sha512-bskumBYKLiLMySIWDGcz0+D9Th0jPvmX6xnRMs4o92tT3Od/bW26lahmV2a2Op2ItXeCmRMY+XxJH5Gy1i46VA== dependencies: - "@chakra-ui/react-use-safe-layout-effect" "2.0.5" + "@chakra-ui/react-use-safe-layout-effect" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/input@2.0.22": - version "2.0.22" - resolved "https://registry.yarnpkg.com/@chakra-ui/input/-/input-2.0.22.tgz#4c1f166f53555c698bb65950772314f78c147450" - integrity sha512-dCIC0/Q7mjZf17YqgoQsnXn0bus6vgriTRn8VmxOc+WcVl+KBSTBWujGrS5yu85WIFQ0aeqQvziDnDQybPqAbA== +"@chakra-ui/input@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/input/-/input-2.1.1.tgz#c9666bd1efd7763458bec713fb87cc3f365ec15d" + integrity sha512-RQYzQ/qcak3eCuCfvSqc1kEFx0sCcnIeiSi7i0r70CeBnAUK/CP1/4Uz849FpKz81K4z2SikC9MkHPQd8ZpOwg== dependencies: - "@chakra-ui/form-control" "2.0.18" + "@chakra-ui/form-control" "2.1.1" "@chakra-ui/object-utils" "2.1.0" "@chakra-ui/react-children-utils" "2.0.6" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/layout@2.1.19": - version "2.1.19" - resolved "https://registry.yarnpkg.com/@chakra-ui/layout/-/layout-2.1.19.tgz#4cd07c64239bf83c89a49487fdbd44227737b4eb" - integrity sha512-g7xMVKbQFCODwKCkEF4/OmdPsr/fAavWUV+DGc1ZWVPdroUlg1FGTpK9bOTwkC/gnko7cMClILA+BIPR3Ylu9Q== +"@chakra-ui/layout@2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/layout/-/layout-2.3.1.tgz#0601c5eb91555d24a7015a7c9d4e01fed2698557" + integrity sha512-nXuZ6WRbq0WdgnRgLw+QuxWAHuhDtVX8ElWqcTK+cSMFg/52eVP47czYBE5F35YhnoW2XBwfNoNgZ7+e8Z01Rg== dependencies: "@chakra-ui/breakpoint-utils" "2.0.8" - "@chakra-ui/icon" "3.0.16" + "@chakra-ui/icon" "3.2.0" "@chakra-ui/object-utils" "2.1.0" "@chakra-ui/react-children-utils" "2.0.6" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" "@chakra-ui/lazy-utils@2.0.5": @@ -285,73 +291,73 @@ resolved "https://registry.yarnpkg.com/@chakra-ui/lazy-utils/-/lazy-utils-2.0.5.tgz#363c3fa1d421362790b416ffa595acb835e1ae5b" integrity sha512-UULqw7FBvcckQk2n3iPO56TMJvDsNv0FKZI6PlUNJVaGsPbsYxK/8IQ60vZgaTVPtVcjY6BE+y6zg8u9HOqpyg== -"@chakra-ui/live-region@2.0.13": - version "2.0.13" - resolved "https://registry.yarnpkg.com/@chakra-ui/live-region/-/live-region-2.0.13.tgz#1d00a637b74372d1ee0b215c649ebd4a33893e58" - integrity sha512-Ja+Slk6ZkxSA5oJzU2VuGU7TpZpbMb/4P4OUhIf2D30ctmIeXkxTWw1Bs1nGJAVtAPcGS5sKA+zb89i8g+0cTQ== +"@chakra-ui/live-region@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/live-region/-/live-region-2.1.0.tgz#02b4b1d997075f19a7a9a87187e08c72e82ef0dd" + integrity sha512-ZOxFXwtaLIsXjqnszYYrVuswBhnIHHP+XIgK1vC6DePKtyK590Wg+0J0slDwThUAd4MSSIUa/nNX84x1GMphWw== -"@chakra-ui/media-query@3.2.12": - version "3.2.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/media-query/-/media-query-3.2.12.tgz#75e31f3c88818e687a4d90a2993286c2c3ca2453" - integrity sha512-8pSLDf3oxxhFrhd40rs7vSeIBfvOmIKHA7DJlGUC/y+9irD24ZwgmCtFnn+y3gI47hTJsopbSX+wb8nr7XPswA== +"@chakra-ui/media-query@3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/media-query/-/media-query-3.3.0.tgz#40f9151dedb6a7af9df3be0474b59a799c92c619" + integrity sha512-IsTGgFLoICVoPRp9ykOgqmdMotJG0CnPsKvGQeSFOB/dZfIujdVb14TYxDU4+MURXry1MhJ7LzZhv+Ml7cr8/g== dependencies: "@chakra-ui/breakpoint-utils" "2.0.8" - "@chakra-ui/react-env" "3.0.0" + "@chakra-ui/react-env" "3.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/menu@2.1.14": - version "2.1.14" - resolved "https://registry.yarnpkg.com/@chakra-ui/menu/-/menu-2.1.14.tgz#021c9f6f483b9de2e86d1da268e4d27723df4e26" - integrity sha512-z4YzlY/ub1hr4Ee2zCnZDs4t43048yLTf5GhEVYDO+SI92WlOfHlP9gYEzR+uj/CiRZglVFwUDKb3UmFtmKPyg== +"@chakra-ui/menu@2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/menu/-/menu-2.2.1.tgz#7d9810d435f6b40fa72ed867a33b88a1ef75073f" + integrity sha512-lJS7XEObzJxsOwWQh7yfG4H8FzFPRP5hVPN/CL+JzytEINCSBvsCDHrYPQGp7jzpCi8vnTqQQGQe0f8dwnXd2g== dependencies: - "@chakra-ui/clickable" "2.0.14" - "@chakra-ui/descendant" "3.0.14" + "@chakra-ui/clickable" "2.1.0" + "@chakra-ui/descendant" "3.1.0" "@chakra-ui/lazy-utils" "2.0.5" - "@chakra-ui/popper" "3.0.14" + "@chakra-ui/popper" "3.1.0" "@chakra-ui/react-children-utils" "2.0.6" - "@chakra-ui/react-context" "2.0.8" - "@chakra-ui/react-use-animation-state" "2.0.8" - "@chakra-ui/react-use-controllable-state" "2.0.8" - "@chakra-ui/react-use-disclosure" "2.0.8" - "@chakra-ui/react-use-focus-effect" "2.0.10" - "@chakra-ui/react-use-merge-refs" "2.0.7" - "@chakra-ui/react-use-outside-click" "2.1.0" - "@chakra-ui/react-use-update-effect" "2.0.7" + "@chakra-ui/react-context" "2.1.0" + "@chakra-ui/react-use-animation-state" "2.1.0" + "@chakra-ui/react-use-controllable-state" "2.1.0" + "@chakra-ui/react-use-disclosure" "2.1.0" + "@chakra-ui/react-use-focus-effect" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" + "@chakra-ui/react-use-outside-click" "2.2.0" + "@chakra-ui/react-use-update-effect" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" - "@chakra-ui/transition" "2.0.16" + "@chakra-ui/transition" "2.1.0" -"@chakra-ui/modal@2.2.11": - version "2.2.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/modal/-/modal-2.2.11.tgz#8a964288759f3d681e23bfc3a837a3e2c7523f8e" - integrity sha512-2J0ZUV5tEzkPiawdkgPz6bmex7NXAde1VXooMwdvK+vuT8PV3U61yorTJOZVLdw7TjjI1Yo94mzsp6UwBud43Q== +"@chakra-ui/modal@2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/modal/-/modal-2.3.1.tgz#524dc32b6b4f545b54ae531dbf6c74e1052ee794" + integrity sha512-TQv1ZaiJMZN+rR9DK0snx/OPwmtaGH1HbZtlYt4W4s6CzyK541fxLRTjIXfEzIGpvNW+b6VFuFjbcR78p4DEoQ== dependencies: - "@chakra-ui/close-button" "2.0.17" - "@chakra-ui/focus-lock" "2.0.16" - "@chakra-ui/portal" "2.0.16" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/close-button" "2.1.1" + "@chakra-ui/focus-lock" "2.1.0" + "@chakra-ui/portal" "2.1.0" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/react-types" "2.0.7" - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-use-merge-refs" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" - "@chakra-ui/transition" "2.0.16" - aria-hidden "^1.2.2" - react-remove-scroll "^2.5.5" - -"@chakra-ui/number-input@2.0.19": - version "2.0.19" - resolved "https://registry.yarnpkg.com/@chakra-ui/number-input/-/number-input-2.0.19.tgz#82d4522036904c04d07e7050822fc522f9b32233" - integrity sha512-HDaITvtMEqOauOrCPsARDxKD9PSHmhWywpcyCSOX0lMe4xx2aaGhU0QQFhsJsykj8Er6pytMv6t0KZksdDv3YA== - dependencies: - "@chakra-ui/counter" "2.0.14" - "@chakra-ui/form-control" "2.0.18" - "@chakra-ui/icon" "3.0.16" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/transition" "2.1.0" + aria-hidden "^1.2.3" + react-remove-scroll "^2.5.6" + +"@chakra-ui/number-input@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/number-input/-/number-input-2.1.1.tgz#5308a30e972cd45a017f613996d7d5c1f32bd89f" + integrity sha512-B4xwUPyr0NmjGN/dBhOmCD2xjX6OY1pr9GmGH3GQRozMsLAClD3TibwiZetwlyCp02qQqiFwEcZmUxaX88794Q== + dependencies: + "@chakra-ui/counter" "2.1.0" + "@chakra-ui/form-control" "2.1.1" + "@chakra-ui/icon" "3.2.0" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/react-types" "2.0.7" - "@chakra-ui/react-use-callback-ref" "2.0.7" - "@chakra-ui/react-use-event-listener" "2.0.7" - "@chakra-ui/react-use-interval" "2.0.5" - "@chakra-ui/react-use-merge-refs" "2.0.7" - "@chakra-ui/react-use-safe-layout-effect" "2.0.5" - "@chakra-ui/react-use-update-effect" "2.0.7" + "@chakra-ui/react-use-callback-ref" "2.1.0" + "@chakra-ui/react-use-event-listener" "2.1.0" + "@chakra-ui/react-use-interval" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" + "@chakra-ui/react-use-safe-layout-effect" "2.1.0" + "@chakra-ui/react-use-update-effect" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" "@chakra-ui/number-utils@2.0.7": @@ -364,216 +370,216 @@ resolved "https://registry.yarnpkg.com/@chakra-ui/object-utils/-/object-utils-2.1.0.tgz#a4ecf9cea92f1de09f5531f53ffdc41e0b19b6c3" integrity sha512-tgIZOgLHaoti5PYGPTwK3t/cqtcycW0owaiOXoZOcpwwX/vlVb+H1jFsQyWiiwQVPt9RkoSLtxzXamx+aHH+bQ== -"@chakra-ui/pin-input@2.0.20": - version "2.0.20" - resolved "https://registry.yarnpkg.com/@chakra-ui/pin-input/-/pin-input-2.0.20.tgz#5bf115bf4282b69fc6532a9c542cbf41f815d200" - integrity sha512-IHVmerrtHN8F+jRB3W1HnMir1S1TUCWhI7qDInxqPtoRffHt6mzZgLZ0izx8p1fD4HkW4c1d4/ZLEz9uH9bBRg== +"@chakra-ui/pin-input@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/pin-input/-/pin-input-2.1.0.tgz#61e6bbf909ec510634307b2861c4f1891a9f8d81" + integrity sha512-x4vBqLStDxJFMt+jdAHHS8jbh294O53CPQJoL4g228P513rHylV/uPscYUHrVJXRxsHfRztQO9k45jjTYaPRMw== dependencies: - "@chakra-ui/descendant" "3.0.14" + "@chakra-ui/descendant" "3.1.0" "@chakra-ui/react-children-utils" "2.0.6" - "@chakra-ui/react-context" "2.0.8" - "@chakra-ui/react-use-controllable-state" "2.0.8" - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-context" "2.1.0" + "@chakra-ui/react-use-controllable-state" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/popover@2.1.11": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/popover/-/popover-2.1.11.tgz#3f893199559b670b8acfcd1a75313469983d0ead" - integrity sha512-ntFMKojU+ZIofwSw5IJ+Ur8pN5o+5kf/Fx5r5tCjFZd0DSkrEeJw9i00/UWJ6kYZb+zlpswxriv0FmxBlAF66w== +"@chakra-ui/popover@2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/popover/-/popover-2.2.1.tgz#89cfd29817abcd204da570073c0f2b4d8072c3a3" + integrity sha512-K+2ai2dD0ljvJnlrzesCDT9mNzLifE3noGKZ3QwLqd/K34Ym1W/0aL1ERSynrcG78NKoXS54SdEzkhCZ4Gn/Zg== dependencies: - "@chakra-ui/close-button" "2.0.17" + "@chakra-ui/close-button" "2.1.1" "@chakra-ui/lazy-utils" "2.0.5" - "@chakra-ui/popper" "3.0.14" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/popper" "3.1.0" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/react-types" "2.0.7" - "@chakra-ui/react-use-animation-state" "2.0.8" - "@chakra-ui/react-use-disclosure" "2.0.8" - "@chakra-ui/react-use-focus-effect" "2.0.10" - "@chakra-ui/react-use-focus-on-pointer-down" "2.0.6" - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-use-animation-state" "2.1.0" + "@chakra-ui/react-use-disclosure" "2.1.0" + "@chakra-ui/react-use-focus-effect" "2.1.0" + "@chakra-ui/react-use-focus-on-pointer-down" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/popper@3.0.14": - version "3.0.14" - resolved "https://registry.yarnpkg.com/@chakra-ui/popper/-/popper-3.0.14.tgz#598feec8825df99270585319f7becbb6cf33558a" - integrity sha512-RDMmmSfjsmHJbVn2agDyoJpTbQK33fxx//njwJdeyM0zTG/3/4xjI/Cxru3acJ2Y+1jFGmPqhO81stFjnbtfIw== +"@chakra-ui/popper@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/popper/-/popper-3.1.0.tgz#92a9180c6894763af3b22a6003f9a9d958fe2659" + integrity sha512-ciDdpdYbeFG7og6/6J8lkTFxsSvwTdMLFkpVylAF6VNC22jssiWfquj2eyD4rJnzkRFPvIWJq8hvbfhsm+AjSg== dependencies: "@chakra-ui/react-types" "2.0.7" - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-use-merge-refs" "2.1.0" "@popperjs/core" "^2.9.3" -"@chakra-ui/portal@2.0.16": - version "2.0.16" - resolved "https://registry.yarnpkg.com/@chakra-ui/portal/-/portal-2.0.16.tgz#e5ce3f9d9e559f17a95276e0c006d0e9b7703442" - integrity sha512-bVID0qbQ0l4xq38LdqAN4EKD4/uFkDnXzFwOlviC9sl0dNhzICDb1ltuH/Adl1d2HTMqyN60O3GO58eHy7plnQ== +"@chakra-ui/portal@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/portal/-/portal-2.1.0.tgz#9e7f57424d7041738b6563cac80134561080bd27" + integrity sha512-9q9KWf6SArEcIq1gGofNcFPSWEyl+MfJjEUg/un1SMlQjaROOh3zYr+6JAwvcORiX7tyHosnmWC3d3wI2aPSQg== dependencies: - "@chakra-ui/react-context" "2.0.8" - "@chakra-ui/react-use-safe-layout-effect" "2.0.5" + "@chakra-ui/react-context" "2.1.0" + "@chakra-ui/react-use-safe-layout-effect" "2.1.0" -"@chakra-ui/progress@2.1.6": - version "2.1.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/progress/-/progress-2.1.6.tgz#398db20440979c37adb0a34821f805ae3471873b" - integrity sha512-hHh5Ysv4z6bK+j2GJbi/FT9CVyto2PtNUNwBmr3oNMVsoOUMoRjczfXvvYqp0EHr9PCpxqrq7sRwgQXUzhbDSw== +"@chakra-ui/progress@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/progress/-/progress-2.2.0.tgz#67444ea9779631d7c8395b2c9c78e5634f994999" + integrity sha512-qUXuKbuhN60EzDD9mHR7B67D7p/ZqNS2Aze4Pbl1qGGZfulPW0PY8Rof32qDtttDQBkzQIzFGE8d9QpAemToIQ== dependencies: - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-context" "2.1.0" -"@chakra-ui/provider@2.2.4": - version "2.2.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/provider/-/provider-2.2.4.tgz#7b8a2958ed174c8b62417d932e5c637368490a1c" - integrity sha512-vz/WMEWhwoITCAkennRNYCeQHsJ6YwB/UjVaAK+61jWY42J7uCsRZ+3nB5rDjQ4m+aqPfTUPof8KLJBrtYrJbw== +"@chakra-ui/provider@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/provider/-/provider-2.4.1.tgz#0c6c1bab2b50fdf9dfbcbb363df8982988c54d65" + integrity sha512-u4g02V9tJ9vVYfkLz5jBn/bKlAyjLdg4Sh3f7uckmYVAZpOL/uUlrStyADrynu3tZhI+BE8XdmXC4zs/SYD7ow== dependencies: - "@chakra-ui/css-reset" "2.1.1" - "@chakra-ui/portal" "2.0.16" - "@chakra-ui/react-env" "3.0.0" - "@chakra-ui/system" "2.5.7" + "@chakra-ui/css-reset" "2.3.0" + "@chakra-ui/portal" "2.1.0" + "@chakra-ui/react-env" "3.1.0" + "@chakra-ui/system" "2.6.1" "@chakra-ui/utils" "2.0.15" -"@chakra-ui/radio@2.0.22": - version "2.0.22" - resolved "https://registry.yarnpkg.com/@chakra-ui/radio/-/radio-2.0.22.tgz#fad0ce7c9ba4051991ed517cac4cfe526d6d47d9" - integrity sha512-GsQ5WAnLwivWl6gPk8P1x+tCcpVakCt5R5T0HumF7DGPXKdJbjS+RaFySrbETmyTJsKY4QrfXn+g8CWVrMjPjw== +"@chakra-ui/radio@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/radio/-/radio-2.1.1.tgz#399983ce8a1bbc81e7cddfbaf091f54a1645fb7e" + integrity sha512-5JXDVvMWsF/Cprh6BKfcTLbLtRcgD6Wl2zwbNU30nmKIE8+WUfqD7JQETV08oWEzhi3Ea4e5EHvyll2sGx8H3w== dependencies: - "@chakra-ui/form-control" "2.0.18" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/form-control" "2.1.1" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/react-types" "2.0.7" - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-use-merge-refs" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" - "@zag-js/focus-visible" "0.2.2" + "@zag-js/focus-visible" "0.16.0" "@chakra-ui/react-children-utils@2.0.6": version "2.0.6" resolved "https://registry.yarnpkg.com/@chakra-ui/react-children-utils/-/react-children-utils-2.0.6.tgz#6c480c6a60678fcb75cb7d57107c7a79e5179b92" integrity sha512-QVR2RC7QsOsbWwEnq9YduhpqSFnZGvjjGREV8ygKi8ADhXh93C8azLECCUVgRJF2Wc+So1fgxmjLcbZfY2VmBA== -"@chakra-ui/react-context@2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-context/-/react-context-2.0.8.tgz#5e0ed33ac3995875a21dea0e12b0ee5fc4c2e3cc" - integrity sha512-tRTKdn6lCTXM6WPjSokAAKCw2ioih7Eg8cNgaYRSwKBck8nkz9YqxgIIEj3dJD7MGtpl24S/SNI98iRWkRwR/A== +"@chakra-ui/react-context@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-context/-/react-context-2.1.0.tgz#4858be1d5ff1c8ac0a0ec088d93a3b7f1cbbff99" + integrity sha512-iahyStvzQ4AOwKwdPReLGfDesGG+vWJfEsn0X/NoGph/SkN+HXtv2sCfYFFR9k7bb+Kvc6YfpLlSuLvKMHi2+w== -"@chakra-ui/react-env@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-env/-/react-env-3.0.0.tgz#2c3c9dc0e529b9b474a386a2b24988317b2a0811" - integrity sha512-tfMRO2v508HQWAqSADFrwZgR9oU10qC97oV6zGbjHh9ALP0/IcFR+Bi71KRTveDTm85fMeAzZYGj57P3Dsipkw== +"@chakra-ui/react-env@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-env/-/react-env-3.1.0.tgz#7d3c1c05a501bb369524d9f3d38c9325eb16ab50" + integrity sha512-Vr96GV2LNBth3+IKzr/rq1IcnkXv+MLmwjQH6C8BRtn3sNskgDFD5vLkVXcEhagzZMCh8FR3V/bzZPojBOyNhw== dependencies: - "@chakra-ui/react-use-safe-layout-effect" "2.0.5" + "@chakra-ui/react-use-safe-layout-effect" "2.1.0" "@chakra-ui/react-types@2.0.7": version "2.0.7" resolved "https://registry.yarnpkg.com/@chakra-ui/react-types/-/react-types-2.0.7.tgz#799c166a44882b23059c8f510eac9bd5d0869ac4" integrity sha512-12zv2qIZ8EHwiytggtGvo4iLT0APris7T0qaAWqzpUGS0cdUtR8W+V1BJ5Ocq+7tA6dzQ/7+w5hmXih61TuhWQ== -"@chakra-ui/react-use-animation-state@2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.8.tgz#544ef3007498d4a0629b9d1916056ddaf59aa286" - integrity sha512-xv9zSF2Rd1mHWQ+m5DLBWeh4atF8qrNvsOs3MNrvxKYBS3f79N3pqcQGrWAEvirXWXfiCeje2VAkEggqFRIo+Q== +"@chakra-ui/react-use-animation-state@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.1.0.tgz#eab661fbafd96804fe867b0df0c27e78feefe6e2" + integrity sha512-CFZkQU3gmDBwhqy0vC1ryf90BVHxVN8cTLpSyCpdmExUEtSEInSCGMydj2fvn7QXsz/za8JNdO2xxgJwxpLMtg== dependencies: - "@chakra-ui/dom-utils" "2.0.6" - "@chakra-ui/react-use-event-listener" "2.0.7" + "@chakra-ui/dom-utils" "2.1.0" + "@chakra-ui/react-use-event-listener" "2.1.0" -"@chakra-ui/react-use-callback-ref@2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.7.tgz#9b844a81037d0ecaaa8031979fa050165635e211" - integrity sha512-YjT76nTpfHAK5NxplAlZsQwNju5KmQExnqsWNPFeOR6vvbC34+iPSTr+r91i1Hdy7gBSbevsOsd5Wm6RN3GuMw== +"@chakra-ui/react-use-callback-ref@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.1.0.tgz#a508085f4d9e7d84d4ceffdf5f41745c9ac451d7" + integrity sha512-efnJrBtGDa4YaxDzDE90EnKD3Vkh5a1t3w7PhnRQmsphLy3g2UieasoKTlT2Hn118TwDjIv5ZjHJW6HbzXA9wQ== -"@chakra-ui/react-use-controllable-state@2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.8.tgz#6b71187e03be632c244dde9f16ed685428087ec9" - integrity sha512-F7rdCbLEmRjwwODqWZ3y+mKgSSHPcLQxeUygwk1BkZPXbKkJJKymOIjIynil2cbH7ku3hcSIWRvuhpCcfQWJ7Q== +"@chakra-ui/react-use-controllable-state@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.1.0.tgz#8fb6fa2f45d0c04173582ae8297e604ffdb9c7d9" + integrity sha512-QR/8fKNokxZUs4PfxjXuwl0fj/d71WPrmLJvEpCTkHjnzu7LnYvzoe2wB867IdooQJL0G1zBxl0Dq+6W1P3jpg== dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.7" + "@chakra-ui/react-use-callback-ref" "2.1.0" -"@chakra-ui/react-use-disclosure@2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.8.tgz#e0e0445afc6d6d96bb262b99751e675034c31497" - integrity sha512-2ir/mHe1YND40e+FyLHnDsnDsBQPwzKDLzfe9GZri7y31oU83JSbHdlAXAhp3bpjohslwavtRCp+S/zRxfO9aQ== +"@chakra-ui/react-use-disclosure@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.1.0.tgz#90093eaf45db1bea7a6851dd0ce5cdb3eb66f90a" + integrity sha512-Ax4pmxA9LBGMyEZJhhUZobg9C0t3qFE4jVF1tGBsrLDcdBeLR9fwOogIPY9Hf0/wqSlAryAimICbr5hkpa5GSw== dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.7" + "@chakra-ui/react-use-callback-ref" "2.1.0" -"@chakra-ui/react-use-event-listener@2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.7.tgz#ed08164164e79183d876eeb71e12c6bfaca3ad17" - integrity sha512-4wvpx4yudIO3B31pOrXuTHDErawmwiXnvAN7gLEOVREi16+YGNcFnRJ5X5nRrmB7j2MDUtsEDpRBFfw5Z9xQ5g== +"@chakra-ui/react-use-event-listener@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.1.0.tgz#afea2645bd9b38f754fc2b8eb858f9bb22385ded" + integrity sha512-U5greryDLS8ISP69DKDsYcsXRtAdnTQT+jjIlRYZ49K/XhUR/AqVZCK5BkR1spTDmO9H8SPhgeNKI70ODuDU/Q== dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.7" + "@chakra-ui/react-use-callback-ref" "2.1.0" -"@chakra-ui/react-use-focus-effect@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.10.tgz#0328a85e05fd6f8927359a544184494b5cb947bd" - integrity sha512-HswfpzjP8gCQM3/fbeR+8wrYqt0B3ChnVTqssnYXqp9Fa/5Y1Kx1ZADUWW93zMs5SF7hIEuNt8uKeh1/3HTcqQ== +"@chakra-ui/react-use-focus-effect@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.1.0.tgz#963fb790370dfadd51d12666ff2da60706f53a2a" + integrity sha512-xzVboNy7J64xveLcxTIJ3jv+lUJKDwRM7Szwn9tNzUIPD94O3qwjV7DDCUzN2490nSYDF4OBMt/wuDBtaR3kUQ== dependencies: - "@chakra-ui/dom-utils" "2.0.6" - "@chakra-ui/react-use-event-listener" "2.0.7" - "@chakra-ui/react-use-safe-layout-effect" "2.0.5" - "@chakra-ui/react-use-update-effect" "2.0.7" + "@chakra-ui/dom-utils" "2.1.0" + "@chakra-ui/react-use-event-listener" "2.1.0" + "@chakra-ui/react-use-safe-layout-effect" "2.1.0" + "@chakra-ui/react-use-update-effect" "2.1.0" -"@chakra-ui/react-use-focus-on-pointer-down@2.0.6": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.6.tgz#13330eb518c17e591c908cb8f4a30d43a978e3f2" - integrity sha512-OigXiLRVySn3tyVqJ/rn57WGuukW8TQe8fJYiLwXbcNyAMuYYounvRxvCy2b53sQ7QIZamza0N0jhirbH5FNoQ== +"@chakra-ui/react-use-focus-on-pointer-down@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.1.0.tgz#2fbcf6bc7d06d97606747e231a908d5c387ca0cc" + integrity sha512-2jzrUZ+aiCG/cfanrolsnSMDykCAbv9EK/4iUyZno6BYb3vziucmvgKuoXbMPAzWNtwUwtuMhkby8rc61Ue+Lg== dependencies: - "@chakra-ui/react-use-event-listener" "2.0.7" + "@chakra-ui/react-use-event-listener" "2.1.0" -"@chakra-ui/react-use-interval@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-interval/-/react-use-interval-2.0.5.tgz#c1a0043bf188b19b790a27668f4e860391335a60" - integrity sha512-1nbdwMi2K87V6p5f5AseOKif2CkldLaJlq1TOqaPRwb7v3aU9rltBtYdf+fIyuHSToNJUV6wd9budCFdLCl3Fg== +"@chakra-ui/react-use-interval@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-interval/-/react-use-interval-2.1.0.tgz#2602c097b3ab74b6644812e4f5efaad621218d98" + integrity sha512-8iWj+I/+A0J08pgEXP1J1flcvhLBHkk0ln7ZvGIyXiEyM6XagOTJpwNhiu+Bmk59t3HoV/VyvyJTa+44sEApuw== dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.7" - -"@chakra-ui/react-use-latest-ref@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.5.tgz#b61dc4dadda340f7b14df0ec1d50ab2e507b3b3e" - integrity sha512-3mIuFzMyIo3Ok/D8uhV9voVg7KkrYVO/pwVvNPJOHsDQqCA6DpYE4WDsrIx+fVcwad3Ta7SupexR5PoI+kq6QQ== + "@chakra-ui/react-use-callback-ref" "2.1.0" -"@chakra-ui/react-use-merge-refs@2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.7.tgz#1a1fe800fb5501ec3da4088fbac78c03bbad13a7" - integrity sha512-zds4Uhsc+AMzdH8JDDkLVet9baUBgtOjPbhC5r3A0ZXjZvGhCztFAVE3aExYiVoMPoHLKbLcqvCWE6ioFKz1lw== +"@chakra-ui/react-use-latest-ref@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.1.0.tgz#d1e926130102566ece1d39f8a48ed125e0c8441a" + integrity sha512-m0kxuIYqoYB0va9Z2aW4xP/5b7BzlDeWwyXCH6QpT2PpW3/281L3hLCm1G0eOUcdVlayqrQqOeD6Mglq+5/xoQ== -"@chakra-ui/react-use-outside-click@2.1.0": +"@chakra-ui/react-use-merge-refs@2.1.0": version "2.1.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.1.0.tgz#f7e27653c470e516c55d79df67ed8b0ba2c4ec8d" - integrity sha512-JanCo4QtWvMl9ZZUpKJKV62RlMWDFdPCE0Q64a7eWTOQgWWcpyBW7TOYRunQTqrK30FqkYFJCOlAWOtn+6Rw7A== + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.1.0.tgz#c0c233527abdbea9a1348269c192012205762314" + integrity sha512-lERa6AWF1cjEtWSGjxWTaSMvneccnAVH4V4ozh8SYiN9fSPZLlSG3kNxfNzdFvMEhM7dnP60vynF7WjGdTgQbQ== + +"@chakra-ui/react-use-outside-click@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.2.0.tgz#5570b772a255f6f02b69e967127397c1b5fa3d3c" + integrity sha512-PNX+s/JEaMneijbgAM4iFL+f3m1ga9+6QK0E5Yh4s8KZJQ/bLwZzdhMz8J/+mL+XEXQ5J0N8ivZN28B82N1kNw== dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.7" + "@chakra-ui/react-use-callback-ref" "2.1.0" -"@chakra-ui/react-use-pan-event@2.0.9": - version "2.0.9" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.9.tgz#0ff33a285e75a692d1ed52dbb9f3046a593b8004" - integrity sha512-xu35QXkiyrgsHUOnctl+SwNcwf9Rl62uYE5y8soKOZdBm8E+FvZIt2hxUzK1EoekbJCMzEZ0Yv1ZQCssVkSLaQ== +"@chakra-ui/react-use-pan-event@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.1.0.tgz#51c21bc3c0e9e73d1faef5ea4f7e3c3d071a2758" + integrity sha512-xmL2qOHiXqfcj0q7ZK5s9UjTh4Gz0/gL9jcWPA6GVf+A0Od5imEDa/Vz+533yQKWiNSm1QGrIj0eJAokc7O4fg== dependencies: "@chakra-ui/event-utils" "2.0.8" - "@chakra-ui/react-use-latest-ref" "2.0.5" + "@chakra-ui/react-use-latest-ref" "2.1.0" framesync "6.1.2" -"@chakra-ui/react-use-previous@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-previous/-/react-use-previous-2.0.5.tgz#65836cc81e3a1bf4252cd08a71094f1be827b56c" - integrity sha512-BIZgjycPE4Xr+MkhKe0h67uHXzQQkBX/u5rYPd65iMGdX1bCkbE0oorZNfOHLKdTmnEb4oVsNvfN6Rfr+Mnbxw== +"@chakra-ui/react-use-previous@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-previous/-/react-use-previous-2.1.0.tgz#f6046e6f7398b1e8d7e66ff7ebb8d61c92a2d3d0" + integrity sha512-pjxGwue1hX8AFcmjZ2XfrQtIJgqbTF3Qs1Dy3d1krC77dEsiCUbQ9GzOBfDc8pfd60DrB5N2tg5JyHbypqh0Sg== -"@chakra-ui/react-use-safe-layout-effect@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.5.tgz#6cf388c37fd2a42b5295a292e149b32f860a00a7" - integrity sha512-MwAQBz3VxoeFLaesaSEN87reVNVbjcQBDex2WGexAg6hUB6n4gc1OWYH/iXp4tzp4kuggBNhEHkk9BMYXWfhJQ== +"@chakra-ui/react-use-safe-layout-effect@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.1.0.tgz#3a95f0ba6fd5d2d0aa14919160f2c825f13e686f" + integrity sha512-Knbrrx/bcPwVS1TorFdzrK/zWA8yuU/eaXDkNj24IrKoRlQrSBFarcgAEzlCHtzuhufP3OULPkELTzz91b0tCw== -"@chakra-ui/react-use-size@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-size/-/react-use-size-2.0.10.tgz#6131950852490c06e5fb3760bf64097c8057391f" - integrity sha512-fdIkH14GDnKQrtQfxX8N3gxbXRPXEl67Y3zeD9z4bKKcQUAYIMqs0MsPZY+FMpGQw8QqafM44nXfL038aIrC5w== +"@chakra-ui/react-use-size@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-size/-/react-use-size-2.1.0.tgz#fcf3070eaade8b4a84af8ce5341c4d5ca0a42bec" + integrity sha512-tbLqrQhbnqOjzTaMlYytp7wY8BW1JpL78iG7Ru1DlV4EWGiAmXFGvtnEt9HftU0NJ0aJyjgymkxfVGI55/1Z4A== dependencies: - "@zag-js/element-size" "0.3.2" + "@zag-js/element-size" "0.10.5" -"@chakra-ui/react-use-timeout@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.5.tgz#13c4e48e48d4b84ce1e062f0f1c9ec401ece78c9" - integrity sha512-QqmB+jVphh3h/CS60PieorpY7UqSPkrQCB7f7F+i9vwwIjtP8fxVHMmkb64K7VlzQiMPzv12nlID5dqkzlv0mw== +"@chakra-ui/react-use-timeout@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-timeout/-/react-use-timeout-2.1.0.tgz#24415f54267d7241a3c1d36a5cae4d472834cef7" + integrity sha512-cFN0sobKMM9hXUhyCofx3/Mjlzah6ADaEl/AXl5Y+GawB5rgedgAcu2ErAgarEkwvsKdP6c68CKjQ9dmTQlJxQ== dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.7" + "@chakra-ui/react-use-callback-ref" "2.1.0" -"@chakra-ui/react-use-update-effect@2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.7.tgz#f94b7975ebb150c03d410e754b54f0e9dd263134" - integrity sha512-vBM2bmmM83ZdDtasWv3PXPznpTUd+FvqBC8J8rxoRmvdMEfrxTiQRBJhiGHLpS9BPLLPQlosN6KdFU97csB6zg== +"@chakra-ui/react-use-update-effect@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.1.0.tgz#5c57cd1f50c2a6a8119e0f57f69510723d69884b" + integrity sha512-ND4Q23tETaR2Qd3zwCKYOOS1dfssojPLJMLvUtUbW5M9uW1ejYWgGUobeAiOVfSplownG8QYMmHTP86p/v0lbA== "@chakra-ui/react-utils@2.0.12": version "2.0.12" @@ -583,69 +589,70 @@ "@chakra-ui/utils" "2.0.15" "@chakra-ui/react@^2.3.6": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/react/-/react-2.6.1.tgz#0fc4b9811eb675ade09c3fb0541b4412be060d83" - integrity sha512-Lt8c8pLPTz59xxdSuL2FlE7le9MXx4zgjr60UnEc3yjAMjXNTqUAoWHyT4Zn1elCGUPWOedS3rMvp4KTshT+5w== - dependencies: - "@chakra-ui/accordion" "2.1.11" - "@chakra-ui/alert" "2.1.0" - "@chakra-ui/avatar" "2.2.10" - "@chakra-ui/breadcrumb" "2.1.5" - "@chakra-ui/button" "2.0.18" - "@chakra-ui/card" "2.1.6" - "@chakra-ui/checkbox" "2.2.15" - "@chakra-ui/close-button" "2.0.17" - "@chakra-ui/control-box" "2.0.13" - "@chakra-ui/counter" "2.0.14" - "@chakra-ui/css-reset" "2.1.1" - "@chakra-ui/editable" "3.0.0" - "@chakra-ui/focus-lock" "2.0.16" - "@chakra-ui/form-control" "2.0.18" - "@chakra-ui/hooks" "2.2.0" - "@chakra-ui/icon" "3.0.16" - "@chakra-ui/image" "2.0.16" - "@chakra-ui/input" "2.0.22" - "@chakra-ui/layout" "2.1.19" - "@chakra-ui/live-region" "2.0.13" - "@chakra-ui/media-query" "3.2.12" - "@chakra-ui/menu" "2.1.14" - "@chakra-ui/modal" "2.2.11" - "@chakra-ui/number-input" "2.0.19" - "@chakra-ui/pin-input" "2.0.20" - "@chakra-ui/popover" "2.1.11" - "@chakra-ui/popper" "3.0.14" - "@chakra-ui/portal" "2.0.16" - "@chakra-ui/progress" "2.1.6" - "@chakra-ui/provider" "2.2.4" - "@chakra-ui/radio" "2.0.22" - "@chakra-ui/react-env" "3.0.0" - "@chakra-ui/select" "2.0.19" - "@chakra-ui/skeleton" "2.0.24" - "@chakra-ui/slider" "2.0.24" - "@chakra-ui/spinner" "2.0.13" - "@chakra-ui/stat" "2.0.18" - "@chakra-ui/stepper" "2.2.0" - "@chakra-ui/styled-system" "2.9.0" - "@chakra-ui/switch" "2.0.27" - "@chakra-ui/system" "2.5.7" - "@chakra-ui/table" "2.0.17" - "@chakra-ui/tabs" "2.1.9" - "@chakra-ui/tag" "3.0.0" - "@chakra-ui/textarea" "2.0.19" - "@chakra-ui/theme" "3.1.1" - "@chakra-ui/theme-utils" "2.0.17" - "@chakra-ui/toast" "6.1.3" - "@chakra-ui/tooltip" "2.2.8" - "@chakra-ui/transition" "2.0.16" + version "2.8.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/react/-/react-2.8.1.tgz#fd80632b0ef34434443d8999d03d297f130aabcf" + integrity sha512-UL9Rtj4DovP3+oVbI06gsdfyJJb+wmS2RYnGNXjW9tsjCyXxjlBw9TAUj0jyOfWe0+zd/4juL8+J+QCwmdhptg== + dependencies: + "@chakra-ui/accordion" "2.3.1" + "@chakra-ui/alert" "2.2.1" + "@chakra-ui/avatar" "2.3.0" + "@chakra-ui/breadcrumb" "2.2.0" + "@chakra-ui/button" "2.1.0" + "@chakra-ui/card" "2.2.0" + "@chakra-ui/checkbox" "2.3.1" + "@chakra-ui/close-button" "2.1.1" + "@chakra-ui/control-box" "2.1.0" + "@chakra-ui/counter" "2.1.0" + "@chakra-ui/css-reset" "2.3.0" + "@chakra-ui/editable" "3.1.0" + "@chakra-ui/focus-lock" "2.1.0" + "@chakra-ui/form-control" "2.1.1" + "@chakra-ui/hooks" "2.2.1" + "@chakra-ui/icon" "3.2.0" + "@chakra-ui/image" "2.1.0" + "@chakra-ui/input" "2.1.1" + "@chakra-ui/layout" "2.3.1" + "@chakra-ui/live-region" "2.1.0" + "@chakra-ui/media-query" "3.3.0" + "@chakra-ui/menu" "2.2.1" + "@chakra-ui/modal" "2.3.1" + "@chakra-ui/number-input" "2.1.1" + "@chakra-ui/pin-input" "2.1.0" + "@chakra-ui/popover" "2.2.1" + "@chakra-ui/popper" "3.1.0" + "@chakra-ui/portal" "2.1.0" + "@chakra-ui/progress" "2.2.0" + "@chakra-ui/provider" "2.4.1" + "@chakra-ui/radio" "2.1.1" + "@chakra-ui/react-env" "3.1.0" + "@chakra-ui/select" "2.1.1" + "@chakra-ui/skeleton" "2.1.0" + "@chakra-ui/skip-nav" "2.1.0" + "@chakra-ui/slider" "2.1.0" + "@chakra-ui/spinner" "2.1.0" + "@chakra-ui/stat" "2.1.1" + "@chakra-ui/stepper" "2.3.1" + "@chakra-ui/styled-system" "2.9.1" + "@chakra-ui/switch" "2.1.1" + "@chakra-ui/system" "2.6.1" + "@chakra-ui/table" "2.1.0" + "@chakra-ui/tabs" "3.0.0" + "@chakra-ui/tag" "3.1.1" + "@chakra-ui/textarea" "2.1.1" + "@chakra-ui/theme" "3.3.0" + "@chakra-ui/theme-utils" "2.0.20" + "@chakra-ui/toast" "7.0.1" + "@chakra-ui/tooltip" "2.3.0" + "@chakra-ui/transition" "2.1.0" "@chakra-ui/utils" "2.0.15" - "@chakra-ui/visually-hidden" "2.0.15" + "@chakra-ui/visually-hidden" "2.2.0" -"@chakra-ui/select@2.0.19": - version "2.0.19" - resolved "https://registry.yarnpkg.com/@chakra-ui/select/-/select-2.0.19.tgz#957e95a17a890d8c0a851e2f00a8d8dd17932d66" - integrity sha512-eAlFh+JhwtJ17OrB6fO6gEAGOMH18ERNrXLqWbYLrs674Le7xuREgtuAYDoxUzvYXYYTTdOJtVbcHGriI3o6rA== +"@chakra-ui/select@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/select/-/select-2.1.1.tgz#0792eeebdb82b1710c4527e7e8e2e07c686c714d" + integrity sha512-CERDATncv5w05Zo5/LrFtf1yKp1deyMUyDGv6eZvQG/etyukH4TstsuIHt/0GfNXrCF3CJLZ8lINzpv5wayVjQ== dependencies: - "@chakra-ui/form-control" "2.0.18" + "@chakra-ui/form-control" "2.1.1" "@chakra-ui/shared-utils" "2.0.5" "@chakra-ui/shared-utils@2.0.5": @@ -653,185 +660,191 @@ resolved "https://registry.yarnpkg.com/@chakra-ui/shared-utils/-/shared-utils-2.0.5.tgz#cb2b49705e113853647f1822142619570feba081" integrity sha512-4/Wur0FqDov7Y0nCXl7HbHzCg4aq86h+SXdoUeuCMD3dSj7dpsVnStLYhng1vxvlbUnLpdF4oz5Myt3i/a7N3Q== -"@chakra-ui/skeleton@2.0.24": - version "2.0.24" - resolved "https://registry.yarnpkg.com/@chakra-ui/skeleton/-/skeleton-2.0.24.tgz#dc9dcca6fc43005544fabfd38a444943b0a29cad" - integrity sha512-1jXtVKcl/jpbrJlc/TyMsFyI651GTXY5ma30kWyTXoby2E+cxbV6OR8GB/NMZdGxbQBax8/VdtYVjI0n+OBqWA== +"@chakra-ui/skeleton@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/skeleton/-/skeleton-2.1.0.tgz#e3b25dd3afa330029d6d63be0f7cb8d44ad25531" + integrity sha512-JNRuMPpdZGd6zFVKjVQ0iusu3tXAdI29n4ZENYwAJEMf/fN0l12sVeirOxkJ7oEL0yOx2AgEYFSKdbcAgfUsAQ== dependencies: - "@chakra-ui/media-query" "3.2.12" - "@chakra-ui/react-use-previous" "2.0.5" + "@chakra-ui/media-query" "3.3.0" + "@chakra-ui/react-use-previous" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/slider@2.0.24": - version "2.0.24" - resolved "https://registry.yarnpkg.com/@chakra-ui/slider/-/slider-2.0.24.tgz#e40a6bd0a776ec41e037477df8cb0c580a98eacc" - integrity sha512-o3hOaIiTzPMG8yf+HYWbrTmhxABicDViVOvOajRSXDodbZSCk1rZy1nmUeahjVtfVUB1IyJoNcXdn76IqJmhdg== +"@chakra-ui/skip-nav@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/skip-nav/-/skip-nav-2.1.0.tgz#cac27eecc6eded1e83c8f0cf7445d727739cb325" + integrity sha512-Hk+FG+vadBSH0/7hwp9LJnLjkO0RPGnx7gBJWI4/SpoJf3e4tZlWYtwGj0toYY4aGKl93jVghuwGbDBEMoHDug== + +"@chakra-ui/slider@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/slider/-/slider-2.1.0.tgz#1caeed18761ba2a390777418cc9389ba25e39bce" + integrity sha512-lUOBcLMCnFZiA/s2NONXhELJh6sY5WtbRykPtclGfynqqOo47lwWJx+VP7xaeuhDOPcWSSecWc9Y1BfPOCz9cQ== dependencies: "@chakra-ui/number-utils" "2.0.7" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/react-types" "2.0.7" - "@chakra-ui/react-use-callback-ref" "2.0.7" - "@chakra-ui/react-use-controllable-state" "2.0.8" - "@chakra-ui/react-use-latest-ref" "2.0.5" - "@chakra-ui/react-use-merge-refs" "2.0.7" - "@chakra-ui/react-use-pan-event" "2.0.9" - "@chakra-ui/react-use-size" "2.0.10" - "@chakra-ui/react-use-update-effect" "2.0.7" - -"@chakra-ui/spinner@2.0.13": - version "2.0.13" - resolved "https://registry.yarnpkg.com/@chakra-ui/spinner/-/spinner-2.0.13.tgz#64fe919c18305c653ced046e25d5883ee4c1e7d7" - integrity sha512-T1/aSkVpUIuiYyrjfn1+LsQEG7Onbi1UE9ccS/evgf61Dzy4GgTXQUnDuWFSgpV58owqirqOu6jn/9eCwDlzlg== + "@chakra-ui/react-use-callback-ref" "2.1.0" + "@chakra-ui/react-use-controllable-state" "2.1.0" + "@chakra-ui/react-use-latest-ref" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" + "@chakra-ui/react-use-pan-event" "2.1.0" + "@chakra-ui/react-use-size" "2.1.0" + "@chakra-ui/react-use-update-effect" "2.1.0" + +"@chakra-ui/spinner@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/spinner/-/spinner-2.1.0.tgz#aa24a3d692c6ac90714e0f0f82c76c12c78c8e60" + integrity sha512-hczbnoXt+MMv/d3gE+hjQhmkzLiKuoTo42YhUG7Bs9OSv2lg1fZHW1fGNRFP3wTi6OIbD044U1P9HK+AOgFH3g== dependencies: "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/stat@2.0.18": - version "2.0.18" - resolved "https://registry.yarnpkg.com/@chakra-ui/stat/-/stat-2.0.18.tgz#9e5d21d162b7cf2cf92065c19291ead2d4660772" - integrity sha512-wKyfBqhVlIs9bkSerUc6F9KJMw0yTIEKArW7dejWwzToCLPr47u+CtYO6jlJHV6lRvkhi4K4Qc6pyvtJxZ3VpA== +"@chakra-ui/stat@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/stat/-/stat-2.1.1.tgz#a204ba915795345996a16c79794d84826d7dcc2d" + integrity sha512-LDn0d/LXQNbAn2KaR3F1zivsZCewY4Jsy1qShmfBMKwn6rI8yVlbvu6SiA3OpHS0FhxbsZxQI6HefEoIgtqY6Q== dependencies: - "@chakra-ui/icon" "3.0.16" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/icon" "3.2.0" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/stepper@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/stepper/-/stepper-2.2.0.tgz#c42562fd1b210595303f14970d9df6b32e1ad5a1" - integrity sha512-8ZLxV39oghSVtOUGK8dX8Z6sWVSQiKVmsK4c3OQDa8y2TvxP0VtFD0Z5U1xJlOjQMryZRWhGj9JBc3iQLukuGg== +"@chakra-ui/stepper@2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/stepper/-/stepper-2.3.1.tgz#a0a0b73e147f202ab4e51cae55dad45489cc89fd" + integrity sha512-ky77lZbW60zYkSXhYz7kbItUpAQfEdycT0Q4bkHLxfqbuiGMf8OmgZOQkOB9uM4v0zPwy2HXhe0vq4Dd0xa55Q== dependencies: - "@chakra-ui/icon" "3.0.16" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/icon" "3.2.0" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/styled-system@2.9.0": - version "2.9.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/styled-system/-/styled-system-2.9.0.tgz#b3bace83c78cf9c072c461cc963bf73c0e7ccd3d" - integrity sha512-rToN30eOezrTZ5qBHmWqEwsYPenHtc3WU6ODAfMUwNnmCJQiu2erRGv8JwIjmRJnKSOEnNKccI2UXe2EwI6+JA== +"@chakra-ui/styled-system@2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/styled-system/-/styled-system-2.9.1.tgz#888a4901b2afa174461259a8875379adb0363934" + integrity sha512-jhYKBLxwOPi9/bQt9kqV3ELa/4CjmNNruTyXlPp5M0v0+pDMUngPp48mVLoskm9RKZGE0h1qpvj/jZ3K7c7t8w== dependencies: "@chakra-ui/shared-utils" "2.0.5" csstype "^3.0.11" lodash.mergewith "4.6.2" -"@chakra-ui/switch@2.0.27": - version "2.0.27" - resolved "https://registry.yarnpkg.com/@chakra-ui/switch/-/switch-2.0.27.tgz#e76e5afdfc837c83fce34480de4431ff8c19fcb8" - integrity sha512-z76y2fxwMlvRBrC5W8xsZvo3gP+zAEbT3Nqy5P8uh/IPd5OvDsGeac90t5cgnQTyxMOpznUNNK+1eUZqtLxWnQ== +"@chakra-ui/switch@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/switch/-/switch-2.1.1.tgz#8049963e6421cdd5eaaac1d20d9febae8d731b62" + integrity sha512-cOHIhW5AlLZSFENxFEBYTBniqiduOowa1WdzslP1Fd0usBFaD5iAgOY1Fvr7xKhE8nmzzeMCkPB3XBvUSWnawQ== dependencies: - "@chakra-ui/checkbox" "2.2.15" + "@chakra-ui/checkbox" "2.3.1" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/system@2.5.7": - version "2.5.7" - resolved "https://registry.yarnpkg.com/@chakra-ui/system/-/system-2.5.7.tgz#f56c480af336d9f48e0ad84e2434d834017c44e2" - integrity sha512-yB6en7YdJPxKvKY2jJROVwkBE2CLFmHS4ZDx27VdYs0Fa4kGiyDFhJAfnMtLBNDVsTy1NhUHL9aqR63u56QqFg== +"@chakra-ui/system@2.6.1": + version "2.6.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/system/-/system-2.6.1.tgz#22ee50ddc9e1f56b974a0dd42d86108391a2f372" + integrity sha512-P5Q/XRWy3f1pXJ7IxDkV+Z6AT7GJeR2JlBnQl109xewVQcBLWWMIp702fFMFw8KZ2ALB/aYKtWm5EmQMddC/tg== dependencies: - "@chakra-ui/color-mode" "2.1.12" + "@chakra-ui/color-mode" "2.2.0" "@chakra-ui/object-utils" "2.1.0" "@chakra-ui/react-utils" "2.0.12" - "@chakra-ui/styled-system" "2.9.0" - "@chakra-ui/theme-utils" "2.0.17" + "@chakra-ui/styled-system" "2.9.1" + "@chakra-ui/theme-utils" "2.0.20" "@chakra-ui/utils" "2.0.15" - react-fast-compare "3.2.1" + react-fast-compare "3.2.2" -"@chakra-ui/table@2.0.17": - version "2.0.17" - resolved "https://registry.yarnpkg.com/@chakra-ui/table/-/table-2.0.17.tgz#ad394dc6dcbe5a8a9e6d899997ecca3471603977" - integrity sha512-OScheTEp1LOYvTki2NFwnAYvac8siAhW9BI5RKm5f5ORL2gVJo4I72RUqE0aKe1oboxgm7CYt5afT5PS5cG61A== +"@chakra-ui/table@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/table/-/table-2.1.0.tgz#20dce14c5e4d70dc7c6c0e87cce9b05907ff8c50" + integrity sha512-o5OrjoHCh5uCLdiUb0Oc0vq9rIAeHSIRScc2ExTC9Qg/uVZl2ygLrjToCaKfaaKl1oQexIeAcZDKvPG8tVkHyQ== dependencies: - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/tabs@2.1.9": - version "2.1.9" - resolved "https://registry.yarnpkg.com/@chakra-ui/tabs/-/tabs-2.1.9.tgz#2e5214cb453c6cc0c240e82bd88af1042fc6fe0e" - integrity sha512-Yf8e0kRvaGM6jfkJum0aInQ0U3ZlCafmrYYni2lqjcTtThqu+Yosmo3iYlnullXxCw5MVznfrkb9ySvgQowuYg== +"@chakra-ui/tabs@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/tabs/-/tabs-3.0.0.tgz#854c06880af26158d7c72881c4b5e0453f6c485d" + integrity sha512-6Mlclp8L9lqXmsGWF5q5gmemZXOiOYuh0SGT/7PgJVNPz3LXREXlXg2an4MBUD8W5oTkduCX+3KTMCwRrVrDYw== dependencies: - "@chakra-ui/clickable" "2.0.14" - "@chakra-ui/descendant" "3.0.14" + "@chakra-ui/clickable" "2.1.0" + "@chakra-ui/descendant" "3.1.0" "@chakra-ui/lazy-utils" "2.0.5" "@chakra-ui/react-children-utils" "2.0.6" - "@chakra-ui/react-context" "2.0.8" - "@chakra-ui/react-use-controllable-state" "2.0.8" - "@chakra-ui/react-use-merge-refs" "2.0.7" - "@chakra-ui/react-use-safe-layout-effect" "2.0.5" + "@chakra-ui/react-context" "2.1.0" + "@chakra-ui/react-use-controllable-state" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" + "@chakra-ui/react-use-safe-layout-effect" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/tag@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/tag/-/tag-3.0.0.tgz#d86cdab59bb3ff7fc628c2dbe7a5ff1b36bd3e96" - integrity sha512-YWdMmw/1OWRwNkG9pX+wVtZio+B89odaPj6XeMn5nfNN8+jyhIEpouWv34+CO9G0m1lupJTxPSfgLAd7cqXZMA== +"@chakra-ui/tag@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/tag/-/tag-3.1.1.tgz#d05284b6549a84d3a08e57eec57df3ad0eebd882" + integrity sha512-Bdel79Dv86Hnge2PKOU+t8H28nm/7Y3cKd4Kfk9k3lOpUh4+nkSGe58dhRzht59lEqa4N9waCgQiBdkydjvBXQ== dependencies: - "@chakra-ui/icon" "3.0.16" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/icon" "3.2.0" + "@chakra-ui/react-context" "2.1.0" -"@chakra-ui/textarea@2.0.19": - version "2.0.19" - resolved "https://registry.yarnpkg.com/@chakra-ui/textarea/-/textarea-2.0.19.tgz#470b459f9cb3255d2abbe07d46b0a5b60a6a32c5" - integrity sha512-adJk+qVGsFeJDvfn56CcJKKse8k7oMGlODrmpnpTdF+xvlsiTM+1GfaJvgNSpHHuQFdz/A0z1uJtfGefk0G2ZA== +"@chakra-ui/textarea@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/textarea/-/textarea-2.1.1.tgz#3e33404ff8470140e877840a5702a406996a3834" + integrity sha512-28bpwgmXg3BzSpg8i1Ao9h7pHaE1j2mBBFJpWaqPgMhS0IHm0BQsqqyWU6PsxxJDvrC4HN6MTzrIL4C1RA1I0A== dependencies: - "@chakra-ui/form-control" "2.0.18" + "@chakra-ui/form-control" "2.1.1" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/theme-tools@2.0.17": - version "2.0.17" - resolved "https://registry.yarnpkg.com/@chakra-ui/theme-tools/-/theme-tools-2.0.17.tgz#9496094336c9480f950c8d7ab6e05f1c19caa955" - integrity sha512-Auu38hnihlJZQcPok6itRDBbwof3TpXGYtDPnOvrq4Xp7jnab36HLt7KEXSDPXbtOk3ZqU99pvI1en5LbDrdjg== +"@chakra-ui/theme-tools@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/theme-tools/-/theme-tools-2.1.1.tgz#c7f3072ab533d7abc6a3831666be3c172f992554" + integrity sha512-n14L5L3ej3Zy+Xm/kDKO1G6/DkmieT7Li1C7NzMRcUj5C9YybQpyo7IZZ0BBUh3u+OVnKVhNC3d4P2NYDGRXmA== dependencies: - "@chakra-ui/anatomy" "2.1.2" + "@chakra-ui/anatomy" "2.2.1" "@chakra-ui/shared-utils" "2.0.5" - color2k "^2.0.0" + color2k "^2.0.2" -"@chakra-ui/theme-utils@2.0.17": - version "2.0.17" - resolved "https://registry.yarnpkg.com/@chakra-ui/theme-utils/-/theme-utils-2.0.17.tgz#3db5780ab812a07945a5eb7565a66478d9f149c0" - integrity sha512-aUaVLFIU1Rs8m+5WVOUvqHKapOX8nSgUVGaeRWS4odxBM95dG4j15f4L88LEMw4D4+WWd0CSAS139OnRgj1rCw== +"@chakra-ui/theme-utils@2.0.20": + version "2.0.20" + resolved "https://registry.yarnpkg.com/@chakra-ui/theme-utils/-/theme-utils-2.0.20.tgz#fdc4947ac4b95c16ff5885707c9a931c43b80cf6" + integrity sha512-IkAzSmwBlRIZ3dN2InDz0tf9SldbckVkgwylCobSFmYP8lnMjykL8Lex1BBo9U8UQjZxEDVZ+Qw6SeayKRntOQ== dependencies: "@chakra-ui/shared-utils" "2.0.5" - "@chakra-ui/styled-system" "2.9.0" - "@chakra-ui/theme" "3.1.1" + "@chakra-ui/styled-system" "2.9.1" + "@chakra-ui/theme" "3.3.0" lodash.mergewith "4.6.2" -"@chakra-ui/theme@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/theme/-/theme-3.1.1.tgz#4ddb916cab33c132798d0f2d1a5a2c4b87381202" - integrity sha512-VHcG0CPLd9tgvWnajpAGqrAYhx4HwgfK0E9VOrdwa/3bN+AgY/0EAAXzfe0Q0W2MBWzSgaYqZcQ5cDRpYbiYPA== +"@chakra-ui/theme@3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/theme/-/theme-3.3.0.tgz#7fe364322e75c7bdfa45b96dd3db6dac7eb8f7ef" + integrity sha512-VHY2ax5Wqgfm83U/zYBk0GS0TGD8m41s/rxQgnEq8tU+ug1YZjvOZmtOq/VjfKP/bQraFhCt05zchcxXmDpEYg== dependencies: - "@chakra-ui/anatomy" "2.1.2" + "@chakra-ui/anatomy" "2.2.1" "@chakra-ui/shared-utils" "2.0.5" - "@chakra-ui/theme-tools" "2.0.17" - -"@chakra-ui/toast@6.1.3": - version "6.1.3" - resolved "https://registry.yarnpkg.com/@chakra-ui/toast/-/toast-6.1.3.tgz#1e8b8f781c2b9e5b4dc2a9c97e6a1f91d5f167ca" - integrity sha512-dsg/Sdkuq+SCwdOeyzrnBO1ecDA7VKfLFjUtj9QBc/SFEN8r+FQrygy79TNo+QWr7zdjI8icbl8nsp59lpb8ag== - dependencies: - "@chakra-ui/alert" "2.1.0" - "@chakra-ui/close-button" "2.0.17" - "@chakra-ui/portal" "2.0.16" - "@chakra-ui/react-context" "2.0.8" - "@chakra-ui/react-use-timeout" "2.0.5" - "@chakra-ui/react-use-update-effect" "2.0.7" + "@chakra-ui/theme-tools" "2.1.1" + +"@chakra-ui/toast@7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/toast/-/toast-7.0.1.tgz#11113b9185409ed1dc7a062f0498673f0840a013" + integrity sha512-V5JUhw6RZxbGRTijvd5k4iEMLCfbzTLNWbZLZhRZk10YvFfAP5OYfRCm68zpE/t3orN/f+4ZLL3P+Wb4E7oSmw== + dependencies: + "@chakra-ui/alert" "2.2.1" + "@chakra-ui/close-button" "2.1.1" + "@chakra-ui/portal" "2.1.0" + "@chakra-ui/react-context" "2.1.0" + "@chakra-ui/react-use-timeout" "2.1.0" + "@chakra-ui/react-use-update-effect" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" - "@chakra-ui/styled-system" "2.9.0" - "@chakra-ui/theme" "3.1.1" + "@chakra-ui/styled-system" "2.9.1" + "@chakra-ui/theme" "3.3.0" -"@chakra-ui/tooltip@2.2.8": - version "2.2.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/tooltip/-/tooltip-2.2.8.tgz#994e9a597d64a25daa1322a6cf603f055a890498" - integrity sha512-AqtrCkalADrqqd1SgII4n8F0dDABxqxL3e8uj3yC3HDzT3BU/0NSwSQRA2bp9eoJHk07ZMs9kyzvkkBLc0pr2A== +"@chakra-ui/tooltip@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/tooltip/-/tooltip-2.3.0.tgz#88e61a2c5a4d99af805840377dc940d3b17c806e" + integrity sha512-2s23f93YIij1qEDwIK//KtEu4LLYOslhR1cUhDBk/WUzyFR3Ez0Ee+HlqlGEGfGe9x77E6/UXPnSAKKdF/cpsg== dependencies: - "@chakra-ui/popper" "3.0.14" - "@chakra-ui/portal" "2.0.16" + "@chakra-ui/dom-utils" "2.1.0" + "@chakra-ui/popper" "3.1.0" + "@chakra-ui/portal" "2.1.0" "@chakra-ui/react-types" "2.0.7" - "@chakra-ui/react-use-disclosure" "2.0.8" - "@chakra-ui/react-use-event-listener" "2.0.7" - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-use-disclosure" "2.1.0" + "@chakra-ui/react-use-event-listener" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/transition@2.0.16": - version "2.0.16" - resolved "https://registry.yarnpkg.com/@chakra-ui/transition/-/transition-2.0.16.tgz#498c91e6835bb5d950fd1d1402f483b85f7dcd87" - integrity sha512-E+RkwlPc3H7P1crEXmXwDXMB2lqY2LLia2P5siQ4IEnRWIgZXlIw+8Em+NtHNgusel2N+9yuB0wT9SeZZeZ3CQ== +"@chakra-ui/transition@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/transition/-/transition-2.1.0.tgz#c8e95564f7ab356e78119780037bae5ad150c7b3" + integrity sha512-orkT6T/Dt+/+kVwJNy7zwJ+U2xAZ3EU7M3XCs45RBvUnZDr/u9vdmaM/3D/rOpmQJWgQBwKPJleUXrYWUagEDQ== dependencies: "@chakra-ui/shared-utils" "2.0.5" @@ -845,10 +858,10 @@ framesync "6.1.2" lodash.mergewith "4.6.2" -"@chakra-ui/visually-hidden@2.0.15": - version "2.0.15" - resolved "https://registry.yarnpkg.com/@chakra-ui/visually-hidden/-/visually-hidden-2.0.15.tgz#60df64e0ab97d95fee4e6c61ccabd15fd5ace398" - integrity sha512-WWULIiucYRBIewHKFA7BssQ2ABLHLVd9lrUo3N3SZgR0u4ZRDDVEUNOy+r+9ruDze8+36dGbN9wsN1IdELtdOw== +"@chakra-ui/visually-hidden@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/visually-hidden/-/visually-hidden-2.2.0.tgz#9b0ecef8f01263ab808ba3bda7b36a0d91b4d5c1" + integrity sha512-KmKDg01SrQ7VbTD3+cPWf/UfpF5MSwm3v7MWi0n5t8HnnadT13MF0MJCDSXbBWnzLv1ZKJ6zlyAOeARWX+DpjQ== "@emotion/babel-plugin@^11.11.0": version "11.11.0" @@ -908,9 +921,9 @@ integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== "@emotion/react@^11": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.0.tgz#408196b7ef8729d8ad08fc061b03b046d1460e02" - integrity sha512-ZSK3ZJsNkwfjT3JpDAWJZlrGD81Z3ytNDsxw1LKq1o+xkmO5pnWfr6gmCC8gHEFf3nSSX/09YrG67jybNPxSUw== + version "11.11.1" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.1.tgz#b2c36afac95b184f73b08da8c214fdf861fa4157" + integrity sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA== dependencies: "@babel/runtime" "^7.18.3" "@emotion/babel-plugin" "^11.11.0" @@ -1004,13 +1017,13 @@ integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@motionone/animation@^10.12.0": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.15.1.tgz#4a85596c31cbc5100ae8eb8b34c459fb0ccf6807" - integrity sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ== + version "10.16.3" + resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.16.3.tgz#f5b71e27fd8b88b61f983adb0ed6c8e3e89281f9" + integrity sha512-QUGWpLbMFLhyqKlngjZhjtxM8IqiJQjLK0DF+XOF6od9nhSvlaeEpOY/UMCRVcZn/9Tr2rZO22EkuCIjYdI74g== dependencies: - "@motionone/easing" "^10.15.1" - "@motionone/types" "^10.15.1" - "@motionone/utils" "^10.15.1" + "@motionone/easing" "^10.16.3" + "@motionone/types" "^10.16.3" + "@motionone/utils" "^10.16.3" tslib "^2.3.1" "@motionone/dom@10.12.0": @@ -1025,41 +1038,41 @@ hey-listen "^1.0.8" tslib "^2.3.1" -"@motionone/easing@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@motionone/easing/-/easing-10.15.1.tgz#95cf3adaef34da6deebb83940d8143ede3deb693" - integrity sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw== +"@motionone/easing@^10.16.3": + version "10.16.3" + resolved "https://registry.yarnpkg.com/@motionone/easing/-/easing-10.16.3.tgz#a62abe0ba2841861f167f286782e287eab8d7466" + integrity sha512-HWTMZbTmZojzwEuKT/xCdvoMPXjYSyQvuVM6jmM0yoGU6BWzsmYMeB4bn38UFf618fJCNtP9XeC/zxtKWfbr0w== dependencies: - "@motionone/utils" "^10.15.1" + "@motionone/utils" "^10.16.3" tslib "^2.3.1" "@motionone/generators@^10.12.0": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@motionone/generators/-/generators-10.15.1.tgz#dc6abb11139d1bafe758a41c134d4c753a9b871c" - integrity sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ== + version "10.16.4" + resolved "https://registry.yarnpkg.com/@motionone/generators/-/generators-10.16.4.tgz#4a38708244bce733bfcebd4a26d19f4bbabd36af" + integrity sha512-geFZ3w0Rm0ZXXpctWsSf3REGywmLLujEjxPYpBR0j+ymYwof0xbV6S5kGqqsDKgyWKVWpUInqQYvQfL6fRbXeg== dependencies: - "@motionone/types" "^10.15.1" - "@motionone/utils" "^10.15.1" + "@motionone/types" "^10.16.3" + "@motionone/utils" "^10.16.3" tslib "^2.3.1" -"@motionone/types@^10.12.0", "@motionone/types@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@motionone/types/-/types-10.15.1.tgz#89441b54285012795cbba8612cbaa0fa420db3eb" - integrity sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA== +"@motionone/types@^10.12.0", "@motionone/types@^10.16.3": + version "10.16.3" + resolved "https://registry.yarnpkg.com/@motionone/types/-/types-10.16.3.tgz#9284ea8a52f6b32c51c54b617214f20e43ac6c59" + integrity sha512-W4jkEGFifDq73DlaZs3HUfamV2t1wM35zN/zX7Q79LfZ2sc6C0R1baUHZmqc/K5F3vSw3PavgQ6HyHLd/MXcWg== -"@motionone/utils@^10.12.0", "@motionone/utils@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@motionone/utils/-/utils-10.15.1.tgz#6b5f51bde75be88b5411e084310299050368a438" - integrity sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw== +"@motionone/utils@^10.12.0", "@motionone/utils@^10.16.3": + version "10.16.3" + resolved "https://registry.yarnpkg.com/@motionone/utils/-/utils-10.16.3.tgz#ddf07ab6cf3000d89e3bcbdc9a8c3e1fd64f8520" + integrity sha512-WNWDksJIxQkaI9p9Z9z0+K27xdqISGNFy1SsWVGaiedTHq0iaT6iZujby8fT/ZnZxj1EOaxJtSfUPCFNU5CRoA== dependencies: - "@motionone/types" "^10.15.1" + "@motionone/types" "^10.16.3" hey-listen "^1.0.8" tslib "^2.3.1" -"@next/env@12.3.1": - version "12.3.1" - resolved "https://registry.yarnpkg.com/@next/env/-/env-12.3.1.tgz#18266bd92de3b4aa4037b1927aa59e6f11879260" - integrity sha512-9P9THmRFVKGKt9DYqeC2aKIxm8rlvkK38V1P1sRE7qyoPBIs8l9oo79QoSdPtOWfzkbDAVUqvbQGgTMsb8BtJg== +"@next/env@13.5.4": + version "13.5.4" + resolved "https://registry.yarnpkg.com/@next/env/-/env-13.5.4.tgz#777c3af16de2cf2f611b6c8126910062d13d222c" + integrity sha512-LGegJkMvRNw90WWphGJ3RMHMVplYcOfRWf2Be3td3sUa+1AaxmsYyANsA+znrGCBjXJNi4XAQlSoEfUxs/4kIQ== "@next/eslint-plugin-next@12.3.1": version "12.3.1" @@ -1068,70 +1081,50 @@ dependencies: glob "7.1.7" -"@next/swc-android-arm-eabi@12.3.1": - version "12.3.1" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.3.1.tgz#b15ce8ad376102a3b8c0f3c017dde050a22bb1a3" - integrity sha512-i+BvKA8tB//srVPPQxIQN5lvfROcfv4OB23/L1nXznP+N/TyKL8lql3l7oo2LNhnH66zWhfoemg3Q4VJZSruzQ== - -"@next/swc-android-arm64@12.3.1": - version "12.3.1" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.3.1.tgz#85d205f568a790a137cb3c3f720d961a2436ac9c" - integrity sha512-CmgU2ZNyBP0rkugOOqLnjl3+eRpXBzB/I2sjwcGZ7/Z6RcUJXK5Evz+N0ucOxqE4cZ3gkTeXtSzRrMK2mGYV8Q== - -"@next/swc-darwin-arm64@12.3.1": - version "12.3.1" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.3.1.tgz#b105457d6760a7916b27e46c97cb1a40547114ae" - integrity sha512-hT/EBGNcu0ITiuWDYU9ur57Oa4LybD5DOQp4f22T6zLfpoBMfBibPtR8XktXmOyFHrL/6FC2p9ojdLZhWhvBHg== - -"@next/swc-darwin-x64@12.3.1": - version "12.3.1" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.3.1.tgz#6947b39082271378896b095b6696a7791c6e32b1" - integrity sha512-9S6EVueCVCyGf2vuiLiGEHZCJcPAxglyckTZcEwLdJwozLqN0gtS0Eq0bQlGS3dH49Py/rQYpZ3KVWZ9BUf/WA== - -"@next/swc-freebsd-x64@12.3.1": - version "12.3.1" - resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.3.1.tgz#2b6c36a4d84aae8b0ea0e0da9bafc696ae27085a" - integrity sha512-qcuUQkaBZWqzM0F1N4AkAh88lLzzpfE6ImOcI1P6YeyJSsBmpBIV8o70zV+Wxpc26yV9vpzb+e5gCyxNjKJg5Q== - -"@next/swc-linux-arm-gnueabihf@12.3.1": - version "12.3.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.3.1.tgz#6e421c44285cfedac1f4631d5de330dd60b86298" - integrity sha512-diL9MSYrEI5nY2wc/h/DBewEDUzr/DqBjIgHJ3RUNtETAOB3spMNHvJk2XKUDjnQuluLmFMloet9tpEqU2TT9w== - -"@next/swc-linux-arm64-gnu@12.3.1": - version "12.3.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.3.1.tgz#8863f08a81f422f910af126159d2cbb9552ef717" - integrity sha512-o/xB2nztoaC7jnXU3Q36vGgOolJpsGG8ETNjxM1VAPxRwM7FyGCPHOMk1XavG88QZSQf+1r+POBW0tLxQOJ9DQ== - -"@next/swc-linux-arm64-musl@12.3.1": - version "12.3.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.3.1.tgz#0038f07cf0b259d70ae0c80890d826dfc775d9f3" - integrity sha512-2WEasRxJzgAmP43glFNhADpe8zB7kJofhEAVNbDJZANp+H4+wq+/cW1CdDi8DqjkShPEA6/ejJw+xnEyDID2jg== - -"@next/swc-linux-x64-gnu@12.3.1": - version "12.3.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.3.1.tgz#c66468f5e8181ffb096c537f0dbfb589baa6a9c1" - integrity sha512-JWEaMyvNrXuM3dyy9Pp5cFPuSSvG82+yABqsWugjWlvfmnlnx9HOQZY23bFq3cNghy5V/t0iPb6cffzRWylgsA== - -"@next/swc-linux-x64-musl@12.3.1": - version "12.3.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.3.1.tgz#c6269f3e96ac0395bc722ad97ce410ea5101d305" - integrity sha512-xoEWQQ71waWc4BZcOjmatuvPUXKTv6MbIFzpm4LFeCHsg2iwai0ILmNXf81rJR+L1Wb9ifEke2sQpZSPNz1Iyg== - -"@next/swc-win32-arm64-msvc@12.3.1": - version "12.3.1" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.3.1.tgz#83c639ee969cee36ce247c3abd1d9df97b5ecade" - integrity sha512-hswVFYQYIeGHE2JYaBVtvqmBQ1CppplQbZJS/JgrVI3x2CurNhEkmds/yqvDONfwfbttTtH4+q9Dzf/WVl3Opw== - -"@next/swc-win32-ia32-msvc@12.3.1": - version "12.3.1" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.3.1.tgz#52995748b92aa8ad053440301bc2c0d9fbcf27c2" - integrity sha512-Kny5JBehkTbKPmqulr5i+iKntO5YMP+bVM8Hf8UAmjSMVo3wehyLVc9IZkNmcbxi+vwETnQvJaT5ynYBkJ9dWA== - -"@next/swc-win32-x64-msvc@12.3.1": - version "12.3.1" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.3.1.tgz#27d71a95247a9eaee03d47adee7e3bd594514136" - integrity sha512-W1ijvzzg+kPEX6LAc+50EYYSEo0FVu7dmTE+t+DM4iOLqgGHoW9uYSz9wCVdkXOEEMP9xhXfGpcSxsfDucyPkA== +"@next/swc-darwin-arm64@13.5.4": + version "13.5.4" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.4.tgz#241957774fef3f876dc714cfc0ca6f00f561737e" + integrity sha512-Df8SHuXgF1p+aonBMcDPEsaahNo2TCwuie7VXED4FVyECvdXfRT9unapm54NssV9tF3OQFKBFOdlje4T43VO0w== + +"@next/swc-darwin-x64@13.5.4": + version "13.5.4" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.4.tgz#fa11bb97bf06cd45cbd554354b46bf93e22c025b" + integrity sha512-siPuUwO45PnNRMeZnSa8n/Lye5ZX93IJom9wQRB5DEOdFrw0JjOMu1GINB8jAEdwa7Vdyn1oJ2xGNaQpdQQ9Pw== + +"@next/swc-linux-arm64-gnu@13.5.4": + version "13.5.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.4.tgz#dd3a482cd6871ed23b049066a0f3c4c2f955dc88" + integrity sha512-l/k/fvRP/zmB2jkFMfefmFkyZbDkYW0mRM/LB+tH5u9pB98WsHXC0WvDHlGCYp3CH/jlkJPL7gN8nkTQVrQ/2w== + +"@next/swc-linux-arm64-musl@13.5.4": + version "13.5.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.4.tgz#ed6d7abaf5712cff2752ce5300d6bacc6aff1b18" + integrity sha512-YYGb7SlLkI+XqfQa8VPErljb7k9nUnhhRrVaOdfJNCaQnHBcvbT7cx/UjDQLdleJcfyg1Hkn5YSSIeVfjgmkTg== + +"@next/swc-linux-x64-gnu@13.5.4": + version "13.5.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.4.tgz#977a040388e8a685a3a85e0dbdff90a4ee2a7189" + integrity sha512-uE61vyUSClnCH18YHjA8tE1prr/PBFlBFhxBZis4XBRJoR+txAky5d7gGNUIbQ8sZZ7LVkSVgm/5Fc7mwXmRAg== + +"@next/swc-linux-x64-musl@13.5.4": + version "13.5.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.4.tgz#3e29a0ad8efc016196c3a120da04397eea328b2a" + integrity sha512-qVEKFYML/GvJSy9CfYqAdUexA6M5AklYcQCW+8JECmkQHGoPxCf04iMh7CPR7wkHyWWK+XLt4Ja7hhsPJtSnhg== + +"@next/swc-win32-arm64-msvc@13.5.4": + version "13.5.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.4.tgz#18a236c3fe5a48d24b56d939e6a05488bb682b7e" + integrity sha512-mDSQfqxAlfpeZOLPxLymZkX0hYF3juN57W6vFHTvwKlnHfmh12Pt7hPIRLYIShk8uYRsKPtMTth/EzpwRI+u8w== + +"@next/swc-win32-ia32-msvc@13.5.4": + version "13.5.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.4.tgz#255132243ab6fb20d3c7c92a585e2c4fa50368fe" + integrity sha512-aoqAT2XIekIWoriwzOmGFAvTtVY5O7JjV21giozBTP5c6uZhpvTWRbmHXbmsjZqY4HnEZQRXWkSAppsIBweKqw== + +"@next/swc-win32-x64-msvc@13.5.4": + version "13.5.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.4.tgz#cc542907b55247c5634d9a8298e1c143a1847e25" + integrity sha512-cyRvlAxwlddlqeB9xtPSfNSCRy8BOa4wtMo0IuI9P7Y0XT2qpDrpFKRyZ7kUngZis59mPVla5k8X1oOJ8RxDYg== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -1154,12 +1147,12 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@octokit/app@^13.1.1": - version "13.1.3" - resolved "https://registry.yarnpkg.com/@octokit/app/-/app-13.1.3.tgz#eefeefa90f608f01cd048f578dc46ecc58b4110f" - integrity sha512-qG3a3AddK/XLmtpQuB2eICbOUTwwdvqfdnyOzU6PlHhhhVapLfuutkbTOllHB/5OS/slUamIBD3zhOYpKsLFDQ== +"@octokit/app@^13.1.5": + version "13.1.8" + resolved "https://registry.yarnpkg.com/@octokit/app/-/app-13.1.8.tgz#9e43e7e1ffc8f028130cabdf587cbacccf0c0257" + integrity sha512-bCncePMguVyFpdBbnceFKfmPOuUD94T189GuQ0l00ZcQ+mX4hyPqnaWJlsXE2HSdA71eV7p8GPDZ+ErplTkzow== dependencies: - "@octokit/auth-app" "^4.0.8" + "@octokit/auth-app" "^4.0.13" "@octokit/auth-unauthenticated" "^3.0.0" "@octokit/core" "^4.0.0" "@octokit/oauth-app" "^4.0.7" @@ -1168,33 +1161,32 @@ "@octokit/webhooks" "^10.0.0" "@octokit/auth-action@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@octokit/auth-action/-/auth-action-2.0.3.tgz#c86acd2e7ae8083186fcb45a3bc406cd8f0c3749" - integrity sha512-GtUtNR7AmDV8bjNtt+EuqwE2Ipeq0aR10zPInp/B6msgoXL7UPqj2bI+8M/A/y7abGJ3U4h85wXoqZSralnDxw== + version "2.1.1" + resolved "https://registry.yarnpkg.com/@octokit/auth-action/-/auth-action-2.1.1.tgz#19b9615991808345b4f0d5c02c75d6e7f2dfe85f" + integrity sha512-396owpMa68wKT9tVf1rInQ0I8WdSJUXbEPWTDyIwqVGEd0xemKJwGHPv768Dh24BSJHY96MsUXJZ8CRaz28XCw== dependencies: "@octokit/auth-token" "^3.0.0" "@octokit/types" "^9.0.0" -"@octokit/auth-app@^4.0.8": - version "4.0.10" - resolved "https://registry.yarnpkg.com/@octokit/auth-app/-/auth-app-4.0.10.tgz#e34767dc62990f3a5f686310db38005b013ac575" - integrity sha512-cLFDd7Z0TkBB0BLt3rWXNS5f2eTeAjzG9iQlFQ6ttNPaXNdYMtnQmr2NBDFq3WnZFSct9dpSdFaVuquRrCY67w== +"@octokit/auth-app@^4.0.13": + version "4.0.13" + resolved "https://registry.yarnpkg.com/@octokit/auth-app/-/auth-app-4.0.13.tgz#53323bee6bfefbb73ea544dd8e6a0144550e13e3" + integrity sha512-NBQkmR/Zsc+8fWcVIFrwDgNXS7f4XDrkd9LHdi9DPQw1NdGHLviLzRO2ZBwTtepnwHXW5VTrVU9eFGijMUqllg== dependencies: "@octokit/auth-oauth-app" "^5.0.0" "@octokit/auth-oauth-user" "^2.0.0" "@octokit/request" "^6.0.0" "@octokit/request-error" "^3.0.0" "@octokit/types" "^9.0.0" - "@types/lru-cache" "^5.1.0" deprecation "^2.3.1" - lru-cache "^6.0.0" + lru-cache "^9.0.0" universal-github-app-jwt "^1.1.1" universal-user-agent "^6.0.0" "@octokit/auth-oauth-app@^5.0.0": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@octokit/auth-oauth-app/-/auth-oauth-app-5.0.5.tgz#be2a93d72835133b4866ac4721aa628849475525" - integrity sha512-UPX1su6XpseaeLVCi78s9droxpGtBWIgz9XhXAx9VXabksoF0MyI5vaa1zo1njyYt6VaAjFisC2A2Wchcu2WmQ== + version "5.0.6" + resolved "https://registry.yarnpkg.com/@octokit/auth-oauth-app/-/auth-oauth-app-5.0.6.tgz#e5f922623eb261485efc87f5d0d5b509c71caec8" + integrity sha512-SxyfIBfeFcWd9Z/m1xa4LENTQ3l1y6Nrg31k2Dcb1jS5ov7pmwMJZ6OGX8q3K9slRgVpeAjNA1ipOAMHkieqyw== dependencies: "@octokit/auth-oauth-device" "^4.0.0" "@octokit/auth-oauth-user" "^2.0.0" @@ -1205,9 +1197,9 @@ universal-user-agent "^6.0.0" "@octokit/auth-oauth-device@^4.0.0": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@octokit/auth-oauth-device/-/auth-oauth-device-4.0.4.tgz#b8dde812a38bf5cb0696b6e7d0a74681d437c390" - integrity sha512-Xl85BZYfqCMv+Uvz33nVVUjE7I/PVySNaK6dRRqlkvYcArSr9vRcZC9KVjXYObGRTCN6mISeYdakAZvWEN4+Jw== + version "4.0.5" + resolved "https://registry.yarnpkg.com/@octokit/auth-oauth-device/-/auth-oauth-device-4.0.5.tgz#21e981f51ae63d419ca3db0b75e32c85b33fa0da" + integrity sha512-XyhoWRTzf2ZX0aZ52a6Ew5S5VBAfwwx1QnC2Np6Et3MWQpZjlREIcbcvVZtkNuXp6Z9EeiSLSDUqm3C+aMEHzQ== dependencies: "@octokit/oauth-methods" "^2.0.0" "@octokit/request" "^6.0.0" @@ -1215,9 +1207,9 @@ universal-user-agent "^6.0.0" "@octokit/auth-oauth-user@^2.0.0": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@octokit/auth-oauth-user/-/auth-oauth-user-2.1.1.tgz#d900972f3d9247924637ab3343a8305746feadb2" - integrity sha512-JgqnNNPf9CaWLxWm9uh2WgxcaVYhxBR09NVIPTiMU2dVZ3FObOHs3njBiLNw+zq84k+rEdm5Y7AsiASrZ84Apg== + version "2.1.2" + resolved "https://registry.yarnpkg.com/@octokit/auth-oauth-user/-/auth-oauth-user-2.1.2.tgz#7091e1b29527e577b16d0f1699d49fe3d39946ff" + integrity sha512-kkRqNmFe7s5GQcojE3nSlF+AzYPpPv7kvP/xYEnE57584pixaFBH8Vovt+w5Y3E4zWUEOxjdLItmBTFAWECPAg== dependencies: "@octokit/auth-oauth-device" "^4.0.0" "@octokit/oauth-methods" "^2.0.0" @@ -1227,24 +1219,22 @@ universal-user-agent "^6.0.0" "@octokit/auth-token@^3.0.0": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.3.tgz#ce7e48a3166731f26068d7a7a7996b5da58cbe0c" - integrity sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA== - dependencies: - "@octokit/types" "^9.0.0" + version "3.0.4" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.4.tgz#70e941ba742bdd2b49bdb7393e821dea8520a3db" + integrity sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ== "@octokit/auth-unauthenticated@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@octokit/auth-unauthenticated/-/auth-unauthenticated-3.0.4.tgz#347d3f3a6fefb22d399a941b986bac5361fc95df" - integrity sha512-AT74XGBylcLr4lmUp1s6mjSUgphGdlse21Qjtv5DzpX1YOl5FXKwvNcZWESdhyBbpDT8VkVyLFqa/7a7eqpPNw== + version "3.0.5" + resolved "https://registry.yarnpkg.com/@octokit/auth-unauthenticated/-/auth-unauthenticated-3.0.5.tgz#a562bffd6ca0d0e80541eaf9f9b89b8d53020228" + integrity sha512-yH2GPFcjrTvDWPwJWWCh0tPPtTL5SMgivgKPA+6v/XmYN6hGQkAto8JtZibSKOpf8ipmeYhLNWQ2UgW0GYILCw== dependencies: "@octokit/request-error" "^3.0.0" "@octokit/types" "^9.0.0" -"@octokit/core@^4.0.0", "@octokit/core@^4.0.4": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.2.0.tgz#8c253ba9605aca605bc46187c34fcccae6a96648" - integrity sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg== +"@octokit/core@^4.0.0", "@octokit/core@^4.2.1": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.2.4.tgz#d8769ec2b43ff37cc3ea89ec4681a20ba58ef907" + integrity sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ== dependencies: "@octokit/auth-token" "^3.0.0" "@octokit/graphql" "^5.0.0" @@ -1255,27 +1245,27 @@ universal-user-agent "^6.0.0" "@octokit/endpoint@^7.0.0": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.5.tgz#2bb2a911c12c50f10014183f5d596ce30ac67dd1" - integrity sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA== + version "7.0.6" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.6.tgz#791f65d3937555141fb6c08f91d618a7d645f1e2" + integrity sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg== dependencies: "@octokit/types" "^9.0.0" is-plain-object "^5.0.0" universal-user-agent "^6.0.0" "@octokit/graphql@^5.0.0": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.5.tgz#a4cb3ea73f83b861893a6370ee82abb36e81afd2" - integrity sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ== + version "5.0.6" + resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.6.tgz#9eac411ac4353ccc5d3fca7d76736e6888c5d248" + integrity sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw== dependencies: "@octokit/request" "^6.0.0" "@octokit/types" "^9.0.0" universal-user-agent "^6.0.0" -"@octokit/oauth-app@^4.0.6", "@octokit/oauth-app@^4.0.7": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@octokit/oauth-app/-/oauth-app-4.2.1.tgz#19b6eefcca434c396de2d2f6dcd814d9c91b2605" - integrity sha512-HtRWLzvAAizuFKJEoNlhWOktNNhfnLSXJXu2htt5+x2exhHibHupz/+1AAHU4xlBFtQLQh79OB/bQf+1GP5LBg== +"@octokit/oauth-app@^4.0.7", "@octokit/oauth-app@^4.2.1": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@octokit/oauth-app/-/oauth-app-4.2.4.tgz#d385ffebe116c684940bf255a2189665c61ee5a0" + integrity sha512-iuOVFrmm5ZKNavRtYu5bZTtmlKLc5uVgpqTfMEqYYf2OkieV6VdxKZAb5qLVdEPL8LU2lMWcGpavPBV835cgoA== dependencies: "@octokit/auth-oauth-app" "^5.0.0" "@octokit/auth-oauth-user" "^2.0.0" @@ -1293,9 +1283,9 @@ integrity sha512-y1WhN+ERDZTh0qZ4SR+zotgsQUE1ysKnvBt1hvDRB2WRzYtVKQjn97HEPzoehh66Fj9LwNdlZh+p6TJatT0zzg== "@octokit/oauth-methods@^2.0.0": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@octokit/oauth-methods/-/oauth-methods-2.0.5.tgz#b11ce2205c46ffcd731c7332b21bb62dad10ce24" - integrity sha512-yQP6B5gE3axNxuM3U9KqWs/ErAQ+WLPaPgC/7EjsZsQibkf8sjdAfF8/y/EJW+Dd05XQvadX4WhQZPMnO1SE1A== + version "2.0.6" + resolved "https://registry.yarnpkg.com/@octokit/oauth-methods/-/oauth-methods-2.0.6.tgz#3a089781e90171cbe8a0efa448a6a60229bdd3fb" + integrity sha512-l9Uml2iGN2aTWLZcm8hV+neBiFXAQ9+3sKiQe/sgumHlL6HDg0AQ8/l16xX/5jJvfxueqTW5CWbzd0MjnlfHZw== dependencies: "@octokit/oauth-authorization-url" "^5.0.0" "@octokit/request" "^6.2.3" @@ -1308,43 +1298,43 @@ resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-14.0.0.tgz#949c5019028c93f189abbc2fb42f333290f7134a" integrity sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw== -"@octokit/openapi-types@^17.1.2": - version "17.1.2" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-17.1.2.tgz#b7bc1cc5d3581adac9dce197a21f0e5f2ceaabf1" - integrity sha512-OaS7Ol4Y+U50PbejfzQflGWRMxO04nYWO5ZBv6JerqMKE2WS/tI9VoVDDPXHBlRMGG2fOdKwtVGlFfc7AVIstw== +"@octokit/openapi-types@^18.0.0": + version "18.1.1" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-18.1.1.tgz#09bdfdabfd8e16d16324326da5148010d765f009" + integrity sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw== -"@octokit/plugin-paginate-rest@^6.0.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.0.tgz#3522ef5c2712436332655085b197eafe4ac7afc4" - integrity sha512-5T4iXjJdYCVA1rdWS1C+uZV9AvtZY9QgTG74kFiSFVj94dZXowyi/YK8f4SGjZaL69jZthGlBaDKRdCMCF9log== +"@octokit/plugin-paginate-rest@^6.0.0", "@octokit/plugin-paginate-rest@^6.1.0": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz#f86456a7a1fe9e58fec6385a85cf1b34072341f8" + integrity sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ== dependencies: - "@octokit/types" "^9.2.2" + "@octokit/tsconfig" "^1.0.2" + "@octokit/types" "^9.2.3" -"@octokit/plugin-rest-endpoint-methods@^7.0.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.1.0.tgz#7f3f4fac10bf72f8c5cd0c343252cd5f73dbf2d8" - integrity sha512-SWwz/hc47GaKJR6BlJI4WIVRodbAFRvrR0QRPSoPMs7krb7anYPML3psg+ThEz/kcwOdSNh/oA8qThi/Wvs4Fw== +"@octokit/plugin-rest-endpoint-methods@^7.1.1": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.2.3.tgz#37a84b171a6cb6658816c82c4082ac3512021797" + integrity sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA== dependencies: - "@octokit/types" "^9.2.2" - deprecation "^2.3.1" + "@octokit/types" "^10.0.0" -"@octokit/plugin-retry@^4.0.3": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@octokit/plugin-retry/-/plugin-retry-4.1.3.tgz#c717d7908be26a5570941d9688e3e8a3da95e714" - integrity sha512-3YKBj7d0J/4mpEc4xzMociWsMNl5lZqrpAnYcW6mqiSGF3wFjU+c6GHih6GLClk31JNvKDr0x9jc5cfm7evkZg== +"@octokit/plugin-retry@^4.1.3": + version "4.1.6" + resolved "https://registry.yarnpkg.com/@octokit/plugin-retry/-/plugin-retry-4.1.6.tgz#e33b1e520f0bd24d515c9901676b55df64dfc795" + integrity sha512-obkYzIgEC75r8+9Pnfiiqy3y/x1bc3QLE5B7qvv9wi9Kj0R5tGQFC6QMBg1154WQ9lAVypuQDGyp3hNpp15gQQ== dependencies: "@octokit/types" "^9.0.0" bottleneck "^2.15.3" -"@octokit/plugin-throttling@^5.0.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-throttling/-/plugin-throttling-5.2.0.tgz#036109a4afcabf8ec47e4a20e8601820fd329cbd" - integrity sha512-qWYvVIS1aRC3hN4a0ICWUp51IolHIn7E4iri2AKjbExJaovMDvRtae4nGoxG5pP6+WATk7JZ5epOJobFbGYV1w== +"@octokit/plugin-throttling@^5.2.2": + version "5.2.3" + resolved "https://registry.yarnpkg.com/@octokit/plugin-throttling/-/plugin-throttling-5.2.3.tgz#9f552a14dcee5c7326dd9dee64a71ea76b108814" + integrity sha512-C9CFg9mrf6cugneKiaI841iG8DOv6P5XXkjmiNNut+swePxQ7RWEdAZRp5rJoE1hjsIqiYcKa/ZkOQ+ujPI39Q== dependencies: "@octokit/types" "^9.0.0" bottleneck "^2.15.3" -"@octokit/request-error@^3.0.0", "@octokit/request-error@^3.0.3": +"@octokit/request-error@^3.0.0", "@octokit/request-error@^3.0.3", "@octokit/request-error@^v3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.3.tgz#ef3dd08b8e964e53e55d471acfe00baa892b9c69" integrity sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ== @@ -1354,9 +1344,9 @@ once "^1.4.0" "@octokit/request@^6.0.0", "@octokit/request@^6.2.3": - version "6.2.3" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.3.tgz#76d5d6d44da5c8d406620a4c285d280ae310bdb4" - integrity sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA== + version "6.2.8" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.8.tgz#aaf480b32ab2b210e9dadd8271d187c93171d8eb" + integrity sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw== dependencies: "@octokit/endpoint" "^7.0.0" "@octokit/request-error" "^3.0.0" @@ -1365,6 +1355,18 @@ node-fetch "^2.6.7" universal-user-agent "^6.0.0" +"@octokit/tsconfig@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@octokit/tsconfig/-/tsconfig-1.0.2.tgz#59b024d6f3c0ed82f00d08ead5b3750469125af7" + integrity sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA== + +"@octokit/types@^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-10.0.0.tgz#7ee19c464ea4ada306c43f1a45d444000f419a4a" + integrity sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg== + dependencies: + "@octokit/openapi-types" "^18.0.0" + "@octokit/types@^8.0.0": version "8.2.1" resolved "https://registry.yarnpkg.com/@octokit/types/-/types-8.2.1.tgz#a6de091ae68b5541f8d4fcf9a12e32836d4648aa" @@ -1372,17 +1374,17 @@ dependencies: "@octokit/openapi-types" "^14.0.0" -"@octokit/types@^9.0.0", "@octokit/types@^9.2.2": - version "9.2.2" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-9.2.2.tgz#d111d33928f288f48083bfe49d8a9a5945e67db1" - integrity sha512-9BjDxjgQIvCjNWZsbqyH5QC2Yni16oaE6xL+8SUBMzcYPF4TGQBXGA97Cl3KceK9mwiNMb1mOYCz6FbCCLEL+g== +"@octokit/types@^9.0.0", "@octokit/types@^9.2.2", "@octokit/types@^9.2.3": + version "9.3.2" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-9.3.2.tgz#3f5f89903b69f6a2d196d78ec35f888c0013cac5" + integrity sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA== dependencies: - "@octokit/openapi-types" "^17.1.2" + "@octokit/openapi-types" "^18.0.0" "@octokit/webhooks-methods@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@octokit/webhooks-methods/-/webhooks-methods-3.0.2.tgz#cece91cc72714a1c83b35d121e04334f051e509c" - integrity sha512-Vlnv5WBscf07tyAvfDbp7pTkMZUwk7z7VwEF32x6HqI+55QRwBTcT+D7DDjZXtad/1dU9E32x0HmtDlF9VIRaQ== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@octokit/webhooks-methods/-/webhooks-methods-3.0.3.tgz#2648668d34fe44e437eca90c9031d0f3cb759c77" + integrity sha512-2vM+DCNTJ5vL62O5LagMru6XnYhV4fJslK+5YUkTa6rWlW2S+Tqs1lF9Wr9OGqHfVwpBj3TeztWfVON/eUoW1Q== "@octokit/webhooks-types@6.11.0": version "6.11.0" @@ -1400,26 +1402,26 @@ aggregate-error "^3.1.0" "@popperjs/core@^2.9.3": - version "2.11.7" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.7.tgz#ccab5c8f7dc557a52ca3288c10075c9ccd37fff7" - integrity sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw== + version "2.11.8" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" + integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== "@rushstack/eslint-patch@^1.1.3": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728" - integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== + version "1.5.1" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz#5f1b518ec5fa54437c0b7c4a821546c64fed6922" + integrity sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA== -"@swc/helpers@0.4.11": - version "0.4.11" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.11.tgz#db23a376761b3d31c26502122f349a21b592c8de" - integrity sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw== +"@swc/helpers@0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.2.tgz#85ea0c76450b61ad7d10a37050289eded783c27d" + integrity sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw== dependencies: tslib "^2.4.0" "@types/aws-lambda@^8.10.83": - version "8.10.115" - resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.115.tgz#0b5ba361c8e95430ce25fa8d67640c5ac6c857b6" - integrity sha512-kCZuFXKLV3y8NjSoaD5+qKTpRWvPz3uh3W/u1uwlw3Mg+MtaStg1NWgjAwUXo/VJDb6n6KF1ljykFNlNwEJ53Q== + version "8.10.123" + resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.123.tgz#e65c3c57a7e6d3a5a5baedeaeedc989d25b7b34f" + integrity sha512-YBxxrA5fZzt1UFslJFBXH4AJUjkxu5ePv9RPjrpq5Tif5Xi2YhG3P8RAJfXXWL5/M6wPrlzlAMqaMM5ysci/EQ== "@types/btoa-lite@^1.0.0": version "1.0.0" @@ -1427,14 +1429,14 @@ integrity sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg== "@types/d3-array@^3.0.3": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.0.4.tgz#44eebe40be57476cad6a0cd6a85b0f57d54185a2" - integrity sha512-nwvEkG9vYOc0Ic7G7kwgviY4AQlTfYGIZ0fqB7CQHXGyYM6nO7kJh5EguSNA3jfh4rq7Sb7eMVq8isuvg2/miQ== + version "3.0.8" + resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.0.8.tgz#a5d0687a12b48142c6f124d5e3796054e91bcea5" + integrity sha512-2xAVyAUgaXHX9fubjcCbGAUOqYfRJN1em1EKR2HfzWBpObZhwfnZKvofTN4TplMqJdFQao61I+NVSai/vnBvDQ== "@types/d3-color@*": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-3.1.0.tgz#6594da178ded6c7c3842f3cc0ac84b156f12f2d4" - integrity sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA== + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-3.1.1.tgz#43a2aa7836fdae19ce32fabe97742e787f4b2e08" + integrity sha512-CSAVrHAtM9wfuLJ2tpvvwCU/F22sm7rMHNN+yh9D6O6hyAms3+O0cgMpC1pm6UEUMOntuZC8bMt74PteiDUdCg== "@types/d3-ease@^3.0.0": version "3.0.0" @@ -1442,9 +1444,9 @@ integrity sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA== "@types/d3-interpolate@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz#e7d17fa4a5830ad56fe22ce3b4fac8541a9572dc" - integrity sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.2.tgz#b5928cca26fc20dbfe689ff37d62f7bac434c74e" + integrity sha512-zAbCj9lTqW9J9PlF4FwnvEjXZUy75NQqPm7DMHZXuxCFTpuTrdK2NMYGQekf4hlasL78fCYOLu4EE3/tXElwow== dependencies: "@types/d3-color" "*" @@ -1454,23 +1456,23 @@ integrity sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg== "@types/d3-scale@^4.0.2": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.3.tgz#7a5780e934e52b6f63ad9c24b105e33dd58102b5" - integrity sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ== + version "4.0.5" + resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.5.tgz#daa4faa5438315a37a1f5eb1bcdc5aeb3d3e5a2d" + integrity sha512-w/C++3W394MHzcLKO2kdsIn5KKNTOqeQVzyPSGPLzQbkPw/jpeaGtSRlakcKevGgGsjJxGsbqS0fPrVFDbHrDA== dependencies: "@types/d3-time" "*" "@types/d3-shape@^3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-3.1.1.tgz#15cc497751dac31192d7aef4e67a8d2c62354b95" - integrity sha512-6Uh86YFF7LGg4PQkuO2oG6EMBRLuW9cbavUW46zkIO5kuS2PfTqo2o9SkgtQzguBHbLgNnU90UNsITpsX1My+A== + version "3.1.3" + resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-3.1.3.tgz#20eee7aad70f2562041af18e305fec6b48fd511d" + integrity sha512-cHMdIq+rhF5IVwAV7t61pcEXfEHsEsrbBUPkFGBwTXuxtTAkBBrnrNA8++6OWm3jwVsXoZYQM8NEekg6CPJ3zw== dependencies: "@types/d3-path" "*" "@types/d3-time@*", "@types/d3-time@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.0.tgz#e1ac0f3e9e195135361fa1a1d62f795d87e6e819" - integrity sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg== + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.1.tgz#f0c8f9037632cc4511ae55e7e1459dcb95fb3619" + integrity sha512-5j/AnefKAhCw4HpITmLDTPlf4vhi8o/dES+zbegfPb7LaGfNyqkLxBR6E+4yvTAgnJLmhe80EXFMzUs38fw4oA== "@types/d3-timer@^3.0.0": version "3.0.0" @@ -1483,9 +1485,9 @@ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/jsonwebtoken@^9.0.0": - version "9.0.2" - resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#9eeb56c76dd555039be2a3972218de5bd3b8d83e" - integrity sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q== + version "9.0.3" + resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz#1f22283b8e1f933af9e195d720798b64b399d84c" + integrity sha512-b0jGiOgHtZ2jqdPgPnP6WLCXZk1T8p06A/vPGzUvxpFGgKMbjXJDjC5m52ErqBnIuWZFgGoIJyRdeG5AyreJjA== dependencies: "@types/node" "*" @@ -1497,19 +1499,14 @@ "@types/lodash" "*" "@types/lodash@*": - version "4.14.194" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.194.tgz#b71eb6f7a0ff11bff59fc987134a093029258a76" - integrity sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g== - -"@types/lru-cache@^5.1.0": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" - integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== + version "4.14.199" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.199.tgz#c3edb5650149d847a277a8961a7ad360c474e9bf" + integrity sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg== "@types/node@*": - version "20.1.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.1.3.tgz#bc8e7cd8065a5fc355a3a191a68db8019c58bc00" - integrity sha512-NP2yfZpgmf2eDRPmgGq+fjGjSwFgYbihA8/gK+ey23qT9RkxsgNTZvGOEpXgzIGqesTYkElELLgtKoMQTys5vA== + version "20.8.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.2.tgz#d76fb80d87d0d8abfe334fc6d292e83e5524efc4" + integrity sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w== "@types/node@18.11.0": version "18.11.0" @@ -1522,9 +1519,9 @@ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/prop-types@*": - version "15.7.5" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" - integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + version "15.7.8" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.8.tgz#805eae6e8f41bd19e88917d2ea200dc992f405d3" + integrity sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ== "@types/react-dom@18.0.6": version "18.0.6" @@ -1534,9 +1531,9 @@ "@types/react" "*" "@types/react@*": - version "18.2.6" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.6.tgz#5cd53ee0d30ffc193b159d3516c8c8ad2f19d571" - integrity sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA== + version "18.2.24" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.24.tgz#3c7d68c02e0205a472f04abe4a0c1df35d995c05" + integrity sha512-Ee0Jt4sbJxMu1iDcetZEIKQr99J1Zfb6D4F3qfUWoR1JpInkY1Wdg4WwCyBjL257D0+jGqSl1twBjV8iCaC0Aw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -1552,73 +1549,80 @@ csstype "^3.0.2" "@types/scheduler@*": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" - integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== + version "0.16.4" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.4.tgz#fedc3e5b15c26dc18faae96bf1317487cb3658cf" + integrity sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ== "@typescript-eslint/parser@^5.21.0": - version "5.59.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.5.tgz#63064f5eafbdbfb5f9dfbf5c4503cdf949852981" - integrity sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw== + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== dependencies: - "@typescript-eslint/scope-manager" "5.59.5" - "@typescript-eslint/types" "5.59.5" - "@typescript-eslint/typescript-estree" "5.59.5" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.59.5": - version "5.59.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.5.tgz#33ffc7e8663f42cfaac873de65ebf65d2bce674d" - integrity sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A== +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== dependencies: - "@typescript-eslint/types" "5.59.5" - "@typescript-eslint/visitor-keys" "5.59.5" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/types@5.59.5": - version "5.59.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.5.tgz#e63c5952532306d97c6ea432cee0981f6d2258c7" - integrity sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w== +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/typescript-estree@5.59.5": - version "5.59.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.5.tgz#9b252ce55dd765e972a7a2f99233c439c5101e42" - integrity sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg== +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== dependencies: - "@typescript-eslint/types" "5.59.5" - "@typescript-eslint/visitor-keys" "5.59.5" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/visitor-keys@5.59.5": - version "5.59.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.5.tgz#ba5b8d6791a13cf9fea6716af1e7626434b29b9b" - integrity sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA== +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== dependencies: - "@typescript-eslint/types" "5.59.5" + "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@zag-js/element-size@0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@zag-js/element-size/-/element-size-0.3.2.tgz#ebb76af2a024230482406db41344598d1a9f54f4" - integrity sha512-bVvvigUGvAuj7PCkE5AbzvTJDTw5f3bg9nQdv+ErhVN8SfPPppLJEmmWdxqsRzrHXgx8ypJt/+Ty0kjtISVDsQ== +"@zag-js/dom-query@0.16.0": + version "0.16.0" + resolved "https://registry.yarnpkg.com/@zag-js/dom-query/-/dom-query-0.16.0.tgz#bca46bcd78f78c900064478646d95f9781ed098e" + integrity sha512-Oqhd6+biWyKnhKwFFuZrrf6lxBz2tX2pRQe6grUnYwO6HJ8BcbqZomy2lpOdr+3itlaUqx+Ywj5E5ZZDr/LBfQ== + +"@zag-js/element-size@0.10.5": + version "0.10.5" + resolved "https://registry.yarnpkg.com/@zag-js/element-size/-/element-size-0.10.5.tgz#a24bad2eeb7e2c8709e32be5336e158e1a1a174f" + integrity sha512-uQre5IidULANvVkNOBQ1tfgwTQcGl4hliPSe69Fct1VfYb2Fd0jdAcGzqQgPhfrXFpR62MxLPB7erxJ/ngtL8w== -"@zag-js/focus-visible@0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@zag-js/focus-visible/-/focus-visible-0.2.2.tgz#56233480ca1275d3218fb2e10696a33d1a6b9e64" - integrity sha512-0j2gZq8HiZ51z4zNnSkF1iSkqlwRDvdH+son3wHdoz+7IUdMN/5Exd4TxMJ+gq2Of1DiXReYLL9qqh2PdQ4wgA== +"@zag-js/focus-visible@0.16.0": + version "0.16.0" + resolved "https://registry.yarnpkg.com/@zag-js/focus-visible/-/focus-visible-0.16.0.tgz#c9e53e3dbab0f2649d04a489bb379f5800f4f069" + integrity sha512-a7U/HSopvQbrDU4GLerpqiMcHKEkQkNPeDZJWz38cw/6Upunh41GjHetq5TB84hxyCaDzJ6q2nEdNoBQfC0FKA== + dependencies: + "@zag-js/dom-query" "0.16.0" acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.8.0: - version "8.8.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" - integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== +acorn@^8.9.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== aggregate-error@^3.1.0: version "3.1.0" @@ -1662,7 +1666,7 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-hidden@^1.2.2: +aria-hidden@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.3.tgz#14aeb7fb692bbb72d69bebfa47279c1fd725e954" integrity sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ== @@ -1670,11 +1674,11 @@ aria-hidden@^1.2.2: tslib "^2.0.0" aria-query@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" - integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + version "5.3.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== dependencies: - deep-equal "^2.0.5" + dequal "^2.0.3" array-buffer-byte-length@^1.0.0: version "1.0.0" @@ -1684,15 +1688,15 @@ array-buffer-byte-length@^1.0.0: call-bind "^1.0.2" is-array-buffer "^3.0.1" -array-includes@^3.1.5, array-includes@^3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" - integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== +array-includes@^3.1.6: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" is-string "^1.0.7" array-union@^2.1.0: @@ -1700,58 +1704,89 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +array.prototype.findlastindex@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + array.prototype.flat@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" - integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" array.prototype.flatmap@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" - integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" array.prototype.tosorted@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" - integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== + version "1.1.2" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd" + integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" - get-intrinsic "^1.1.3" + get-intrinsic "^1.2.1" + +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" ast-types-flow@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== +asynciterator.prototype@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" + integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== + dependencies: + has-symbols "^1.0.3" + available-typed-arrays@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== axe-core@^4.6.2: - version "4.7.0" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" - integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== + version "4.8.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.8.2.tgz#2f6f3cde40935825cf4465e3c1c9e77b240ff6ae" + integrity sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g== axobject-query@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1" - integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg== + version "3.2.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" + integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== dependencies: - deep-equal "^2.0.5" + dequal "^2.0.3" babel-plugin-macros@^3.1.0: version "3.1.0" @@ -1802,6 +1837,13 @@ buffer-equal-constant-time@1.0.1: resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== +busboy@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -1816,11 +1858,11 @@ callsites@^3.0.0: integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== caniuse-lite@^1.0.30001406: - version "1.0.30001486" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001486.tgz#56a08885228edf62cbe1ac8980f2b5dae159997e" - integrity sha512-uv7/gXuHi10Whlj0pp5q/tsK/32J2QSqVRKQhs2j8VsDCjgyruAh/eEXHF822VqO9yT6iZKw3nRwZRSPBE9OQg== + version "1.0.30001543" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001543.tgz#478a3e9dddbb353c5ab214b0ecb0dbed529ed1d8" + integrity sha512-qxdO8KPWPQ+Zk6bvNpPeQIOH47qZSYdFZd6dXQzb2KzhnSXju4Kd7H1PkSJx6NICSMgo/IhRZRhhfPTHYpJUCA== -chalk@^2.0.0: +chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1847,6 +1889,11 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== +client-only@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" + integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -1871,15 +1918,15 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color2k@^2.0.0: +color2k@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/color2k/-/color2k-2.0.2.tgz#ac2b4aea11c822a6bcb70c768b5a289f4fffcebb" integrity sha512-kJhwH5nAwb34tmyuqq/lgjEKzlFXn1U99NlnB6Ws4qVaERcRUYeYP1cBw6BJ4vxaWStAUEef4WMr7WjOCnBt8w== -compute-scroll-into-view@1.0.20: - version "1.0.20" - resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz#1768b5522d1172754f5d0c9b02de3af6be506a43" - integrity sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg== +compute-scroll-into-view@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-3.0.3.tgz#c418900a5c56e2b04b885b54995df164535962b1" + integrity sha512-nadqwNxghAGTamwIqQSG433W6OADZx2vCo3UXHNrzTRHK/htu+7+L0zhjEoaeaQVNAi3YgqWDv8+tzf0hRfR+A== concat-map@0.0.1: version "0.0.1" @@ -1941,9 +1988,9 @@ csstype@^3.0.11, csstype@^3.0.2: integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== "d3-array@2 - 3", "d3-array@2.10.0 - 3", d3-array@^3.1.6: - version "3.2.3" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.3.tgz#39f1f4954e4a09ff69ac597c2d61906b04e84740" - integrity sha512-JRHwbQQ84XuAESWhvIPaUV4/1UYTBOLiOPGWqgFDHZS1D5QN9c57FbH3QpEnQMYiOXNzKUQyGTZf+EVO7RT5TQ== + version "3.2.4" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" + integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== dependencies: internmap "1 - 2" @@ -2042,40 +2089,26 @@ decimal.js-light@^2.4.1: resolved "https://registry.yarnpkg.com/decimal.js-light/-/decimal.js-light-2.5.1.tgz#134fd32508f19e208f4fb2f8dac0d2626a867934" integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg== -deep-equal@^2.0.5: - version "2.2.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.1.tgz#c72ab22f3a7d3503a4ca87dde976fe9978816739" - integrity sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ== - dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.2" - es-get-iterator "^1.1.3" - get-intrinsic "^1.2.0" - is-arguments "^1.1.1" - is-array-buffer "^3.0.2" - is-date-object "^1.0.5" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - isarray "^2.0.5" - object-is "^1.1.5" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.5.0" - side-channel "^1.0.4" - which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.9" - 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== -define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== +define-data-property@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.0.tgz#0db13540704e1d8d479a0656cf781267531b9451" + integrity sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g== dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" has-property-descriptors "^1.0.0" object-keys "^1.1.1" @@ -2084,6 +2117,11 @@ deprecation@^2.0.0, deprecation@^2.3.1: resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + detect-node-es@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" @@ -2136,18 +2174,19 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.21.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" - integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== +es-abstract@^1.22.1: + version "1.22.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" + integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== dependencies: array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" available-typed-arrays "^1.0.5" call-bind "^1.0.2" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.2.0" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.1" get-symbol-description "^1.0.0" globalthis "^1.0.3" gopd "^1.0.1" @@ -2162,34 +2201,43 @@ es-abstract@^1.19.0, es-abstract@^1.20.4: is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-typed-array "^1.1.10" + is-typed-array "^1.1.12" is-weakref "^1.0.2" object-inspect "^1.12.3" object-keys "^1.1.1" object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.7" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.9" + which-typed-array "^1.1.11" -es-get-iterator@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" - integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== +es-iterator-helpers@^1.0.12: + version "1.0.15" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" + integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== dependencies: + asynciterator.prototype "^1.0.0" call-bind "^1.0.2" - get-intrinsic "^1.1.3" + define-properties "^1.2.1" + es-abstract "^1.22.1" + es-set-tostringtag "^2.0.1" + function-bind "^1.1.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" has-symbols "^1.0.3" - is-arguments "^1.1.1" - is-map "^2.0.2" - is-set "^2.0.2" - is-string "^1.0.7" - isarray "^2.0.5" - stop-iteration-iterator "^1.0.0" + internal-slot "^1.0.5" + iterator.prototype "^1.1.2" + safe-array-concat "^1.0.1" es-set-tostringtag@^2.0.1: version "2.0.1" @@ -2242,13 +2290,13 @@ eslint-config-next@12.3.1: eslint-plugin-react-hooks "^4.5.0" eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.7: - version "0.3.7" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7" - integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== dependencies: debug "^3.2.7" - is-core-module "^2.11.0" - resolve "^1.22.1" + is-core-module "^2.13.0" + resolve "^1.22.4" eslint-import-resolver-typescript@^2.7.1: version "2.7.1" @@ -2261,7 +2309,7 @@ eslint-import-resolver-typescript@^2.7.1: resolve "^1.22.0" tsconfig-paths "^3.14.1" -eslint-module-utils@^2.7.4: +eslint-module-utils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== @@ -2269,25 +2317,27 @@ eslint-module-utils@^2.7.4: debug "^3.2.7" eslint-plugin-import@^2.26.0: - version "2.27.5" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65" - integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== + version "2.28.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" + integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== dependencies: array-includes "^3.1.6" + array.prototype.findlastindex "^1.2.2" array.prototype.flat "^1.3.1" array.prototype.flatmap "^1.3.1" debug "^3.2.7" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.7" - eslint-module-utils "^2.7.4" + eslint-module-utils "^2.8.0" has "^1.0.3" - is-core-module "^2.11.0" + is-core-module "^2.13.0" is-glob "^4.0.3" minimatch "^3.1.2" + object.fromentries "^2.0.6" + object.groupby "^1.0.0" object.values "^1.1.6" - resolve "^1.22.1" - semver "^6.3.0" - tsconfig-paths "^3.14.1" + semver "^6.3.1" + tsconfig-paths "^3.14.2" eslint-plugin-jsx-a11y@^6.5.1: version "6.7.1" @@ -2317,14 +2367,15 @@ eslint-plugin-react-hooks@^4.5.0: integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== eslint-plugin-react@^7.31.7: - version "7.32.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" - integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== + version "7.33.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" + integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== dependencies: array-includes "^3.1.6" array.prototype.flatmap "^1.3.1" array.prototype.tosorted "^1.1.1" doctrine "^2.1.0" + es-iterator-helpers "^1.0.12" estraverse "^5.3.0" jsx-ast-utils "^2.4.1 || ^3.0.0" minimatch "^3.1.2" @@ -2334,13 +2385,13 @@ eslint-plugin-react@^7.31.7: object.values "^1.1.6" prop-types "^15.8.1" resolve "^2.0.0-next.4" - semver "^6.3.0" + semver "^6.3.1" string.prototype.matchall "^4.0.8" eslint-scope@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" - integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -2358,9 +2409,9 @@ eslint-visitor-keys@^2.0.0: integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" - integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@8.25.0: version "8.25.0" @@ -2407,11 +2458,11 @@ eslint@8.25.0: text-table "^0.2.0" espree@^9.4.0: - version "9.5.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b" - integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw== + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^8.8.0" + acorn "^8.9.0" acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" @@ -2449,15 +2500,15 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-equals@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-4.0.3.tgz#72884cc805ec3c6679b99875f6b7654f39f0e8c7" - integrity sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg== +fast-equals@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-5.0.1.tgz#a4eefe3c5d1c0d021aeed0bc10ba5e0c12ee405d" + integrity sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ== fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -2510,17 +2561,18 @@ find-up@^5.0.0: path-exists "^4.0.0" flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + version "3.1.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.0.tgz#0e54ab4a1a60fe87e2946b6b00657f1c99e1af3f" + integrity sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew== dependencies: - flatted "^3.1.0" + flatted "^3.2.7" + keyv "^4.5.3" rimraf "^3.0.2" -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +flatted@^3.2.7: + version "3.2.9" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== focus-lock@^0.11.6: version "0.11.6" @@ -2579,28 +2631,29 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== +function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" -functions-have-names@^1.2.2, functions-have-names@^1.2.3: +functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" - integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== dependencies: function-bind "^1.1.1" has "^1.0.3" + has-proto "^1.0.1" has-symbols "^1.0.3" get-nonce@^1.0.0: @@ -2630,6 +2683,11 @@ glob-parent@^6.0.1: dependencies: is-glob "^4.0.3" +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.7: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" @@ -2655,9 +2713,9 @@ glob@^7.1.3, glob@^7.2.0: path-is-absolute "^1.0.0" globals@^13.15.0, globals@^13.19.0: - version "13.20.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" - integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== + version "13.22.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.22.0.tgz#0c9fcb9c48a2494fbb5edbfee644285543eba9d8" + integrity sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw== dependencies: type-fest "^0.20.2" @@ -2687,6 +2745,11 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" +graceful-fs@^4.1.2: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + grapheme-splitter@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" @@ -2732,11 +2795,9 @@ has-tostringtag@^1.0.0: has-symbols "^1.0.2" has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" + version "1.0.4" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" + integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== hey-listen@^1.0.8: version "1.0.8" @@ -2791,7 +2852,7 @@ inherits@2, inherits@~2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -internal-slot@^1.0.3, internal-slot@^1.0.4, internal-slot@^1.0.5: +internal-slot@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== @@ -2812,14 +2873,6 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -is-arguments@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" @@ -2834,6 +2887,13 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -2854,10 +2914,10 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.11.0, is-core-module@^2.9.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" - integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== +is-core-module@^2.13.0, is-core-module@^2.9.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== dependencies: has "^1.0.3" @@ -2873,6 +2933,20 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + +is-generator-function@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -2880,7 +2954,7 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: dependencies: is-extglob "^2.1.1" -is-map@^2.0.1, is-map@^2.0.2: +is-map@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== @@ -2915,7 +2989,7 @@ is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-set@^2.0.1, is-set@^2.0.2: +is-set@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== @@ -2941,16 +3015,12 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.9: - version "1.1.10" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" - integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" + which-typed-array "^1.1.11" is-weakmap@^2.0.1: version "2.0.1" @@ -2987,10 +3057,21 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== + dependencies: + define-properties "^1.2.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" + js-sdsl@^4.1.4: - version "4.4.0" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" - integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== + version "4.4.2" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.2.tgz#2e3c031b1f47d3aca8b775532e3ebb0818e7f847" + integrity sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -3004,6 +3085,11 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + 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" @@ -3032,22 +3118,30 @@ json5@^1.0.2: minimist "^1.2.0" jsonwebtoken@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz#d0faf9ba1cc3a56255fe49c0961a67e520c1926d" - integrity sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw== + version "9.0.2" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3" + integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== dependencies: jws "^3.2.2" - lodash "^4.17.21" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" ms "^2.1.1" - semver "^7.3.8" + semver "^7.5.4" "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" - integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== + version "3.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== dependencies: - array-includes "^3.1.5" - object.assign "^4.1.3" + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" jszip@^3.10.1: version "3.10.1" @@ -3076,6 +3170,13 @@ jws@^3.2.2: jwa "^1.4.1" safe-buffer "^5.0.1" +keyv@^4.5.3: + version "4.5.3" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.3.tgz#00873d2b046df737963157bd04f294ca818c9c25" + integrity sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug== + dependencies: + json-buffer "3.0.1" + language-subtag-registry@~0.3.2: version "0.3.22" resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" @@ -3115,6 +3216,36 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash.includes@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" + integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== + +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== + +lodash.isinteger@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" + integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== + +lodash.isnumber@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" + integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -3125,6 +3256,11 @@ lodash.mergewith@4.6.2: resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== +lodash.once@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== + lodash@^4.17.19, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -3144,6 +3280,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +lru-cache@^9.0.0: + version "9.1.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-9.1.2.tgz#255fdbc14b75589d6d0e73644ca167a8db506835" + integrity sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ== + merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" @@ -3179,7 +3320,7 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -nanoid@^3.3.4: +nanoid@^3.3.6: version "3.3.6" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== @@ -3189,36 +3330,33 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -next@12.3.1: - version "12.3.1" - resolved "https://registry.yarnpkg.com/next/-/next-12.3.1.tgz#127b825ad2207faf869b33393ec8c75fe61e50f1" - integrity sha512-l7bvmSeIwX5lp07WtIiP9u2ytZMv7jIeB8iacR28PuUEFG5j0HGAPnMqyG5kbZNBG2H7tRsrQ4HCjuMOPnANZw== +next@^13.5.4: + version "13.5.4" + resolved "https://registry.yarnpkg.com/next/-/next-13.5.4.tgz#7e6a93c9c2b9a2c78bf6906a6c5cc73ae02d5b4d" + integrity sha512-+93un5S779gho8y9ASQhb/bTkQF17FNQOtXLKAj3lsNgltEcF0C5PMLLncDmH+8X1EnJH1kbqAERa29nRXqhjA== dependencies: - "@next/env" "12.3.1" - "@swc/helpers" "0.4.11" + "@next/env" "13.5.4" + "@swc/helpers" "0.5.2" + busboy "1.6.0" caniuse-lite "^1.0.30001406" - postcss "8.4.14" - styled-jsx "5.0.7" - use-sync-external-store "1.2.0" + postcss "8.4.31" + styled-jsx "5.1.1" + watchpack "2.4.0" optionalDependencies: - "@next/swc-android-arm-eabi" "12.3.1" - "@next/swc-android-arm64" "12.3.1" - "@next/swc-darwin-arm64" "12.3.1" - "@next/swc-darwin-x64" "12.3.1" - "@next/swc-freebsd-x64" "12.3.1" - "@next/swc-linux-arm-gnueabihf" "12.3.1" - "@next/swc-linux-arm64-gnu" "12.3.1" - "@next/swc-linux-arm64-musl" "12.3.1" - "@next/swc-linux-x64-gnu" "12.3.1" - "@next/swc-linux-x64-musl" "12.3.1" - "@next/swc-win32-arm64-msvc" "12.3.1" - "@next/swc-win32-ia32-msvc" "12.3.1" - "@next/swc-win32-x64-msvc" "12.3.1" + "@next/swc-darwin-arm64" "13.5.4" + "@next/swc-darwin-x64" "13.5.4" + "@next/swc-linux-arm64-gnu" "13.5.4" + "@next/swc-linux-arm64-musl" "13.5.4" + "@next/swc-linux-x64-gnu" "13.5.4" + "@next/swc-linux-x64-musl" "13.5.4" + "@next/swc-win32-arm64-msvc" "13.5.4" + "@next/swc-win32-ia32-msvc" "13.5.4" + "@next/swc-win32-x64-msvc" "13.5.4" node-fetch@^2.6.7: - version "2.6.11" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25" - integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w== + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" @@ -3232,20 +3370,12 @@ object-inspect@^1.12.3, object-inspect@^1.9.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== -object-is@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.3, object.assign@^4.1.4: +object.assign@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== @@ -3256,53 +3386,64 @@ object.assign@^4.1.3, object.assign@^4.1.4: object-keys "^1.1.1" object.entries@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" - integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" + integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" object.fromentries@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" - integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.groupby@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" object.hasown@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" - integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" + integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== dependencies: - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" object.values@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" - integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" octokit@^2.0.9: - version "2.0.14" - resolved "https://registry.yarnpkg.com/octokit/-/octokit-2.0.14.tgz#e2057097a6c9cac3e7724a4365b450b7c694a6a4" - integrity sha512-z6cgZBFxirpFEQ1La8Lg83GCs5hOV2EPpkYYdjsGNbfQMv8qUGjq294MiRBCbZqLufviakGsPUxaNKe3JrPmsA== - dependencies: - "@octokit/app" "^13.1.1" - "@octokit/core" "^4.0.4" - "@octokit/oauth-app" "^4.0.6" - "@octokit/plugin-paginate-rest" "^6.0.0" - "@octokit/plugin-rest-endpoint-methods" "^7.0.0" - "@octokit/plugin-retry" "^4.0.3" - "@octokit/plugin-throttling" "^5.0.0" - "@octokit/types" "^9.0.0" + version "2.1.0" + resolved "https://registry.yarnpkg.com/octokit/-/octokit-2.1.0.tgz#93863ce6630d358327d3959ca5d08a97fd3606b2" + integrity sha512-Pxi6uKTjBRZWgAwsw1NgHdRlL+QASCN35OYS7X79o7PtBME0CLXEroZmPtEwlWZbPTP+iDbEy2wCbSOgm0uGIQ== + dependencies: + "@octokit/app" "^13.1.5" + "@octokit/core" "^4.2.1" + "@octokit/oauth-app" "^4.2.1" + "@octokit/plugin-paginate-rest" "^6.1.0" + "@octokit/plugin-rest-endpoint-methods" "^7.1.1" + "@octokit/plugin-retry" "^4.1.3" + "@octokit/plugin-throttling" "^5.2.2" + "@octokit/request-error" "^v3.0.3" + "@octokit/types" "^9.2.2" once@^1.3.0, once@^1.4.0: version "1.4.0" @@ -3312,16 +3453,16 @@ once@^1.3.0, once@^1.4.0: wrappy "1" optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" p-limit@^3.0.2: version "3.1.0" @@ -3409,12 +3550,12 @@ postcss-value-parser@^3.3.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss@8.4.14: - version "8.4.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" - integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== +postcss@8.4.31: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== dependencies: - nanoid "^3.3.4" + nanoid "^3.3.6" picocolors "^1.0.0" source-map-js "^1.0.2" @@ -3467,15 +3608,15 @@ react-dom@18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" -react-fast-compare@3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.1.tgz#53933d9e14f364281d6cba24bfed7a4afb808b5f" - integrity sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg== +react-fast-compare@3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" + integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== -react-focus-lock@^2.9.2: - version "2.9.4" - resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.9.4.tgz#4753f6dcd167c39050c9d84f9c63c71b3ff8462e" - integrity sha512-7pEdXyMseqm3kVjhdVH18sovparAzLg5h6WvIx7/Ck3ekjhrrDMEegHSa3swwC8wgfdd7DIdUVRGeiHT9/7Sgg== +react-focus-lock@^2.9.4: + version "2.9.5" + resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.9.5.tgz#8a82f4f0128cccc27b9e77a4472e8a22f1b52189" + integrity sha512-h6vrdgUbsH2HeD5I7I3Cx1PPrmwGuKYICS+kB9m+32X/9xHRrAbxgvaBpG7BFBN9h3tO+C3qX1QAVESmi4CiIA== dependencies: "@babel/runtime" "^7.0.0" focus-lock "^0.11.6" @@ -3485,9 +3626,9 @@ react-focus-lock@^2.9.2: use-sidecar "^1.1.2" react-icons@^4.8.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.8.0.tgz#621e900caa23b912f737e41be57f27f6b2bff445" - integrity sha512-N6+kOLcihDiAnj5Czu637waJqSnwlMNROzVZMhfX68V/9bu9qHaMIJC4UdozWoOk57gahFCNHwVvWzm0MTzRjg== + version "4.11.0" + resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.11.0.tgz#4b0e31c9bfc919608095cc429c4f1846f4d66c65" + integrity sha512-V+4khzYcE5EBk/BvcuYRq6V/osf11ODUM2J8hg2FDSswRrGvqiYUYPRy4OdrWaQOBj4NcpJfmHZLNaD+VH0TyA== react-is@^16.10.2, react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" @@ -3514,7 +3655,7 @@ react-remove-scroll-bar@^2.3.4: react-style-singleton "^2.2.1" tslib "^2.0.0" -react-remove-scroll@^2.5.5: +react-remove-scroll@^2.5.6: version "2.5.6" resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.6.tgz#7510b8079e9c7eebe00e65a33daaa3aa29a10336" integrity sha512-bO856ad1uDYLefgArk559IzUNeQ6SWH4QnrevIUjH+GczV56giDfl3h0Idptf2oIKxQmd1p9BN25jleKodTALg== @@ -3533,11 +3674,11 @@ react-resize-detector@^8.0.4: lodash "^4.17.21" react-smooth@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/react-smooth/-/react-smooth-2.0.2.tgz#0ef24213628cb13bf4305194a050e1db4302a3a1" - integrity sha512-pgqSp1q8rAGtF1bXQE0m3CHGLNfZZh5oA5o1tsPLXRHnKtkujMIJ8Ws5nO1mTySZf1c4vgwlEk+pHi3Ln6eYLw== + version "2.0.4" + resolved "https://registry.yarnpkg.com/react-smooth/-/react-smooth-2.0.4.tgz#95187126265970a1490e2aea5690365203ee555f" + integrity sha512-OkFsrrMBTvQUwEJthE1KXSOj79z57yvEWeFefeXPib+RmQEI9B1Ub1PgzlzzUyBOvl/TjXt5nF2hmD4NsgAh8A== dependencies: - fast-equals "^4.0.3" + fast-equals "^5.0.0" react-transition-group "2.9.0" react-style-singleton@^2.2.1: @@ -3587,9 +3728,9 @@ recharts-scale@^0.4.4: decimal.js-light "^2.4.1" recharts@^2.2.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/recharts/-/recharts-2.6.2.tgz#f26dc7954ab9df8e49a50aa36ed9c7177bd0a0a5" - integrity sha512-dVhNfgI21LlF+4AesO3mj+i+9YdAAjoGaDWIctUgH/G2iy14YVtb/DSUeic77xr19rbKCiq+pQGfeg2kJQDHig== + version "2.8.0" + resolved "https://registry.yarnpkg.com/recharts/-/recharts-2.8.0.tgz#90c95136e2cb6930224c94a51adce607701284fc" + integrity sha512-nciXqQDh3aW8abhwUlA4EBOBusRHLNiKHfpRZiG/yjups1x+auHb2zWPuEcTn/IMiN47vVMMuF8Sr+vcQJtsmw== dependencies: classnames "^2.2.5" eventemitter3 "^4.0.1" @@ -3609,19 +3750,31 @@ reduce-css-calc@^2.1.8: css-unit-converter "^1.1.1" postcss-value-parser "^3.3.0" -regenerator-runtime@^0.13.11: - version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== +reflect.getprototypeof@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" + integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" -regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" - integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + +regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== dependencies: call-bind "^1.0.2" define-properties "^1.2.0" - functions-have-names "^1.2.3" + set-function-name "^2.0.0" regexpp@^3.2.0: version "3.2.0" @@ -3633,12 +3786,12 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve@^1.19.0, resolve@^1.22.0, resolve@^1.22.1: - version "1.22.2" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" - integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== +resolve@^1.19.0, resolve@^1.22.0, resolve@^1.22.4: + version "1.22.6" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362" + integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw== dependencies: - is-core-module "^2.11.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -3670,6 +3823,16 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@^5.0.1: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -3696,18 +3859,27 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" -semver@^6.3.0: +semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.7, semver@^7.3.8: +semver@^7.3.7, semver@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" +set-function-name@^2.0.0, set-function-name@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -3749,53 +3921,52 @@ source-map@^0.5.7: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== -stop-iteration-iterator@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" - integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== - dependencies: - internal-slot "^1.0.4" +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== string.prototype.matchall@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" - integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== + version "4.0.10" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" + integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" has-symbols "^1.0.3" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.3" + internal-slot "^1.0.5" + regexp.prototype.flags "^1.5.0" + set-function-name "^2.0.0" side-channel "^1.0.4" -string.prototype.trim@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" - integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimend@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimstart@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" string_decoder@~1.1.1: version "1.1.1" @@ -3829,10 +4000,12 @@ style-value-types@5.0.0: hey-listen "^1.0.8" tslib "^2.1.0" -styled-jsx@5.0.7: - version "5.0.7" - resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.7.tgz#be44afc53771b983769ac654d355ca8d019dff48" - integrity sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA== +styled-jsx@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f" + integrity sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw== + dependencies: + client-only "0.0.1" stylis@4.2.0: version "4.2.0" @@ -3890,7 +4063,7 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== -tsconfig-paths@^3.14.1: +tsconfig-paths@^3.14.1, tsconfig-paths@^3.14.2: version "3.14.2" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== @@ -3911,9 +4084,9 @@ tslib@^1.8.1: integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" - integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== tsutils@^3.21.0: version "3.21.0" @@ -3934,6 +4107,36 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + typed-array-length@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" @@ -3993,20 +4196,15 @@ use-sidecar@^1.1.2: detect-node-es "^1.1.0" tslib "^2.0.0" -use-sync-external-store@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" - integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== - util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== victory-vendor@^36.6.8: - version "36.6.10" - resolved "https://registry.yarnpkg.com/victory-vendor/-/victory-vendor-36.6.10.tgz#e7e3646deaf0e850bc60dffdad6d7a4abee40632" - integrity sha512-7YqYGtsA4mByokBhCjk+ewwPhUfzhR1I3Da6/ZsZUv/31ceT77RKoaqrxRq5Ki+9we4uzf7+A+7aG2sfYhm7nA== + version "36.6.11" + resolved "https://registry.yarnpkg.com/victory-vendor/-/victory-vendor-36.6.11.tgz#acae770717c2dae541a54929c304ecab5ab6ac2a" + integrity sha512-nT8kCiJp8dQh8g991J/R5w5eE2KnO8EAIP0xocWlh9l2okngMWglOPoMZzJvek8Q1KUc4XE/mJxTZnvOB1sTYg== dependencies: "@types/d3-array" "^3.0.3" "@types/d3-ease" "^3.0.0" @@ -4023,6 +4221,14 @@ victory-vendor@^36.6.8: d3-time "^3.0.0" d3-timer "^3.0.1" +watchpack@2.4.0: + 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" + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -4047,6 +4253,24 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + which-collection@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" @@ -4057,17 +4281,16 @@ which-collection@^1.0.1: is-weakmap "^2.0.1" is-weakset "^2.0.1" -which-typed-array@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" - integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== +which-typed-array@^1.1.11, which-typed-array@^1.1.9: + version "1.1.11" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" + integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== dependencies: available-typed-arrays "^1.0.5" call-bind "^1.0.2" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" - is-typed-array "^1.1.10" which@^2.0.1: version "2.0.2" @@ -4076,11 +4299,6 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -word-wrap@^1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" - integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== - wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" diff --git a/docs/assets/diagram.svg b/docs/assets/diagram.svg index 0c94dac8bb..6f66f48fea 100644 --- a/docs/assets/diagram.svg +++ b/docs/assets/diagram.svg @@ -1,4 +1,4 @@ - + - \ No newline at end of file + OktaKibana \ No newline at end of file diff --git a/docs/assets/update-diagram.md b/docs/docs/developer-guide/update-diagram.md similarity index 97% rename from docs/assets/update-diagram.md rename to docs/docs/developer-guide/update-diagram.md index 02defad14b..d47f0881a0 100644 --- a/docs/assets/update-diagram.md +++ b/docs/docs/developer-guide/update-diagram.md @@ -1,6 +1,7 @@ --- layout: default title: Updating Diagram +parent: Developer Guide nav_order: 1 --- diff --git a/docs/docs/developer-metrics.md b/docs/docs/developer-metrics.md index aa90be462e..cb1910e828 100644 --- a/docs/docs/developer-metrics.md +++ b/docs/docs/developer-metrics.md @@ -1,10 +1,10 @@ --- layout: default -title: Development Metrics +title: Dev (DORA) Metrics nav_order: 7 --- -# Development Metrics +# DORA Metrics {: .no_toc } ## Table of contents @@ -13,8 +13,14 @@ nav_order: 7 - TOC {:toc} +

+### [ClICK HERE]({{ site.url }}{{ site.repo.name }}/metrics/dora) to view current DORA metrics for the {{ site.repo.name }} project. +{: .no_toc } +

+ + ## Purpose of this view -The goal of the Development metrics view is to provide a pane of glass view into the effieiency of 'dev' teams along with the quality of code that they produce. These metrics and the questions that they ask is based in large part around DORA. +The goal of the DORA metrics view is to provide a pane of glass view into the effieiency of 'dev' teams along with the quality of code that they produce. These metrics and the questions that they ask is based in large part around DORA. ## What is DORA DORA, short for (DevOps Research and Assessment) was a study performed by google into determining a way rate the performance and efficiency. The below article does a great job explaining in detail. @@ -22,7 +28,3 @@ DORA, short for (DevOps Research and Assessment) was a study performed by google ## How does it work Linked below is Development Metrics dashboard in question. But in essence it collects a data around deployments, commits, and pull-requests that occur in github and displays it in a useful and easily readable way. - -A link to the dora page will need to be pasted here. View this page in the code to see the format. - -[View Development Metrics]({{ site.url }}{{ site.repo.name }}/metrics/dora) \ No newline at end of file diff --git a/serverless-compose.yml b/serverless-compose.yml index 7d1e4400cd..4e8c972e6e 100644 --- a/serverless-compose.yml +++ b/serverless-compose.yml @@ -9,6 +9,8 @@ services: path: src/services/data params: ECSFailureTopicArn: ${alerts.ECSFailureTopicArn} + uploads: + path: src/services/uploads ui-infra: path: src/services/ui-infra api: @@ -17,6 +19,10 @@ services: ECSFailureTopicArn: ${alerts.ECSFailureTopicArn} osDomainArn: ${data.OpenSearchDomainArn} osDomain: ${data.OpenSearchDomainEndpoint} + topicName: ${data.TopicName} + attachmentsBucketName: ${uploads.AttachmentsBucketName} + attachmentsBucketRegion: ${uploads.AttachmentsBucketRegion} + attachmentsBucketArn: ${uploads.AttachmentsBucketArn} auth: path: src/services/auth params: diff --git a/src/libs/package.json b/src/libs/package.json index 66e456d1a3..9a03c5bd01 100644 --- a/src/libs/package.json +++ b/src/libs/package.json @@ -5,6 +5,7 @@ "@aws-sdk/client-cognito-identity-provider": "^3.350.0", "@aws-sdk/client-dynamodb": "^3.281.0", "@aws-sdk/credential-provider-node": "^3.369.0", + "@aws-sdk/client-secrets-manager": "^3.410.0", "@aws-sdk/util-dynamodb": "^3.281.0", "@opensearch-project/opensearch": "^2.3.0", "@types/aws4": "^1.11.3", diff --git a/src/libs/secrets-manager-lib.ts b/src/libs/secrets-manager-lib.ts new file mode 100644 index 0000000000..5819ca3a5f --- /dev/null +++ b/src/libs/secrets-manager-lib.ts @@ -0,0 +1,29 @@ +import { + SecretsManagerClient, + GetSecretValueCommand, + ListSecretsCommand, +} from "@aws-sdk/client-secrets-manager"; + +export const getSecretsValue = async (region: string, secretId: string) => { + const client = new SecretsManagerClient({ region }); + const input = { SecretId: secretId }; + const command = new GetSecretValueCommand(input); + + try { + const response = await client.send(command); + const result = response.SecretString ?? ""; + return result; + } catch (e) { + console.log("ERROR getting secrets value", JSON.stringify(e, null, 2)); + } +}; + +export const doesSecretExist = async (region: string, secretId: string) => { + const client = new SecretsManagerClient({ region }); + const input = { Filters: [{ Key: "name", Values: [secretId] }] }; + const command = new ListSecretsCommand(input); + const { SecretList } = await client.send(command); + + if (SecretList) return SecretList.some((secret) => secret.Name === secretId); + else return; +}; diff --git a/src/packages/shared-types/action-types/withdraw-record.ts b/src/packages/shared-types/action-types/withdraw-record.ts new file mode 100644 index 0000000000..f42ad9a7b4 --- /dev/null +++ b/src/packages/shared-types/action-types/withdraw-record.ts @@ -0,0 +1,7 @@ +import { z } from "zod"; + +export const withdrawRecordSchema = z.object({ + raiWithdrawEnabled: z.boolean(), +}); + +export type WithdrawRecord = z.infer; diff --git a/src/packages/shared-types/actions.ts b/src/packages/shared-types/actions.ts new file mode 100644 index 0000000000..1b89727b6d --- /dev/null +++ b/src/packages/shared-types/actions.ts @@ -0,0 +1,5 @@ +export enum Action { + ENABLE_RAI_WITHDRAW = "enable-rai-withdraw", + DISABLE_RAI_WITHDRAW = "disable-rai-withdraw", + ISSUE_RAI = "issue-rai", +} diff --git a/src/packages/shared-types/index.ts b/src/packages/shared-types/index.ts index a7f2153021..a0e34a527d 100644 --- a/src/packages/shared-types/index.ts +++ b/src/packages/shared-types/index.ts @@ -4,3 +4,6 @@ export * from "./errors"; export * from "./seatool"; export * from "./onemac"; export * from "./opensearch"; +export * from "./uploads"; +export * from "./actions"; +export * from "./action-types/withdraw-record"; diff --git a/src/packages/shared-types/onemac.ts b/src/packages/shared-types/onemac.ts index ba783b627b..56d59b7f29 100644 --- a/src/packages/shared-types/onemac.ts +++ b/src/packages/shared-types/onemac.ts @@ -2,11 +2,14 @@ import { z } from "zod"; import { s3ParseUrl } from "shared-utils/s3-url-parser"; const onemacAttachmentSchema = z.object({ - s3Key: z.string(), + s3Key: z.string().nullish(), filename: z.string(), title: z.string(), - contentType: z.string(), - url: z.string().url(), + contentType: z.string().nullish(), + url: z.string().url().nullish(), + bucket: z.string().nullish(), + key: z.string().nullish(), + uploadDate: z.number().nullish(), }); export const onemacSchema = z.object({ @@ -14,12 +17,13 @@ export const onemacSchema = z.object({ submitterName: z.string(), submitterEmail: z.string(), attachments: z.array(onemacAttachmentSchema).nullish(), + raiWithdrawEnabled: z.boolean().optional(), raiResponses: z .array( z.object({ additionalInformation: z.string().nullable().default(null), submissionTimestamp: z.number(), - attachments: z.array(onemacAttachmentSchema), + attachments: z.array(onemacAttachmentSchema).nullish(), }) ) .nullish(), @@ -30,18 +34,36 @@ export const transformOnemac = (id: string) => { id, attachments: data.attachments?.map((attachment) => { - const uploadDate = parseInt(attachment.s3Key.split("/")[0]); - const parsedUrl = s3ParseUrl(attachment.url); - if (!parsedUrl) return null; - const { bucket, key } = parsedUrl; + // this is a legacy onemac attachment + let bucket = ""; + let key = ""; + let uploadDate = 0; + if ("bucket" in attachment) { + bucket = attachment.bucket as string; + } + if ("key" in attachment) { + key = attachment.key as string; + } + if ("uploadDate" in attachment) { + uploadDate = attachment.uploadDate as number; + } + if (bucket == "") { + const parsedUrl = s3ParseUrl(attachment.url || ""); + if (!parsedUrl) return null; + bucket = parsedUrl.bucket; + key = parsedUrl.key; + uploadDate = parseInt(attachment.s3Key?.split("/")[0] || "0"); + } return { - ...attachment, + title: attachment.title, + filename: attachment.filename, uploadDate, bucket, key, }; }) ?? null, + raiWithdrawEnabled: data.raiWithdrawEnabled, raiResponses: data.raiResponses?.map((response) => { return { @@ -49,8 +71,10 @@ export const transformOnemac = (id: string) => { submissionTimestamp: response.submissionTimestamp, attachments: response.attachments?.map((attachment) => { - const uploadDate = parseInt(attachment.s3Key.split("/")[0]); - const parsedUrl = s3ParseUrl(attachment.url); + const uploadDate = parseInt( + attachment.s3Key?.split("/")[0] || "0" + ); + const parsedUrl = s3ParseUrl(attachment.url || ""); if (!parsedUrl) return null; const { bucket, key } = parsedUrl; @@ -65,7 +89,7 @@ export const transformOnemac = (id: string) => { }) ?? null, additionalInformation: data.additionalInformation, submitterEmail: data.submitterEmail, - submitterName: data.submitterName, + submitterName: data.submitterName === "-- --" ? null : data.submitterName, origin: "oneMAC", })); }; diff --git a/src/packages/shared-types/opensearch.ts b/src/packages/shared-types/opensearch.ts index 5b3464da32..a392a6eda1 100644 --- a/src/packages/shared-types/opensearch.ts +++ b/src/packages/shared-types/opensearch.ts @@ -1,5 +1,6 @@ import { SeaToolTransform } from "./seatool"; import { OneMacTransform } from "./onemac"; +import { Action } from "./actions"; export type OsHit = { _index: string; @@ -34,6 +35,9 @@ export type OsResponse = { export type OsMainSourceItem = OneMacTransform & SeaToolTransform; export type OsMainSearchResponse = OsResponse; export type SearchData = OsHits; +export type ItemResult = OsHit & { + found: boolean; +}; export type OsFilterType = | "term" @@ -52,12 +56,14 @@ export type OsField = export type OsFilterable = { type: OsFilterType; + label?: string; + component?: string; field: OsField; value: OsFilterValue; prefix: "must" | "must_not" | "should" | "filter"; }; -export type OsQueryState = { +export type OsQueryState = { sort: { field: OsField; order: "asc" | "desc" }; pagination: { number: number; size: number }; filters: OsFilterable[]; diff --git a/src/packages/shared-types/package.json b/src/packages/shared-types/package.json index 8990fe7c23..4545c39ade 100644 --- a/src/packages/shared-types/package.json +++ b/src/packages/shared-types/package.json @@ -8,7 +8,7 @@ "eslint": "^8.38.0", "eslint-config-custom-server": "*", "vitest": "^0.34.1", - "zod": "^3.21.4" + "zod": "^3.22.3" }, "scripts": { "test": "vitest" diff --git a/src/packages/shared-types/seatool.ts b/src/packages/shared-types/seatool.ts index 4834960e3e..22f4bb78cb 100644 --- a/src/packages/shared-types/seatool.ts +++ b/src/packages/shared-types/seatool.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import { getStatus } from "./statusHelper"; +import { SEATOOL_STATUS, getStatus } from "./statusHelper"; type AuthorityType = "SPA" | "WAIVER" | "MEDICAID" | "CHIP"; @@ -109,7 +109,7 @@ export const seatoolSchema = z.object({ SPW_STATUS: z .array( z.object({ - SPW_STATUS_DESC: z.string().nullable(), + SPW_STATUS_DESC: z.string().nullish(), }) ) .nullable(), @@ -144,7 +144,7 @@ export const transformSeatoolData = (id: string) => { const { leadAnalystName, leadAnalystOfficerId } = getLeadAnalyst(data); const { raiReceivedDate, raiRequestedDate } = getRaiDate(data); const { stateStatus, cmsStatus } = getStatus( - data.SPW_STATUS?.[0].SPW_STATUS_DESC + data.SPW_STATUS?.at(-1)?.SPW_STATUS_DESC ); return { id, @@ -163,8 +163,8 @@ export const transformSeatoolData = (id: string) => { raiReceivedDate, raiRequestedDate, state: data.STATES?.[0].STATE_CODE, - stateStatus, - cmsStatus, + stateStatus: stateStatus || SEATOOL_STATUS.UNKNOWN, + cmsStatus: cmsStatus || SEATOOL_STATUS.UNKNOWN, submissionDate: getDateStringOrNullFromEpoc( data.STATE_PLAN.SUBMISSION_DATE ), diff --git a/src/packages/shared-types/statusHelper.ts b/src/packages/shared-types/statusHelper.ts index d521ddd2bf..7357847771 100644 --- a/src/packages/shared-types/statusHelper.ts +++ b/src/packages/shared-types/statusHelper.ts @@ -1,4 +1,4 @@ -const SEATOOL_STATUS = { +export const SEATOOL_STATUS = { PENDING: "Pending", PENDING_RAI: "Pending-RAI", APPROVED: "Approved", diff --git a/src/packages/shared-types/uploads.ts b/src/packages/shared-types/uploads.ts new file mode 100644 index 0000000000..65afdb647f --- /dev/null +++ b/src/packages/shared-types/uploads.ts @@ -0,0 +1,86 @@ +export type FileTypeInfo = { + extension: string; + description: string; + mime: string; +}; + +export const FILE_TYPES: FileTypeInfo[] = [ + { extension: ".bmp", description: "Bitmap Image File", mime: "image/bmp" }, + { + extension: ".csv", + description: "Comma-separated Values", + mime: "text/csv", + }, + { + extension: ".doc", + description: "MS Word Document", + mime: "application/msword", + }, + { + extension: ".docx", + description: "MS Word Document (xml)", + mime: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + }, + { + extension: ".gif", + description: "Graphics Interchange Format", + mime: "image/gif", + }, + { + extension: ".jpeg", + description: "Joint Photographic Experts Group", + mime: "image/jpeg", + }, + { + extension: ".odp", + description: "OpenDocument Presentation (OpenOffice)", + mime: "application/vnd.oasis.opendocument.presentation", + }, + { + extension: ".ods", + description: "OpenDocument Spreadsheet (OpenOffice)", + mime: "application/vnd.oasis.opendocument.spreadsheet", + }, + { + extension: ".odt", + description: "OpenDocument Text (OpenOffice)", + mime: "application/vnd.oasis.opendocument.text", + }, + { + extension: ".png", + description: "Portable Network Graphic", + mime: "image/png", + }, + { + extension: ".pdf", + description: "Portable Document Format", + mime: "application/pdf", + }, + { + extension: ".ppt", + description: "MS Powerpoint File", + mime: "application/vnd.ms-powerpoint", + }, + { + extension: ".pptx", + description: "MS Powerpoint File (xml)", + mime: "application/vnd.openxmlformats-officedocument.presentationml.presentation", + }, + { + extension: ".rtf", + description: "Rich Text Format", + mime: "application/rtf", + }, + { extension: ".tif", description: "Tagged Image Format", mime: "image/tiff" }, + { extension: ".txt", description: "Text File Format", mime: "text/plain" }, + { + extension: ".xls", + description: "MS Excel File", + mime: "application/vnd.ms-excel", + }, + { + extension: ".xlsx", + description: "MS Excel File (xml)", + mime: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + }, +]; diff --git a/src/packages/shared-types/user.ts b/src/packages/shared-types/user.ts index ac9e0bce27..6ecccd104b 100644 --- a/src/packages/shared-types/user.ts +++ b/src/packages/shared-types/user.ts @@ -1,18 +1,15 @@ export enum UserRoles { - CMS_READ_ONLY = "cms-read-only", - CMS_REVIEWER = "cms-reviewer", - HELPDESK = "helpdesk", - CMS_SYSTEM_ADMIN = "cms-system-admin", - CMS_ROLE_APPROVER = "cms-role-approver", - STATE_SUBMITTER = "state-submitter", - STATE_SYSTEM_ADMIN = "state-system-admin", + CMS_READ_ONLY = "onemac-micro-readonly", + CMS_REVIEWER = "onemac-micro-reviewer", + HELPDESK = "onemac-micro-helpdesk", + STATE_SUBMITTER = "onemac-micro-statesubmitter", } -export type UserRolesString = `${UserRoles}${"," | ""}`; +export type UserRolesString = `${UserRoles}${"," | ""}` | ""; export type CognitoUserAttributes = { sub: string; - "custom:cms-roles": UserRolesString; // comma-separated list of UserRoles ex. "cms-reviewer,helpdesk" or "state-submitter" + "custom:cms-roles": UserRolesString; // comma-separated list of UserRoles ex. "onemac-micro-reviewer,onemac-micro-helpdesk" or "onemac-micro-statesubmitter" email_verified: boolean; "custom:state"?: string; // ex. "VA" or "VA,MD,CA" or undefined given_name: string; @@ -23,7 +20,7 @@ export type CognitoUserAttributes = { export const CMS_ROLES = [ UserRoles.CMS_READ_ONLY, UserRoles.CMS_REVIEWER, - UserRoles.CMS_ROLE_APPROVER, - UserRoles.CMS_SYSTEM_ADMIN, UserRoles.HELPDESK, ]; + +export const STATE_ROLES = [UserRoles.STATE_SUBMITTER]; diff --git a/src/services/api/handlers/action.ts b/src/services/api/handlers/action.ts new file mode 100644 index 0000000000..8c99a38da8 --- /dev/null +++ b/src/services/api/handlers/action.ts @@ -0,0 +1,75 @@ +import { response } from "../libs/handler"; +import { APIGatewayEvent } from "aws-lambda"; +import { getPackage } from "../libs/package/getPackage"; +import { + getAuthDetails, + isAuthorized, + lookupUserAttributes, +} from "../libs/auth/user"; +import { packageActionsForResult } from "./getPackageActions"; +import { Action } from "shared-types"; +import { issueRai, toggleRaiResponseWithdraw } from "./packageActions"; + +export const handler = async (event: APIGatewayEvent) => { + try { + const actionType = event.pathParameters.actionType as Action; + const body = JSON.parse(event.body); + console.log(actionType); + console.log(body); + + // Check auth + const result = await getPackage(body.id); + const passedStateAuth = await isAuthorized(event, result._source.state); + if (!passedStateAuth) + return response({ + statusCode: 401, + body: { message: "Not authorized to view resources from this state" }, + }); + if (!result.found) + return response({ + statusCode: 404, + body: { message: "No record found for the given id" }, + }); + const authDetails = getAuthDetails(event); + const userAttr = await lookupUserAttributes( + authDetails.userId, + authDetails.poolId + ); + + // Check that the package action is available + const actions: Action[] = packageActionsForResult(userAttr, result); + if (!actions.includes(actionType)) { + return response({ + statusCode: 401, + body: { + message: `You are not authorized to perform ${actionType} on ${body.id}`, + }, + }); + } + + // Call package action + switch (actionType) { + case Action.ISSUE_RAI: + await issueRai(body.id, Date.now()); + break; + case Action.ENABLE_RAI_WITHDRAW: + await toggleRaiResponseWithdraw(body, true); + break; + case Action.DISABLE_RAI_WITHDRAW: + await toggleRaiResponseWithdraw(body, false); + break; + default: + throw `No ${actionType} action available`; + } + return response({ + statusCode: 200, + body: { message: "success" }, + }); + } catch (error) { + console.error({ error }); + return response({ + statusCode: 500, + body: { message: "Internal server error" }, + }); + } +}; diff --git a/src/services/api/handlers/getAttachmentUrl.ts b/src/services/api/handlers/getAttachmentUrl.ts index b1d3f10465..f8f486ee4a 100644 --- a/src/services/api/handlers/getAttachmentUrl.ts +++ b/src/services/api/handlers/getAttachmentUrl.ts @@ -69,7 +69,12 @@ export const handler = async (event: APIGatewayEvent) => { } // Now we can generate the presigned url - const url = await generatePresignedS3Url(body.bucket, body.key, 60); + const url = await generatePresignedUrl( + body.bucket, + body.key, + body.filename, + 60 + ); return response({ statusCode: 200, @@ -84,41 +89,52 @@ export const handler = async (event: APIGatewayEvent) => { } }; -async function generatePresignedS3Url(bucket, key, expirationInSeconds) { - // Create an S3 client - const roleToAssumeArn = process.env.onemacLegacyS3AccessRoleArn; - - // Create an STS client to make the AssumeRole API call - const stsClient = new STSClient({}); - - // Assume the role - const assumedRoleResponse = await stsClient.send( - new AssumeRoleCommand({ - RoleArn: roleToAssumeArn, - RoleSessionName: "AssumedRoleSession", - }) - ); - - // Extract the assumed role credentials - const assumedCredentials = assumedRoleResponse.Credentials; - - // Create S3 client using the assumed role's credentials - const assumedS3Client = new S3Client({ - credentials: { - accessKeyId: assumedCredentials.AccessKeyId, - secretAccessKey: assumedCredentials.SecretAccessKey, - sessionToken: assumedCredentials.SessionToken, - }, - }); +async function getClient(bucket) { + if (bucket.startsWith("uploads")) { + const stsClient = new STSClient({}); + + // Assume the role + const assumedRoleResponse = await stsClient.send( + new AssumeRoleCommand({ + RoleArn: process.env.onemacLegacyS3AccessRoleArn, + RoleSessionName: "AssumedRoleSession", + }) + ); + + // Extract the assumed role credentials + const assumedCredentials = assumedRoleResponse.Credentials; + + // Create S3 client using the assumed role's credentials + return new S3Client({ + credentials: { + accessKeyId: assumedCredentials.AccessKeyId, + secretAccessKey: assumedCredentials.SecretAccessKey, + sessionToken: assumedCredentials.SessionToken, + }, + }); + } else { + return new S3Client({}); + } +} + +async function generatePresignedUrl( + bucket, + key, + filename, + expirationInSeconds +) { + // Get an S3 client + const client = await getClient(bucket); // Create a command to get the object (you can adjust this according to your use case) const getObjectCommand = new GetObjectCommand({ Bucket: bucket, Key: key, + ResponseContentDisposition: `filename ="${filename}"`, }); // Generate a presigned URL - const presignedUrl = await getSignedUrl(assumedS3Client, getObjectCommand, { + const presignedUrl = await getSignedUrl(client, getObjectCommand, { expiresIn: expirationInSeconds, }); diff --git a/src/services/api/handlers/getPackageActions.ts b/src/services/api/handlers/getPackageActions.ts new file mode 100644 index 0000000000..87fb4d1bc0 --- /dev/null +++ b/src/services/api/handlers/getPackageActions.ts @@ -0,0 +1,73 @@ +import { APIGatewayEvent } from "aws-lambda"; +import { Action, CognitoUserAttributes, ItemResult } from "shared-types"; +import { isCmsUser } from "shared-utils"; +import { getPackage } from "../libs/package/getPackage"; +import { + getAuthDetails, + isAuthorized, + lookupUserAttributes, +} from "../libs/auth/user"; +import { response } from "../libs/handler"; + +type GetPackageActionsBody = { + id: string; +}; + +/** Generates an array of allowed actions from a combination of user attributes + * and OS result data */ +export const packageActionsForResult = ( + user: CognitoUserAttributes, + result: ItemResult +): Action[] => { + const actions = []; + if (isCmsUser(user)) { + if (!result._source.raiWithdrawEnabled) { + // result._source.raiReceivedDate && + actions.push(Action.ENABLE_RAI_WITHDRAW); + } + if (result._source.raiWithdrawEnabled) { + actions.push(Action.DISABLE_RAI_WITHDRAW); + } + actions.push(Action.ISSUE_RAI); + } + return actions; +}; +export const getPackageActions = async (event: APIGatewayEvent) => { + const body = JSON.parse(event.body) as GetPackageActionsBody; + try { + console.log(body); + const result = await getPackage(body.id); + const passedStateAuth = await isAuthorized(event, result._source.state); + if (!passedStateAuth) + return response({ + statusCode: 401, + body: { message: "Not authorized to view resources from this state" }, + }); + if (!result.found) + return response({ + statusCode: 404, + body: { message: "No record found for the given id" }, + }); + + const authDetails = getAuthDetails(event); + const userAttr = await lookupUserAttributes( + authDetails.userId, + authDetails.poolId + ); + + return response({ + statusCode: 200, + body: { + actions: packageActionsForResult(userAttr, result), + }, + }); + } catch (err) { + console.error({ err }); + return response({ + statusCode: 500, + body: { message: "Internal server error" }, + }); + } +}; + +export const handler = getPackageActions; diff --git a/src/services/api/handlers/getUploadUrl.ts b/src/services/api/handlers/getUploadUrl.ts new file mode 100644 index 0000000000..3254d039c6 --- /dev/null +++ b/src/services/api/handlers/getUploadUrl.ts @@ -0,0 +1,50 @@ +import { response } from "../libs/handler"; +import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3"; +import { getSignedUrl } from "@aws-sdk/s3-request-presigner"; +import { v4 as uuidv4 } from "uuid"; + +checkEnvVariables(["attachmentsBucketName", "attachmentsBucketRegion"]); + +const s3 = new S3Client({ + region: process.env.attachmentsBucketRegion, +}); + +export const handler = async () => { + try { + const bucket = process.env.attachmentsBucketName; + const key = uuidv4(); + const url = await getSignedUrl( + s3, + new PutObjectCommand({ + Bucket: bucket, + Key: key, + }), + { + expiresIn: 60, + } + ); + + return response({ + statusCode: 200, + body: { url, bucket, key }, + }); + } catch (error) { + console.error({ error }); + return response({ + statusCode: 500, + body: { message: "Internal server error" }, + }); + } +}; + +function checkEnvVariables(requiredEnvVariables) { + const missingVariables = requiredEnvVariables.filter( + (envVar) => !process.env[envVar] + ); + + if (missingVariables.length > 0) { + throw new Error( + `Missing required environment variables: ${missingVariables.join(", ")}` + ); + } +} diff --git a/src/services/api/handlers/item.ts b/src/services/api/handlers/item.ts index 25977bf772..7774d05cf3 100644 --- a/src/services/api/handlers/item.ts +++ b/src/services/api/handlers/item.ts @@ -1,8 +1,7 @@ import { response } from "../libs/handler"; import { APIGatewayEvent } from "aws-lambda"; -import * as os from "../../../libs/opensearch-lib"; import { getStateFilter } from "../libs/auth/user"; -import { OsHit, OsMainSourceItem } from "shared-types"; +import { getPackage } from "../libs/package/getPackage"; if (!process.env.osDomain) { throw "ERROR: osDomain env variable is required,"; @@ -11,14 +10,8 @@ if (!process.env.osDomain) { export const getItemData = async (event: APIGatewayEvent) => { try { const body = JSON.parse(event.body); - const stateFilter = await getStateFilter(event); - - const result = (await os.getItem( - process.env.osDomain, - "main", - body.id - )) as OsHit & { found: boolean }; + const result = await getPackage(body.id); if ( stateFilter && diff --git a/src/services/api/handlers/packageActions.ts b/src/services/api/handlers/packageActions.ts new file mode 100644 index 0000000000..53299788bc --- /dev/null +++ b/src/services/api/handlers/packageActions.ts @@ -0,0 +1,81 @@ +import * as sql from "mssql"; + +const user = process.env.dbUser; +const password = process.env.dbPassword; +const server = process.env.dbIp; +const port = parseInt(process.env.dbPort); +const config = { + user: user, + password: password, + server: server, + port: port, + database: "SEA", +}; + +import { Action, OneMacSink, transformOnemac } from "shared-types"; +import { produceMessage } from "../libs/kafka"; +import { response } from "../libs/handler"; + +const TOPIC_NAME = process.env.topicName; + +export async function issueRai(id: string, timestamp: number) { + console.log("CMS issuing a new RAI"); + const pool = await sql.connect(config); + const query = ` + Insert into SEA.dbo.RAI (ID_Number, RAI_Requested_Date) + values ('${id}' + ,dateadd(s, convert(int, left(${timestamp}, 10)), cast('19700101' as datetime))) + `; + // Prepare the request + const request = pool.request(); + request.input("ID_Number", sql.VarChar, id); + request.input("RAI_Requested_Date", sql.DateTime, new Date(timestamp)); + + const result = await sql.query(query); + console.log(result); + await pool.close(); +} + +export async function withdrawRai(id, timestamp) { + console.log("CMS withdrawing an RAI"); +} + +export async function respondToRai(id, timestamp) { + console.log("State respnding to RAI"); +} + +export async function withdrawPackage(id, timestamp) { + console.log("State withdrawing a package."); +} + +export async function toggleRaiResponseWithdraw( + body: { id: string }, + toggle: boolean +) { + const { id } = body; + try { + await produceMessage( + TOPIC_NAME, + id, + JSON.stringify({ + raiWithdrawEnabled: toggle, + actionType: toggle + ? Action.ENABLE_RAI_WITHDRAW + : Action.DISABLE_RAI_WITHDRAW, + }) + ); + + return response({ + statusCode: 200, + body: { + message: "record successfully submitted", + }, + }); + } catch (err) { + console.log(err); + + return response({ + statusCode: 500, + }); + } +} diff --git a/src/services/api/handlers/submit.ts b/src/services/api/handlers/submit.ts new file mode 100644 index 0000000000..adb82ff211 --- /dev/null +++ b/src/services/api/handlers/submit.ts @@ -0,0 +1,141 @@ +import { response } from "../libs/handler"; +import { APIGatewayEvent } from "aws-lambda"; +import * as sql from "mssql"; +import { isAuthorized } from "../libs/auth/user"; + +const user = process.env.dbUser; +const password = process.env.dbPassword; +const server = process.env.dbIp; +const port = parseInt(process.env.dbPort); +const config = { + user: user, + password: password, + server: server, + port: port, + database: "SEA", +}; + +import { Kafka, Message } from "kafkajs"; +import { OneMacSink, transformOnemac } from "shared-types"; + +const kafka = new Kafka({ + clientId: "submit", + brokers: process.env.brokerString.split(","), + retry: { + initialRetryTime: 300, + retries: 8, + }, + ssl: { + rejectUnauthorized: false, + }, +}); + +const producer = kafka.producer(); + +export const submit = async (event: APIGatewayEvent) => { + try { + const body = JSON.parse(event.body); + console.log(body); + + if (!(await isAuthorized(event, body.state))) { + return response({ + statusCode: 403, + body: { message: "Unauthorized" }, + }); + } + + if (body.authority !== "medicaid spa") { + return response({ + statusCode: 400, + body: { + message: + "The Mako Submissions API only supports Medicaid SPA at this time", + }, + }); + } + + const pool = await sql.connect(config); + console.log(body); + const query = ` + Insert into SEA.dbo.State_Plan (ID_Number, State_Code, Region_ID, Plan_Type, Submission_Date, Status_Date, Proposed_Date, SPW_Status_ID, Budget_Neutrality_Established_Flag) + values ('${body.id}' + ,'${body.state}' + ,(Select Region_ID from SEA.dbo.States where State_Code = '${ + body.state + }') + ,(Select Plan_Type_ID from SEA.dbo.Plan_Types where Plan_Type_Name = '${ + body.authority + }') + ,dateadd(s, convert(int, left(${Date.now()}, 10)), cast('19700101' as datetime)) + ,dateadd(s, convert(int, left(${Date.now()}, 10)), cast('19700101' as datetime)) + ,dateadd(s, convert(int, left(${ + body.proposedEffectiveDate + }, 10)), cast('19700101' as datetime)) + ,(Select SPW_Status_ID from SEA.dbo.SPW_Status where SPW_Status_DESC = 'Pending') + ,0) + `; + + const result = await sql.query(query); + console.log(result); + + await pool.close(); + + const message: OneMacSink = body; + const makoBody = transformOnemac(body.id).safeParse(message); + if (makoBody.success === false) { + // handle + console.log( + "MAKO Validation Error. The following record failed to parse: ", + JSON.stringify(message), + "Because of the following Reason(s): ", + makoBody.error.message + ); + } else { + console.log(message); + await produceMessage( + process.env.topicName, + body.id, + JSON.stringify(message) + ); + + return response({ + statusCode: 200, + body: { message: "success" }, + }); + } + } catch (error) { + console.error({ error }); + return response({ + statusCode: 500, + body: { message: "Internal server error" }, + }); + } +}; + +async function produceMessage(topic, key, value) { + console.log("about to connect"); + await producer.connect(); + console.log("connected"); + + const message: Message = { + key: key, + value: value, + partition: 0, + headers: { source: "micro" }, + }; + console.log(message); + + try { + await producer.send({ + topic, + messages: [message], + }); + console.log("Message sent successfully"); + } catch (error) { + console.error("Error sending message:", error); + } finally { + await producer.disconnect(); + } +} + +export const handler = submit; diff --git a/src/services/api/libs/kafka.ts b/src/services/api/libs/kafka.ts new file mode 100644 index 0000000000..d7dcff28cb --- /dev/null +++ b/src/services/api/libs/kafka.ts @@ -0,0 +1,43 @@ +import { Kafka, Message } from "kafkajs"; + +const kafka = new Kafka({ + clientId: "submit", + brokers: process.env.brokerString.split(","), + retry: { + initialRetryTime: 300, + retries: 8, + }, + ssl: { + rejectUnauthorized: false, + }, +}); + +export const producer = kafka.producer(); + +export async function produceMessage( + topic: string, + key: string, + value: string +) { + await producer.connect(); + + const message: Message = { + key: key, + value: value, + partition: 0, + headers: { source: "micro" }, + }; + console.log(message); + + try { + await producer.send({ + topic, + messages: [message], + }); + console.log("Message sent successfully"); + } catch (error) { + console.error("Error sending message:", error); + } finally { + await producer.disconnect(); + } +} diff --git a/src/services/api/libs/package/getPackage.ts b/src/services/api/libs/package/getPackage.ts new file mode 100644 index 0000000000..5084e08336 --- /dev/null +++ b/src/services/api/libs/package/getPackage.ts @@ -0,0 +1,5 @@ +import * as os from "../../../../libs/opensearch-lib"; +import { ItemResult } from "shared-types"; + +export const getPackage = async (id: string) => + (await os.getItem(process.env.osDomain, "main", id)) as ItemResult; diff --git a/src/services/api/package.json b/src/services/api/package.json index 47236a67ee..94a6529cda 100644 --- a/src/services/api/package.json +++ b/src/services/api/package.json @@ -3,6 +3,7 @@ "private": true, "devDependencies": { "@types/aws-lambda": "^8.10.111", + "@types/mssql": "^8.1.2", "@typescript-eslint/eslint-plugin": "^5.59.0", "@typescript-eslint/parser": "^5.59.0", "aws-lambda": "^1.0.7", @@ -18,10 +19,12 @@ "@aws-sdk/s3-request-presigner": "^3.383.0", "@opensearch-project/opensearch": "^2.3.0", "libs": "*", + "mssql": "^10.0.0", + "prisma": "^5.2.0", "s3-url-parser": "^1.0.3", "shared-types": "*", "shared-utils": "*", - "zod": "^3.21.4" + "zod": "^3.22.3" }, "version": "0.0.0", "scripts": { diff --git a/src/services/api/serverless.yml b/src/services/api/serverless.yml index debb05364d..680b735c0c 100644 --- a/src/services/api/serverless.yml +++ b/src/services/api/serverless.yml @@ -39,6 +39,14 @@ provider: - sts:AssumeRole Resource: - ${self:custom.onemacLegacyS3AccessRoleArn} + - Effect: Allow + Action: + - s3:PutObject + - s3:PutObjectTagging + - s3:GetObject + - s3:GetObjectTagging + Resource: + - ${param:attachmentsBucketArn}/* custom: project: ${env:PROJECT} @@ -51,6 +59,8 @@ custom: - production vpc: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/vpc, ssm:/aws/reference/secretsmanager/${self:custom.project}/default/vpc} onemacLegacyS3AccessRoleArn: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/onemacLegacyS3AccessRoleArn, ssm:/aws/reference/secretsmanager/${self:custom.project}/default/onemacLegacyS3AccessRoleArn} + dbInfo: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/seatool/dbInfo, ssm:/aws/reference/secretsmanager/${self:custom.project}/default/seatool/dbInfo} + brokerString: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/brokerString, ssm:/aws/reference/secretsmanager/${self:custom.project}/default/brokerString} scriptable: hooks: package:compileEvents: ./handlers/repack.js @@ -59,18 +69,22 @@ params: searchProvisionedConcurrency: 4 itemProvisionedConcurrency: 2 getAttachmentUrlProvisionedConcurrency: 2 + submitProvisionedConcurrency: 2 val: searchProvisionedConcurrency: 4 itemProvisionedConcurrency: 2 getAttachmentUrlProvisionedConcurrency: 2 + submitProvisionedConcurrency: 2 production: searchProvisionedConcurrency: 10 itemProvisionedConcurrency: 5 getAttachmentUrlProvisionedConcurrency: 5 + submitProvisionedConcurrency: 5 default: - searchProvisionedConcurrency: 1 - itemProvisionedConcurrency: 1 + searchProvisionedConcurrency: 0 + itemProvisionedConcurrency: 0 getAttachmentUrlProvisionedConcurrency: 0 + submitProvisionedConcurrency: 0 functions: search: @@ -91,6 +105,25 @@ functions: subnetIds: >- ${self:custom.vpc.privateSubnets} provisionedConcurrency: ${param:searchProvisionedConcurrency} + getPackageActions: + handler: handlers/getPackageActions.handler + maximumRetryAttempts: 0 + environment: + region: ${self:provider.region} + osDomain: ${param:osDomain} + onemacLegacyS3AccessRoleArn: ${self:custom.onemacLegacyS3AccessRoleArn} + events: + - http: + path: /getPackageActions + method: post + cors: true + authorizer: aws_iam + vpc: + securityGroupIds: + - Ref: SecurityGroup + subnetIds: >- + ${self:custom.vpc.privateSubnets} + provisionedConcurrency: ${param:getAttachmentUrlProvisionedConcurrency} getAttachmentUrl: handler: handlers/getAttachmentUrl.handler maximumRetryAttempts: 0 @@ -110,6 +143,17 @@ functions: subnetIds: >- ${self:custom.vpc.privateSubnets} provisionedConcurrency: ${param:getAttachmentUrlProvisionedConcurrency} + getUploadUrl: + handler: handlers/getUploadUrl.handler + environment: + attachmentsBucketName: ${param:attachmentsBucketName} + attachmentsBucketRegion: ${param:attachmentsBucketRegion} + events: + - http: + path: /getUploadUrl + method: post + cors: true + authorizer: aws_iam item: handler: handlers/item.handler maximumRetryAttempts: 0 @@ -128,6 +172,53 @@ functions: subnetIds: >- ${self:custom.vpc.privateSubnets} provisionedConcurrency: ${param:itemProvisionedConcurrency} + submit: + handler: handlers/submit.handler + maximumRetryAttempts: 0 + environment: + region: ${self:provider.region} + dbIp: ${self:custom.dbInfo.ip} + dbPort: ${self:custom.dbInfo.port} + dbUser: ${self:custom.dbInfo.user} + dbPassword: ${self:custom.dbInfo.password} + topicName: ${param:topicName} + brokerString: ${self:custom.brokerString} + events: + - http: + path: /submit + method: post + cors: true + authorizer: aws_iam + vpc: + securityGroupIds: + - Ref: SecurityGroup + subnetIds: >- + ${self:custom.vpc.privateSubnets} + provisionedConcurrency: ${param:submitProvisionedConcurrency} + action: + handler: handlers/action.handler + maximumRetryAttempts: 0 + environment: + region: ${self:provider.region} + osDomain: ${param:osDomain} + dbIp: ${self:custom.dbInfo.ip} + dbPort: ${self:custom.dbInfo.port} + dbUser: ${self:custom.dbInfo.user} + dbPassword: ${self:custom.dbInfo.password} + topicName: ${param:topicName} + brokerString: ${self:custom.brokerString} + events: + - http: + path: /action/{actionType} + method: post + cors: true + authorizer: aws_iam + vpc: + securityGroupIds: + - Ref: SecurityGroup + subnetIds: >- + ${self:custom.vpc.privateSubnets} + provisionedConcurrency: ${param:submitProvisionedConcurrency} # reuse submit's concurrency resources: Resources: ApiGateway400ErrorCount: @@ -135,7 +226,7 @@ resources: Properties: LogGroupName: !Ref ApiGatewayLogGroup FilterName: ApiGateway400ErrorCount - FilterPattern: '[ip, user, timestamp, request, status = 4*]' + FilterPattern: "[ip, user, timestamp, request, status = 4*]" MetricTransformations: - MetricValue: "1" DefaultValue: "0" @@ -162,7 +253,7 @@ resources: Properties: LogGroupName: !Ref ApiGatewayLogGroup FilterName: ApiGateway500ErrorCount - FilterPattern: '[ip, user, timestamp, request, status = 5*]' + FilterPattern: "[ip, user, timestamp, request, status = 5*]" MetricTransformations: - MetricValue: "1" DefaultValue: "0" diff --git a/src/services/auth/handlers/createUsers.ts b/src/services/auth/handlers/createUsers.ts index b94e6e54e4..76a371b858 100644 --- a/src/services/auth/handlers/createUsers.ts +++ b/src/services/auth/handlers/createUsers.ts @@ -1,35 +1,35 @@ import * as cognitolib from "../../../libs/cognito-lib"; +import users from "../libs/users.json"; const userPoolId = process.env.userPoolId; -const users = require("../libs/users.json"); exports.handler = async function myHandler() { console.log("USER POOL ID: "); console.log(userPoolId); - for (var i = 0; i < users.length; i++) { + for (let i = 0; i < users.length; i++) { console.log(users[i]); - var poolData = { + const poolData = { UserPoolId: userPoolId, Username: users[i].username, UserAttributes: users[i].attributes, MessageAction: "SUPPRESS", }; - var passwordData = { + const passwordData = { Password: process.env.bootstrapUsersPassword, UserPoolId: userPoolId, Username: users[i].username, Permanent: true, }; - var attributeData = { + const attributeData = { Username: users[i].username, UserPoolId: userPoolId, UserAttributes: users[i].attributes, }; await cognitolib.createUser(poolData); - //userCreate must set a temp password first, calling setPassword to set the password configured in SSM for consistent dev login + // Set a temp password first, and then set the password configured in SSM for consistent dev login await cognitolib.setPassword(passwordData); - //if user exists and attributes are updated in this file updateUserAttributes is needed to update the attributes + // If user exists and attributes are updated in this file, updateUserAttributes is needed to update the attributes await cognitolib.updateUserAttributes(attributeData); } -} \ No newline at end of file +}; diff --git a/src/services/auth/handlers/postAuth.ts b/src/services/auth/handlers/postAuth.ts new file mode 100644 index 0000000000..10af9155b8 --- /dev/null +++ b/src/services/auth/handlers/postAuth.ts @@ -0,0 +1,80 @@ +import { Handler } from "aws-lambda"; +import * as cognitolib from "../../../libs/cognito-lib"; +import { UserRoles, STATE_ROLES } from "shared-types" + +if (!process.env.apiKey) { + throw "ERROR: process.env.apiKey is required,"; +} +const apiKey: string = process.env.apiKey; + +if (!process.env.apiEndpoint) { + throw "ERROR: process.env.apiEndpoint is required,"; +} +const apiEndpoint: string = process.env.apiEndpoint; + +export const handler: Handler = async (event, context) => { + console.log(JSON.stringify(event,null,2)); + const { request, response } = event; + const { userAttributes } = request; + + if(!userAttributes.identities){ + console.log("User is not managed externally. Nothing to do."); + } else { + console.log("Getting user attributes from external API"); + + try { + const username = userAttributes["custom:username"]; // This is the four letter IDM username + const response = await fetch(`${apiEndpoint}/api/v1/authz/id/all?userId=${username}`, { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + 'x-api-key': apiKey, + } + }); + if (!response.ok) { + console.log(response); + throw new Error(`Network response was not ok. Response was ${response.status}: ${response.statusText}`); + } + let data = await response.json(); + console.log(JSON.stringify(data, null, 2)) + let roleArray :string[] = []; + let stateArray :string[] = []; + data.userProfileAppRoles.userRolesInfoList.forEach((element :any) => { + let role = element.roleName; + if(Object.values(UserRoles).includes(role)){ + roleArray.push(role); + if(STATE_ROLES.includes(role)){ + element.roleAttributes.forEach((attr :any) => { + if(attr.name = "State/Territory"){ + stateArray.push(attr.value); + } + }) + } + } + }); + + let attributeData :any = { + Username: event.userName, + UserPoolId: event.userPoolId, + UserAttributes: [ + { + "Name": "custom:cms-roles", + "Value": roleArray.join() + }, + { + "Name": "custom:state", + "Value": stateArray.join() + } + ], + }; + console.log("Putting user attributes as: "); + console.log(JSON.stringify(attributeData,null,2)); + await cognitolib.updateUserAttributes(attributeData); + + } catch (error) { + console.error("Error performing post auth:", error); + } + + } + return event; +}; diff --git a/src/services/auth/libs/users.json b/src/services/auth/libs/users.json index 105fd039a2..b810bc9e50 100644 --- a/src/services/auth/libs/users.json +++ b/src/services/auth/libs/users.json @@ -24,7 +24,7 @@ }, { "Name": "custom:cms-roles", - "Value": "state-submitter" + "Value": "onemac-micro-statesubmitter" } ] }, @@ -53,7 +53,7 @@ }, { "Name": "custom:cms-roles", - "Value": "cms-read-only" + "Value": "onemac-micro-readonly" } ] }, @@ -82,7 +82,7 @@ }, { "Name": "custom:cms-roles", - "Value": "cms-reviewer" + "Value": "onemac-micro-reviewer" } ] }, @@ -111,65 +111,7 @@ }, { "Name": "custom:cms-roles", - "Value": "helpdesk" - } - ] - }, - { - "username": "cmsadmin@example.com", - "attributes": [ - { - "Name": "email", - "Value": "cmsadmin@example.com" - }, - { - "Name": "given_name", - "Value": "CMS" - }, - { - "Name": "family_name", - "Value": "Admin" - }, - { - "Name": "email_verified", - "Value": "true" - }, - { - "Name": "custom:state", - "Value": "" - }, - { - "Name": "custom:cms-roles", - "Value": "cms-system-admin" - } - ] - }, - { - "username": "approver@example.com", - "attributes": [ - { - "Name": "email", - "Value": "approver@example.com" - }, - { - "Name": "given_name", - "Value": "CMS" - }, - { - "Name": "family_name", - "Value": "Approver" - }, - { - "Name": "email_verified", - "Value": "true" - }, - { - "Name": "custom:state", - "Value": "" - }, - { - "Name": "custom:cms-roles", - "Value": "cms-role-approver" + "Value": "onemac-micro-helpdesk" } ] }, @@ -198,16 +140,16 @@ }, { "Name": "custom:cms-roles", - "Value": "state-submitter" + "Value": "onemac-micro-statesubmitter" } ] }, { - "username": "stateadmin@example.com", + "username": "statemulti@example.com", "attributes": [ { "Name": "email", - "Value": "stateadmin@example.com" + "Value": "statemulti@example.com" }, { "Name": "given_name", @@ -215,7 +157,7 @@ }, { "Name": "family_name", - "Value": "Admin" + "Value": "Multi" }, { "Name": "email_verified", @@ -223,40 +165,32 @@ }, { "Name": "custom:state", - "Value": "VA" + "Value": "CA,NY,MD" }, { "Name": "custom:cms-roles", - "Value": "state-system-admin" + "Value": "onemac-micro-statesubmitter" } ] }, { - "username": "statemulti@example.com", + "username": "badfootball@example.com", "attributes": [ { "Name": "email", - "Value": "statemulti@example.com" + "Value": "badfootball@example.com" }, { "Name": "given_name", - "Value": "State" + "Value": "bad" }, { "Name": "family_name", - "Value": "Multi" + "Value": "football" }, { "Name": "email_verified", "Value": "true" - }, - { - "Name": "custom:state", - "Value": "CA,NY,MD" - }, - { - "Name": "custom:cms-roles", - "Value": "state-system-admin,state-submitter" } ] } diff --git a/src/services/auth/package.json b/src/services/auth/package.json index 543b1a2a93..87a83190d5 100644 --- a/src/services/auth/package.json +++ b/src/services/auth/package.json @@ -1,5 +1,8 @@ { "name": "auth", "private": true, - "version": "0.0.0" + "version": "0.0.0", + "dependencies": { + "shared-types": "*" + } } diff --git a/src/services/auth/serverless.yml b/src/services/auth/serverless.yml index aaee44f6b1..3ecd049666 100644 --- a/src/services/auth/serverless.yml +++ b/src/services/auth/serverless.yml @@ -23,7 +23,7 @@ provider: - cognito-idp:AdminCreateUser - cognito-idp:AdminSetUserPassword - cognito-idp:AdminUpdateUserAttributes - Resource: !GetAtt CognitoUserPool.Arn + Resource: !Sub arn:aws:cognito-idp:${self:provider.region}:${AWS::AccountId}:userpool/us-east-* custom: project: ${env:PROJECT} # This should always be set by direnv. @@ -34,9 +34,10 @@ custom: - val - production cognitoEmailAddress: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/cognitoEmailAddress, ssm:/aws/reference/secretsmanager/${self:custom.project}/default/cognitoEmailAddress, ""} - okta_metadata_url: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/okta_metadata_url, ""} bootstrapUsers: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/bootstrapUsers, param:bootstrapUsers} bootstrapUsersPassword: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/bootstrapUsersPassword, ssm:/aws/reference/secretsmanager/${self:custom.project}/default/bootstrapUsersPassword} + idmInfo: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/idmInfo, ""} + vpc: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/vpc, ssm:/aws/reference/secretsmanager/${self:custom.project}/default/vpc} scripts: hooks: deploy:finalize: | @@ -60,7 +61,16 @@ functions: userPoolId: !Ref CognitoUserPool bootstrapUsersPassword: ${self:custom.bootstrapUsersPassword} region: ${self:provider.region} - + postAuth: + handler: handlers/postAuth.handler + vpc: + securityGroupIds: + - Ref: SecurityGroup + subnetIds: >- + ${self:custom.vpc.privateSubnets} + environment: + apiKey: ${self:custom.idmInfo.api_key, ""} + apiEndpoint: ${self:custom.idmInfo.api_endpoint, ""} resources: Conditions: CreateEmailConfiguration: @@ -68,11 +78,11 @@ resources: - Fn::Equals: - "" - ${self:custom.cognitoEmailAddress} - BackWithOkta: + BackWithIDM: Fn::Not: - Fn::Equals: - "" - - ${self:custom.okta_metadata_url} + - ${self:custom.idmInfo.oidc_issuer, ""} Resources: CognitoUserPool: Type: AWS::Cognito::UserPool @@ -90,6 +100,11 @@ resources: - EmailSendingAccount: DEVELOPER SourceArn: !Sub arn:aws:ses:${self:provider.region}:${AWS::AccountId}:identity/${self:custom.cognitoEmailAddress} - EmailSendingAccount: COGNITO_DEFAULT + LambdaConfig: + Fn::If: + - BackWithIDM + - PreTokenGeneration: !GetAtt PostAuthLambdaFunction.Arn + - !Ref AWS::NoValue Schema: - Name: given_name AttributeDataType: String @@ -99,18 +114,26 @@ resources: AttributeDataType: String Mutable: true Required: true - - Name: phone_number + - Name: state AttributeDataType: String Mutable: true Required: false - - Name: state + - Name: cms-roles AttributeDataType: String Mutable: true Required: false - - Name: cms-roles + - Name: username AttributeDataType: String Mutable: true Required: false + PostAuthLambdaResourcePolicy: + Type: AWS::Lambda::Permission + Properties: + FunctionName: !GetAtt PostAuthLambdaFunction.Arn + Principal: cognito-idp.amazonaws.com + Action: lambda:InvokeFunction + SourceAccount: !Sub ${AWS::AccountId} + SourceArn: !GetAtt CognitoUserPool.Arn CognitoUserPoolClient: Type: AWS::Cognito::UserPoolClient Properties: @@ -136,8 +159,8 @@ resources: SupportedIdentityProviders: - COGNITO - Fn::If: - - BackWithOkta - - !Ref OktaUserPoolIdentityProvider + - BackWithIDM + - !Ref UserPoolIdentityProviderIDM - !Ref AWS::NoValue AccessTokenValidity: 30 IdTokenValidity: 30 @@ -156,20 +179,25 @@ resources: - Ref: CognitoUserPoolClient UserPoolId: Ref: CognitoUserPool - OktaUserPoolIdentityProvider: - Condition: BackWithOkta + UserPoolIdentityProviderIDM: + Condition: BackWithIDM Type: AWS::Cognito::UserPoolIdentityProvider Properties: AttributeMapping: - email: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress - given_name: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname - family_name: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname + email: email + given_name: given_name + family_name: family_name + "custom:username": "preferred_username" IdpIdentifiers: - IdpIdentifier ProviderDetails: - MetadataURL: ${self:custom.okta_metadata_url} - ProviderName: Okta - ProviderType: SAML + client_id: ${self:custom.idmInfo.oidc_client_id, ""} + client_secret: ${self:custom.idmInfo.oidc_client_secret, ""} + oidc_issuer: ${self:custom.idmInfo.oidc_issuer, ""} + attributes_request_method: GET + authorize_scopes: "email openid profile phone" + ProviderName: IDM + ProviderType: OIDC UserPoolId: Ref: CognitoUserPool CognitoIdentityPool: @@ -211,6 +239,15 @@ resources: Action: - "execute-api:Invoke" Resource: !Sub arn:aws:execute-api:${self:provider.region}:${AWS::AccountId}:${param:ApiName}/* + SecurityGroup: + Type: AWS::EC2::SecurityGroup + DeletionPolicy: Retain # VPC based lambda's are problematic when deleting the SG due to ENI attachmnent out of our control. + Properties: + GroupDescription: Security group for Sink Lambda Function. + VpcId: ${self:custom.vpc.id} + SecurityGroupEgress: + - IpProtocol: -1 + CidrIp: 0.0.0.0/0 Outputs: UserPoolId: Value: !Ref CognitoUserPool @@ -222,5 +259,5 @@ resources: Value: !Ref CognitoIdentityPool Region: Value: !Sub ${AWS::Region} - BootstrapUsersPassword: - Value: ${self:custom.bootstrapUsersPassword} \ No newline at end of file + BootstrapUsersPassword: + Value: ${self:custom.bootstrapUsersPassword} diff --git a/src/services/auth/tsconfig.json b/src/services/auth/tsconfig.json index 8625c1d4bb..8b94d5c8d7 100644 --- a/src/services/auth/tsconfig.json +++ b/src/services/auth/tsconfig.json @@ -9,6 +9,7 @@ "resolveJsonModule": true, "target": "es5", "module": "commonjs", - "strict": true + "strict": true, + "allowSyntheticDefaultImports": true } } diff --git a/src/services/dashboard/handlers/createDashboardTemplateWidget.ts b/src/services/dashboard/handlers/createDashboardTemplateWidget.ts index 53a68a65ce..b5ce604e88 100644 --- a/src/services/dashboard/handlers/createDashboardTemplateWidget.ts +++ b/src/services/dashboard/handlers/createDashboardTemplateWidget.ts @@ -1,14 +1,4 @@ -import type { - APIGatewayEvent, - APIGatewayProxyCallback, - Context, -} from "aws-lambda"; - -export const handler = async ( - _event: APIGatewayEvent, - _context: Context, - _callback: APIGatewayProxyCallback -) => { +export const handler = async () => { const lambdaArnToCall = process.env.lambdaArnToCall; try { if (!lambdaArnToCall) { diff --git a/src/services/dashboard/handlers/templatizeCloudWatchDashboard.ts b/src/services/dashboard/handlers/templatizeCloudWatchDashboard.ts index 20bd991024..f9c22365b5 100644 --- a/src/services/dashboard/handlers/templatizeCloudWatchDashboard.ts +++ b/src/services/dashboard/handlers/templatizeCloudWatchDashboard.ts @@ -1,10 +1,5 @@ import { CloudWatch } from "@aws-sdk/client-cloudwatch"; import { checkEnvVars } from "../../../libs"; -import type { - APIGatewayEvent, - APIGatewayProxyCallback, - Context, -} from "aws-lambda"; /** * It takes a string and a dictionary of strings and replaces all the keys in the dictionary with their @@ -35,11 +30,7 @@ export const replaceStringValues = ( * that is called when the lambda is done executing. * @returns The dashboard template with the values replaced with the serverless variables. */ -export const handler = async ( - _event: APIGatewayEvent, - _context: Context, - _callback: APIGatewayProxyCallback -) => { +export const handler = async () => { try { // Environment variables passed to lambda from serverless.yml checkEnvVars(["service", "accountId", "stage", "region"]); @@ -50,12 +41,12 @@ export const handler = async ( }); const replacables = { - [accountId!]: "${aws:accountId}", - [stage!]: "${sls:stage}", - [region!]: "${env:REGION_A}", - [service!]: "${self:service}", + [accountId]: "${aws:accountId}", + [stage]: "${sls:stage}", + [region]: "${env:REGION_A}", + [service]: "${self:service}", }; - const templateJson = dashboard.DashboardBody!; + const templateJson = dashboard.DashboardBody; const results = replaceStringValues(templateJson, replacables); return results; } catch (error) { diff --git a/src/services/dashboard/templateDashboard.txt b/src/services/dashboard/templateDashboard.txt index a057ba8535..c2f4b21843 100644 --- a/src/services/dashboard/templateDashboard.txt +++ b/src/services/dashboard/templateDashboard.txt @@ -3,7 +3,7 @@ { "height": 3, "width": 6, - "y": 0, + "y": 86, "x": 6, "type": "custom", "properties": { @@ -18,18 +18,18 @@ { "height": 1, "width": 24, - "y": 3, + "y": 60, "x": 0, "type": "text", "properties": { - "markdown": "## cloudfront metrics", + "markdown": "# ui-infra", "background": "transparent" } }, { "height": 3, "width": 6, - "y": 0, + "y": 86, "x": 0, "type": "text", "properties": { @@ -40,7 +40,7 @@ { "height": 8, "width": 8, - "y": 48, + "y": 78, "x": 0, "type": "metric", "properties": { @@ -61,59 +61,34 @@ } }, { - "height": 7, - "width": 8, - "y": 40, + "height": 3, + "width": 5, + "y": 2, "x": 0, "type": "alarm", "properties": { - "title": "Mako Dashboard ${sls:stage} Alarms", + "title": "Alarms", "alarms": [ - "arn:aws:cloudwatch:${env:REGION_A}:${aws:accountId}:alarm:om-api-lambda-search-${sls:stage}-errors", - "arn:aws:cloudwatch:${env:REGION_A}:${aws:accountId}:alarm:om-data-${sls:stage}-sinkOnemacErrorCount", - "arn:aws:cloudwatch:${env:REGION_A}:${aws:accountId}:alarm:om-data-${sls:stage}-ONEMAC-validation-error", - "arn:aws:cloudwatch:${env:REGION_A}:${aws:accountId}:alarm:om-data-${sls:stage}-SEATOOL-validation-error", - "arn:aws:cloudwatch:${env:REGION_A}:${aws:accountId}:alarm:om-data-${sls:stage}-sinkSeatoolErrorsCount" + "arn:aws:cloudwatch:${env:REGION_A}:${aws:accountId}:alarm:om-data-${sls:stage}-sinkSeatoolErrorsCount", + "arn:aws:cloudwatch:${env:REGION_A}:${aws:accountId}:alarm:om-data-${sls:stage}-SEATOOL-validation-error" ] } }, - { - "height": 1, - "width": 8, - "y": 20, - "x": 0, - "type": "text", - "properties": { - "markdown": "## api gateway", - "background": "transparent" - } - }, - { - "height": 1, - "width": 9, - "y": 39, - "x": 0, - "type": "text", - "properties": { - "markdown": "## opensearch", - "background": "transparent" - } - }, { "height": 1, "width": 24, - "y": 47, + "y": 77, "x": 0, "type": "text", "properties": { - "markdown": "## alerts service", + "markdown": "# alerts", "background": "transparent" } }, { "height": 2, "width": 12, - "y": 21, + "y": 18, "x": 0, "type": "alarm", "properties": { @@ -127,7 +102,7 @@ { "height": 16, "width": 24, - "y": 23, + "y": 20, "x": 0, "type": "explorer", "properties": { @@ -177,7 +152,7 @@ { "height": 16, "width": 24, - "y": 4, + "y": 61, "x": 0, "type": "explorer", "properties": { @@ -223,6 +198,425 @@ "region": "${env:REGION_A}", "title": "Cloudfront Metric Explorer" } + }, + { + "height": 1, + "width": 24, + "y": 0, + "x": 0, + "type": "text", + "properties": { + "markdown": "# data", + "background": "transparent" + } + }, + { + "height": 7, + "width": 6, + "y": 2, + "x": 5, + "type": "metric", + "properties": { + "metrics": [ + [ + "AWS/Lambda", + "Invocations", + "FunctionName", + "om-data-${sls:stage}-sinkSeatool", + { + "region": "${env:REGION_A}" + } + ], + [ + ".", + "Throttles", + ".", + ".", + { + "region": "${env:REGION_A}" + } + ], + [ + ".", + "Errors", + ".", + ".", + { + "region": "${env:REGION_A}", + "color": "#d62728" + } + ] + ], + "view": "timeSeries", + "stacked": false, + "region": "${env:REGION_A}", + "title": "Lambda", + "period": 60, + "stat": "Sum" + } + }, + { + "height": 7, + "width": 13, + "y": 2, + "x": 11, + "type": "log", + "properties": { + "query": "SOURCE '/aws/lambda/om-data-${sls:stage}-sinkSeatool' | fields @timestamp, @message\n| sort @timestamp desc\n| limit 50", + "region": "${env:REGION_A}", + "stacked": false, + "title": "Logs", + "view": "table" + } + }, + { + "height": 7, + "width": 6, + "y": 10, + "x": 5, + "type": "metric", + "properties": { + "metrics": [ + [ + "AWS/Lambda", + "Invocations", + "FunctionName", + "om-data-${sls:stage}-sinkOnemac", + { + "region": "${env:REGION_A}" + } + ], + [ + ".", + "Throttles", + ".", + ".", + { + "region": "${env:REGION_A}" + } + ], + [ + ".", + "Errors", + ".", + ".", + { + "region": "${env:REGION_A}", + "color": "#d62728" + } + ] + ], + "view": "timeSeries", + "stacked": false, + "region": "${env:REGION_A}", + "title": "Lambda", + "period": 60, + "stat": "Sum" + } + }, + { + "height": 7, + "width": 13, + "y": 10, + "x": 11, + "type": "log", + "properties": { + "query": "SOURCE '/aws/lambda/om-data-${sls:stage}-sinkOnemac' | fields @timestamp, @message\n| sort @timestamp desc\n| limit 50", + "region": "${env:REGION_A}", + "stacked": false, + "title": "Logs", + "view": "table" + } + }, + { + "height": 3, + "width": 5, + "y": 10, + "x": 0, + "type": "alarm", + "properties": { + "title": "Alarms", + "alarms": [ + "arn:aws:cloudwatch:${env:REGION_A}:${aws:accountId}:alarm:om-data-${sls:stage}-sinkOnemacErrorCount", + "arn:aws:cloudwatch:${env:REGION_A}:${aws:accountId}:alarm:om-data-${sls:stage}-ONEMAC-validation-error" + ] + } + }, + { + "height": 4, + "width": 5, + "y": 5, + "x": 0, + "type": "metric", + "properties": { + "metrics": [ + [ + "AWS/Lambda", + "OffsetLag", + "FunctionName", + "om-data-${sls:stage}-sinkSeatool", + { + "region": "${env:REGION_A}" + } + ] + ], + "sparkline": true, + "view": "singleValue", + "region": "${env:REGION_A}", + "period": 60, + "stat": "Maximum" + } + }, + { + "height": 4, + "width": 5, + "y": 13, + "x": 0, + "type": "metric", + "properties": { + "metrics": [ + [ + "AWS/Lambda", + "OffsetLag", + "FunctionName", + "om-data-${sls:stage}-sinkOnemac" + ] + ], + "sparkline": true, + "view": "singleValue", + "region": "${env:REGION_A}", + "period": 60, + "stat": "Maximum" + } + }, + { + "height": 1, + "width": 24, + "y": 1, + "x": 0, + "type": "text", + "properties": { + "markdown": "## seatool sink", + "background": "transparent" + } + }, + { + "height": 1, + "width": 24, + "y": 9, + "x": 0, + "type": "text", + "properties": { + "markdown": "## onemac sink", + "background": "transparent" + } + }, + { + "height": 1, + "width": 24, + "y": 17, + "x": 0, + "type": "text", + "properties": { + "markdown": "# api", + "background": "transparent" + } + }, + { + "height": 7, + "width": 6, + "y": 37, + "x": 0, + "type": "metric", + "properties": { + "metrics": [ + [ + "AWS/Lambda", + "Invocations", + "FunctionName", + "om-api-${sls:stage}-search", + { + "region": "${env:REGION_A}" + } + ], + [ + ".", + "Throttles", + ".", + ".", + { + "region": "${env:REGION_A}" + } + ], + [ + ".", + "Errors", + ".", + ".", + { + "region": "${env:REGION_A}", + "color": "#d62728" + } + ] + ], + "view": "timeSeries", + "stacked": false, + "region": "${env:REGION_A}", + "title": "Lambda", + "period": 60, + "stat": "Sum" + } + }, + { + "height": 7, + "width": 18, + "y": 37, + "x": 6, + "type": "log", + "properties": { + "query": "SOURCE '/aws/lambda/om-api-${sls:stage}-search' | fields @timestamp, @message\n| sort @timestamp desc\n| limit 50", + "region": "${env:REGION_A}", + "stacked": false, + "title": "Logs", + "view": "table" + } + }, + { + "height": 1, + "width": 24, + "y": 36, + "x": 0, + "type": "text", + "properties": { + "markdown": "## search", + "background": "transparent" + } + }, + { + "height": 1, + "width": 24, + "y": 44, + "x": 0, + "type": "text", + "properties": { + "markdown": "## item", + "background": "transparent" + } + }, + { + "height": 7, + "width": 6, + "y": 45, + "x": 0, + "type": "metric", + "properties": { + "metrics": [ + [ + "AWS/Lambda", + "Invocations", + "FunctionName", + "om-api-${sls:stage}-item" + ], + [ + ".", + "Throttles", + ".", + "." + ], + [ + ".", + "Errors", + ".", + ".", + { + "color": "#d62728" + } + ] + ], + "view": "timeSeries", + "stacked": false, + "region": "${env:REGION_A}", + "title": "Lambda", + "period": 60, + "stat": "Sum" + } + }, + { + "height": 7, + "width": 18, + "y": 45, + "x": 6, + "type": "log", + "properties": { + "query": "SOURCE '/aws/lambda/om-data-${sls:stage}-bootstrapKibanaUsers' | SOURCE '/aws/lambda/om-api-${sls:stage}-item' | fields @timestamp, @message\n| sort @timestamp desc\n| limit 50", + "region": "${env:REGION_A}", + "stacked": false, + "title": "Logs", + "view": "table" + } + }, + { + "height": 1, + "width": 24, + "y": 52, + "x": 0, + "type": "text", + "properties": { + "markdown": "## getAttachmentUrl", + "background": "transparent" + } + }, + { + "height": 7, + "width": 6, + "y": 53, + "x": 0, + "type": "metric", + "properties": { + "metrics": [ + [ + "AWS/Lambda", + "Invocations", + "FunctionName", + "om-api-${sls:stage}-getAttachmentUrl" + ], + [ + ".", + "Throttles", + ".", + "." + ], + [ + ".", + "Errors", + ".", + ".", + { + "color": "#d62728" + } + ] + ], + "view": "timeSeries", + "stacked": false, + "region": "${env:REGION_A}", + "title": "Lambda", + "period": 60, + "stat": "Sum" + } + }, + { + "height": 7, + "width": 18, + "y": 53, + "x": 6, + "type": "log", + "properties": { + "query": "SOURCE '/aws/lambda/om-api-${sls:stage}-getAttachmentUrl' | fields @timestamp, @message\n| sort @timestamp desc\n| limit 50", + "region": "${env:REGION_A}", + "stacked": false, + "title": "Logs", + "view": "table" + } } ] } \ No newline at end of file diff --git a/src/services/dashboard/tests/createDashboardTemplateWidget.test.ts b/src/services/dashboard/tests/createDashboardTemplateWidget.test.ts index 136f9656a8..f7ef425f26 100644 --- a/src/services/dashboard/tests/createDashboardTemplateWidget.test.ts +++ b/src/services/dashboard/tests/createDashboardTemplateWidget.test.ts @@ -1,4 +1,4 @@ -import { it, describe, expect, beforeEach } from "vitest"; +import { it, describe, expect } from "vitest"; import { handler } from "../handlers/createDashboardTemplateWidget"; import type { APIGatewayEvent, diff --git a/src/services/dashboard/tests/templatizeCloudWatchDashboard.test.ts b/src/services/dashboard/tests/templatizeCloudWatchDashboard.test.ts index c7449e182b..92a197a3ee 100644 --- a/src/services/dashboard/tests/templatizeCloudWatchDashboard.test.ts +++ b/src/services/dashboard/tests/templatizeCloudWatchDashboard.test.ts @@ -1,4 +1,4 @@ -import { it, describe, expect, beforeEach, afterEach, vi } from "vitest"; +import { it, describe, expect, afterEach, vi } from "vitest"; import { CloudWatch } from "@aws-sdk/client-cloudwatch"; import { handler } from "../handlers/templatizeCloudWatchDashboard"; import type { diff --git a/src/services/data/handlers/cleanupKafka.ts b/src/services/data/handlers/cleanupKafka.ts new file mode 100644 index 0000000000..a2ca2afea0 --- /dev/null +++ b/src/services/data/handlers/cleanupKafka.ts @@ -0,0 +1,31 @@ +import { send, SUCCESS, FAILED } from "cfn-response-async"; +import { CloudFormationCustomResourceEvent, Context } from "aws-lambda"; +import * as topics from "../libs/topics-lib"; +type ResponseStatus = typeof SUCCESS | typeof FAILED; + +export const handler = async function ( + event: CloudFormationCustomResourceEvent, + context: Context +): Promise { + console.log("Request:", JSON.stringify(event, undefined, 2)); + const responseData: any = {}; + let responseStatus: ResponseStatus = SUCCESS; + try { + if (event.RequestType === "Create" || event.RequestType == "Update") { + console.log("This resource does nothing on Create and Update events."); + } else if (event.RequestType === "Delete") { + const BrokerString: string = event.ResourceProperties.BrokerString; + const TopicPatternsToDelete: string[] = + event.ResourceProperties.TopicPatternsToDelete; + console.log( + `Attempting a delete for each of the following patterns: ${TopicPatternsToDelete}` + ); + await topics.deleteTopics(BrokerString, TopicPatternsToDelete); + } + } catch (error) { + console.error(error); + responseStatus = FAILED; + } finally { + await send(event, context, responseStatus, responseData, "static"); + } +}; diff --git a/src/services/data/handlers/createTopics.ts b/src/services/data/handlers/createTopics.ts new file mode 100644 index 0000000000..743ba77b45 --- /dev/null +++ b/src/services/data/handlers/createTopics.ts @@ -0,0 +1,56 @@ +import { send, SUCCESS, FAILED } from "cfn-response-async"; +import { CloudFormationCustomResourceEvent, Context } from "aws-lambda"; +import * as topics from "../libs/topics-lib"; +type ResponseStatus = typeof SUCCESS | typeof FAILED; + +interface TopicConfig { + topic: string; + numPartitions: number; + replicationFactor: number; +} + +export const handler = async function ( + event: CloudFormationCustomResourceEvent, + context: Context +) { + console.log("Request:", JSON.stringify(event, undefined, 2)); + const responseData: any = {}; + let responseStatus: ResponseStatus = SUCCESS; + try { + if (event.RequestType === "Create" || event.RequestType == "Update") { + const resourceProperties = event.ResourceProperties; + const TopicsToCreate: TopicConfig[] = resourceProperties.TopicsToCreate; + const BrokerString: string = resourceProperties.BrokerString; + const topicConfig: TopicConfig[] = TopicsToCreate.map(function ( + element: TopicConfig + ) { + const topic: string = element.topic; + const replicationFactor: number = element.replicationFactor || 3; + const numPartitions: number = element.numPartitions || 1; + if (!topic) { + throw "Invalid configuration for TopicsToCreate. All entries must have a 'name' key with a string value."; + } + if (replicationFactor < 3) { + throw "Invalid configuration for TopicsToCreate. If specified, replicationFactor must be greater than or equal to 3."; + } + if (numPartitions < 1) { + throw "Invalid configuration for TopicsToCreate. If specified, numPartitions must be greater than or equal to 1."; + } + return { + topic, + numPartitions, + replicationFactor, + }; + }); + console.log(JSON.stringify(topicConfig, null, 2)); + await topics.createTopics(BrokerString, topicConfig); + } else if (event.RequestType === "Delete") { + console.log("This resource does nothing on Delete events."); + } + } catch (error) { + console.error(error); + responseStatus = FAILED; + } finally { + await send(event, context, responseStatus, responseData, "static"); + } +}; diff --git a/src/services/data/handlers/createKibanaUsers.ts b/src/services/data/handlers/createUsers.ts similarity index 77% rename from src/services/data/handlers/createKibanaUsers.ts rename to src/services/data/handlers/createUsers.ts index d31b3d0889..76a371b858 100644 --- a/src/services/data/handlers/createKibanaUsers.ts +++ b/src/services/data/handlers/createUsers.ts @@ -1,28 +1,28 @@ import * as cognitolib from "../../../libs/cognito-lib"; -import * as users from "../libs/users.json"; -const kibanaUserPoolId = process.env.kibanaUserPoolId; +import users from "../libs/users.json"; +const userPoolId = process.env.userPoolId; exports.handler = async function myHandler() { - console.log("KIBANA USER POOL ID: "); - console.log(kibanaUserPoolId); + console.log("USER POOL ID: "); + console.log(userPoolId); for (let i = 0; i < users.length; i++) { console.log(users[i]); const poolData = { - UserPoolId: kibanaUserPoolId, + UserPoolId: userPoolId, Username: users[i].username, UserAttributes: users[i].attributes, MessageAction: "SUPPRESS", }; const passwordData = { Password: process.env.bootstrapUsersPassword, - UserPoolId: kibanaUserPoolId, + UserPoolId: userPoolId, Username: users[i].username, Permanent: true, }; const attributeData = { Username: users[i].username, - UserPoolId: kibanaUserPoolId, + UserPoolId: userPoolId, UserAttributes: users[i].attributes, }; diff --git a/src/services/data/handlers/sink.ts b/src/services/data/handlers/sink.ts index 0892548479..35cdf16076 100644 --- a/src/services/data/handlers/sink.ts +++ b/src/services/data/handlers/sink.ts @@ -11,6 +11,7 @@ import { OneMacTransform, transformOnemac, } from "shared-types/onemac"; +import { Action, WithdrawRecord, withdrawRecordSchema } from "shared-types"; if (!process.env.osDomain) { throw "ERROR: process.env.osDomain is required,"; @@ -92,8 +93,11 @@ export const seatool: Handler = async (event) => { }; export const onemac: Handler = async (event) => { - const oneMacRecords: (OneMacTransform | OneMacRecordsToDelete)[] = []; - const docObject: Record = {}; + const oneMacRecords: ( + | OneMacTransform + | OneMacRecordsToDelete + | (WithdrawRecord & { id: string }) + )[] = []; for (const recordKey of Object.keys(event.records)) { for (const onemacRecord of event.records[recordKey] as { @@ -105,11 +109,37 @@ export const onemac: Handler = async (event) => { if (value) { const id: string = decode(key); const record = { id, ...JSON.parse(decode(value)) }; - if ( - record && - record.sk === "Package" && - record.submitterName && - record.submitterName !== "-- --" // these records did not originate from onemac, thus we ignore them + const isActionType = "actionType" in record; + + if (isActionType) { + switch (record.actionType as Action) { + case Action.ENABLE_RAI_WITHDRAW: + case Action.DISABLE_RAI_WITHDRAW: { + const result = withdrawRecordSchema.safeParse(record); + if (result.success) { + // write to opensearch + // account for compaction + oneMacRecords.push({ + id, + ...result.data, + }); + } else { + console.log( + `ERROR: Invalid Payload for this action type (${record.actionType})` + ); + } + + break; + } + case Action.ISSUE_RAI: + return; + } + } else if ( + record && // testing if we have a record + (record.origin === "micro" || // testing if this is a micro record + (record.sk === "Package" && // testing if this is a legacy onemac package record + record.submitterName && + record.submitterName !== "-- --")) ) { const result = transformOnemac(id).safeParse(record); if (result.success === false) { @@ -120,7 +150,7 @@ export const onemac: Handler = async (event) => { result.error.message ); } else { - docObject[id] = result.data; + oneMacRecords.push(result.data); } } } else { @@ -128,6 +158,7 @@ export const onemac: Handler = async (event) => { const oneMacTombstone: OneMacRecordsToDelete = { id, additionalInformation: undefined, + raiWithdrawEnabled: undefined, attachments: undefined, submitterEmail: undefined, submitterName: undefined, @@ -135,7 +166,7 @@ export const onemac: Handler = async (event) => { raiResponses: undefined, }; - docObject[id] = oneMacTombstone; + oneMacRecords.push(oneMacTombstone); console.log( `Record ${id} has been nullified with the following data: `, @@ -144,9 +175,6 @@ export const onemac: Handler = async (event) => { } } } - for (const [, b] of Object.entries(docObject)) { - oneMacRecords.push(b); - } try { await os.bulkUpdateData(osDomain, "main", oneMacRecords); } catch (error) { diff --git a/src/services/data/libs/topics-lib.js b/src/services/data/libs/topics-lib.js new file mode 100644 index 0000000000..86c84fe383 --- /dev/null +++ b/src/services/data/libs/topics-lib.js @@ -0,0 +1,135 @@ +import * as _ from "lodash"; +import { Kafka, ConfigResourceTypes } from "kafkajs"; + +export async function createTopics(brokerString, topicsConfig) { + const topics = topicsConfig; + const brokers = brokerString.split(","); + + const kafka = new Kafka({ + clientId: "admin", + brokers: brokers, + ssl: true, + }); + var admin = kafka.admin(); + + const create = async () => { + await admin.connect(); + + //fetch topics from MSK and filter out __ internal management topic + const existingTopicList = _.filter(await admin.listTopics(), function (n) { + return !n.startsWith("_"); + }); + + console.log("Existing topics:", JSON.stringify(existingTopicList, null, 2)); + + //fetch the metadata for the topics in MSK + const topicsMetadata = _.get( + await admin.fetchTopicMetadata({ topics: existingTopicList }), + "topics", + {} + ); + console.log("Topics Metadata:", JSON.stringify(topicsMetadata, null, 2)); + + //diff the existing topics array with the topic configuration collection + const topicsToCreate = _.differenceWith( + topics, + existingTopicList, + (topicConfig, topic) => _.get(topicConfig, "topic") == topic + ); + + //find interestion of topics metadata collection with topic configuration collection + //where partition count of topic in Kafka is less than what is specified in the topic configuration collection + //...can't remove partitions, only add them + const topicsToUpdate = _.intersectionWith( + topics, + topicsMetadata, + (topicConfig, topicMetadata) => + _.get(topicConfig, "topic") == _.get(topicMetadata, "name") && + _.get(topicConfig, "numPartitions") > + _.get(topicMetadata, "partitions", []).length + ); + + //create a collection to update topic paritioning + const paritionConfig = _.map(topicsToUpdate, function (topic) { + return { + topic: _.get(topic, "topic"), + count: _.get(topic, "numPartitions"), + }; + }); + + //create a collection to allow querying of topic configuration + const configOptions = _.map(topicsMetadata, function (topic) { + return { + name: _.get(topic, "name"), + type: _.get(ConfigResourceTypes, "TOPIC"), + }; + }); + + //query topic configuration + const configs = + configOptions.length != 0 + ? await admin.describeConfigs({ resources: configOptions }) + : []; + + console.log("Topics to Create:", JSON.stringify(topicsToCreate, null, 2)); + console.log("Topics to Update:", JSON.stringify(topicsToUpdate, null, 2)); + console.log( + "Partitions to Update:", + JSON.stringify(paritionConfig, null, 2) + ); + console.log( + "Topic configuration options:", + JSON.stringify(configs, null, 2) + ); + + //create topics that don't exist in MSK + await admin.createTopics({ topics: topicsToCreate }); + + //if any topics have less partitions in MSK than in the configuration, add those partitions + paritionConfig.length > 0 && + (await admin.createPartitions({ topicPartitions: paritionConfig })); + + await admin.disconnect(); + }; + + await create(); +} + +export async function deleteTopics(brokerString, topicList) { + // Check that each topic in the list is something we can delete + for (var topic of topicList) { + if (!topic.match(/.*--.*--.*--.*/g)) { + throw "ERROR: The deleteTopics function only operates against topics that match /.*--.*--.*--.*/g"; + } + } + + const brokers = brokerString.split(","); + + const kafka = new Kafka({ + clientId: "admin", + brokers: brokers, + ssl: { + rejectUnauthorized: false, + }, + requestTimeout: 295000, // 5s short of the lambda function's timeout + }); + var admin = kafka.admin(); + + await admin.connect(); + + const currentTopics = await admin.listTopics(); + + let topicsToDelete = _.filter(currentTopics, function (currentTopic) { + return topicList.some((pattern) => { + return !!currentTopic.match(pattern); + }); + }); + + console.log(`Deleting topics: ${topicsToDelete}`); + await admin.deleteTopics({ + topics: topicsToDelete, + timeout: 295000, + }); + + await admin.disconnect(); +} diff --git a/src/services/data/package.json b/src/services/data/package.json index 4ec11638f9..796e14158f 100644 --- a/src/services/data/package.json +++ b/src/services/data/package.json @@ -20,9 +20,10 @@ "base-64": "^1.0.0", "cfn-response-async": "^1.0.0", "kafkajs": "^2.2.4", + "lodash": "^4.17.21", "serverless-step-functions": "^3.13.1", "shared-types": "*", - "zod": "^3.21.4" + "zod": "^3.22.3" }, "scripts": { "lint": "eslint '**/*.{ts,js}'" diff --git a/src/services/data/serverless.yml b/src/services/data/serverless.yml index 5a8a3b4d19..c030bec139 100644 --- a/src/services/data/serverless.yml +++ b/src/services/data/serverless.yml @@ -76,9 +76,8 @@ custom: deploy:finalize: | if [ "${self:custom.bootstrapKibanaUsers}" = "true" ]; then - aws lambda invoke --region ${self:provider.region} --function-name ${self:service}-${sls:stage}-bootstrapKibanaUsers --invocation-type RequestResponse /dev/null + aws lambda invoke --region ${self:provider.region} --function-name ${self:service}-${sls:stage}-bootstrapUsers --invocation-type RequestResponse /dev/null fi - stepFunctions: stateMachines: reindex: @@ -143,14 +142,18 @@ stepFunctions: params: master: osInstanceType: m5.large.search + topicNamespace: "" val: osInstanceType: m5.large.search + topicNamespace: "" production: bootstrapKibanaUsers: "false" osInstanceType: m5.large.search + topicNamespace: "" default: osInstanceType: t3.small.search bootstrapKibanaUsers: "true" + topicNamespace: --${self:custom.project}--${sls:stage}-- functions: sinkSeatool: @@ -230,6 +233,23 @@ functions: - Ref: SecurityGroup subnetIds: >- ${self:custom.vpc.privateSubnets} + createTopics: + handler: handlers/createTopics.handler + vpc: + securityGroupIds: + - Ref: SecurityGroup + subnetIds: >- + ${self:custom.vpc.privateSubnets} + timeout: 300 + cleanupKafka: + handler: handlers/cleanupKafka.handler + maximumRetryAttempts: 0 + vpc: + securityGroupIds: + - Ref: SecurityGroup + subnetIds: >- + ${self:custom.vpc.privateSubnets} + timeout: 300 mapRole: handler: handlers/mapRole.handler environment: @@ -243,14 +263,20 @@ functions: - Ref: SecurityGroup subnetIds: >- ${self:custom.vpc.privateSubnets} - bootstrapKibanaUsers: - handler: handlers/createKibanaUsers.handler + bootstrapUsers: + handler: handlers/createUsers.handler environment: - kibanaUserPoolId: !Ref CognitoUserPool + userPoolId: !Ref CognitoUserPool bootstrapUsersPassword: ${self:custom.bootstrapUsersPassword} region: ${self:provider.region} resources: + Conditions: + isDev: + Fn::Not: + - Fn::Equals: + - ${param:topicNamespace} + - "" Resources: StateMachineLogGroup: Type: AWS::Logs::LogGroup @@ -292,10 +318,10 @@ resources: Value: !GetAtt SinkSeatoolLambdaFunction.Arn ComparisonOperator: GreaterThanOrEqualToThreshold EvaluationPeriods: 1 - Period: 300 + Period: 300 Statistic: Sum TreatMissingData: notBreaching - Threshold: 1 + Threshold: 1 AlarmActions: - ${param:ECSFailureTopicArn} SinkOnemacTrigger: @@ -321,7 +347,32 @@ resources: URI: !Sub security_group:${SecurityGroup} StartingPosition: TRIM_HORIZON Topics: - - aws.onemac.migration.cdc + - aws.onemac.migration.cdc # We always want to sink onemacs data + SinkOnemacNamespacedTopicTrigger: + Type: AWS::Lambda::EventSourceMapping + Condition: isDev # We will only sink the namespaced topic if we're in a dev env + Properties: + BatchSize: 1000 + Enabled: true + FunctionName: !GetAtt SinkOnemacLambdaFunction.Arn + SelfManagedEventSource: + Endpoints: + KafkaBootstrapServers: + Fn::Split: + - "," + - ${self:custom.brokerString} + SourceAccessConfigurations: + - Type: VPC_SUBNET + URI: subnet:${self:custom.vpc.privateSubnets.0} + - Type: VPC_SUBNET + URI: subnet:${self:custom.vpc.privateSubnets.1} + - Type: VPC_SUBNET + URI: subnet:${self:custom.vpc.privateSubnets.2} + - Type: VPC_SECURITY_GROUP + URI: !Sub security_group:${SecurityGroup} + StartingPosition: TRIM_HORIZON + Topics: + - ${param:topicNamespace}aws.onemac.migration.cdc CloudWatchAlarmForSinkOnemacTriggerErrors: Type: AWS::CloudWatch::Alarm Properties: @@ -334,10 +385,10 @@ resources: Value: !GetAtt SinkOnemacLambdaFunction.Arn ComparisonOperator: GreaterThanOrEqualToThreshold EvaluationPeriods: 1 - Period: 300 + Period: 300 Statistic: Sum TreatMissingData: notBreaching - Threshold: 1 + Threshold: 1 AlarmActions: - ${param:ECSFailureTopicArn} SeatoolLogMessageMetricFilter: @@ -359,12 +410,12 @@ resources: MetricName: SeatoolValidationErrors ComparisonOperator: GreaterThanOrEqualToThreshold EvaluationPeriods: 1 - Period: 300 + Period: 300 Statistic: Sum TreatMissingData: notBreaching - Threshold: 1 + Threshold: 1 AlarmActions: - - ${param:ECSFailureTopicArn} + - ${param:ECSFailureTopicArn} OnemacLogMessageMetricFilter: Type: "AWS::Logs::MetricFilter" Properties: @@ -384,10 +435,10 @@ resources: MetricName: ONEMACValidationErrors ComparisonOperator: GreaterThanOrEqualToThreshold EvaluationPeriods: 1 - Period: 300 + Period: 300 Statistic: Sum TreatMissingData: notBreaching - Threshold: 1 + Threshold: 1 AlarmActions: - ${param:ECSFailureTopicArn} SecurityGroup: @@ -396,9 +447,15 @@ resources: Properties: GroupDescription: Security group for Sink Lambda Function. VpcId: ${self:custom.vpc.id} - SecurityGroupEgress: - - IpProtocol: -1 + SecurityGroupEgress: + - IpProtocol: tcp CidrIp: 0.0.0.0/0 + FromPort: 443 + ToPort: 443 + - IpProtocol: tcp + CidrIp: 10.0.0.0/8 + FromPort: 9094 + ToPort: 9094 CognitoUserPool: Type: AWS::Cognito::UserPool Properties: @@ -461,6 +518,8 @@ resources: - arn:aws:iam::aws:policy/AmazonCognitoReadOnly OpenSearch: Type: AWS::OpenSearchService::Domain + UpdatePolicy: + EnableVersionUpgrade: true Properties: Tags: - Key: STAGE @@ -471,11 +530,22 @@ resources: VolumeSize: 10 ClusterConfig: InstanceType: ${param:osInstanceType} - InstanceCount: 3 + InstanceCount: + Fn::If: + - isDev + - 1 + - 3 DedicatedMasterEnabled: false - ZoneAwarenessEnabled: true + ZoneAwarenessEnabled: + Fn::If: + - isDev + - false + - true ZoneAwarenessConfig: - AvailabilityZoneCount: 3 + Fn::If: + - isDev + - !Ref AWS::NoValue + - AvailabilityZoneCount: 3 EncryptionAtRestOptions: Enabled: true NodeToNodeEncryptionOptions: @@ -507,15 +577,20 @@ resources: LogPublishingOptions: AUDIT_LOGS: CloudWatchLogsLogGroupArn: !GetAtt OpenSearchAuditLogGroup.Arn - Enabled : true + Enabled: true ES_APPLICATION_LOGS: CloudWatchLogsLogGroupArn: !GetAtt OpenSearchErrorLogGroup.Arn - Enabled : true + Enabled: true VPCOptions: SecurityGroupIds: - !Ref OpenSearchSecurityGroup - SubnetIds: >- - ${self:custom.vpc.privateSubnets} + SubnetIds: + Fn::If: + - isDev + - - ${self:custom.vpc.privateSubnets.0} + - >- + ${self:custom.vpc.privateSubnets} + OpenSearchRole: Type: AWS::IAM::Role Properties: @@ -553,27 +628,29 @@ resources: Properties: GroupDescription: Security group for Sink Lambda Function. VpcId: ${self:custom.vpc.id} - OpenSearchSecurityGroupEgress: - Type: AWS::EC2::SecurityGroupEgress - Properties: - GroupId: !Ref OpenSearchSecurityGroup - IpProtocol: -1 - CidrIp: 0.0.0.0/0 OpenSearchSecurityGroupIngress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupId: !Ref OpenSearchSecurityGroup - IpProtocol: -1 + IpProtocol: tcp + FromPort: 443 + ToPort: 443 + CidrIp: 10.0.0.0/8 + OpenSearchSecurityGroupEgress: # If we don't specify egress, all is allowed by default; this basically shuts off outbound + Type: AWS::EC2::SecurityGroupEgress + Properties: + GroupId: !Ref OpenSearchSecurityGroup + IpProtocol: tcp FromPort: 443 ToPort: 443 - CidrIp: 10.0.0.0/0 + CidrIp: 127.0.0.1/32 OpenSearchAuditLogGroup: Type: AWS::Logs::LogGroup - Properties: + Properties: LogGroupName: /aws/opensearch/${self:service}-${sls:stage}-audit OpenSearchErrorLogGroup: Type: AWS::Logs::LogGroup - Properties: + Properties: LogGroupName: /aws/opensearch/${self:service}-${sls:stage}-error MapRole: Type: Custom::ClusterInfo @@ -582,6 +659,21 @@ resources: MasterRoleToAssume: !GetAtt OpenSearchMasterRole.Arn OSRoleName: all_access IAMRoleName: !Sub "arn:aws:iam::${AWS::AccountId}:role/*" + CreateTopics: + Type: AWS::CloudFormation::CustomResource + Properties: + ServiceToken: !GetAtt CreateTopicsLambdaFunction.Arn + BrokerString: ${self:custom.brokerString} + TopicsToCreate: + - topic: ${param:topicNamespace}aws.onemac.migration.cdc + CleanupTopics: + Type: AWS::CloudFormation::CustomResource + Condition: isDev # We only clean up topics in lower environments where isDev is true + Properties: + ServiceToken: !GetAtt CleanupKafkaLambdaFunction.Arn + BrokerString: ${self:custom.brokerString} + TopicPatternsToDelete: + - ${param:topicNamespace}aws.onemac.migration.cdc Outputs: OpenSearchDomainArn: Value: !GetAtt OpenSearch.Arn @@ -589,3 +681,5 @@ resources: Value: !Sub https://${OpenSearch.DomainEndpoint} OpenSearchDashboardEndpoint: Value: !Sub https://${OpenSearch.DomainEndpoint}/_dashboards + TopicName: + Value: ${param:topicNamespace}aws.onemac.migration.cdc diff --git a/src/services/data/tsconfig.json b/src/services/data/tsconfig.json index 3c9646ea64..b1cd79dda6 100644 --- a/src/services/data/tsconfig.json +++ b/src/services/data/tsconfig.json @@ -2,6 +2,7 @@ "compilerOptions": { "target": "ES2016", "resolveJsonModule": true, - "moduleResolution": "node" + "moduleResolution": "node", + "allowSyntheticDefaultImports": true } } diff --git a/src/services/ui/.eslintrc.cjs b/src/services/ui/.eslintrc.cjs index c8df607506..f5e6e3f003 100644 --- a/src/services/ui/.eslintrc.cjs +++ b/src/services/ui/.eslintrc.cjs @@ -1,4 +1,7 @@ module.exports = { root: true, extends: ["custom"], + rules: { + "@typescript-eslint/no-empty-interface": "off", + }, }; diff --git a/src/services/ui/components.json b/src/services/ui/components.json new file mode 100644 index 0000000000..88a9a6e0e9 --- /dev/null +++ b/src/services/ui/components.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "tailwind.config.js", + "css": "src/index.css", + "baseColor": "slate", + "cssVariables": true + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils" + } +} \ No newline at end of file diff --git a/src/services/ui/e2e/tests/home/index.spec.ts b/src/services/ui/e2e/tests/home/index.spec.ts index 924aac6e0c..12ef20ac1f 100644 --- a/src/services/ui/e2e/tests/home/index.spec.ts +++ b/src/services/ui/e2e/tests/home/index.spec.ts @@ -1,30 +1,45 @@ +import * as Libs from "../../../../../libs/secrets-manager-lib"; import { test, expect } from "@playwright/test"; import { testUsers } from "e2e/utils/users"; +const stage = + process.env.STAGE_NAME === "production" || process.env.STAGE_NAME === "val" + ? process.env.STAGE_NAME + : "default"; +const secretId = `${process.env.PROJECT}/${stage}/bootstrapUsersPassword`; -const password = process.env.BOOTSTRAP_USERS_PW!; +const password = (await Libs.getSecretsValue( + process.env.REGION_A as string, + secretId +)) as string; test("has title", async ({ page }) => { await page.goto("/"); await expect(page).toHaveTitle(/CMS MAKO/); }); -test("see frequesntly asked questions header when in faq page", async ({ page }) => { +test("see frequently asked questions header when in faq page", async ({ page }) => { await page.goto("/"); - await page.getByRole("link", { name: "FAQ" }).click(); - - const foundFaqHeading = await page.getByRole("heading", { name: "Frequently Asked Questions" }).isVisible(); + const popup = page.waitForEvent("popup"); + await page.getByRole("link", { name: "FAQ", exact: true }).click(); + const foundFaqHeading = await popup; + await foundFaqHeading.getByRole("heading", { name: "Frequently Asked Questions" }) + .isVisible(); expect(foundFaqHeading).toBeTruthy(); }); -test("see dahsboard link when log in", async ({ page }) => { +test("see dashboard link when log in", async ({ page }) => { await page.goto("/"); await page.getByRole("button", { name: "Sign In" }).click(); - await page.getByRole("textbox", { name: "name@host.com" }).type(testUsers.state); + await page + .getByRole("textbox", { name: "name@host.com" }) + .type(testUsers.state); await page.getByRole("textbox", { name: "Password" }).type(password); await page.getByRole("button", { name: "submit" }).click(); await page.getByRole("link", { name: "Dashboard" }).click(); - const dashboardLinkVisible = await page.getByRole("link", { name: "Dashboard" }).isVisible(); + const dashboardLinkVisible = await page + .getByRole("link", { name: "Dashboard" }) + .isVisible(); expect(dashboardLinkVisible).toBeTruthy(); }); @@ -34,7 +49,5 @@ test("failed incorrect login username", async ({ page }) => { await page.getByRole("textbox", { name: "name@host.com" }).type("."); await page.getByRole("textbox", { name: "Password" }).type(password); await page.getByRole("button", { name: "submit" }).click(); - await page.getByRole("paragraph").isVisible(); - const invalidInputTest = await page.$("p:has-text(\"The username or password you entered is invalid\")"); - expect(invalidInputTest).toBeTruthy(); + await page.locator("#loginErrorMessage").first().isVisible(); }); diff --git a/src/services/ui/package.json b/src/services/ui/package.json index 6efeb0a9ea..5de0f4a9b5 100644 --- a/src/services/ui/package.json +++ b/src/services/ui/package.json @@ -18,9 +18,10 @@ "@aws-amplify/auth": "^5.4.0", "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", + "@fontsource/open-sans": "^5.0.17", "@heroicons/react": "^2.0.17", "@hookform/error-message": "^2.0.1", - "@hookform/resolvers": "^3.1.0", + "@hookform/resolvers": "^3.3.2", "@mui/lab": "^5.0.0-alpha.136", "@mui/material": "^5.14.1", "@mui/styled-engine": "^5.13.2", @@ -29,10 +30,16 @@ "@mui/x-data-grid": "^6.10.0", "@radix-ui/react-accordion": "^1.1.2", "@radix-ui/react-checkbox": "^1.0.4", - "@radix-ui/react-dialog": "^1.0.4", + "@radix-ui/react-dialog": "^1.0.5", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/react-label": "^2.0.2", "@radix-ui/react-popover": "^1.0.6", + "@radix-ui/react-radio-group": "^1.1.3", + "@radix-ui/react-select": "^1.2.2", "@radix-ui/react-slot": "^1.0.2", + "@radix-ui/react-switch": "^1.0.3", "@radix-ui/react-tabs": "^1.0.4", + "@radix-ui/react-toggle": "^1.0.3", "@tanstack/react-query": "^4.29.1", "@tanstack/react-query-devtools": "^4.29.5", "@types/file-saver": "^2.0.5", @@ -44,25 +51,29 @@ "file-saver": "^2.0.5", "framer-motion": "^10.16.1", "jszip": "^3.10.1", - "lucide-react": "^0.268.0", + "lucide-react": "^0.291.0", "lz-string": "^1.5.0", "react": "^18.2.0", "react-day-picker": "^8.8.1", "react-dom": "^18.2.0", - "react-hook-form": "^7.43.9", + "react-dropzone": "^14.2.3", + "react-hook-form": "^7.46.2", "react-loader-spinner": "^5.3.4", "react-router-dom": "^6.10.0", "react-select": "^5.7.4", + "shared-types": "*", + "shared-utils": "*", "tailwind-merge": "^1.14.0", - "tailwindcss-animate": "^1.0.6", + "tailwindcss-animate": "^1.0.7", "uuid": "^9.0.0", - "zod": "^3.21.4" + "zod": "^3.22.3" }, "devDependencies": { - "@playwright/test": "^1.34.0", + "@playwright/test": "^1.38.0", "@tailwindcss/typography": "^0.5.10", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^14.0.0", + "@testing-library/user-event": "^14.5.1", "@types/lodash.debounce": "^4.0.7", "@types/node": "^20.4.2", "@types/react": "^18.0.28", @@ -77,12 +88,10 @@ "eslint-config-custom": "*", "eslint-plugin-react": "^7.32.2", "jsdom": "^21.1.1", - "postcss": "^8.4.21", + "postcss": "^8.4.31", "serverless-s3-sync": "^3.1.0", - "shared-types": "*", - "shared-utils": "*", "tailwindcss": "^3.3.1", - "typescript": "^4.9.3", + "typescript": "^5.2.0", "vite": "^4.2.0", "vitest": "^0.30.1" } diff --git a/src/services/ui/playwright.config.ts b/src/services/ui/playwright.config.ts index 83f932fc5a..61159b6c7d 100644 --- a/src/services/ui/playwright.config.ts +++ b/src/services/ui/playwright.config.ts @@ -1,5 +1,4 @@ import { defineConfig, devices } from "@playwright/test"; - import dotenv from "dotenv"; import path from "path"; import { fileURLToPath } from "url"; diff --git a/src/services/ui/public/images/logos/macpro.png b/src/services/ui/public/images/logos/macpro.png new file mode 100644 index 0000000000..4a849372e0 Binary files /dev/null and b/src/services/ui/public/images/logos/macpro.png differ diff --git a/src/services/ui/public/images/logos/mmdl.png b/src/services/ui/public/images/logos/mmdl.png new file mode 100644 index 0000000000..db9db306f6 Binary files /dev/null and b/src/services/ui/public/images/logos/mmdl.png differ diff --git a/src/services/ui/serverless.yml b/src/services/ui/serverless.yml index cf7e34a682..e319c62de3 100644 --- a/src/services/ui/serverless.yml +++ b/src/services/ui/serverless.yml @@ -44,7 +44,6 @@ custom: VITE_COGNITO_USER_POOL_CLIENT_DOMAIN=${param:CognitoUserPoolClientDomain} VITE_COGNITO_REDIRECT_SIGNIN=${param:ApplicationEndpointUrl} VITE_COGNITO_REDIRECT_SIGNOUT=${param:ApplicationEndpointUrl} - BOOTSTRAP_USERS_PW=${param:BootstrapUsersPassword} """ > .env.local yarn build deploy:finalize: | diff --git a/src/services/ui/src/api/getAttachmentUrl.ts b/src/services/ui/src/api/getAttachmentUrl.ts index 646478b7ba..daa79283b8 100644 --- a/src/services/ui/src/api/getAttachmentUrl.ts +++ b/src/services/ui/src/api/getAttachmentUrl.ts @@ -3,13 +3,15 @@ import { API } from "aws-amplify"; export const getAttachmentUrl = async ( id: string, bucket: string, - key: string + key: string, + filename: string ) => { const response = await API.post("os", "/getAttachmentUrl", { body: { id, bucket, key, + filename, }, }); return response.url as string; diff --git a/src/services/ui/src/api/index.ts b/src/services/ui/src/api/index.ts index 8165896841..7778f91a6c 100644 --- a/src/services/ui/src/api/index.ts +++ b/src/services/ui/src/api/index.ts @@ -1,3 +1,4 @@ export * from "./useSearch"; export * from "./useGetItem"; export * from "./getAttachmentUrl"; +export * from "./useGetPackageActions"; diff --git a/src/services/ui/src/api/useGetItem.ts b/src/services/ui/src/api/useGetItem.ts index e44d376445..4f0ff0f2dd 100644 --- a/src/services/ui/src/api/useGetItem.ts +++ b/src/services/ui/src/api/useGetItem.ts @@ -1,8 +1,8 @@ import { useQuery, UseQueryOptions } from "@tanstack/react-query"; import { API } from "aws-amplify"; -import { OsHit, OsMainSourceItem, ReactQueryApiError } from "shared-types"; +import { ItemResult, ReactQueryApiError } from "shared-types"; -export const getItem = async (id: string): Promise> => { +export const getItem = async (id: string): Promise => { const record = await API.post("os", "/item", { body: { id } }); return record; @@ -10,9 +10,9 @@ export const getItem = async (id: string): Promise> => { export const useGetItem = ( id: string, - options?: UseQueryOptions, ReactQueryApiError> + options?: UseQueryOptions ) => { - return useQuery, ReactQueryApiError>( + return useQuery( ["record", id], () => getItem(id), options diff --git a/src/services/ui/src/api/useGetPackageActions.ts b/src/services/ui/src/api/useGetPackageActions.ts new file mode 100644 index 0000000000..389c59e2d9 --- /dev/null +++ b/src/services/ui/src/api/useGetPackageActions.ts @@ -0,0 +1,19 @@ +import { Action, ReactQueryApiError } from "shared-types"; +import { API } from "aws-amplify"; +import { useQuery, UseQueryOptions } from "@tanstack/react-query"; +type PackageActionsResponse = { + actions: Action[]; +}; +const getPackageActions = async (id: string): Promise => + await API.post("os", "/getPackageActions", { body: { id } }); + +export const useGetPackageActions = ( + id: string, + options?: UseQueryOptions +) => { + return useQuery( + ["actions", id], + () => getPackageActions(id), + options + ); +}; diff --git a/src/services/ui/src/api/useGetUser.ts b/src/services/ui/src/api/useGetUser.ts index cdbfc19502..ae79cf67b3 100644 --- a/src/services/ui/src/api/useGetUser.ts +++ b/src/services/ui/src/api/useGetUser.ts @@ -4,7 +4,9 @@ import { Auth } from "aws-amplify"; import { CognitoUserAttributes } from "shared-types"; import { isCmsUser } from "shared-utils"; -export const getUser = async () => { +export type OneMacUser = { isCms?: boolean, user: CognitoUserAttributes | null } + +export const getUser = async (): Promise => { try { const authenticatedUser = await Auth.currentAuthenticatedUser(); const attributes = await Auth.userAttributes(authenticatedUser); @@ -12,13 +14,16 @@ export const getUser = async () => { obj[item.Name] = item.Value; return obj; }, {}) as unknown as CognitoUserAttributes; - - const isCms = isCmsUser(user); - - return { user, isCms }; + if (user["custom:cms-roles"]) { + const isCms = isCmsUser(user); + return { user, isCms } satisfies OneMacUser; + } else { + user["custom:cms-roles"] = ""; + return { user, isCms: false } satisfies OneMacUser; + } } catch (e) { console.log({ e }); - return { user: null }; + return { user: null } satisfies OneMacUser; } }; diff --git a/src/services/ui/src/api/useSearch.ts b/src/services/ui/src/api/useSearch.ts index 8526c7f0bd..5e5f9504b9 100644 --- a/src/services/ui/src/api/useSearch.ts +++ b/src/services/ui/src/api/useSearch.ts @@ -12,6 +12,7 @@ import type { OsFilterable, OsAggQuery, OsMainSearchResponse, + OsMainSourceItem, } from "shared-types"; type QueryProps = { @@ -38,11 +39,15 @@ export const getSearchData = async ( }; export const getAllSearchData = async (filters?: OsFilterable[]) => { - if (!filters) return; + if (!filters) return []; const recursiveSearch = async ( startPage: number - ): Promise => { + ): Promise => { + if (startPage * 1000 >= 10000) { + return []; + } + const searchData = await API.post("os", "/search", { body: { ...filterQueryBuilder(filters), @@ -50,8 +55,15 @@ export const getAllSearchData = async (filters?: OsFilterable[]) => { }, }); - if (searchData?.hits.hits.length < 1000) return searchData.hits.hits || []; - return searchData.hits.hits.concat(await recursiveSearch(startPage + 1)); + if (searchData?.hits.hits.length < 1000) { + return searchData.hits.hits.map((hit: any) => ({ ...hit._source })) || []; + } + + return searchData.hits.hits + .map((hit: any) => ({ + ...hit._source, + })) + .concat(await recursiveSearch(startPage + 1)); }; return await recursiveSearch(0); diff --git a/src/services/ui/src/api/useToggleRaiWithdraw.ts b/src/services/ui/src/api/useToggleRaiWithdraw.ts new file mode 100644 index 0000000000..7dcf16a6eb --- /dev/null +++ b/src/services/ui/src/api/useToggleRaiWithdraw.ts @@ -0,0 +1,44 @@ +import { PackageActionURL } from "@/lib"; +import { API } from "aws-amplify"; +import { Action, ReactQueryApiError } from "shared-types"; +import { useMutation, UseMutationOptions } from "@tanstack/react-query"; + +type ToggleRaiWithdrawResponse = { + body: { + message: string; + }; +}; +const disable: PackageActionURL = "/action/disable-rai-withdraw"; +const enable: PackageActionURL = "/action/enable-rai-withdraw"; +const validActions: Action[] = [ + Action.ENABLE_RAI_WITHDRAW, + Action.DISABLE_RAI_WITHDRAW, +]; +const url = (a: Action) => { + if (!validActions.includes(a)) + throw Error("Invalid package action for this endpoint."); + switch (a) { + case Action.ENABLE_RAI_WITHDRAW: + return enable; + case Action.DISABLE_RAI_WITHDRAW: + return disable; + } +}; + +const toggleRaiWithdraw = async ( + id: string, + action: Action +): Promise => + await API.post("os", url(action)!, { body: { id } }); + +export const useToggleRaiWithdraw = ( + id: string, + action: Action, + options?: UseMutationOptions +) => { + return useMutation( + ["actions", id], + () => toggleRaiWithdraw(id, action), + options + ); +}; diff --git a/src/services/ui/src/assets/onboarding/IDMInstructionsforOneMACUsers.pdf b/src/services/ui/src/assets/onboarding/IDMInstructionsforOneMACUsers.pdf new file mode 100644 index 0000000000..d1a78113fa Binary files /dev/null and b/src/services/ui/src/assets/onboarding/IDMInstructionsforOneMACUsers.pdf differ diff --git a/src/services/ui/src/assets/onboarding/OneMACCMSUserGuide.pdf b/src/services/ui/src/assets/onboarding/OneMACCMSUserGuide.pdf new file mode 100644 index 0000000000..d0c32d010b Binary files /dev/null and b/src/services/ui/src/assets/onboarding/OneMACCMSUserGuide.pdf differ diff --git a/src/services/ui/src/assets/onboarding/OneMACIDMGuide.pdf b/src/services/ui/src/assets/onboarding/OneMACIDMGuide.pdf new file mode 100644 index 0000000000..d94c925a5a Binary files /dev/null and b/src/services/ui/src/assets/onboarding/OneMACIDMGuide.pdf differ diff --git a/src/services/ui/src/assets/onboarding/OneMACStateAdministratorGuide.pdf b/src/services/ui/src/assets/onboarding/OneMACStateAdministratorGuide.pdf new file mode 100644 index 0000000000..efc8964bba Binary files /dev/null and b/src/services/ui/src/assets/onboarding/OneMACStateAdministratorGuide.pdf differ diff --git a/src/services/ui/src/assets/onboarding/OneMACStateUserGuide.pdf b/src/services/ui/src/assets/onboarding/OneMACStateUserGuide.pdf new file mode 100644 index 0000000000..47be0fe16d Binary files /dev/null and b/src/services/ui/src/assets/onboarding/OneMACStateUserGuide.pdf differ diff --git a/src/services/ui/src/assets/onboarding/WelcometoOneMAC.pdf b/src/services/ui/src/assets/onboarding/WelcometoOneMAC.pdf new file mode 100644 index 0000000000..02ad5327b2 Binary files /dev/null and b/src/services/ui/src/assets/onboarding/WelcometoOneMAC.pdf differ diff --git a/src/services/ui/src/assets/onboarding/eligibility-crosswalk-paper-based-state-plan-macpro.pdf b/src/services/ui/src/assets/onboarding/eligibility-crosswalk-paper-based-state-plan-macpro.pdf new file mode 100644 index 0000000000..f9eae27808 Binary files /dev/null and b/src/services/ui/src/assets/onboarding/eligibility-crosswalk-paper-based-state-plan-macpro.pdf differ diff --git a/src/services/ui/src/assets/onemac_logo.svg b/src/services/ui/src/assets/onemac_logo.svg index cc85acacfa..cb275bfc47 100644 --- a/src/services/ui/src/assets/onemac_logo.svg +++ b/src/services/ui/src/assets/onemac_logo.svg @@ -1,9 +1,9 @@ - - - - - - - - + + + + + + + + diff --git a/src/services/ui/src/components/Accordion/index.tsx b/src/services/ui/src/components/Accordion/index.tsx index e42ff0fa66..9ef2156d64 100644 --- a/src/services/ui/src/components/Accordion/index.tsx +++ b/src/services/ui/src/components/Accordion/index.tsx @@ -1,11 +1,8 @@ import * as React from "react"; import * as AccordionPrimitive from "@radix-ui/react-accordion"; import { ChevronDown } from "lucide-react"; - import { cn } from "@/lib/utils"; - const Accordion = AccordionPrimitive.Root; - type AccordionItemProps = { className?: string; // Add className to prop type definition } & React.ComponentPropsWithoutRef; @@ -56,10 +53,7 @@ const AccordionContent = React.forwardRef< >(({ className, children, ...props }, ref) => (
{children}
diff --git a/src/services/ui/src/components/AdditionalInfo/index.tsx b/src/services/ui/src/components/AdditionalInfo/index.tsx index d9d4eaa138..5c7600a9f2 100644 --- a/src/services/ui/src/components/AdditionalInfo/index.tsx +++ b/src/services/ui/src/components/AdditionalInfo/index.tsx @@ -7,7 +7,10 @@ export const AdditionalInfo = ({ }) => { return (
-

{additionalInformation || "None"}

+

+ {additionalInformation || + "No additional information has been submitted"} +

); }; diff --git a/src/services/ui/src/components/AttachmentsList/index.tsx b/src/services/ui/src/components/AttachmentsList/index.tsx index 9940ca3f7a..64ae02d129 100644 --- a/src/services/ui/src/components/AttachmentsList/index.tsx +++ b/src/services/ui/src/components/AttachmentsList/index.tsx @@ -1,11 +1,12 @@ import { getAttachmentUrl } from "@/api"; import { format } from "date-fns"; +import { BLANK_VALUE } from "@/consts"; import { DownloadIcon } from "lucide-react"; import JSZip from "jszip"; import { saveAs } from "file-saver"; import { OsMainSourceItem } from "shared-types"; import { useState } from "react"; -import { Button } from "../Button"; +import { Button } from "../Inputs/button"; import { Table, TableBody, @@ -22,11 +23,8 @@ type AttachmentList = { uploadDate: number; bucket: string; key: string; - s3Key: string; filename: string; title: string; - contentType: string; - url: string; } | null)[] | null; }; @@ -37,20 +35,7 @@ const handleDownloadAll = async (data: AttachmentList) => { (attachment): attachment is NonNullable => attachment !== null ); - - if (validAttachments.length > 0) { - const attachmentPromises = validAttachments.map(async (attachment) => { - const url = await getAttachmentUrl( - data.id, - attachment.bucket, - attachment.key - ); - return { ...attachment, url }; - }); - - const resolvedAttachments = await Promise.all(attachmentPromises); - downloadAll(resolvedAttachments, data.id); - } + downloadAll(validAttachments, data.id); } }; @@ -83,7 +68,8 @@ export const Attachmentslist = (data: AttachmentList) => { const url = await getAttachmentUrl( data.id, attachment.bucket, - attachment.key + attachment.key, + attachment.filename ); console.log(url); window.open(url); @@ -101,7 +87,7 @@ export const Attachmentslist = (data: AttachmentList) => {

{format(attachment.uploadDate, "h:mm a")}

) : ( -

Unknown

+

{BLANK_VALUE}

)} @@ -109,7 +95,9 @@ export const Attachmentslist = (data: AttachmentList) => { ); }) ) : ( -

No Attachments To Show

+

+ No attachments have been submitted. +

)} @@ -143,8 +131,16 @@ async function downloadAll( attachments .map(async (attachment) => { if (!attachment) return null; + let url = ""; try { - const resp = await fetch(attachment.url); + url = await getAttachmentUrl( + id, + attachment.bucket, + attachment.key, + attachment.filename + ); + + const resp = await fetch(url); if (!resp.ok) throw resp; return { filename: attachment.filename, @@ -153,7 +149,7 @@ async function downloadAll( }; } catch (e) { console.error( - `Failed to download file: ${attachment.filename} ${attachment.url}`, + `Failed to download file: ${attachment.filename} ${url}`, e ); } @@ -162,7 +158,7 @@ async function downloadAll( )) as { filename: string; title: string; contents: Blob }[]; const zip = new JSZip(); for (const { filename, title, contents } of downloadList) { - zip.file(filename, contents, { comment: title }); + zip.file(filename, contents, { comment: title, date: new Date() }); } saveAs(await zip.generateAsync({ type: "blob" }), `${id || "onemac"}.zip`); } diff --git a/src/services/ui/src/components/BreadCrumb/BreadCrumb.test.tsx b/src/services/ui/src/components/BreadCrumb/BreadCrumb.test.tsx new file mode 100644 index 0000000000..9ca3a55e87 --- /dev/null +++ b/src/services/ui/src/components/BreadCrumb/BreadCrumb.test.tsx @@ -0,0 +1,70 @@ +import { describe, test, expect, beforeAll, beforeEach } from "vitest"; +import { render, screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { BreadCrumb, BreadCrumbBar } from "./BreadCrumb"; +import { BrowserRouter, Route, Routes, useLocation } from "react-router-dom"; + +export const LocationDisplay = () => { + const location = useLocation(); + + return
{location.pathname}
; +}; + +describe("Bread Crumb Tests", () => { + describe("Bread Crumb Routing", () => { + test("Sucessfully navigate using breadcrumbs", async () => { + render( + <> + + + + + + + Click Me + + + , + { wrapper: BrowserRouter } + ); + + const user = userEvent.setup(); + + await user.click(screen.getByText(/click me/i)); + expect(screen.getByText("/test")).toBeInTheDocument(); + }); + }); + + describe("Bread Crumb Interations", async () => { + beforeEach(() => { + render( + + + Home + + + Test Dashboard + + + Test Item + + , + { + wrapper: BrowserRouter, + } + ); + }); + + test("active element is styled different", async () => { + const homeBreadCrumb = screen.getByText("Home"); + const dashboardBreadCrumb = screen.getByText("Test Dashboard"); + const itemBreadCrumb = screen.getByText("Test Item"); + + expect(homeBreadCrumb.classList.contains("underline")).toBeTruthy(); + expect(dashboardBreadCrumb.classList.contains("underline")).toBeTruthy(); + expect(itemBreadCrumb.classList.contains("underline")).toBeFalsy(); + }); + }); + + // TODO: Write a test to test the functionality of the BreadCrumbs component with a test config passed in +}); diff --git a/src/services/ui/src/components/BreadCrumb/BreadCrumb.tsx b/src/services/ui/src/components/BreadCrumb/BreadCrumb.tsx new file mode 100644 index 0000000000..bbd3787738 --- /dev/null +++ b/src/services/ui/src/components/BreadCrumb/BreadCrumb.tsx @@ -0,0 +1,85 @@ +import { Link } from "react-router-dom"; +import { type ReactNode } from "react"; +import { ChevronRight } from "lucide-react"; + +type BreadCrumbsProps = { + options: BreadCrumbConfig[]; +}; + +export type BreadCrumbConfig = { + default?: boolean; + order: number; + to: string; + displayText: string; +}; + +export const BreadCrumbs = ({ options }: BreadCrumbsProps) => { + const defaultBreadCrumb = options.find((option) => option.default); + + return ( + + {defaultBreadCrumb && ( + + {defaultBreadCrumb.displayText} + + )} + {/* After this we map over the config and check to see if the breadcrumb needs to be displayed. Proper route paths are important here. It should be hierarchical */} + {options + .filter((option) => !option.default) + .toSorted((option, prevOption) => option.order - prevOption.order) + .map(({ displayText, to }, index, optionsArray) => { + return ( + + {displayText} + + ); + })} + + ); +}; + +type BreadCrumbProps = { + to: string; + active?: boolean; + showSeperator?: boolean; + seperator?: ReactNode; +}; + +export const BreadCrumb = ({ + to, + seperator = , + showSeperator = true, + active = true, + children, +}: React.PropsWithChildren) => { + return ( +
  • + {showSeperator && {seperator}} + + {active && ( + + {children} + + )} + {!active && {children}} +
  • + ); +}; + +export const BreadCrumbSeperator = () => ; + +export const BreadCrumbBar = ({ children }: React.PropsWithChildren) => { + return ( + + ); +}; diff --git a/src/services/ui/src/components/BreadCrumb/index.tsx b/src/services/ui/src/components/BreadCrumb/index.tsx new file mode 100644 index 0000000000..a3b184a87e --- /dev/null +++ b/src/services/ui/src/components/BreadCrumb/index.tsx @@ -0,0 +1 @@ +export * from "./BreadCrumb"; diff --git a/src/services/ui/src/components/Cards/CardWithTopBorder.tsx b/src/services/ui/src/components/Cards/CardWithTopBorder.tsx index c3d3a76fd1..461898403a 100644 --- a/src/services/ui/src/components/Cards/CardWithTopBorder.tsx +++ b/src/services/ui/src/components/Cards/CardWithTopBorder.tsx @@ -1,19 +1,27 @@ +import { FC, ReactNode } from "react"; +import { cn } from "@/lib"; + interface CardWithTopBorderProps { - children: React.ReactNode; + children: ReactNode; + className?: string; } - -export const CardWithTopBorder: React.FC = ({ +export const CardWithTopBorder: FC = ({ children, + className, }: CardWithTopBorderProps) => { return ( -
    +
    -
    {children}
    +
    + {children} +
    ); }; diff --git a/src/services/ui/src/components/Cards/OptionCard.test.tsx b/src/services/ui/src/components/Cards/OptionCard.test.tsx new file mode 100644 index 0000000000..78af99e2f4 --- /dev/null +++ b/src/services/ui/src/components/Cards/OptionCard.test.tsx @@ -0,0 +1,63 @@ +import { describe, test, expect, beforeEach } from "vitest"; +import { render, screen } from "@testing-library/react"; +import { OptionCard, OptionFieldset } from "@/components/Cards/OptionCard"; +import { ROUTES } from "@/routes"; +import { BrowserRouter } from "react-router-dom"; + +describe("OptionCard Component System", () => { + describe("OptionFieldset", () => { + beforeEach(() => { + render( + + Testing rendering of children + + ); + }); + test("legend prop populates legend element in fieldset", () => { + expect( + screen.getByRole("group", { name: "Test Legend" }) + ).toBeInTheDocument(); + }); + test("renders children", () => { + expect( + screen.getByText("Testing rendering of children") + ).toBeInTheDocument(); + }); + }); + describe("OptionCard", () => { + const renderOptionCard = (altBg: boolean) => { + render( + + + + ); + }; + test("default background is white", () => { + renderOptionCard(false); + const innerWrapper = screen.getByTestId("card-inner-wrapper"); + expect(innerWrapper.className.includes("bg-white")).toBeTruthy(); + expect(innerWrapper.className.includes("bg-slate-100")).toBeFalsy(); + }); + test("option for alternate background color", () => { + renderOptionCard(true); + const innerWrapper = screen.getByTestId("card-inner-wrapper"); + expect(innerWrapper.className.includes("bg-slate-100")).toBeTruthy(); + expect(innerWrapper.className.includes("bg-white")).toBeFalsy(); + }); + test("title is rendered as an h3 and styled", () => { + renderOptionCard(false); + const header = screen.getByRole("heading", { level: 3 }); + expect(header).toHaveTextContent("Test Card Title"); + expect(header).toHaveClass("text-lg text-sky-600 font-bold my-2"); + }); + test("description is rendered", () => { + renderOptionCard(false); + expect(screen.getByText("Test Card Description")).toBeInTheDocument(); + }); + }); +}); diff --git a/src/services/ui/src/components/Cards/OptionCard.tsx b/src/services/ui/src/components/Cards/OptionCard.tsx new file mode 100644 index 0000000000..6c4963d1f1 --- /dev/null +++ b/src/services/ui/src/components/Cards/OptionCard.tsx @@ -0,0 +1,56 @@ +import React, { PropsWithChildren, ReactNode } from "react"; +import { Link } from "react-router-dom"; +import { ROUTES } from "@/routes"; +import { ChevronRight } from "lucide-react"; +import { CardWithTopBorder } from "@/components"; + +export type OptionCardFieldsetProps = PropsWithChildren<{ + legend: string; +}>; +export type MACFieldsetOption = { + title: string; + description: ReactNode; + linkTo: ROUTES | string; + altBg?: boolean; +}; +/** A fieldset for nesting {@link OptionCard} with MACCard styling */ +export const OptionFieldset = ({ + children, + legend, +}: OptionCardFieldsetProps) => { + return ( +
    +
    + {legend} + {children} +
    +
    + ); +}; +/** An element for use in options lists that lead to a destination, such as + * the new submission options found in {@link NewSubmissionInitialOptions} */ +export const OptionCard = ({ + title, + description, + linkTo, + altBg = false, +}: MACFieldsetOption) => { + return ( + + ); +}; diff --git a/src/services/ui/src/components/Chip/index.tsx b/src/services/ui/src/components/Chip/index.tsx new file mode 100644 index 0000000000..65a11b4924 --- /dev/null +++ b/src/services/ui/src/components/Chip/index.tsx @@ -0,0 +1,65 @@ +import * as React from "react"; +import { XIcon } from "lucide-react"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "@/lib/utils"; + +const chipVariants = cva( + "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 whitespace-nowrap", + { + variants: { + variant: { + default: "bg-primary/80 text-slate-50 hover:bg-primary/70 ", + function: "bg-slate-300 hover:bg-primary/90 hover:text-slate-50", + noIcon: "bg-primary text-slate-50 hover:bg-primary/90", + destructive: "bg-slate-300 hover:bg-destructive hover:text-slate-50", + }, + }, + defaultVariants: { + variant: "default", + }, + } +); + +export interface ChipProps extends VariantProps { + className?: string; + onChipClick?: () => void; + onIconClick?: () => void; +} + +const Chip = ({ + className, + onChipClick, + onIconClick, + variant, + ...props +}: React.PropsWithChildren) => { + const noIcon = variant === "noIcon" || variant === "destructive"; + return ( +
    +
    {props.children}
    + {!noIcon && ( + + )} +
    + ); +}; + +Chip.displayName = "Chip"; + +export { Chip, chipVariants }; diff --git a/src/services/ui/src/components/Container/SimplePageContainer.tsx b/src/services/ui/src/components/Container/SimplePageContainer.tsx new file mode 100644 index 0000000000..cbb66aa4c1 --- /dev/null +++ b/src/services/ui/src/components/Container/SimplePageContainer.tsx @@ -0,0 +1,5 @@ +import { PropsWithChildren } from "react"; + +export const SimplePageContainer = ({ children }: PropsWithChildren) => ( +
    {children}
    +); diff --git a/src/services/ui/src/components/Container/index.ts b/src/services/ui/src/components/Container/index.ts new file mode 100644 index 0000000000..c72fa127d6 --- /dev/null +++ b/src/services/ui/src/components/Container/index.ts @@ -0,0 +1 @@ +export { SimplePageContainer } from "./SimplePageContainer"; diff --git a/src/services/ui/src/components/Context/userContext.tsx b/src/services/ui/src/components/Context/userContext.tsx new file mode 100644 index 0000000000..44a2b94bb8 --- /dev/null +++ b/src/services/ui/src/components/Context/userContext.tsx @@ -0,0 +1,14 @@ +import { OneMacUser, useGetUser } from "@/api/useGetUser"; +import { PropsWithChildren, createContext, useContext } from "react"; + +const initialState = { user: null }; + +export const UserContext = createContext(initialState); +export const UserContextProvider = ({ children }: PropsWithChildren) => { + const { data: userData } = useGetUser(); + return ( + {children} + ); +}; + +export const useUserContext = () => useContext(UserContext); diff --git a/src/services/ui/src/components/Dialog/index.tsx b/src/services/ui/src/components/Dialog/index.tsx new file mode 100644 index 0000000000..161465f3b4 --- /dev/null +++ b/src/services/ui/src/components/Dialog/index.tsx @@ -0,0 +1,132 @@ +import * as React from "react"; +import * as DialogPrimitive from "@radix-ui/react-dialog"; +import { Cross2Icon } from "@radix-ui/react-icons"; + +import { cn } from "@/lib/utils"; + +const Dialog = DialogPrimitive.Root; + +const DialogTrigger = DialogPrimitive.Trigger; + +const DialogPortal = DialogPrimitive.Portal; + +const DialogClose = DialogPrimitive.Close; + +const DialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + className?: string; + } +>(({ className, ...props }, ref) => ( + +)); +DialogOverlay.displayName = DialogPrimitive.Overlay.displayName; + +const DialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + className?: string; + } +>(({ className, children, ...props }, ref) => ( + + + + {children} + + + Close + + + +)); +DialogContent.displayName = DialogPrimitive.Content.displayName; + +const DialogHeader = ({ + className, + ...props +}: React.HTMLAttributes & { + className?: string; +}) => ( +
    +); +DialogHeader.displayName = "DialogHeader"; + +const DialogFooter = ({ + className, + ...props +}: React.HTMLAttributes & { + className?: string; +}) => ( +
    +); +DialogFooter.displayName = "DialogFooter"; + +const DialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + className?: string; + } +>(({ className, ...props }, ref) => ( + +)); +DialogTitle.displayName = DialogPrimitive.Title.displayName; + +const DialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + className?: string; + } +>(({ className, ...props }, ref) => ( + +)); +DialogDescription.displayName = DialogPrimitive.Description.displayName; + +export { + Dialog, + DialogPortal, + DialogOverlay, + DialogTrigger, + DialogClose, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, +}; diff --git a/src/services/ui/src/components/ExportButton/index.tsx b/src/services/ui/src/components/ExportButton/index.tsx index b44594f75f..2811844bc7 100644 --- a/src/services/ui/src/components/ExportButton/index.tsx +++ b/src/services/ui/src/components/ExportButton/index.tsx @@ -1,52 +1,56 @@ import { ExportToCsv } from "export-to-csv"; -import { getAllSearchData } from "@/api"; -import { Button } from "@/components/Button"; +import { Button } from "@/components/Inputs"; import { Download, Loader } from "lucide-react"; import { useState } from "react"; import { motion } from "framer-motion"; import { format } from "date-fns"; -import { OsMainSourceItem } from "shared-types"; -import { convertCamelCaseToWords, isISOString } from "@/utils"; -import { useGetUser } from "@/api/useGetUser"; -import { DEFAULT_FILTERS, useOsParams } from "../Opensearch"; -import { createSearchFilterable } from "../Opensearch/utils"; +import { useOsParams } from "../Opensearch"; -function formatDataForExport(obj: OsMainSourceItem, isCms?: boolean): any { - const result: any = {}; +type HeaderOptions = { + transform: (data: TData) => string; + name: string; +}; + +type Props> = { + data: TData[] | (() => Promise); + headers: HeaderOptions[]; + // | Record> +}; - for (const [key, value] of Object.entries(obj)) { - const k = convertCamelCaseToWords(key); - if (value === "undefined") { - console.log("dum"); +export const ExportButton = >({ + data, + headers, +}: Props) => { + const [loading, setLoading] = useState(false); + const params = useOsParams(); + + const generateExport = async (): Promise> => { + setLoading(true); + + const exportData: Record[] = []; + let resolvedData: TData[]; + + if (data instanceof Function) { + resolvedData = await data(); + } else { + resolvedData = data; } - if (value === null || value === undefined) { - result[k] = ""; - } else if (typeof value === "object" && !Array.isArray(value)) { - result[k] = formatDataForExport(value, isCms); - } else if (typeof value === "string" && isISOString(value)) { - result[k] = format(new Date(value), "MM/dd/yyyy"); - } else if (typeof value === "string" && key === "cmsStatus") { - if (isCms) { - result["Status"] = value; - } - } else if (typeof value === "string" && key === "stateStatus") { - if (!isCms) { - result["Status"] = value; + + for (const item of resolvedData) { + const column: Record = {}; + + for (const header of headers) { + column[header.name] = header.transform(item); } - } else { - result[k] = value; + exportData.push(column); } - } - return result; -} + setLoading(false); -export const OsExportButton = () => { - const [loading, setLoading] = useState(false); - const { data: user } = useGetUser(); - const params = useOsParams(); + return exportData; + }; - const handleExport = async () => { + const handleExport = (data: Record) => { const csvExporter = new ExportToCsv({ useKeysAsHeaders: true, filename: `${params.state.tab}-export-${format( @@ -54,48 +58,31 @@ export const OsExportButton = () => { "MM/dd/yyyy" )}`, }); - setLoading(true); - - const filters = DEFAULT_FILTERS[params.state.tab]?.filters ?? []; - const searchFilter = createSearchFilterable(params.state.search); - const osData = await getAllSearchData([ - ...params.state.filters, - ...filters, - ...searchFilter, - ]); - - const sourceItems = osData?.map((hit) => { - const filteredHit = formatDataForExport({ ...hit._source }, user?.isCms); - - // Properties to exclude from export - Reflect.deleteProperty(filteredHit, "Attachments"); - Reflect.deleteProperty(filteredHit, "Rai Responses"); - - return filteredHit; - }); - csvExporter.generateCsv(sourceItems); - - setLoading(false); + csvExporter.generateCsv(data); }; return ( - + <> + + ); }; diff --git a/src/services/ui/src/components/Footer/index.tsx b/src/services/ui/src/components/Footer/index.tsx index f785e4344c..d9fb065198 100644 --- a/src/services/ui/src/components/Footer/index.tsx +++ b/src/services/ui/src/components/Footer/index.tsx @@ -14,7 +14,7 @@ type Props = { export const Footer = ({ email, address }: Props) => { return (