diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..b36ee374 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,2 @@ +github: [demokratie-live] +custom: ["https://www.democracy-deutschland.de/#!donate"] diff --git a/.github/workflows/pull_request.yaml b/.github/workflows/pull_request.yaml index 4bdb847c..9d79fdd0 100644 --- a/.github/workflows/pull_request.yaml +++ b/.github/workflows/pull_request.yaml @@ -5,6 +5,7 @@ on: paths: - 'services/**' - 'bundestag.io/**' + - 'democracy/**' branches: - 'master' diff --git a/democracy/desktop/.dockerignore b/democracy/desktop/.dockerignore new file mode 100644 index 00000000..666cff42 --- /dev/null +++ b/democracy/desktop/.dockerignore @@ -0,0 +1,5 @@ +.env +node_modules +out +.next +.git \ No newline at end of file diff --git a/democracy/desktop/.env b/democracy/desktop/.env new file mode 100644 index 00000000..c5701674 --- /dev/null +++ b/democracy/desktop/.env @@ -0,0 +1,2 @@ +APP_API_URL=https://internal.api.democracy-app.de +APP_HOST=https://internal.api.democracy-app.de \ No newline at end of file diff --git a/democracy/desktop/.eslintignore b/democracy/desktop/.eslintignore new file mode 100644 index 00000000..9209ef5b --- /dev/null +++ b/democracy/desktop/.eslintignore @@ -0,0 +1,2 @@ +node_modules +out diff --git a/democracy/desktop/.eslintrc b/democracy/desktop/.eslintrc new file mode 100644 index 00000000..cb9b8663 --- /dev/null +++ b/democracy/desktop/.eslintrc @@ -0,0 +1,80 @@ +{ + // Configuration for JavaScript files + "extends": [ + "airbnb-base", + "next/core-web-vitals", + "plugin:prettier/recommended" + ], + "rules": { + "prettier/prettier": [ + "error", + { + "singleQuote": true, + "endOfLine": "auto" + } + ] + }, + "overrides": [ + // Configuration for TypeScript files + { + "files": ["**/*.ts", "**/*.tsx"], + "plugins": ["@typescript-eslint", "unused-imports", "tailwindcss"], + "extends": [ + "plugin:tailwindcss/recommended", + "airbnb-typescript", + "next/core-web-vitals", + "plugin:prettier/recommended" + ], + "parserOptions": { + "project": "./tsconfig.json" + }, + "rules": { + "prettier/prettier": [ + "error", + { + "singleQuote": true, + "endOfLine": "auto" + } + ], + "react/destructuring-assignment": "off", // Vscode doesn't support automatically destructuring, it's a pain to add a new variable + "jsx-a11y/anchor-is-valid": "off", // Next.js use his own internal link system + "react/require-default-props": "off", // Allow non-defined react props as undefined + "react/jsx-props-no-spreading": "off", // _app.tsx uses spread operator and also, react-hook-form + "@next/next/no-img-element": "off", // We currently not using next/image because it isn't supported with SSG mode + "import/order": [ + "error", + { + "groups": ["builtin", "external", "internal"], + "pathGroups": [ + { + "pattern": "react", + "group": "external", + "position": "before" + } + ], + "pathGroupsExcludedImportTypes": ["react"], + "newlines-between": "always", + "alphabetize": { + "order": "asc", + "caseInsensitive": true + } + } + ], + "@typescript-eslint/comma-dangle": "off", // Avoid conflict rule between Eslint and Prettier + "import/prefer-default-export": "off", // Named export is easier to refactor automatically + "tailwindcss/classnames-order": [ + "warn", + { + "officialSorting": true + } + ], // Follow the same ordering as the official plugin `prettier-plugin-tailwindcss` + "@typescript-eslint/no-unused-vars": "off", + "unused-imports/no-unused-imports": "error", + "unused-imports/no-unused-vars": [ + "error", + { "argsIgnorePattern": "^_" } + ] + } + } + ] +} diff --git a/democracy/desktop/.gitignore b/democracy/desktop/.gitignore new file mode 100644 index 00000000..b9f74b33 --- /dev/null +++ b/democracy/desktop/.gitignore @@ -0,0 +1,35 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next +/out + +# production +/build + +# misc +.DS_Store +*.pem +Thumbs.db + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# dotenv local files +.env*.local + +# local folder +local + +# vercel +.vercel diff --git a/democracy/desktop/.vscode/extensions.json b/democracy/desktop/.vscode/extensions.json new file mode 100644 index 00000000..8cf3339d --- /dev/null +++ b/democracy/desktop/.vscode/extensions.json @@ -0,0 +1,10 @@ +{ + "recommendations": [ + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "mikestead.dotenv", + "csstools.postcss", + "blanu.vscode-styled-jsx", + "bradlc.vscode-tailwindcss" + ] +} diff --git a/democracy/desktop/.vscode/launch.json b/democracy/desktop/.vscode/launch.json new file mode 100644 index 00000000..3fbd6474 --- /dev/null +++ b/democracy/desktop/.vscode/launch.json @@ -0,0 +1,31 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "chrome", + "request": "launch", + "name": "Next: Chrome", + "url": "http://localhost:3000", + "webRoot": "${workspaceFolder}" + }, + { + "type": "node", + "request": "launch", + "name": "Next: Node", + "program": "${workspaceFolder}/node_modules/.bin/next", + "args": ["dev"], + "autoAttachChildProcesses": true, + "skipFiles": ["/**"], + "console": "integratedTerminal" + } + ], + "compounds": [ + { + "name": "Next: Full", + "configurations": ["Next: Node", "Next: Chrome"] + } + ] +} diff --git a/democracy/desktop/.vscode/settings.json b/democracy/desktop/.vscode/settings.json new file mode 100644 index 00000000..b2b289d5 --- /dev/null +++ b/democracy/desktop/.vscode/settings.json @@ -0,0 +1,35 @@ +{ + "editor.tabSize": 2, + "editor.detectIndentation": false, + "jest.autoRun": { + "watch": false, + "onSave": "test-file" + }, + "search.exclude": { + "package-lock.json": true + }, + "editor.defaultFormatter": "dbaeumer.vscode-eslint", + "editor.formatOnSave": false, + "editor.codeActionsOnSave": [ + "source.addMissingImports", + "source.fixAll.eslint" + ], + // Multiple language settings for json and jsonc files + "[json][jsonc]": { + "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "files.exclude": { + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/CVS": true, + "**/.DS_Store": true, + "**/Thumbs.db": true, + "**/node_modules": true + }, + "[typescriptreact]": { + "editor.defaultFormatter": "vscode.typescript-language-features" + }, + "cSpell.words": ["abstination"] +} diff --git a/democracy/desktop/.vscode/tasks.json b/democracy/desktop/.vscode/tasks.json new file mode 100644 index 00000000..8e7ad167 --- /dev/null +++ b/democracy/desktop/.vscode/tasks.json @@ -0,0 +1,21 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "label": "Project wide type checking with TypeScript", + "type": "npm", + "script": "build-types", + "problemMatcher": ["$tsc"], + "group": { + "kind": "build", + "isDefault": true + }, + "presentation": { + "clear": true, + "reveal": "never" + } + } + ] +} diff --git a/democracy/desktop/CHANGELOG.md b/democracy/desktop/CHANGELOG.md new file mode 100644 index 00000000..a63a7952 --- /dev/null +++ b/democracy/desktop/CHANGELOG.md @@ -0,0 +1,75 @@ +# Changelog + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +### [1.0.12](https://github.com/demokratie-live/desktop/compare/v1.0.11...v1.0.12) (2023-12-16) + +### [1.0.12-4-keine-sitzungswochen-daten.0](https://github.com/demokratie-live/desktop/compare/v1.0.11...v1.0.12-4-keine-sitzungswochen-daten.0) (2023-12-16) + +### [1.0.11](https://github.com/demokratie-live/desktop/compare/v1.0.10...v1.0.11) (2023-11-01) + + +### Bug Fixes + +* 🐛 add graphql proxy api endpoint ([2e3e06a](https://github.com/demokratie-live/desktop/commit/2e3e06a96dabeee4bd47d86f9435eaec8b6d208b)) +* 🐛 fix ssr for graphql endpoint ([986dd6b](https://github.com/demokratie-live/desktop/commit/986dd6b773bf08eca1ef9b8805ee8d6d0cd2d7c9)) +* 🐛 only use NEXT_PUBLIC_APP_URL in development mode ([d896fec](https://github.com/demokratie-live/desktop/commit/d896feceb1efb91e882f778829760958a951a58b)) +* handle ssr for graphql endpoint ([fe8bb27](https://github.com/demokratie-live/desktop/commit/fe8bb27ceff654f2a8eafbad4dd5870faa1e1a43)) + +### [1.0.11-feature-api-via-env-var.6](https://github.com/demokratie-live/desktop/compare/v1.0.11-feature-api-via-env-var.5...v1.0.11-feature-api-via-env-var.6) (2023-11-01) + + +### Bug Fixes + +* handle ssr for graphql endpoint ([0e6ded2](https://github.com/demokratie-live/desktop/commit/0e6ded2b030abfeb01a2c000805e3cc689de2b30)) + +### [1.0.11-feature-api-via-env-var.5](https://github.com/demokratie-live/desktop/compare/v1.0.11-feature-api-via-env-var.4...v1.0.11-feature-api-via-env-var.5) (2023-11-01) + + +### Bug Fixes + +* 🐛 fix ssr for graphql endpoint ([c3586fa](https://github.com/demokratie-live/desktop/commit/c3586fae0d40f851d39206cbcc51f13d01be76d4)) + +### [1.0.11-feature-api-via-env-var.4](https://github.com/demokratie-live/desktop/compare/v1.0.11-feature-api-via-env-var.3...v1.0.11-feature-api-via-env-var.4) (2023-11-01) + + +### Bug Fixes + +* 🐛 only use NEXT_PUBLIC_APP_URL in development mode ([9638f7f](https://github.com/demokratie-live/desktop/commit/9638f7f27ec02354182564647ee60234d04d67bc)) + +### [1.0.11-feature-api-via-env-var.3](https://github.com/demokratie-live/desktop/compare/v1.0.11-feature-api-via-env-var.2...v1.0.11-feature-api-via-env-var.3) (2023-11-01) + + +### Bug Fixes + +* 🐛 add graphql proxy api endpoint ([2dbbdc1](https://github.com/demokratie-live/desktop/commit/2dbbdc1924c0169055d6fe297420c811b602e24f)) + +### [1.0.11-feature-api-via-env-var.2](https://github.com/demokratie-live/desktop/compare/v1.0.11-feature-api-via-env-var.1...v1.0.11-feature-api-via-env-var.2) (2023-11-01) + +### [1.0.11-feature-api-via-env-var.1](https://github.com/demokratie-live/desktop/compare/v1.0.11-feature-api-via-env-var.0...v1.0.11-feature-api-via-env-var.1) (2023-10-03) + +### [1.0.11-feature-api-via-env-var.0](https://github.com/demokratie-live/desktop/compare/v1.0.10...v1.0.11-feature-api-via-env-var.0) (2023-10-03) + +### [1.0.10](https://github.com/demokratie-live/desktop/compare/v1.0.9...v1.0.10) (2023-08-26) + +### [1.0.10-feature-native-donation.0](https://github.com/demokratie-live/desktop/compare/v1.0.9...v1.0.10-feature-native-donation.0) (2023-08-26) + +### [1.0.9](https://github.com/demokratie-live/desktop/compare/v1.0.8...v1.0.9) (2023-08-26) + +### [1.0.9-feature-deeplingking.0](https://github.com/demokratie-live/desktop/compare/v1.0.8...v1.0.9-feature-deeplingking.0) (2023-08-26) + +### [1.0.8](https://github.com/demokratie-live/desktop/compare/v1.0.7...v1.0.8) (2023-08-24) + +### [1.0.8-feature-deeplingking.0](https://github.com/demokratie-live/desktop/compare/v1.0.7...v1.0.8-feature-deeplingking.0) (2023-08-19) + +### [1.0.7](https://github.com/demokratie-live/desktop/compare/v1.0.6...v1.0.7) (2023-08-19) + +### [1.0.7-2](https://github.com/demokratie-live/desktop/compare/v1.0.7-1...v1.0.7-2) (2023-08-19) + +### [1.0.7-1](https://github.com/demokratie-live/desktop/compare/v1.0.7-0...v1.0.7-1) (2023-08-19) + +### [1.0.7-0](https://github.com/demokratie-live/desktop/compare/v1.0.6...v1.0.7-0) (2023-08-19) + +### [1.0.6](https://github.com/demokratie-live/desktop/compare/v1.0.5...v1.0.6) (2023-01-11) + +### [1.0.5](https://github.com/demokratie-live/desktop/compare/v1.0.0...v1.0.5) (2023-01-11) diff --git a/democracy/desktop/LICENSE b/democracy/desktop/LICENSE new file mode 100644 index 00000000..92eccab5 --- /dev/null +++ b/democracy/desktop/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [2018] [DEMOCRACY Deutschland e.V.] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/democracy/desktop/README.md b/democracy/desktop/README.md new file mode 100644 index 00000000..b5832cff --- /dev/null +++ b/democracy/desktop/README.md @@ -0,0 +1,126 @@ +# DEMOCRACY Desktop Version + +

+ Screenshot +

+ +🚀 Boilerplate and Starter for Next.js, Tailwind CSS and TypeScript ⚡️ Made with developer experience first: Next.js, TypeScript, ESLint, Prettier, Husky, Lint-Staged, VSCode, Netlify, PostCSS, Tailwind CSS. + +### Features + +Developer experience first: + +- 🔥 [Next.js](https://nextjs.org) for Static Site Generator +- 🎨 Integrate with [Tailwind CSS](https://tailwindcss.com) +- 💅 PostCSS for processing Tailwind CSS and integrated to `styled-jsx` +- 🎉 Type checking [TypeScript](https://www.typescriptlang.org) +- ✅ Strict Mode for TypeScript and React 17 +- ✏️ Linter with [ESLint](https://eslint.org) (default NextJS, NextJS Core Web Vitals, Tailwind CSS and Airbnb configuration) +- 💡 Absolute Imports +- 🛠 Code Formatter with [Prettier](https://prettier.io) +- 🦊 Husky for Git Hooks +- 🚫 Lint-staged for running linters on Git staged files +- 🗂 VSCode configuration: Debug, Settings, Tasks and extension for PostCSS, ESLint, Prettier, TypeScript +- 🤖 SEO metadata, JSON-LD and Open Graph tags with Next SEO +- ⚙️ [Bundler Analyzer](https://www.npmjs.com/package/@next/bundle-analyzer) +- 🖱️ One click deployment with Vercel or Netlify (or manual deployment to any hosting services) +- 🌈 Include a FREE minimalist theme +- 💯 Maximize lighthouse score + +Built-in feature from Next.js: + +- ☕ Minify HTML & CSS +- 💨 Live reload +- ✅ Cache busting + +### Philosophy + +- Minimal code +- SEO-friendly +- 🚀 Production-ready + +### Requirements + +- Node.js 14+ and npm + +### Getting started + +Run the following command on your local environment: + +``` +git clone --depth=1 https://github.com/ixartz/Next-js-Boilerplate.git my-project-name +cd my-project-name +npm install +``` + +Then, you can run locally in development mode with live reload: + +``` +npm run dev +``` + +Open http://localhost:3000 with your favorite browser to see your project. + +``` +. +├── README.md # README file +├── next.config.js # Next JS configuration +├── public # Public folder +│ └── assets +│ └── images # Image used by default template +├── src +│ ├── layout # Atomic layout components +│ ├── pages # Next JS pages +│ ├── styles # PostCSS style folder with Tailwind +│ ├── templates # Default template +│ └── utils # Utility folder +├── tailwind.config.js # Tailwind CSS configuration +└── tsconfig.json # TypeScript configuration +``` + +### Customization + +You can easily configure Next js Boilerplate. Please change the following file: + +- `public/apple-touch-icon.png`, `public/favicon.ico`, `public/favicon-16x16.png` and `public/favicon-32x32.png`: your website favicon, you can generate from https://favicon.io/favicon-converter/ +- `src/styles/global.css`: your CSS file using Tailwind CSS +- `src/utils/AppConfig.ts`: configuration file +- `src/templates/Main.tsx`: default theme + +### Deploy to production + +You can see the results locally in production mode with: + +``` +$ npm run build +$ npm run start +``` + +The generated HTML and CSS files are minified (built-in feature from Next js). It will also removed unused CSS from [Tailwind CSS](https://tailwindcss.com). + +You can create an optimized production build with: + +``` +npm run build-prod +``` + +Now, your blog is ready to be deployed. All generated files are located at `out` folder, which you can deploy with any hosting service. + + +### VSCode information (optional) + +If you are VSCode users, you can have a better integration with VSCode by installing the suggested extension in `.vscode/extension.json`. The starter code comes up with Settings for a seamless integration with VSCode. The Debug configuration is also provided for frontend and backend debugging experience. + +Pro tips: if you need a project wide type checking with TypeScript, you can run a build with Cmd + Shift + B on Mac. + +### Contributions + +Everyone is welcome to contribute to this project. Feel free to open an issue if you have question or found a bug. + +### License + +Licensed under the MIT License, Copyright © 2022 + +See [LICENSE](LICENSE) for more information. + +--- diff --git a/democracy/desktop/garden.yml b/democracy/desktop/garden.yml new file mode 100644 index 00000000..91e0b8eb --- /dev/null +++ b/democracy/desktop/garden.yml @@ -0,0 +1,61 @@ +kind: Build +name: democracy-desktop +type: container +source: + path: ../../ +include: + - ./**/* + - ./infra/Dockerfile.service +spec: + dockerfile: ./infra/Dockerfile.service + targetStage: + $if: ${this.mode == "sync"} + $then: dev + $else: runner + buildArgs: + NODE_VERSION: 18.18.2 + SERVICE: democracy-app.de + SERVICE_PATH: democracy/desktop + +--- +kind: Deploy +name: democracy-desktop +type: kubernetes +dependencies: [build.democracy-desktop] + +varfiles: + - path: .env + +spec: + files: [./manifests/*] # <--- Tell Garden what manifests to use + + defaultTarget: # <--- This tells Garden what "target" to use for logs, code syncing and more + kind: Deployment + name: democracy-desktop + + sync: + paths: + - containerPath: /app/democracy/desktop/src + sourcePath: src + mode: one-way + overrides: + - command: [pnpm, dev] + + # Patch the K8s manifests for the api service so that we can set the correct image + patchResources: + - name: democracy-desktop + kind: Deployment + patch: + spec: + template: + spec: + containers: + - name: democracy-desktop + image: ${actions.build.democracy-desktop.outputs.deploymentImageId} # <--- Reference the output from the Build action + env: + - name: PORT + value: '3000' + - name: APP_API_URL + value: ${var.APP_API_URL} + - name: APP_HOST + value: ${var.APP_HOST} diff --git a/democracy/desktop/manifests/deployment.yaml b/democracy/desktop/manifests/deployment.yaml new file mode 100644 index 00000000..fd39bd39 --- /dev/null +++ b/democracy/desktop/manifests/deployment.yaml @@ -0,0 +1,31 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: democracy-desktop + labels: + app: democracy-desktop +spec: + replicas: 1 + selector: + matchLabels: + app: democracy-desktop + template: + metadata: + labels: + app: democracy-desktop + spec: + containers: + - name: democracy-desktop + image: democracy/democracy-desktop:latest + imagePullPolicy: IfNotPresent + ports: + - containerPort: 3000 + name: http + protocol: TCP + resources: + limits: + cpu: '4' + memory: 4Gi + requests: + cpu: 10m + memory: 90Mi diff --git a/democracy/desktop/manifests/ingress.yaml b/democracy/desktop/manifests/ingress.yaml new file mode 100644 index 00000000..b290771e --- /dev/null +++ b/democracy/desktop/manifests/ingress.yaml @@ -0,0 +1,19 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: democracy-desktop + labels: + app: democracy-desktop +spec: + ingressClassName: nginx + rules: + - host: 'desktop.${var.hostname}' + http: + paths: + - backend: + service: + name: democracy-desktop + port: + number: 80 + path: / + pathType: Prefix diff --git a/democracy/desktop/manifests/service.yaml b/democracy/desktop/manifests/service.yaml new file mode 100644 index 00000000..9b8ca965 --- /dev/null +++ b/democracy/desktop/manifests/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: democracy-desktop + name: democracy-desktop +spec: + type: ClusterIP + ports: + - name: http + port: 80 + protocol: TCP + targetPort: 3000 + selector: + app: democracy-desktop diff --git a/democracy/desktop/netlify.toml b/democracy/desktop/netlify.toml new file mode 100644 index 00000000..5ed7e272 --- /dev/null +++ b/democracy/desktop/netlify.toml @@ -0,0 +1,6 @@ +[build] + publish = "out" + command = "npm run build-prod" + +[build.environment] + NETLIFY_NEXT_PLUGIN_SKIP = "true" diff --git a/democracy/desktop/next-env.d.ts b/democracy/desktop/next-env.d.ts new file mode 100644 index 00000000..4f11a03d --- /dev/null +++ b/democracy/desktop/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/democracy/desktop/next.config.js b/democracy/desktop/next.config.js new file mode 100644 index 00000000..469b4bfd --- /dev/null +++ b/democracy/desktop/next.config.js @@ -0,0 +1,41 @@ +/* eslint-disable import/no-extraneous-dependencies */ +const withBundleAnalyzer = require('@next/bundle-analyzer')({ + enabled: process.env.ANALYZE === 'true', +}); + +module.exports = withBundleAnalyzer({ + experimental: { + outputStandalone: true, + }, + eslint: { + dirs: ['.'], + }, + poweredByHeader: false, + trailingSlash: true, + basePath: '', + // The starter code load resources from `public` folder with `router.basePath` in React components. + // So, the source code is "basePath-ready". + // You can remove `basePath` if you don't need it. + reactStrictMode: true, + images: { + formats: ['image/avif', 'image/webp'], + }, + + async rewrites() { + return [ + { + source: '/apple-app-site-association', + destination: '/api/apple-app-site-association', + }, + { + source: '/.well-known/assetlinks.json', + destination: '/api/assetlinks', + }, + { + source: + '/.well-known/apple-developer-merchantid-domain-association.txt', + destination: '/api/apple-developer-merchantid-domain-association', + }, + ]; + }, +}); diff --git a/democracy/desktop/package.json b/democracy/desktop/package.json new file mode 100644 index 00000000..6cc5118a --- /dev/null +++ b/democracy/desktop/package.json @@ -0,0 +1,75 @@ +{ + "name": "democracy-app.de", + "version": "1.0.12", + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "build-stats": "cross-env ANALYZE=true npm run build", + "export": "next export", + "build-prod": "run-s clean build export", + "clean": "rimraf .next out", + "lint": "next lint", + "build-types": "tsc --noEmit --pretty" + }, + "dependencies": { + "@apollo/client": "^3.5.10", + "@badrap/bar-of-progress": "^0.1.2", + "@headlessui/react": "^1.5.0", + "@heroicons/react": "^1.0.6", + "@tailwindcss/forms": "^0.5.0", + "@tailwindcss/line-clamp": "^0.3.1", + "@tailwindcss/typography": "^0.5.2", + "@types/d3": "^5.7.0", + "accounting": "^0.4.1", + "apollo-link-debounce": "^3.0.0", + "axios": "^1.6.0", + "chart.js": "^3.7.1", + "d3": "^5.7.0", + "dayjs": "^1.11.0", + "graphql": "^16.3.0", + "lodash-es": "^4.17.21", + "next": "^12.1.4", + "next-seo": "^5.4.0", + "react": "^17.0.2", + "react-chartjs-2": "^4.1.0", + "react-cool-dimensions": "^2.0.7", + "react-dom": "^17.0.2", + "react-infinite-scroll-hook": "^4.0.3", + "react-use": "^17.3.2", + "recoil": "^0.7.0", + "sharp": "^0.30.4", + "slug": "^5.3.0" + }, + "devDependencies": { + "@next/bundle-analyzer": "^12.1.4", + "@types/lodash-es": "^4.17.6", + "@types/node": "^17.0.23", + "@types/react": "^17.0.44", + "@types/slug": "^5.0.3", + "@typescript-eslint/eslint-plugin": "^5.18.0", + "@typescript-eslint/parser": "^5.18.0", + "autoprefixer": "^10.4.4", + "cross-env": "^7.0.3", + "cssnano": "^5.1.7", + "eslint": "^8.13.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-airbnb-typescript": "^17.0.0", + "eslint-config-next": "^12.1.4", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-react": "^7.29.4", + "eslint-plugin-react-hooks": "^4.4.0", + "eslint-plugin-tailwindcss": "^3.5.0", + "eslint-plugin-unused-imports": "^2.0.0", + "npm-run-all": "^4.1.5", + "postcss": "^8.4.12", + "prettier": "^2.6.2", + "rimraf": "^3.0.2", + "tailwindcss": "^3.0.23", + "typescript": "^4.6.3" + }, + "license": "ISC" +} diff --git a/democracy/desktop/postcss.config.js b/democracy/desktop/postcss.config.js new file mode 100644 index 00000000..c1cd9925 --- /dev/null +++ b/democracy/desktop/postcss.config.js @@ -0,0 +1,10 @@ +// Please do not use the array form (like ['tailwindcss', 'postcss-preset-env']) +// it will create an unexpected error: Invalid PostCSS Plugin found: [0] + +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + ...(process.env.NODE_ENV === 'production' ? { cssnano: {} } : {}), + }, +}; diff --git a/democracy/desktop/public/android-chrome-192x192.png b/democracy/desktop/public/android-chrome-192x192.png new file mode 100644 index 00000000..8d114066 Binary files /dev/null and b/democracy/desktop/public/android-chrome-192x192.png differ diff --git a/democracy/desktop/public/android-chrome-512x512.png b/democracy/desktop/public/android-chrome-512x512.png new file mode 100644 index 00000000..ac43b932 Binary files /dev/null and b/democracy/desktop/public/android-chrome-512x512.png differ diff --git a/democracy/desktop/public/apple-touch-icon.png b/democracy/desktop/public/apple-touch-icon.png new file mode 100644 index 00000000..bb2f8455 Binary files /dev/null and b/democracy/desktop/public/apple-touch-icon.png differ diff --git a/democracy/desktop/public/assets/images/logo-text.png b/democracy/desktop/public/assets/images/logo-text.png new file mode 100644 index 00000000..762dd033 Binary files /dev/null and b/democracy/desktop/public/assets/images/logo-text.png differ diff --git a/democracy/desktop/public/assets/images/logo-text.svg b/democracy/desktop/public/assets/images/logo-text.svg new file mode 100644 index 00000000..564487d7 --- /dev/null +++ b/democracy/desktop/public/assets/images/logo-text.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/democracy/desktop/public/assets/images/logo.svg b/democracy/desktop/public/assets/images/logo.svg new file mode 100644 index 00000000..7d9a6c50 --- /dev/null +++ b/democracy/desktop/public/assets/images/logo.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/democracy/desktop/public/assets/images/nextjs-starter-banner.png b/democracy/desktop/public/assets/images/nextjs-starter-banner.png new file mode 100644 index 00000000..0b882595 Binary files /dev/null and b/democracy/desktop/public/assets/images/nextjs-starter-banner.png differ diff --git a/democracy/desktop/public/favicon-16x16.png b/democracy/desktop/public/favicon-16x16.png new file mode 100644 index 00000000..8e9ae58d Binary files /dev/null and b/democracy/desktop/public/favicon-16x16.png differ diff --git a/democracy/desktop/public/favicon-32x32.png b/democracy/desktop/public/favicon-32x32.png new file mode 100644 index 00000000..10dd1eeb Binary files /dev/null and b/democracy/desktop/public/favicon-32x32.png differ diff --git a/democracy/desktop/public/favicon.ico b/democracy/desktop/public/favicon.ico new file mode 100644 index 00000000..21ddff0d Binary files /dev/null and b/democracy/desktop/public/favicon.ico differ diff --git a/democracy/desktop/public/img/categories/arbeit_beschaeftigung.jpg b/democracy/desktop/public/img/categories/arbeit_beschaeftigung.jpg new file mode 100644 index 00000000..5f8b3dd2 Binary files /dev/null and b/democracy/desktop/public/img/categories/arbeit_beschaeftigung.jpg differ diff --git a/democracy/desktop/public/img/categories/auslaenderpolitik.jpg b/democracy/desktop/public/img/categories/auslaenderpolitik.jpg new file mode 100644 index 00000000..7b359b0b Binary files /dev/null and b/democracy/desktop/public/img/categories/auslaenderpolitik.jpg differ diff --git a/democracy/desktop/public/img/categories/aussenpolitik.jpg b/democracy/desktop/public/img/categories/aussenpolitik.jpg new file mode 100644 index 00000000..eb19d727 Binary files /dev/null and b/democracy/desktop/public/img/categories/aussenpolitik.jpg differ diff --git a/democracy/desktop/public/img/categories/aussenwirtschaft.jpg b/democracy/desktop/public/img/categories/aussenwirtschaft.jpg new file mode 100644 index 00000000..ad9cc936 Binary files /dev/null and b/democracy/desktop/public/img/categories/aussenwirtschaft.jpg differ diff --git a/democracy/desktop/public/img/categories/bauwesen.jpg b/democracy/desktop/public/img/categories/bauwesen.jpg new file mode 100644 index 00000000..5b64748a Binary files /dev/null and b/democracy/desktop/public/img/categories/bauwesen.jpg differ diff --git a/democracy/desktop/public/img/categories/bildung_erziehung.jpg b/democracy/desktop/public/img/categories/bildung_erziehung.jpg new file mode 100644 index 00000000..6bb3f13a Binary files /dev/null and b/democracy/desktop/public/img/categories/bildung_erziehung.jpg differ diff --git a/democracy/desktop/public/img/categories/bundestag.jpg b/democracy/desktop/public/img/categories/bundestag.jpg new file mode 100644 index 00000000..7d521b47 Binary files /dev/null and b/democracy/desktop/public/img/categories/bundestag.jpg differ diff --git a/democracy/desktop/public/img/categories/energie.jpg b/democracy/desktop/public/img/categories/energie.jpg new file mode 100644 index 00000000..15d8b6e1 Binary files /dev/null and b/democracy/desktop/public/img/categories/energie.jpg differ diff --git a/democracy/desktop/public/img/categories/entwicklungspolitik.jpg b/democracy/desktop/public/img/categories/entwicklungspolitik.jpg new file mode 100644 index 00000000..df67a158 Binary files /dev/null and b/democracy/desktop/public/img/categories/entwicklungspolitik.jpg differ diff --git a/democracy/desktop/public/img/categories/europapolitik.jpg b/democracy/desktop/public/img/categories/europapolitik.jpg new file mode 100644 index 00000000..9b331eb4 Binary files /dev/null and b/democracy/desktop/public/img/categories/europapolitik.jpg differ diff --git a/democracy/desktop/public/img/categories/gesellschaft.jpg b/democracy/desktop/public/img/categories/gesellschaft.jpg new file mode 100644 index 00000000..292d3324 Binary files /dev/null and b/democracy/desktop/public/img/categories/gesellschaft.jpg differ diff --git a/democracy/desktop/public/img/categories/gesundheit.jpg b/democracy/desktop/public/img/categories/gesundheit.jpg new file mode 100644 index 00000000..9163332f Binary files /dev/null and b/democracy/desktop/public/img/categories/gesundheit.jpg differ diff --git a/democracy/desktop/public/img/categories/innere_sicherheit.jpg b/democracy/desktop/public/img/categories/innere_sicherheit.jpg new file mode 100644 index 00000000..0bbae5b2 Binary files /dev/null and b/democracy/desktop/public/img/categories/innere_sicherheit.jpg differ diff --git a/democracy/desktop/public/img/categories/it.jpg b/democracy/desktop/public/img/categories/it.jpg new file mode 100644 index 00000000..fc5d4e65 Binary files /dev/null and b/democracy/desktop/public/img/categories/it.jpg differ diff --git a/democracy/desktop/public/img/categories/kultur.jpg b/democracy/desktop/public/img/categories/kultur.jpg new file mode 100644 index 00000000..ee1c7f4d Binary files /dev/null and b/democracy/desktop/public/img/categories/kultur.jpg differ diff --git a/democracy/desktop/public/img/categories/landwirtschaft_ernaehrung.jpg b/democracy/desktop/public/img/categories/landwirtschaft_ernaehrung.jpg new file mode 100644 index 00000000..541c874d Binary files /dev/null and b/democracy/desktop/public/img/categories/landwirtschaft_ernaehrung.jpg differ diff --git a/democracy/desktop/public/img/categories/neue_bundeslaender.jpg b/democracy/desktop/public/img/categories/neue_bundeslaender.jpg new file mode 100644 index 00000000..e945f77a Binary files /dev/null and b/democracy/desktop/public/img/categories/neue_bundeslaender.jpg differ diff --git a/democracy/desktop/public/img/categories/oeffentliche_finanzen_steuern_und_abgaben.jpg b/democracy/desktop/public/img/categories/oeffentliche_finanzen_steuern_und_abgaben.jpg new file mode 100644 index 00000000..fd7c38ca Binary files /dev/null and b/democracy/desktop/public/img/categories/oeffentliche_finanzen_steuern_und_abgaben.jpg differ diff --git a/democracy/desktop/public/img/categories/politisches_leben_parteien.jpg b/democracy/desktop/public/img/categories/politisches_leben_parteien.jpg new file mode 100644 index 00000000..9da7be6c Binary files /dev/null and b/democracy/desktop/public/img/categories/politisches_leben_parteien.jpg differ diff --git a/democracy/desktop/public/img/categories/recht.jpg b/democracy/desktop/public/img/categories/recht.jpg new file mode 100644 index 00000000..4d791406 Binary files /dev/null and b/democracy/desktop/public/img/categories/recht.jpg differ diff --git a/democracy/desktop/public/img/categories/soziale_sicherung.jpg b/democracy/desktop/public/img/categories/soziale_sicherung.jpg new file mode 100644 index 00000000..3d9469b4 Binary files /dev/null and b/democracy/desktop/public/img/categories/soziale_sicherung.jpg differ diff --git a/democracy/desktop/public/img/categories/staat_verwaltung.jpg b/democracy/desktop/public/img/categories/staat_verwaltung.jpg new file mode 100644 index 00000000..7cfbed94 Binary files /dev/null and b/democracy/desktop/public/img/categories/staat_verwaltung.jpg differ diff --git a/democracy/desktop/public/img/categories/tourismus.jpg b/democracy/desktop/public/img/categories/tourismus.jpg new file mode 100644 index 00000000..79b91cb2 Binary files /dev/null and b/democracy/desktop/public/img/categories/tourismus.jpg differ diff --git a/democracy/desktop/public/img/categories/umwelt.jpg b/democracy/desktop/public/img/categories/umwelt.jpg new file mode 100644 index 00000000..dd284b8c Binary files /dev/null and b/democracy/desktop/public/img/categories/umwelt.jpg differ diff --git a/democracy/desktop/public/img/categories/verkehr.jpg b/democracy/desktop/public/img/categories/verkehr.jpg new file mode 100644 index 00000000..101e9c81 Binary files /dev/null and b/democracy/desktop/public/img/categories/verkehr.jpg differ diff --git a/democracy/desktop/public/img/categories/verteidigung.jpg b/democracy/desktop/public/img/categories/verteidigung.jpg new file mode 100644 index 00000000..80b7173b Binary files /dev/null and b/democracy/desktop/public/img/categories/verteidigung.jpg differ diff --git a/democracy/desktop/public/img/categories/wirtschaft.jpg b/democracy/desktop/public/img/categories/wirtschaft.jpg new file mode 100644 index 00000000..5b8162f1 Binary files /dev/null and b/democracy/desktop/public/img/categories/wirtschaft.jpg differ diff --git a/democracy/desktop/public/img/categories/wissenschaft_forschung_technologie.jpg b/democracy/desktop/public/img/categories/wissenschaft_forschung_technologie.jpg new file mode 100644 index 00000000..83165caf Binary files /dev/null and b/democracy/desktop/public/img/categories/wissenschaft_forschung_technologie.jpg differ diff --git a/democracy/desktop/public/img/parteilogos/AfD.svg b/democracy/desktop/public/img/parteilogos/AfD.svg new file mode 100644 index 00000000..aa53d05a --- /dev/null +++ b/democracy/desktop/public/img/parteilogos/AfD.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/democracy/desktop/public/img/parteilogos/FDP.svg b/democracy/desktop/public/img/parteilogos/FDP.svg new file mode 100644 index 00000000..f4e1161f --- /dev/null +++ b/democracy/desktop/public/img/parteilogos/FDP.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/democracy/desktop/public/img/parteilogos/Gruene.svg b/democracy/desktop/public/img/parteilogos/Gruene.svg new file mode 100644 index 00000000..41461f9c --- /dev/null +++ b/democracy/desktop/public/img/parteilogos/Gruene.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/democracy/desktop/public/img/parteilogos/Linke.svg b/democracy/desktop/public/img/parteilogos/Linke.svg new file mode 100644 index 00000000..5b3c16df --- /dev/null +++ b/democracy/desktop/public/img/parteilogos/Linke.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/democracy/desktop/public/img/parteilogos/SPD.svg b/democracy/desktop/public/img/parteilogos/SPD.svg new file mode 100644 index 00000000..cde2dab5 --- /dev/null +++ b/democracy/desktop/public/img/parteilogos/SPD.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/democracy/desktop/public/img/parteilogos/Union.svg b/democracy/desktop/public/img/parteilogos/Union.svg new file mode 100644 index 00000000..fecd06be --- /dev/null +++ b/democracy/desktop/public/img/parteilogos/Union.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/democracy/desktop/public/img/parteilogos/unified/AfD.svg b/democracy/desktop/public/img/parteilogos/unified/AfD.svg new file mode 100644 index 00000000..75b78139 --- /dev/null +++ b/democracy/desktop/public/img/parteilogos/unified/AfD.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/democracy/desktop/public/img/parteilogos/unified/FDP.svg b/democracy/desktop/public/img/parteilogos/unified/FDP.svg new file mode 100644 index 00000000..ff139aff --- /dev/null +++ b/democracy/desktop/public/img/parteilogos/unified/FDP.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/democracy/desktop/public/img/parteilogos/unified/Gruene.svg b/democracy/desktop/public/img/parteilogos/unified/Gruene.svg new file mode 100644 index 00000000..adaf3746 --- /dev/null +++ b/democracy/desktop/public/img/parteilogos/unified/Gruene.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/democracy/desktop/public/img/parteilogos/unified/Linke.svg b/democracy/desktop/public/img/parteilogos/unified/Linke.svg new file mode 100644 index 00000000..dcb48115 --- /dev/null +++ b/democracy/desktop/public/img/parteilogos/unified/Linke.svg @@ -0,0 +1,4 @@ + + + + diff --git a/democracy/desktop/public/img/parteilogos/unified/SPD.svg b/democracy/desktop/public/img/parteilogos/unified/SPD.svg new file mode 100644 index 00000000..0b2d42b7 --- /dev/null +++ b/democracy/desktop/public/img/parteilogos/unified/SPD.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/democracy/desktop/public/img/parteilogos/unified/Union.svg b/democracy/desktop/public/img/parteilogos/unified/Union.svg new file mode 100644 index 00000000..4733a70f --- /dev/null +++ b/democracy/desktop/public/img/parteilogos/unified/Union.svg @@ -0,0 +1,4 @@ + + + + diff --git a/democracy/desktop/public/img/parteilogos/unified/fraktionslos.svg b/democracy/desktop/public/img/parteilogos/unified/fraktionslos.svg new file mode 100644 index 00000000..c83d1155 --- /dev/null +++ b/democracy/desktop/public/img/parteilogos/unified/fraktionslos.svg @@ -0,0 +1,4 @@ + + + + diff --git a/democracy/desktop/src/components/molecules/Card.tsx b/democracy/desktop/src/components/molecules/Card.tsx new file mode 100644 index 00000000..ccfe37d1 --- /dev/null +++ b/democracy/desktop/src/components/molecules/Card.tsx @@ -0,0 +1,107 @@ +import { useRef } from 'react'; + +import dayjs from 'dayjs'; +import Image from 'next/image'; +import Link from 'next/link'; +import useDimensions from 'react-cool-dimensions'; +import { useIntersection } from 'react-use'; +import { useRecoilState } from 'recoil'; + +import { makeLink, getImage } from '@/utils/Helpers'; + +import ChartPair from './ChartPair'; +import { filterForTypeState } from '../state/states'; + +const Card = ({ item }: any) => { + const [, setFilterType] = useRecoilState(filterForTypeState); + const { observe, width } = useDimensions(); + const intersectionRef = useRef(null); + const intersection = useIntersection(intersectionRef, { + root: null, + rootMargin: '350px', + threshold: 1, + }); + + return ( +
+ + +
+ {item.subjectGroups[0] +
+ {!intersection || + (intersection.isIntersecting && ( + + ))} +
+ +
+
+
+
{ + e.preventDefault(); + setFilterType([item.type as never]); + }} + className="cursor-pointer hover:underline" + > + {item.type} +
+
+ + +

+ {item.title} +

+

+ {item.sessionTOPHeading} +

+ {/*

+ {description} +

*/} +
+ +
+ {item.voteDate && ( +
+
+ {/*

+ + {author.name} + +

*/} +
+ + {/* {subjectGroups[0]?.replace(' ', '_').toLowerCase()} */} + {/* + {voteDate} */} +
+
+
+ )} +
+
+ ); +}; + +export default Card; diff --git a/democracy/desktop/src/components/molecules/ChartPair.tsx b/democracy/desktop/src/components/molecules/ChartPair.tsx new file mode 100644 index 00000000..a4fbddb1 --- /dev/null +++ b/democracy/desktop/src/components/molecules/ChartPair.tsx @@ -0,0 +1,262 @@ +import { useEffect, useRef, useState } from 'react'; + +import { formatVotes } from '@/utils/Helpers'; + +import DoughnutChart, { + PartyVote, + VoteCategory, + Votes, +} from '../organisms/DoughnutChart'; + +function sortPartyVotes(partyVotes: PartyVote[], key: string) { + try { + return partyVotes + .filter((a) => a[key] > 0) + .sort((a, b) => { + return b[key] - a[key]; + }); + } catch (e) { + return []; + } +} + +function slug(name: string): string { + return name + .replaceAll(/ü/g, 'ue') + .replaceAll(/ö/g, 'oe') + .replaceAll(/ä/g, 'ae') + .replaceAll(/Ü/g, 'Ue') + .replaceAll(/Ö/g, 'Oe') + .replaceAll(/Ä/g, 'Ae') + .replaceAll(/ß/g, 'ss'); +} + +export default function ChartPair({ item, className, large }) { + const [hover1, setHover1] = useState(undefined); + const [hover2, setHover2] = useState(undefined); + + const [key1, setKey1] = useState(undefined); + const [partyVotes, setPartyVotes] = useState([]); + + const [delay, setDelay] = useState(undefined); + + const calculatePercent = (current, total) => { + return `${Math.round((current / total) * 100)}%`; + }; + + const sizes = large ? '!w-32 !h-32 md:!w-40 md:!h-40' : '!w-28 !h-28'; + + const close = () => { + clearTimeout(delay); + setDelay(undefined); + + setHover1(undefined); + setHover2(undefined); + setPartyVotes([]); + setKey1(undefined); + }; + + const ref = useRef(null); + useEffect(() => { + /** + * Alert if clicked on outside of element + */ + function handleClickOutside(event) { + if (ref.current && !ref.current.contains(event.target)) { + console.log('CLOSE'); + close(); + } + } + // Bind the event listener + document.addEventListener('mousedown', handleClickOutside); + return () => { + // Unbind the event listener on clean up + document.removeEventListener('mousedown', handleClickOutside); + }; + }); + + const officialVotes: Votes | undefined = item.voteResults + ? { + yes: { + label: 'Ja', + color: '#708E32', + count: item.voteResults.yes ?? 0, + }, + no: { + label: 'Nein', + color: '#C34091', + count: item.voteResults.no ?? 0, + }, + abstination: { + label: 'enthalten', + color: '#6BAAD0', + count: item.voteResults.abstination ?? 0, + }, + notVoted: item.voteResults.notVoted + ? { + label: 'abwesend', + color: '#B1B3B4', + count: item.voteResults.notVoted, + } + : undefined, + partyVotes: item.voteResults.partyVotes.map((p: any) => ({ + party: p.party, + main: p.main.toLowerCase(), + yes: p.deviants.yes ?? 0, + no: p.deviants.no ?? 0, + abstination: p.deviants.abstination ?? 0, + notVoted: p.deviants.notVoted ?? 0, + })), + } + : undefined; + + return ( +
{ + setDelay(setTimeout(() => close(), 500)); + }} + > +
+ {item.voteResults && ( +
+ { + // if (!item1) return; + clearTimeout(delay); + + if (!k1) { + setDelay(setTimeout(() => close(), 500)); + } else { + setHover1(item1); + setPartyVotes( + sortPartyVotes(officialVotes?.partyVotes ?? [], k1!) + ); + setKey1(k1 ?? undefined); + } + }} + votes={officialVotes!} + className={`rounded-full bg-white p-0.5 ${sizes}`} + /> +

+ Bundestag + + + {hover1 && + `${hover1.label} (${calculatePercent( + hover1.count, + item.voteResults.yes + + item.voteResults.no + + item.voteResults.abstination + + item.voteResults.notVoted + )})`} + {!hover1 && ( + + {item.voteResults.namedVote + ? `${formatVotes( + item.voteResults.yes + item.voteResults.no + )} Abgeordnete` + : `${item.voteResults.partyVotes.length} Fraktionen`} + + )} + + +

+
+ )} + {item.communityVotes && ( +
+
0 ? 'opacity-0' : ''}`}> + { + setHover2(item2); + }} + votes={{ + yes: { + label: 'Ja', + color: '#46A058', + count: item.communityVotes?.yes ?? 0, + }, + no: { + label: 'Nein', + color: '#B83829', + count: item.communityVotes?.no ?? 0, + }, + abstination: { + label: 'enthalten', + color: '#4580DD', + count: item.communityVotes?.abstination ?? 0, + }, + }} + /> +

+ Community + + + {hover2 + ? `${hover2.label} (${calculatePercent( + hover2.count, + item.communityVotes.yes + + item.communityVotes.no + + item.communityVotes.abstination + )})` + : formatVotes(item.votes)} + {!hover2 && ' Nutzer'} + + +

+
+ {hover1 && partyVotes.length > 0 && ( +
+ {/* + {hover1.label} + */} + {partyVotes.map((p) => ( +
+ {p.party} +
+
+ {/*
*/} + + {p[key1!]} + +
+
+
+ ))} +
+ )} +
+ )} +
+
+ ); +} diff --git a/democracy/desktop/src/components/molecules/Empty.tsx b/democracy/desktop/src/components/molecules/Empty.tsx new file mode 100644 index 00000000..df8a53ad --- /dev/null +++ b/democracy/desktop/src/components/molecules/Empty.tsx @@ -0,0 +1,27 @@ +export default function Empty() { + return ( +
+
+ +

+ Nichts gefunden +

+

+ Leider haben wir hier nichts gefunden. +

+
+
+ ); +} diff --git a/democracy/desktop/src/components/molecules/FilterDropdown.tsx b/democracy/desktop/src/components/molecules/FilterDropdown.tsx new file mode 100644 index 00000000..8918da76 --- /dev/null +++ b/democracy/desktop/src/components/molecules/FilterDropdown.tsx @@ -0,0 +1,71 @@ +/* This example requires Tailwind CSS v2.0+ */ +import { Fragment, useEffect, useState } from 'react'; + +import { Menu, Transition } from '@headlessui/react'; +import { ChevronDownIcon } from '@heroicons/react/solid'; + +const items = [ + { name: 'Abstimmungsdatum', id: 'voteDate' }, + { name: 'Aktualisiert', id: 'lastUpdateDate' }, + { name: 'Aktivität', id: 'activities' }, +]; + +function classNames(...classes: string[]) { + return classes.filter(Boolean).join(' '); +} + +export default function Example({ onSelect = (_: string) => {} }) { + const [selectedItem, setSelectedItem] = useState(items[0]); + + useEffect(() => { + onSelect(selectedItem!.id); + }); + return ( + +
+ + {/* {' '} */} + {/* Sortierung */} + {selectedItem!.name} + +
+ + + + + + +
+ ); +} diff --git a/democracy/desktop/src/components/molecules/Filters.tsx b/democracy/desktop/src/components/molecules/Filters.tsx new file mode 100644 index 00000000..c6a38d8d --- /dev/null +++ b/democracy/desktop/src/components/molecules/Filters.tsx @@ -0,0 +1,110 @@ +import { Disclosure } from '@headlessui/react'; +import { FilterIcon } from '@heroicons/react/outline'; + +import { AppConfig } from '@/utils/AppConfig'; + +const { filters } = AppConfig; + +export default function Filters({ + selected = [], + onToggle = (_: string, __: string) => {}, + onReset = () => {}, +}) { + return ( + +

+ Filters +

+
+
+
+ + +
+ {selected.length > 0 ? ( +
+ +
+ ) : null} +
+
+ +
+
+ + {filters.type.label} + +
+ {filters.type.options.map((option, optionIdx) => ( +
+ onToggle('type', option.value)} + /> + +
+ ))} +
+
+
+ + {filters.subjectGroups.label} + +
+ {filters.subjectGroups.options.map((option, optionIdx) => ( +
+ onToggle('subject', option.value)} + /> + +
+ ))} +
+
+
+
+
+ ); +} diff --git a/democracy/desktop/src/components/molecules/Loading.tsx b/democracy/desktop/src/components/molecules/Loading.tsx new file mode 100644 index 00000000..453cc279 --- /dev/null +++ b/democracy/desktop/src/components/molecules/Loading.tsx @@ -0,0 +1,33 @@ +interface Props { + slim?: boolean; +} + +const Loading = ({ slim }: Props) => ( +
+
+
+ + + + +
einen Moment noch…
+
+
+
+); + +export default Loading; diff --git a/democracy/desktop/src/components/molecules/Navigation.tsx b/democracy/desktop/src/components/molecules/Navigation.tsx new file mode 100644 index 00000000..361b74d8 --- /dev/null +++ b/democracy/desktop/src/components/molecules/Navigation.tsx @@ -0,0 +1,215 @@ +import { Disclosure } from '@headlessui/react'; +import { MenuIcon, XIcon } from '@heroicons/react/outline'; +import { HeartIcon, SearchIcon } from '@heroicons/react/solid'; +import Link from 'next/link'; +import { useRouter } from 'next/router'; +import { useRecoilState } from 'recoil'; + +import { searchTermState } from '@/components/state/states'; + +function classNames(...classes: string[]) { + return classes.filter(Boolean).join(' '); +} + +const navigation = [ + { name: 'Sitzungswoche', href: '/' }, + { name: 'Vergangen', href: '/vergangen' }, + { name: 'Top 100', href: '/top-100' }, +]; + +const Navigation = () => { + const router = useRouter(); + + const [searchTerm, setSearchTerm] = useRecoilState(searchTermState); + + // TODO: use recoil sync? + // reset the search if navigating to a different page + router?.events?.on('routeChangeComplete', (url) => { + const u = url.split('/'); + if (u.length > 1 && ['', 'vergangen', 'top-100'].includes(u[1])) { + setSearchTerm(''); + } + }); + + // TODO: use recoil sync? + // update the search term and navigate to the search page + const updateSearch = (term: string) => { + setSearchTerm(term); + if (router.asPath.startsWith('/suche') || term.length < 3) return; + router.replace(`/suche`); + }; + + return ( + + {({ open }) => ( +
+
+
+
+ + + Democracy App + Democracy App + + +
+ {/* Current: "border-indigo-500 text-gray-900", Default: "" */} + {navigation.map((item) => ( + + + {item.name} + + + ))} +
+
+
+
+ +
+
+
+ updateSearch(e.target.value)} + /> +
+
+
+ +
+ {/* Mobile menu button */} + + Open main menu + {open ? ( + +
+
+
+ + +
+ {/* Current: "bg-indigo-50 border-indigo-500 text-indigo-700", Default: "border-transparent text-gray-600 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-800" */} + {navigation.map((item) => ( + + { + e.preventDefault(); + router.push(item.href); + }} + className={classNames( + router.pathname === item.href + ? 'bg-indigo-50 border-ci-darker text-ci-darker font-bold' + : 'border-transparent text-gray-600 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-800', + 'block border-l-4 py-2 pl-3 pr-4 text-base font-medium rounded-md' + // 'inline-flex items-center border-b-2 px-1 pt-1 text-sm font-medium text-gray-900' + )} + > + {item.name} + + + ))} +
+ {/*
+
+
+ +
+
+
+ Tom Cook +
+
+ tom@example.com +
+
+ +
+
+ + Your Profile + + + Settings + + + Sign out + +
+
*/} +
+
+ )} +
+ ); +}; + +export default Navigation; diff --git a/democracy/desktop/src/components/organisms/DonateDialog.tsx b/democracy/desktop/src/components/organisms/DonateDialog.tsx new file mode 100644 index 00000000..4120b955 --- /dev/null +++ b/democracy/desktop/src/components/organisms/DonateDialog.tsx @@ -0,0 +1,114 @@ +import { Fragment, useMemo, useRef, useState } from 'react'; + +import { Dialog, Transition } from '@headlessui/react'; +// import { CheckIcon } from '@heroicons/react/24/outline'; + +export default function DonateDialog() { + const [open, setOpen] = useState(false); + useMemo(() => { + const timeout = setTimeout(() => { + setOpen(true); + }, 800); + return () => clearTimeout(timeout); + }, []); + + const cancelButtonRef = useRef(null); + const acceptButtonRef = useRef(null); + + return ( + + {}} + // onClose={setOpen} + > + +
+ + +
+
+ + +
+ {/*
+
*/} +
+ + Wir brauchen Dich! 🫵🏼 + +
+

+ Sichere die Existenz der DEMOCRACY App, indem Du das + Projekt{' '} + setOpen(false)} + target="_blank" + className="text-ci-blue underline" + rel="noreferrer" + > + finanziell + {' '} + unterstützt! +

+
+
+
+
+ + +
+
+
+
+
+
+
+ ); +} diff --git a/democracy/desktop/src/components/organisms/DoughnutChart.tsx b/democracy/desktop/src/components/organisms/DoughnutChart.tsx new file mode 100644 index 00000000..b62c0edc --- /dev/null +++ b/democracy/desktop/src/components/organisms/DoughnutChart.tsx @@ -0,0 +1,143 @@ +import { useRef, useState } from 'react'; + +import { Chart as ChartJS, ArcElement } from 'chart.js'; +import { Doughnut } from 'react-chartjs-2'; + +ChartJS.register(ArcElement); + +const icons = { + yes: 'M19.396 20.708c-.81-.062-.733-.812.031-.953 1.269-.234 1.827-.914 1.827-1.543 0-.529-.396-1.022-1.098-1.181-.837-.189-.664-.757.031-.812 1.132-.09 1.688-.764 1.688-1.41 0-.565-.425-1.108-1.261-1.22-.857-.115-.578-.734.031-.922.521-.16 1.354-.5 1.354-1.51 0-.672-.5-1.562-2.271-1.49-1.228.05-3.667-.198-4.979-.885.907-3.657.689-8.782-1.687-8.782-1.594 0-1.896 1.807-2.375 3.469-1.718 5.969-5.156 7.062-8.687 7.603v9.928c6.688 0 8.5 3 13.505 3 3.199 0 4.852-1.735 4.852-2.666-.001-.334-.273-.572-.961-.626z', + no: 'M19.396 3.292c-.811.062-.734.812.031.953 1.268.234 1.826.914 1.826 1.543 0 .529-.396 1.022-1.098 1.181-.837.189-.664.757.031.812 1.133.09 1.688.764 1.688 1.41 0 .565-.424 1.108-1.26 1.22-.857.115-.578.734.031.922.521.16 1.354.5 1.354 1.51 0 .672-.5 1.562-2.271 1.49-1.228-.05-3.666.198-4.979.885.907 3.657.689 8.782-1.687 8.782-1.594 0-1.896-1.807-2.375-3.469-1.718-5.969-5.156-7.062-8.687-7.603v-9.928c6.688 0 8.5-3 13.505-3 3.198 0 4.852 1.735 4.852 2.666-.001.334-.273.572-.961.626z', + neutral: + 'M3.291 4.604c.062.811.812.734.953-.031.234-1.268.914-1.826 1.543-1.826.529 0 1.022.396 1.182 1.098.189.837.758.664.812-.031.09-1.133.764-1.688 1.41-1.688.564 0 1.108.424 1.221 1.26.114.857.734.578.922-.031.16-.522.499-1.355 1.51-1.355.672 0 1.562.5 1.49 2.271-.051 1.228.197 3.666.885 4.979 3.656-.906 8.781-.688 8.781 1.688 0 1.594-1.807 1.896-3.469 2.375-5.969 1.719-7.062 5.156-7.604 8.688h-9.927c0-6.688-3-8.5-3-13.505 0-3.198 1.734-4.852 2.666-4.852.334 0 .572.272.625.96z', +}; + +interface Props { + className?: string; + votes: Votes; + onHover?: (vote?: VoteCategory, key?: string | null) => void; +} + +export interface Votes { + yes: VoteCategory; + no: VoteCategory; + abstination?: VoteCategory; + notVoted?: VoteCategory; + partyVotes?: PartyVote[]; +} + +export interface VoteCategory { + label: string; + color: string; + count: number; +} + +export interface PartyVote { + party: string; + main: string; + yes: number; + no: number; + abstination: number; + notVoted: number; +} + +export default function DoughnutChart({ className, votes, onHover }: Props) { + const itsNeutral = + votes.yes.count + votes.no.count < (votes?.abstination?.count ?? 0); + const itsAYes = votes.yes.count > votes.no.count; + + let ico: string = itsAYes ? icons.yes : icons.no; + let col = itsAYes ? votes.yes.color : votes.no.color; + + if (itsNeutral) { + ico = icons.neutral; + col = votes?.abstination?.color ?? col; + } + const chartRef = useRef(); + + const colors = Object.values(votes).map((v) => v?.color); + const counts = Object.values(votes).map((v) => v?.count); + + // current index + const [index, setIndex] = useState(null); + + return ( +
+ { + const i = elements?.length ? elements[0]!.index : null; + if (i === index) return; + + const item = i !== null ? Object.values(votes)[i] : null; + const key = i !== null ? Object.keys(votes)[i] : null; + + setIndex(i); + if (onHover) { + onHover(item, key); + } + }, + onClick: (_, elements) => { + const i = elements?.length ? elements[0]!.index : null; + + const item = i !== null ? Object.values(votes)[i] : null; + const key = i !== null ? Object.keys(votes)[i] : null; + + setIndex(i); + if (onHover) { + onHover(item, key); + } + }, + }} + onMouseOut={() => { + setIndex(null); + if (onHover) { + onHover(); + } + }} + data={{ + datasets: [ + { + borderWidth: 2, + borderColor: '#fff', + backgroundColor: colors, + offset: 0, + // offset: -6, + data: counts, + borderJoinStyle: 'miter', + // hoverOffset: -2, + // hoverBorderWidth: 2, + // hoverBorderColor: '#fff', + // hoverBorderColor: colors, + // hoverBorderWidth: 2, + // hoverOffset: -4, + // hoverBackgroundColor: colors, + }, + ], + }} + /> +
+ + + +
+
+ ); +} diff --git a/democracy/desktop/src/components/state/states.tsx b/democracy/desktop/src/components/state/states.tsx new file mode 100644 index 00000000..89ca0a58 --- /dev/null +++ b/democracy/desktop/src/components/state/states.tsx @@ -0,0 +1,53 @@ +import { atom, selector } from 'recoil'; + +const filterForTypeState = atom({ + key: 'filterForTypeState', + default: [], +}); +const filterForSubjectState = atom({ + key: 'filterForSubjectState', + default: [], +}); + +const filterSizeState = selector({ + key: 'filterSizeState', + get: ({ get }) => { + const type = get(filterForTypeState); + const subject = get(filterForSubjectState); + + return type.length + subject.length; + }, +}); + +const filterState = selector({ + key: 'filterState', + get: ({ get }) => { + const type = get(filterForTypeState); + const subject = get(filterForSubjectState); + + return [...type, ...subject]; + }, +}); + +const searchTermState = atom({ + key: 'searchTermState', + default: '', +}); + +const searchActiveState = selector({ + key: 'searchActiveState', + get: ({ get }) => { + const term = get(searchTermState); + + return term?.length > 3 && term.trim() !== ''; + }, +}); + +export { + filterForTypeState, + filterForSubjectState, + filterSizeState, + filterState, + searchTermState, + searchActiveState, +}; diff --git a/democracy/desktop/src/components/templates/FilteredPage.tsx b/democracy/desktop/src/components/templates/FilteredPage.tsx new file mode 100644 index 00000000..6eef2aaa --- /dev/null +++ b/democracy/desktop/src/components/templates/FilteredPage.tsx @@ -0,0 +1,210 @@ +import { useMemo, useState } from 'react'; + +import { useQuery } from '@apollo/client'; +import { uniqBy, groupBy as _groupBy } from 'lodash-es'; +import { useRouter } from 'next/router'; +import useInfiniteScroll from 'react-infinite-scroll-hook'; +import { useRecoilState, useRecoilValue } from 'recoil'; + +import Card from '@/components/molecules/Card'; +import Empty from '@/components/molecules/Empty'; +import Filters from '@/components/molecules/Filters'; +import Loading from '@/components/molecules/Loading'; +import { + filterForSubjectState, + filterForTypeState, + filterState, +} from '@/components/state/states'; +import { config } from '@/config/constants'; +import { Meta } from '@/layout/Meta'; +import { GET_PROCEDURES } from '@/queries/get-procedures'; +import { Main } from '@/templates/Main'; +import { AppConfig } from '@/utils/AppConfig'; + +interface Props { + listTypes: string[]; + title: string; + description: string; + groupBy?: (item: any) => string; +} + +export default function FilteredPage({ + listTypes, + title, + description, + groupBy, +}: Props) { + const router = useRouter(); + const filters = useRecoilValue(filterState); + const [filterSubject, setFilterSubject] = useRecoilState( + filterForSubjectState + ); + const [filterType, setFilterType] = useRecoilState(filterForTypeState); + const [isLoadingMore, setIsLoadingMore] = useState(false); + const [hasMore, setHasMore] = useState(true); + const [offset, setOffset] = useState(0); + + const toggleValue = (items: any, value: any): any => { + if (items.includes(value)) { + return items.filter((s: string) => s !== value) as never; + } + return [...items, value] as never; + }; + + const pageSize = 15; + + const { loading, data, error, fetchMore } = useQuery(GET_PROCEDURES, { + variables: { + filter: { + subjectGroups: filterSubject, + type: filterType, + }, + listTypes, + offset: 0, + pageSize, + sort: 'voteDate', + period: config.period, + context: { + debounceKey: title, + }, + }, + }); + + const [sentryRef] = useInfiniteScroll({ + loading: isLoadingMore, + hasNextPage: hasMore, + onLoadMore: () => { + setIsLoadingMore(true); + setOffset(offset + pageSize); + fetchMore({ + variables: { + offset, + }, + }).then((res: any) => { + setHasMore(res.data?.procedures.length === pageSize); + setIsLoadingMore(false); + }); + }, + disabled: !!error, + rootMargin: '0px 0px 800px 0px', + }); + + const isEmpty = error || data?.procedures?.length <= 0; + + const isLoading = useMemo(() => { + return !error && loading && !isLoadingMore; + }, [error, loading, isLoadingMore]); + + const isReady = useMemo(() => { + return !error && !isEmpty && !loading && data?.procedures.length > 0; + }, [error, isEmpty, loading, data]); + + const grouped = useMemo(() => { + if (isReady && !!groupBy) { + return _groupBy(uniqBy(data?.procedures, '_id'), groupBy); + } + return {}; + }, [isReady, groupBy, data?.procedures]); + + return ( +
+ } + > +
+
+
+

+ {title} +

+

+ {description} +

+
+ { + if (group === 'subject') { + setFilterSubject(toggleValue(filterSubject, id)); + } else { + setFilterType(toggleValue(filterType, id)); + } + setHasMore(true); + setOffset(0); + }} + onReset={() => { + setFilterSubject([]); + setFilterType([]); + setHasMore(true); + setOffset(0); + // refetch(); + }} + /> +
+
+
+ {isLoading && } + {isReady && + !!groupBy && + Object.keys(grouped).map((key: string) => { + return ( +
+
+
{key}
+
+
+ {grouped[key]!.map((item: any) => { + // eslint-disable-next-line no-underscore-dangle + return ; + })} +
+
+ ); + })} + + {isReady && + !groupBy && + uniqBy(data?.procedures, '_id').map((item: any) => ( + // eslint-disable-next-line no-underscore-dangle + + ))} + {!loading && isEmpty && } +
+ {(isLoadingMore || (!loading && hasMore && !error)) && ( +
+ +
+ )} +
+
+
+ ); +} + +export async function getServerSideProps({ res }: any) { + res.setHeader( + 'Cache-Control', + 'public, s-maxage=86400, stale-while-revalidate=60' + ); + + return {}; +} diff --git a/democracy/desktop/src/config/constants.ts b/democracy/desktop/src/config/constants.ts new file mode 100644 index 00000000..9e844957 --- /dev/null +++ b/democracy/desktop/src/config/constants.ts @@ -0,0 +1,3 @@ +export const config = { + period: 20, +}; diff --git a/democracy/desktop/src/layout/Layout.tsx b/democracy/desktop/src/layout/Layout.tsx new file mode 100644 index 00000000..63965f1a --- /dev/null +++ b/democracy/desktop/src/layout/Layout.tsx @@ -0,0 +1,18 @@ +import { FC, ReactNode } from 'react'; + +import Navigation from '@/components/molecules/Navigation'; +import DonateDialog from '@/components/organisms/DonateDialog'; + +interface Props { + children: ReactNode; +} + +const Layout: FC = ({ children }) => ( +
+ +
{children}
+ +
+); + +export default Layout; diff --git a/democracy/desktop/src/layout/Meta.tsx b/democracy/desktop/src/layout/Meta.tsx new file mode 100644 index 00000000..8d06de23 --- /dev/null +++ b/democracy/desktop/src/layout/Meta.tsx @@ -0,0 +1,73 @@ +import { truncate } from 'lodash-es'; +import Head from 'next/head'; +import { useRouter } from 'next/router'; +import { NextSeo } from 'next-seo'; + +import { AppConfig } from '@/utils/AppConfig'; + +type IMetaProps = { + title?: string; + description?: string; + canonical?: string; +}; + +const Meta = (props: IMetaProps) => { + const router = useRouter(); + + return ( + <> + + + + + + + + + + + ); +}; + +export { Meta }; diff --git a/democracy/desktop/src/pages/[...details].tsx b/democracy/desktop/src/pages/[...details].tsx new file mode 100644 index 00000000..ab8913bb --- /dev/null +++ b/democracy/desktop/src/pages/[...details].tsx @@ -0,0 +1,204 @@ +import { PaperClipIcon } from '@heroicons/react/outline'; +import dayjs from 'dayjs'; +import { sortBy, truncate } from 'lodash-es'; + +import ChartPair from '@/components/molecules/ChartPair'; +import Loading from '@/components/molecules/Loading'; +import { Meta } from '@/layout/Meta'; +import { GET_PROCEDURE_DETAILS } from '@/queries/get-procedure-details'; +import { Main } from '@/templates/Main'; +import { AppConfig } from '@/utils/AppConfig'; +import getClient from '@/utils/Client'; + +export default function DetailsPage({ data, resolvedUrl }: any) { + return ( +
+ } + > +
+ {!data ? ( + + ) : ( + <> +
+
+ +

+ {data.procedure.title} +

+

+ {data.procedure.sessionTOPHeading} +

+
+
+
+ {/*
+ {data.procedure.abstract} +
*/} + +
+
+

+ Details +

+ {/*

+ Personal details and application. +

*/} +
+
+
+
+
Typ
+
+ {data.procedure.type} +
+
+
+
+ Vorgang +
+
+ {data.procedure.procedureId} +
+
+
+
+ Sachgebiete +
+
+ {data.procedure.subjectGroups.join(', ')} +
+
+
+
+ erstellt am +
+
+ {dayjs(data.procedure.submissionDate).format( + 'DD.MM.YYYY' + )} +
+
+
+
+ Abstimmung +
+
+ {dayjs(data.procedure.voteDate).format('DD.MM.YYYY')} +
+
+
+
+ Aktueller Stand +
+
+ {data.procedure.currentStatus} +
+
+ {data.procedure.abstract && ( +
+
+ Inhalt +
+
+ {data.procedure.abstract} +
+
+ )} +
+
+
+ Dokumente +
+
+ +
+
+
+
+
+
+ + )} +
+
+ ); +} + +export async function getServerSideProps({ res, query, resolvedUrl }: any) { + res.setHeader( + 'Cache-Control', + 'public, s-maxage=86400, stale-while-revalidate=60' + ); + + const [, id] = query.details ?? ([null, null] as any); + + const client = getClient(); + const { data } = await client.query({ + query: GET_PROCEDURE_DETAILS, + variables: { + id, + }, + }); + + return { + props: { + id, + data, + resolvedUrl, + }, + }; +} diff --git a/democracy/desktop/src/pages/_404.tsx b/democracy/desktop/src/pages/_404.tsx new file mode 100644 index 00000000..d97b8763 --- /dev/null +++ b/democracy/desktop/src/pages/_404.tsx @@ -0,0 +1,15 @@ +import { useEffect } from 'react'; + +import { useRouter } from 'next/router'; + +import Empty from '@/components/molecules/Empty'; + +export default function FourOhFour() { + const router = useRouter(); + + useEffect(() => { + router.push('/'); + }); + + return ; +} diff --git a/democracy/desktop/src/pages/_app.tsx b/democracy/desktop/src/pages/_app.tsx new file mode 100644 index 00000000..7f178679 --- /dev/null +++ b/democracy/desktop/src/pages/_app.tsx @@ -0,0 +1,24 @@ +import { ApolloProvider } from '@apollo/client'; +import { AppProps } from 'next/app'; +import { RecoilRoot } from 'recoil'; + +import '../styles/global.css'; +import Layout from '@/layout/Layout'; +import getClient from '@/utils/Client'; +import { Progress } from '@/utils/Progress'; + +const client = getClient(); + +Progress.init(); + +const MyApp = ({ Component, pageProps }: AppProps) => ( + + + + + + + +); + +export default MyApp; diff --git a/democracy/desktop/src/pages/_document.tsx b/democracy/desktop/src/pages/_document.tsx new file mode 100644 index 00000000..a44351c8 --- /dev/null +++ b/democracy/desktop/src/pages/_document.tsx @@ -0,0 +1,21 @@ +import Document, { Html, Head, Main, NextScript } from 'next/document'; + +import { AppConfig } from '@/utils/AppConfig'; + +// Need to create a custom _document because i18n support is not compatible with `next export`. +class MyDocument extends Document { + // eslint-disable-next-line class-methods-use-this + render() { + return ( + + + +
+ + + + ); + } +} + +export default MyDocument; diff --git a/democracy/desktop/src/pages/_error.tsx b/democracy/desktop/src/pages/_error.tsx new file mode 100644 index 00000000..069e31af --- /dev/null +++ b/democracy/desktop/src/pages/_error.tsx @@ -0,0 +1,15 @@ +import { useEffect } from 'react'; + +import { useRouter } from 'next/router'; + +import Empty from '@/components/molecules/Empty'; + +export default function Error() { + const router = useRouter(); + + useEffect(() => { + router.push('/'); + }); + + return ; +} diff --git a/democracy/desktop/src/pages/api/apple-app-site-association.ts b/democracy/desktop/src/pages/api/apple-app-site-association.ts new file mode 100644 index 00000000..b16d93fc --- /dev/null +++ b/democracy/desktop/src/pages/api/apple-app-site-association.ts @@ -0,0 +1,46 @@ +import { NextApiRequest, NextApiResponse } from 'next'; + +/** + * NextJS api endpoint to serve the apple-app-site-association file + * to present different versoins for different environments + * for example democracy-app.de presents the production version, + * internal.democracy-app.de presents the staging & development version + */ + +const appleAppSiteAssociationProduction = JSON.stringify({ + applinks: { + apps: [], + details: [ + { + appID: 'A4B84UJD7M.de.democracy-deutschland.clientapp', + paths: ['*'], + }, + ], + }, +}); + +const appleAppSiteAssociationStagingDevelopment = JSON.stringify({ + applinks: { + apps: [], + details: [ + { + appID: 'A4B84UJD7M.de.democracy-deutschland.clientapp.internal', + paths: ['*'], + }, + ], + }, +}); + +export default function handler( + { headers: { host } }: NextApiRequest, + res: NextApiResponse +) { + const isProduction = host === 'democracy-app.de'; + + const appleAppSiteAssociation = isProduction + ? appleAppSiteAssociationProduction + : appleAppSiteAssociationStagingDevelopment; + + res.setHeader('Content-Type', 'application/json'); + res.status(200).send(appleAppSiteAssociation); +} diff --git a/democracy/desktop/src/pages/api/apple-developer-merchantid-domain-association.ts b/democracy/desktop/src/pages/api/apple-developer-merchantid-domain-association.ts new file mode 100644 index 00000000..a7656658 --- /dev/null +++ b/democracy/desktop/src/pages/api/apple-developer-merchantid-domain-association.ts @@ -0,0 +1,164 @@ +import { NextApiRequest, NextApiResponse } from 'next'; + +const assetlinksProduction = `MIIQYwYJKoZIhvcNAQcCoIIQVDCCEFACAQExCzAJBgUrDgMCGgUAMHIGCSqGSIb3DQEHAaBlBGN7 +InRlYW1JZCI6IkE0Qjg0VUpEN00iLCJkb21haW4iOiJkZW1vY3JhY3ktYXBwLmRlIiwiZGF0ZUNy +ZWF0ZWQiOiIyMDIzLTA4LTI2LDE4OjEzOjUxIiwidmVyc2lvbiI6MX2ggg0_MIIENDCCAxygAwIB +AgIIRzxMYfKZiNQwDQYJKoZIhvcNAQELBQAwczEtMCsGA1UEAwwkQXBwbGUgaVBob25lIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MSAwHgYDVQQLDBdDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTETMBEG +A1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwHhcNMjMwNDExMjIyMzU5WhcNMjgwNDA5MjIy +MzU4WjBZMTUwMwYDVQQDDCxBcHBsZSBpUGhvbmUgT1MgUHJvdmlzaW9uaW5nIFByb2ZpbGUgU2ln +bmluZzETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUA +A4IBDwAwggEKAoIBAQDqQ-T801OftoAP_MZtborJ1sPSjvvdm_fAS-H7SOnN8ywYMsbuLNMxMBfR +qETC-alko-KO66ung4IsLcGGAq8EV1OZTQw3kEN2dntunBtrFbHkAf2dnBWbd3_A9CPRrqCyRPoh +S9JNiLxqmAPRUaV08l_u-75ZgUfjT2J7uWOlT9KOyhBOMVWN7VyRR7b2N9PfNt8sW88XTk3DBVE9 +_BlwnwD4tYnX18swFeu51u1Ne5LMXYDLDDsrRw3IW3F7tMHbxtdn0NdThpCXAd7_Br0dmYWk18_u +6kHkXv4KZ3AgFR2U7jRm7kJqz9-j9RBKxJiy1VxoSO37mqdw_haZsxf1AgMBAAGjgeUwgeIwDAYD +VR0TAQH_BAIwADAfBgNVHSMEGDAWgBRv8ZUYYlzgyPHF7WwYyeDTZFKYIDBABggrBgEFBQcBAQQ0 +MDIwMAYIKwYBBQUHMAGGJGh0dHA6Ly9vY3NwLmFwcGxlLmNvbS9vY3NwMDMtYWlwY2EwNzAvBgNV +HR8EKDAmMCSgIqAghh5odHRwOi8vY3JsLmFwcGxlLmNvbS9haXBjYS5jcmwwHQYDVR0OBBYEFE-z +O0h9RI1qIItA5UMxgvmGu4fiMA4GA1UdDwEB_wQEAwIHgDAPBgkqhkiG92NkBjoEAgUAMA0GCSqG +SIb3DQEBCwUAA4IBAQA_jhwU4vCy9v91URbGHQMZjB234-ewkxiLvqlyxQSEbg7ZexxfIzojL6v8 +gudymdsjoHXDYk6EZ8uOwCxOxuKXD-HQB19c2Iz3e5DtHdAA3rNnAhdtWz7zabLH08lXZNGuAkbM +C3ojQtBy_XUPp1kL_tVUZkW7oeW9xT0LQBDLX36J8A3fYT6nc0F4ZVZ5lYZlG2b1DE4Krm5f7UdS +sPJndgGkoi-Fc1YVIBGpVxIFa7yw9xtGOF01__-YxmkJE2UfTcW7K627rOC0gC7eAbO-EifxKZGH +LKblYZU_rn41C1wuDk3yNk-xgQjLr9liXq3vOmkgm6B4u54ffEqBbnolMIIERDCCAyygAwIBAgII +XGPK5Eo3U8kwDQYJKoZIhvcNAQELBQAwYjELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkFwcGxlIElu +Yy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYwFAYDVQQDEw1BcHBs +ZSBSb290IENBMB4XDTE3MDUxMDIxMjczMFoXDTMwMTIzMTAwMDAwMFowczEtMCsGA1UEAwwkQXBw +bGUgaVBob25lIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSAwHgYDVQQLDBdDZXJ0aWZpY2F0aW9u +IEF1dGhvcml0eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQDJRWoBDz6DBIbH_L_cXvAege4XMHNjJi7ePXokzZM-TzlHunW- +88DS8Vmiqx_-CoY82S2aB_IOa7kpkRpfIgqL8XJYBa5MS0TFeaeAPLCI4IwMJ4RdGeWHGTbL48V2 +t7D0QXJR9AVcg0uibaZRuPEm33terWUMxrKYUYy7fRtMwU7ICMfS7WQLtN0bjU9AfRuPSJaSW_PQ +mH7ZvKQZDplhu0FdAcxbd3p9JNDc01P_w9zFlCy2Wk2OGCM5vdnGUj7R8vQliqEqh_3YDEYpUf_t +F2yJJWuHv4ppFJ93n8MVt2iziEW9hOYGAkFkD60qKLgVyeCsp4q6cgQ0sniM-LKFAgMBAAGjgeww +gekwDwYDVR0TAQH_BAUwAwEB_zAfBgNVHSMEGDAWgBQr0GlHlHYJ_vRrjS5ApvdHTX8IXjBEBggr +BgEFBQcBAQQ4MDYwNAYIKwYBBQUHMAGGKGh0dHA6Ly9vY3NwLmFwcGxlLmNvbS9vY3NwMDMtYXBw +bGVyb290Y2EwLgYDVR0fBCcwJTAjoCGgH4YdaHR0cDovL2NybC5hcHBsZS5jb20vcm9vdC5jcmww +HQYDVR0OBBYEFG_xlRhiXODI8cXtbBjJ4NNkUpggMA4GA1UdDwEB_wQEAwIBBjAQBgoqhkiG92Nk +BgISBAIFADANBgkqhkiG9w0BAQsFAAOCAQEAOs-smI2-kiAhCa2V87FcIfo2LVcgRHRzZJIIs5as +922X-ls0OCfPEkbTPBHwB8mZkLHR6BEJpeOla2xjCD-eJfrVmZxM5uXOjrJNaOyLq6OiT4oRFT7c +FCscxkS2b2fFW0-VKS2HXD_cgx53T-3aVKct5xOBwWPEVAsbSwpqKCII1DeSfH9nKF-vPT-3rFkd +ODRkWu4zShlCRCnEyhhr4cFTLS30TcIV9jMyGHjxJm-KTeuUTKPo_w-zA4tl2usu2GVQn9yfit8x +qIRU3FJSQdKyEx0xRkeIXz7uw_KMIwSV66yKPoJsBp8u44tDmmJbNA30mc8s7rpyhhkjpfyOtTCC +BLswggOjoAMCAQICAQIwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkFw +cGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYwFAYDVQQD +Ew1BcHBsZSBSb290IENBMB4XDTA2MDQyNTIxNDAzNloXDTM1MDIwOTIxNDAzNlowYjELMAkGA1UE +BhMCVVMxEzARBgNVBAoTCkFwcGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5MRYwFAYDVQQDEw1BcHBsZSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEA5JGpCR-R2x5HUOsF7V55hC3rNqJXTFXsixmJ3vlLbPUHqyIwAugYPvhQCdN_QaiY +-dHKZpwkaxHQo7vkGyrDH5WeegykR4tb1BY3M8vED03OFGnRyRly9V0O1X9fm_IlA7pVj01dDfFk +NSMVSxVZHbOU9_acns9QusFYUGePCLQg98usLCBvcLY_ATCMt0PPD5098ytJKBrI_s61uQ7ZXhzW +yz21Oq30Dw4AkguxIRYudNU8DdtiFqujcZJHU1XBry9Bs_j743DN5qNMRX4fTGtQlkGJxHRiCxCD +QYczioGxMFjsWgQyjGizjx3eZXP_Z15lvEnYdp8zFGWhd5TJLQIDAQABo4IBejCCAXYwDgYDVR0P +AQH_BAQDAgEGMA8GA1UdEwEB_wQFMAMBAf8wHQYDVR0OBBYEFCvQaUeUdgn-9GuNLkCm90dNfwhe +MB8GA1UdIwQYMBaAFCvQaUeUdgn-9GuNLkCm90dNfwheMIIBEQYDVR0gBIIBCDCCAQQwggEABgkq +hkiG92NkBQEwgfIwKgYIKwYBBQUHAgEWHmh0dHBzOi8vd3d3LmFwcGxlLmNvbS9hcHBsZWNhLzCB +wwYIKwYBBQUHAgIwgbYagbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0 +eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJt +cyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNh +dGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjANBgkqhkiG9w0BAQUFAAOCAQEAXDaZTC14t-2Mm9zz +d5vydtJ3ME_BH4WDhRuZPUc38qmbQI4s1LGQEti-9HOb7tJkD8t5TzTYoj75eP9ryAfsfTmDi1Mg +0zjEsb-aTwpr_yv8WacFCXwXQFYRHnTTt4sjO0ej1W8k4uvRt3DfD0XhJ8rxbXjt57UXF6jcfiI1 +yiXV2Q_Wa9SiJCMR96Gsj3OBYMYbWwkvkrL4REjwYDieFfU9JmcgijNq9w2Cz97roy_5U2pbZMBj +M3f3OgcsVuvaDyEO2rpzGU-12TZ_wYdV2aeZuTJC-9jVcZ5-oVK3G72TQiQSKscPHbZNnF5jyEuA +F1CqitXa5PzQCQc3sHV1ITGCAoUwggKBAgEBMH8wczEtMCsGA1UEAwwkQXBwbGUgaVBob25lIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MSAwHgYDVQQLDBdDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTET +MBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMCCEc8TGHymYjUMAkGBSsOAwIaBQCggdww +GAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMjMwODI2MTgxMzUxWjAj +BgkqhkiG9w0BCQQxFgQU-3ClrowgEmBbDlk6rXtyvSiRNwwwKQYJKoZIhvcNAQk0MRwwGjAJBgUr +DgMCGgUAoQ0GCSqGSIb3DQEBAQUAMFIGCSqGSIb3DQEJDzFFMEMwCgYIKoZIhvcNAwcwDgYIKoZI +hvcNAwICAgCAMA0GCCqGSIb3DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMA0GCSqGSIb3 +DQEBAQUABIIBAHOsNZF8yM7bJRa12nIL4a9dIo93NulBQREICtOYLvP008SH6Rfk2wimFMaUh3Xv +CCc1ge0Qrnt5jJeuLyvpQj4x8jJicJ4R0Lb-2sL7wtvkVmlU-DtEu3BwqDhTGMo_qiXbxun-WtrO +ru5vopiJrJGvU8htV14F8KrpRJ9tMJoW1Vh46s78WLFlpMXHov6qXw5RZ9zHso74lJhX6oRJPssY +EllR5JgA13QevkKLeaxFAZhC37WAe5Un8adZmvsFdFhMS-IbLwaRDv9Yc_8UwR6NH1M8EknCmUbY +MVBjZdUu4AjdL6_zipOAx24LKfIz-5ovoIOqJE6rqvitXPJkLvQ`; + +const assetlinksStagingDevelopment = `MIIQbAYJKoZIhvcNAQcCoIIQXTCCEFkCAQExCzAJBgUrDgMCGgUAMHsGCSqGSIb3DQEHAaBuBGx7 +InRlYW1JZCI6IkE0Qjg0VUpEN00iLCJkb21haW4iOiJpbnRlcm5hbC5kZW1vY3JhY3ktYXBwLmRl +IiwiZGF0ZUNyZWF0ZWQiOiIyMDIzLTA4LTI2LDE3OjM4OjMwIiwidmVyc2lvbiI6MX2ggg0_MIIE +NDCCAxygAwIBAgIIRzxMYfKZiNQwDQYJKoZIhvcNAQELBQAwczEtMCsGA1UEAwwkQXBwbGUgaVBo +b25lIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSAwHgYDVQQLDBdDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwHhcNMjMwNDExMjIyMzU5WhcN +MjgwNDA5MjIyMzU4WjBZMTUwMwYDVQQDDCxBcHBsZSBpUGhvbmUgT1MgUHJvdmlzaW9uaW5nIFBy +b2ZpbGUgU2lnbmluZzETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDqQ-T801OftoAP_MZtborJ1sPSjvvdm_fAS-H7SOnN8ywY +MsbuLNMxMBfRqETC-alko-KO66ung4IsLcGGAq8EV1OZTQw3kEN2dntunBtrFbHkAf2dnBWbd3_A +9CPRrqCyRPohS9JNiLxqmAPRUaV08l_u-75ZgUfjT2J7uWOlT9KOyhBOMVWN7VyRR7b2N9PfNt8s +W88XTk3DBVE9_BlwnwD4tYnX18swFeu51u1Ne5LMXYDLDDsrRw3IW3F7tMHbxtdn0NdThpCXAd7_ +Br0dmYWk18_u6kHkXv4KZ3AgFR2U7jRm7kJqz9-j9RBKxJiy1VxoSO37mqdw_haZsxf1AgMBAAGj +geUwgeIwDAYDVR0TAQH_BAIwADAfBgNVHSMEGDAWgBRv8ZUYYlzgyPHF7WwYyeDTZFKYIDBABggr +BgEFBQcBAQQ0MDIwMAYIKwYBBQUHMAGGJGh0dHA6Ly9vY3NwLmFwcGxlLmNvbS9vY3NwMDMtYWlw +Y2EwNzAvBgNVHR8EKDAmMCSgIqAghh5odHRwOi8vY3JsLmFwcGxlLmNvbS9haXBjYS5jcmwwHQYD +VR0OBBYEFE-zO0h9RI1qIItA5UMxgvmGu4fiMA4GA1UdDwEB_wQEAwIHgDAPBgkqhkiG92NkBjoE +AgUAMA0GCSqGSIb3DQEBCwUAA4IBAQA_jhwU4vCy9v91URbGHQMZjB234-ewkxiLvqlyxQSEbg7Z +exxfIzojL6v8gudymdsjoHXDYk6EZ8uOwCxOxuKXD-HQB19c2Iz3e5DtHdAA3rNnAhdtWz7zabLH +08lXZNGuAkbMC3ojQtBy_XUPp1kL_tVUZkW7oeW9xT0LQBDLX36J8A3fYT6nc0F4ZVZ5lYZlG2b1 +DE4Krm5f7UdSsPJndgGkoi-Fc1YVIBGpVxIFa7yw9xtGOF01__-YxmkJE2UfTcW7K627rOC0gC7e +AbO-EifxKZGHLKblYZU_rn41C1wuDk3yNk-xgQjLr9liXq3vOmkgm6B4u54ffEqBbnolMIIERDCC +AyygAwIBAgIIXGPK5Eo3U8kwDQYJKoZIhvcNAQELBQAwYjELMAkGA1UEBhMCVVMxEzARBgNVBAoT +CkFwcGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYwFAYD +VQQDEw1BcHBsZSBSb290IENBMB4XDTE3MDUxMDIxMjczMFoXDTMwMTIzMTAwMDAwMFowczEtMCsG +A1UEAwwkQXBwbGUgaVBob25lIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSAwHgYDVQQLDBdDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDJRWoBDz6DBIbH_L_cXvAege4XMHNjJi7ePXok +zZM-TzlHunW-88DS8Vmiqx_-CoY82S2aB_IOa7kpkRpfIgqL8XJYBa5MS0TFeaeAPLCI4IwMJ4Rd +GeWHGTbL48V2t7D0QXJR9AVcg0uibaZRuPEm33terWUMxrKYUYy7fRtMwU7ICMfS7WQLtN0bjU9A +fRuPSJaSW_PQmH7ZvKQZDplhu0FdAcxbd3p9JNDc01P_w9zFlCy2Wk2OGCM5vdnGUj7R8vQliqEq +h_3YDEYpUf_tF2yJJWuHv4ppFJ93n8MVt2iziEW9hOYGAkFkD60qKLgVyeCsp4q6cgQ0sniM-LKF +AgMBAAGjgewwgekwDwYDVR0TAQH_BAUwAwEB_zAfBgNVHSMEGDAWgBQr0GlHlHYJ_vRrjS5ApvdH +TX8IXjBEBggrBgEFBQcBAQQ4MDYwNAYIKwYBBQUHMAGGKGh0dHA6Ly9vY3NwLmFwcGxlLmNvbS9v +Y3NwMDMtYXBwbGVyb290Y2EwLgYDVR0fBCcwJTAjoCGgH4YdaHR0cDovL2NybC5hcHBsZS5jb20v +cm9vdC5jcmwwHQYDVR0OBBYEFG_xlRhiXODI8cXtbBjJ4NNkUpggMA4GA1UdDwEB_wQEAwIBBjAQ +BgoqhkiG92NkBgISBAIFADANBgkqhkiG9w0BAQsFAAOCAQEAOs-smI2-kiAhCa2V87FcIfo2LVcg +RHRzZJIIs5as922X-ls0OCfPEkbTPBHwB8mZkLHR6BEJpeOla2xjCD-eJfrVmZxM5uXOjrJNaOyL +q6OiT4oRFT7cFCscxkS2b2fFW0-VKS2HXD_cgx53T-3aVKct5xOBwWPEVAsbSwpqKCII1DeSfH9n +KF-vPT-3rFkdODRkWu4zShlCRCnEyhhr4cFTLS30TcIV9jMyGHjxJm-KTeuUTKPo_w-zA4tl2usu +2GVQn9yfit8xqIRU3FJSQdKyEx0xRkeIXz7uw_KMIwSV66yKPoJsBp8u44tDmmJbNA30mc8s7rpy +hhkjpfyOtTCCBLswggOjoAMCAQICAQIwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCVVMxEzAR +BgNVBAoTCkFwcGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MRYwFAYDVQQDEw1BcHBsZSBSb290IENBMB4XDTA2MDQyNTIxNDAzNloXDTM1MDIwOTIxNDAzNlow +YjELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkFwcGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MRYwFAYDVQQDEw1BcHBsZSBSb290IENBMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA5JGpCR-R2x5HUOsF7V55hC3rNqJXTFXsixmJ3vlLbPUHqyIwAugY +PvhQCdN_QaiY-dHKZpwkaxHQo7vkGyrDH5WeegykR4tb1BY3M8vED03OFGnRyRly9V0O1X9fm_Il +A7pVj01dDfFkNSMVSxVZHbOU9_acns9QusFYUGePCLQg98usLCBvcLY_ATCMt0PPD5098ytJKBrI +_s61uQ7ZXhzWyz21Oq30Dw4AkguxIRYudNU8DdtiFqujcZJHU1XBry9Bs_j743DN5qNMRX4fTGtQ +lkGJxHRiCxCDQYczioGxMFjsWgQyjGizjx3eZXP_Z15lvEnYdp8zFGWhd5TJLQIDAQABo4IBejCC +AXYwDgYDVR0PAQH_BAQDAgEGMA8GA1UdEwEB_wQFMAMBAf8wHQYDVR0OBBYEFCvQaUeUdgn-9GuN +LkCm90dNfwheMB8GA1UdIwQYMBaAFCvQaUeUdgn-9GuNLkCm90dNfwheMIIBEQYDVR0gBIIBCDCC +AQQwggEABgkqhkiG92NkBQEwgfIwKgYIKwYBBQUHAgEWHmh0dHBzOi8vd3d3LmFwcGxlLmNvbS9h +cHBsZWNhLzCBwwYIKwYBBQUHAgIwgbYagbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5 +IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFu +ZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQg +Y2VydGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjANBgkqhkiG9w0BAQUFAAOCAQEAXDaZ +TC14t-2Mm9zzd5vydtJ3ME_BH4WDhRuZPUc38qmbQI4s1LGQEti-9HOb7tJkD8t5TzTYoj75eP9r +yAfsfTmDi1Mg0zjEsb-aTwpr_yv8WacFCXwXQFYRHnTTt4sjO0ej1W8k4uvRt3DfD0XhJ8rxbXjt +57UXF6jcfiI1yiXV2Q_Wa9SiJCMR96Gsj3OBYMYbWwkvkrL4REjwYDieFfU9JmcgijNq9w2Cz97r +oy_5U2pbZMBjM3f3OgcsVuvaDyEO2rpzGU-12TZ_wYdV2aeZuTJC-9jVcZ5-oVK3G72TQiQSKscP +HbZNnF5jyEuAF1CqitXa5PzQCQc3sHV1ITGCAoUwggKBAgEBMH8wczEtMCsGA1UEAwwkQXBwbGUg +aVBob25lIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSAwHgYDVQQLDBdDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMCCEc8TGHymYjUMAkGBSsO +AwIaBQCggdwwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMjMwODI2 +MTczODMwWjAjBgkqhkiG9w0BCQQxFgQU-hF9ICTOzTSxjXsJj2xIBADCu4wwKQYJKoZIhvcNAQk0 +MRwwGjAJBgUrDgMCGgUAoQ0GCSqGSIb3DQEBAQUAMFIGCSqGSIb3DQEJDzFFMEMwCgYIKoZIhvcN +AwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEo +MA0GCSqGSIb3DQEBAQUABIIBAKSIbzkG-V2KSNs840G28tt3jeNUb72rK447dX2X_eFXaXdh2mRL +IBIU9IdQyQB5TKifhXfghVLEv2OqjceWg_EqC8TDPBVnQ0ielyBrdnWsAtIRYJ3aeztWq1cuXr7N +GAzuPrqwiSG4ejZg-3UBV3pNS_E2lsmcxHorsSF4CO6ZX23F6V5ZOHqBciYye9vYysPX5RvGB9P_ +Bify6A_khn30O3h7cEjHgCtUOBiksgmIXfyuWSZ6SmDJmasUFlF0tUbwlo64yTFpKm08AcsswDH7 +2gN8JWGk7faIFIFdRpkK4FsWj8WmVOEVDrH97_kVxFAy3FKqZ-zkebyOIpPf04M`; + +export default function handler( + { headers: { host } }: NextApiRequest, + res: NextApiResponse +) { + const isProduction = host === 'democracy-app.de'; + + const assetlinks = isProduction + ? assetlinksProduction + : assetlinksStagingDevelopment; + + res.status(200).send(assetlinks); +} diff --git a/democracy/desktop/src/pages/api/assetlinks.ts b/democracy/desktop/src/pages/api/assetlinks.ts new file mode 100644 index 00000000..410ea8fe --- /dev/null +++ b/democracy/desktop/src/pages/api/assetlinks.ts @@ -0,0 +1,49 @@ +import { NextApiRequest, NextApiResponse } from 'next'; + +/** + * NextJS api endpoint to serve the apple-app-site-association file + * to present different versoins for different environments + * for example democracy-app.de presents the production version, + * internal.democracy-app.de presents the staging & development version + */ + +const assetlinksProduction = JSON.stringify([ + { + relation: ['delegate_permission/common.handle_all_urls'], + target: { + namespace: 'android_app', + package_name: 'de.democracydeutschland.app', + sha256_cert_fingerprints: [ + '56:C3:CC:61:4B:16:7C:61:D7:77:FB:12:E6:57:96:B4:04:F0:B4:03:4D:C1:0D:63:91:90:4B:67:E7:E7:5A:F5', + ], + }, + }, +]); + +const assetlinksStagingDevelopment = JSON.stringify([ + { + relation: ['delegate_permission/common.handle_all_urls'], + target: { + namespace: 'android_app', + package_name: 'de.democracydeutschland.app.internal', + sha256_cert_fingerprints: [ + 'FA:C6:17:45:DC:09:03:78:6F:B9:ED:E6:2A:96:2B:39:9F:73:48:F0:BB:6F:89:9B:83:32:66:75:91:03:3B:9C', + '56:C3:CC:61:4B:16:7C:61:D7:77:FB:12:E6:57:96:B4:04:F0:B4:03:4D:C1:0D:63:91:90:4B:67:E7:E7:5A:F5', + ], + }, + }, +]); + +export default function handler( + { headers: { host } }: NextApiRequest, + res: NextApiResponse +) { + const isProduction = host === 'democracy-app.de'; + + const assetlinks = isProduction + ? assetlinksProduction + : assetlinksStagingDevelopment; + + res.setHeader('Content-Type', 'application/json'); + res.status(200).send(assetlinks); +} diff --git a/democracy/desktop/src/pages/api/graphql/index.ts b/democracy/desktop/src/pages/api/graphql/index.ts new file mode 100644 index 00000000..1dd81297 --- /dev/null +++ b/democracy/desktop/src/pages/api/graphql/index.ts @@ -0,0 +1,25 @@ +import axios from 'axios'; +import type { NextApiRequest, NextApiResponse } from 'next'; + +const graphql = async (req: NextApiRequest, res: NextApiResponse) => { + const { query, variables } = req.body; + + if (!process.env.APP_API_URL) { + res.status(500).send('Missing APP_API_URL'); + return; + } + + try { + const response = await axios.post(process.env.APP_API_URL, { + query, + variables, + }); + + res.status(response.status).send(response.data); + } catch (error) { + process.stdout.write(JSON.stringify(error, null, 2)); + res.status(500).send("Couldn't fetch data"); + } +}; + +export default graphql; diff --git a/democracy/desktop/src/pages/index.tsx b/democracy/desktop/src/pages/index.tsx new file mode 100644 index 00000000..c676fa6f --- /dev/null +++ b/democracy/desktop/src/pages/index.tsx @@ -0,0 +1,60 @@ +import dayjs from 'dayjs'; + +import FilteredPage from '@/components/templates/FilteredPage'; +import { GET_CONFERENCE_WEEK } from '@/queries/get-conference-week'; +import getClient from '@/utils/Client'; + +interface Props { + conferenceWeek: { + calendarWeek: string; + end: string; + start: string; + }; +} + +export default function CurrentPage({ conferenceWeek }: Props) { + if (conferenceWeek) { + const start = dayjs(conferenceWeek.start).format('DD.MM.'); + const end = dayjs(conferenceWeek.end).format('DD.MM.YYYY'); + + return ( + + ); + } + return ( + + ); +} + +export async function getServerSideProps({ res }: any) { + res.setHeader( + 'Cache-Control', + 'public, s-maxage=86400, stale-while-revalidate=60' + ); + + const client = getClient(); + let data; + try { + const result = await client.query({ + query: GET_CONFERENCE_WEEK, + }); + data = result.data; + } catch (e) { + return { props: {} }; + } + + return { + props: { + conferenceWeek: data.currentConferenceWeek, + }, + }; +} diff --git a/democracy/desktop/src/pages/suche.tsx b/democracy/desktop/src/pages/suche.tsx new file mode 100644 index 00000000..41869c9d --- /dev/null +++ b/democracy/desktop/src/pages/suche.tsx @@ -0,0 +1,82 @@ +import { useQuery } from '@apollo/client'; +import { useRouter } from 'next/router'; +import { useRecoilState } from 'recoil'; + +import Card from '@/components/molecules/Card'; +import Empty from '@/components/molecules/Empty'; +import Loading from '@/components/molecules/Loading'; +import { searchTermState } from '@/components/state/states'; +import { config } from '@/config/constants'; +import { Meta } from '@/layout/Meta'; +import { SEARCH_PROCEDURES } from '@/queries/search-procedures'; +import { Main } from '@/templates/Main'; +import { AppConfig } from '@/utils/AppConfig'; + +export default function Top100Page() { + const router = useRouter(); + const [searchTerm] = useRecoilState(searchTermState); + + const { loading, data, error } = useQuery(SEARCH_PROCEDURES, { + variables: { + term: searchTerm ?? null, + period: config.period, + }, + context: { + // Requests get debounced together if they share the same debounceKey. + // Requests without a debounce key are passed to the next link unchanged. + debounceKey: 'search', + debounceTimeout: 1000, + }, + }); + + const isEmpty = + error || data?.searchProceduresAutocomplete?.procedures?.length <= 0; + + return ( +
+ } + > +
+
+
+

+ Suche +

+

+ {`Wir suchen nach "${searchTerm === '' ? '?' : searchTerm}"`} +

+
+
+
+
+ {!error && loading && } + {!error && + !isEmpty && + !loading && + data?.searchProceduresAutocomplete?.procedures.map( + (item: { procedureId: any }) => ( + + ) + )} + {!loading && isEmpty && } +
+
+
+
+ ); +} diff --git a/democracy/desktop/src/pages/top-100.tsx b/democracy/desktop/src/pages/top-100.tsx new file mode 100644 index 00000000..1e328bb4 --- /dev/null +++ b/democracy/desktop/src/pages/top-100.tsx @@ -0,0 +1,12 @@ +import FilteredPage from '@/components/templates/FilteredPage'; + +export default function Top100Page() { + return ( + + ); +} diff --git a/democracy/desktop/src/pages/vergangen.tsx b/democracy/desktop/src/pages/vergangen.tsx new file mode 100644 index 00000000..aabf7182 --- /dev/null +++ b/democracy/desktop/src/pages/vergangen.tsx @@ -0,0 +1,22 @@ +import dayjs from 'dayjs'; +import isoWeek from 'dayjs/plugin/isoWeek'; + +import FilteredPage from '@/components/templates/FilteredPage'; + +dayjs.extend(isoWeek); + +export default function PastPage() { + return ( + { + const date = dayjs(item.voteDate); + const week = date.isoWeek(); + const year = date.year(); + return `KW ${week} - ${year}`; + }} + /> + ); +} diff --git a/democracy/desktop/src/queries/get-conference-week.tsx b/democracy/desktop/src/queries/get-conference-week.tsx new file mode 100644 index 00000000..694b96aa --- /dev/null +++ b/democracy/desktop/src/queries/get-conference-week.tsx @@ -0,0 +1,11 @@ +import { gql } from '@apollo/client'; + +export const GET_CONFERENCE_WEEK = gql` + query conferenceWeek { + currentConferenceWeek { + calendarWeek + end + start + } + } +`; diff --git a/democracy/desktop/src/queries/get-procedure-details.tsx b/democracy/desktop/src/queries/get-procedure-details.tsx new file mode 100644 index 00000000..8e2f6789 --- /dev/null +++ b/democracy/desktop/src/queries/get-procedure-details.tsx @@ -0,0 +1,58 @@ +import { gql } from '@apollo/client'; + +export const GET_PROCEDURE_DETAILS = gql` + query procedure($id: ID!) { + procedure(id: $id) { + _id + list + completed + title + sessionTOPHeading + procedureId + type + votes + communityVotes { + yes + no + abstination + __typename + } + voteDate + subjectGroups + tags + abstract + currentStatus + submissionDate + voteResults { + yes + no + abstination + notVoted + decisionText + namedVote + partyVotes { + main + party + deviants { + yes + abstination + no + notVoted + __typename + } + __typename + } + __typename + } + importantDocuments { + editor + type + url + number + __typename + } + currentStatusHistory + __typename + } + } +`; diff --git a/democracy/desktop/src/queries/get-procedures.tsx b/democracy/desktop/src/queries/get-procedures.tsx new file mode 100644 index 00000000..aebb6aac --- /dev/null +++ b/democracy/desktop/src/queries/get-procedures.tsx @@ -0,0 +1,59 @@ +import { gql } from '@apollo/client'; + +export const GET_PROCEDURES = gql` + query procedures( + $offset: Int + $pageSize: Int + $listTypes: [ListType!] + $sort: String + $filter: ProcedureFilter + $period: Int + ) { + procedures( + offset: $offset + pageSize: $pageSize + listTypes: $listTypes + sort: $sort + filter: $filter + period: $period + ) { + _id + title + procedureId + sessionTOPHeading + type + votes + communityVotes { + yes + no + abstination + __typename + } + voteDate + subjectGroups + currentStatus + voteResults { + yes + no + abstination + notVoted + decisionText + namedVote + partyVotes { + main + party + deviants { + yes + abstination + no + notVoted + __typename + } + __typename + } + __typename + } + __typename + } + } +`; diff --git a/democracy/desktop/src/queries/search-procedures.tsx b/democracy/desktop/src/queries/search-procedures.tsx new file mode 100644 index 00000000..7a479fab --- /dev/null +++ b/democracy/desktop/src/queries/search-procedures.tsx @@ -0,0 +1,40 @@ +import { gql } from '@apollo/client'; + +export const SEARCH_PROCEDURES = gql` + query search($term: String!, $period: Int!) { + searchProceduresAutocomplete(term: $term, period: $period) { + procedures { + _id + title + sessionTOPHeading + procedureId + type + votes + communityVotes { + yes + no + abstination + __typename + } + currentStatus + voteDate + voteResults { + yes + no + abstination + notVoted + namedVote + partyVotes { + main + __typename + } + __typename + } + subjectGroups + __typename + } + autocomplete + __typename + } + } +`; diff --git a/democracy/desktop/src/styles/global.css b/democracy/desktop/src/styles/global.css new file mode 100644 index 00000000..41b2f7f6 --- /dev/null +++ b/democracy/desktop/src/styles/global.css @@ -0,0 +1,15 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer components { + .hyphens-none { + hyphens: none; + } + .hyphens-manual { + hyphens: manual; + } + .hyphens-auto { + hyphens: auto; + } +} diff --git a/democracy/desktop/src/templates/Main.tsx b/democracy/desktop/src/templates/Main.tsx new file mode 100644 index 00000000..90f32c53 --- /dev/null +++ b/democracy/desktop/src/templates/Main.tsx @@ -0,0 +1,57 @@ +import { ReactNode } from 'react'; + +import { AppConfig } from '@/utils/AppConfig'; + +type IMainProps = { + meta: ReactNode; + children: ReactNode; +}; + +const Main = (props: IMainProps) => ( +
+ {props.meta} + +
{props.children}
+ + +
+); + +export { Main }; diff --git a/democracy/desktop/src/utils/AppConfig.ts b/democracy/desktop/src/utils/AppConfig.ts new file mode 100644 index 00000000..7dcb7867 --- /dev/null +++ b/democracy/desktop/src/utils/AppConfig.ts @@ -0,0 +1,170 @@ +export const AppConfig = { + site_name: 'DEMOCRACY Deutschland e.V.', + title: 'DEMOCRACY Browser', + description: + 'Verfolge Gesetzesvorlagen und -entscheidungen mit der offiziellen Browserversion der DEMOCRACY App', + url: 'https://democracy-app.de', + locale: 'de', + filters: { + type: { + id: 'type', + label: 'Vorgangstypen', + options: [ + { + value: 'Antrag', + label: 'Antrag', + }, + { + value: 'Gesetzgebung', + label: 'Gesetzgebung', + }, + ], + }, + subjectGroups: { + id: 'subjectGroups', + label: 'Sachgebiete', + options: [ + { + value: 'Arbeit und Beschäftigung', + label: 'Arbeit und Beschäftigung', + image: 'arbeit_beschaeftigung', + }, + { + value: 'Ausländerpolitik, Zuwanderung', + label: 'Ausländerpolitik, Zuwanderung', + image: 'auslaenderpolitik', + }, + { + value: 'Außenpolitik und internationale Beziehungen', + label: 'Außenpolitik und internationale Beziehungen', + image: 'aussenpolitik', + }, + { + value: 'Außenwirtschaft', + label: 'Außenwirtschaft', + image: 'aussenwirtschaft', + }, + { + value: 'Bildung und Erziehung', + label: 'Bildung und Erziehung', + image: 'bildung_erziehung', + }, + { + value: 'Bundestag', + label: 'Bundestag', + image: 'bundestag', + }, + { + value: 'Energie', + label: 'Energie', + image: 'energie', + }, + { + value: 'Entwicklungspolitik', + label: 'Entwicklungspolitik', + image: 'entwicklungspolitik', + }, + { + value: 'Europapolitik und Europäische Union', + label: 'Europapolitik und Europäische Union', + image: 'europapolitik', + }, + { + value: 'Gesellschaftspolitik, soziale Gruppen', + label: 'Gesellschaftspolitik, soziale Gruppen', + image: 'gesellschaft', + }, + { + value: 'Gesundheit', + label: 'Gesundheit', + image: 'gesundheit', + }, + { + value: 'Innere Sicherheit', + label: 'Innere Sicherheit', + image: 'innere_sicherheit', + }, + { + value: 'Kultur', + label: 'Kultur', + image: 'kultur', + }, + { + value: 'Landwirtschaft und Ernährung', + label: 'Landwirtschaft und Ernährung', + image: 'landwirtschaft_ernaehrung', + }, + { + value: 'Medien, Kommunikation und Informationstechnik', + label: 'Medien, Kommunikation und Informationstechnik', + image: 'it', + }, + { + value: 'Neue Bundesländer / innerdeutsche Beziehungen', + label: 'Neue Bundesländer / innerdeutsche Beziehungen', + image: 'neue_bundeslaender', + }, + { + value: 'Öffentliche Finanzen, Steuern und Abgaben', + label: 'Öffentliche Finanzen, Steuern und Abgaben', + image: 'oeffentliche_finanzen_steuern_und_abgaben', + }, + { + value: 'Politisches Leben, Parteien', + label: 'Politisches Leben, Parteien', + image: 'politisches_leben_parteien', + }, + { + value: 'Raumordnung, Bau- und Wohnungswesen', + label: 'Raumordnung, Bau- und Wohnungswesen', + image: 'bauwesen', + }, + { + value: 'Recht', + label: 'Recht', + image: 'recht', + }, + { + value: 'Soziale Sicherung', + label: 'Soziale Sicherung', + image: 'soziale_sicherung', + }, + { + value: 'Sport, Freizeit und Tourismus', + label: 'Sport, Freizeit und Tourismus', + image: 'tourismus', + }, + { + value: 'Staat und Verwaltung', + label: 'Staat und Verwaltung', + image: 'staat_verwaltung', + }, + { + value: 'Umwelt', + label: 'Umwelt', + image: 'umwelt', + }, + { + value: 'Verkehr', + label: 'Verkehr', + image: 'verkehr', + }, + { + value: 'Verteidigung', + label: 'Verteidigung', + image: 'verteidigung', + }, + { + value: 'Wirtschaft', + label: 'Wirtschaft', + image: 'wirtschaft', + }, + { + value: 'Wissenschaft, Forschung und Technologie', + label: 'Wissenschaft, Forschung und Technologie', + image: 'wissenschaft_forschung_technologie', + }, + ], + }, + }, +}; diff --git a/democracy/desktop/src/utils/Client.ts b/democracy/desktop/src/utils/Client.ts new file mode 100644 index 00000000..44fad606 --- /dev/null +++ b/democracy/desktop/src/utils/Client.ts @@ -0,0 +1,36 @@ +import { + ApolloClient, + ApolloLink, + HttpLink, + InMemoryCache, +} from '@apollo/client'; +import { offsetLimitPagination } from '@apollo/client/utilities'; +import DebounceLink from 'apollo-link-debounce'; + +export default function getClient() { + const isServer = typeof window === 'undefined'; + const host = isServer ? process.env.APP_HOST : window.location.origin; + const link = ApolloLink.from([ + new DebounceLink(100), + new HttpLink({ + uri: `${host}/api/graphql`, + }), + ]); + + const cache = new InMemoryCache({ + typePolicies: { + Query: { + fields: { + procedures: { + ...offsetLimitPagination(['filter', 'sort', 'listTypes', 'period']), + }, + }, + }, + }, + }); + + return new ApolloClient({ + cache, + link, + }); +} diff --git a/democracy/desktop/src/utils/Helpers.ts b/democracy/desktop/src/utils/Helpers.ts new file mode 100644 index 00000000..8a0a4d66 --- /dev/null +++ b/democracy/desktop/src/utils/Helpers.ts @@ -0,0 +1,40 @@ +import accounting from 'accounting'; +import { find } from 'lodash-es'; +import slug from 'slug'; + +import { AppConfig } from './AppConfig'; + +const subjectConfig = [...AppConfig.filters.subjectGroups.options]; + +/** + * just a hacky dummy for getting correct data + * @param term string + * @returns string + */ +export const getImage = (term: string) => { + const img = + find(subjectConfig, { + value: term, + })?.image ?? 'bundestag'; + return `/img/categories/${img}.jpg`; +}; + +export const makeLink = ({ type, procedureId, title }: any) => { + const t = title.split(' ').slice(0, 10).join(' '); + return `/${slug(type)}/${procedureId}/${slug(t)}`; +}; + +export const formatVotes = (votes: number) => { + if (votes < 10000) { + return accounting.formatNumber(votes, { + thousand: '.', + }); + } + if (votes < 100000) { + return `${accounting.formatNumber(accounting.toFixed(votes / 1000, 1), { + precision: 1, + decimal: ',', + })}k`; + } + return `${accounting.toFixed(votes / 1000, 0)}k`; +}; diff --git a/democracy/desktop/src/utils/Progress.ts b/democracy/desktop/src/utils/Progress.ts new file mode 100644 index 00000000..60aa3ca5 --- /dev/null +++ b/democracy/desktop/src/utils/Progress.ts @@ -0,0 +1,16 @@ +import ProgressBar from '@badrap/bar-of-progress'; +import { Router } from 'next/router'; + +export const Progress = { + init() { + const progress = new ProgressBar({ + size: 2, + color: '#4494d3', + className: 'bar-of-progress z-50 !top-16', + delay: 100, + }); + Router.events.on('routeChangeStart', progress.start); + Router.events.on('routeChangeComplete', progress.finish); + Router.events.on('routeChangeError', progress.finish); + }, +}; diff --git a/democracy/desktop/tailwind.config.js b/democracy/desktop/tailwind.config.js new file mode 100644 index 00000000..5f41b3a6 --- /dev/null +++ b/democracy/desktop/tailwind.config.js @@ -0,0 +1,59 @@ +/* eslint-disable global-require */ +module.exports = { + content: ['./src/**/*.{js,ts,jsx,tsx}'], + theme: { + fontSize: { + xs: '0.75rem', + sm: '0.875rem', + base: '1rem', + lg: '1.125rem', + xl: '1.25rem', + '2xl': '1.5rem', + '3xl': '1.875rem', + '4xl': '2.25rem', + '5xl': '3rem', + '6xl': '4rem', + }, + extend: { + aspectRatio: { + teaser: '16 / 6', + }, + colors: { + ci: { + blue: '#4494d3', + 'blue-dark': '#4f81bd', + 'blue-darker': '#1c659f', + pink: '#e67c89', + orange: '#f5a623', + }, + gray: { + 100: '#f7fafc', + 200: '#edf2f7', + 300: '#e2e8f0', + 400: '#cbd5e0', + 500: '#a0aec0', + 600: '#718096', + 700: '#4a5568', + 800: '#2d3748', + 900: '#1a202c', + }, + blue: { + 100: '#ebf8ff', + 200: '#bee3f8', + 300: '#90cdf4', + 400: '#63b3ed', + 500: '#4299e1', + 600: '#3182ce', + 700: '#2b6cb0', + 800: '#2c5282', + 900: '#2a4365', + }, + }, + }, + }, + plugins: [ + require('@tailwindcss/forms'), + require('@tailwindcss/line-clamp'), + require('@tailwindcss/typography'), + ], +}; diff --git a/democracy/desktop/tsconfig.json b/democracy/desktop/tsconfig.json new file mode 100644 index 00000000..d514f12f --- /dev/null +++ b/democracy/desktop/tsconfig.json @@ -0,0 +1,46 @@ +{ + "compilerOptions": { + "lib": ["dom", "dom.iterable", "esnext"], + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "removeComments": true, + "preserveConstEnums": true, + "strict": true, + "alwaysStrict": true, + "strictNullChecks": true, + "noUncheckedIndexedAccess": true, + + "noImplicitAny": false, + "noImplicitReturns": true, + "noImplicitThis": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "allowUnreachableCode": false, + "noFallthroughCasesInSwitch": true, + + "target": "es5", + "outDir": "out", + "declaration": true, + "sourceMap": true, + + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "allowJs": false, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + + "jsx": "preserve", + "noEmit": true, + "isolatedModules": true, + "incremental": true, + + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"], + "@/public/*": ["./public/*"] + } + }, + "exclude": ["./out/**/*", "./node_modules/**/*"], + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"] +} diff --git a/package.json b/package.json index 752100e9..12d40d1e 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "author": "Manuel Ruck ", "license": "Apache-2.0", "private": true, - "packageManager": "pnpm@9.1.0", + "packageManager": "pnpm@9.1.1", "scripts": { "build": "turbo run build", "lint": "turbo run lint", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d44dae36..cc596efb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,7 +22,7 @@ importers: version: 9.1.0(eslint@8.55.0) eslint-plugin-jest: specifier: ^27.6.0 - version: 27.6.0(@typescript-eslint/eslint-plugin@6.13.2(@typescript-eslint/parser@6.13.2(eslint@8.55.0)(typescript@5.4.4))(eslint@8.55.0)(typescript@5.4.4))(eslint@8.55.0)(jest@29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4)))(typescript@5.4.4) + version: 27.6.0(@typescript-eslint/eslint-plugin@6.13.2(@typescript-eslint/parser@6.13.2(eslint@8.55.0)(typescript@5.4.4))(eslint@8.55.0)(typescript@5.4.4))(eslint@8.55.0)(jest@29.7.0)(typescript@5.4.4) eslint-plugin-prettier: specifier: ^5.0.1 version: 5.0.1(@types/eslint@8.56.7)(eslint-config-prettier@9.1.0(eslint@8.55.0))(eslint@8.55.0)(prettier@3.1.1) @@ -49,7 +49,7 @@ importers: version: 3.2.0(graphql@16.8.1) antd: specifier: 5.16.1 - version: 5.16.1(date-fns@1.30.1)(luxon@3.4.3)(moment@2.29.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 5.16.1(luxon@3.4.3)(moment@2.29.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) axios: specifier: ^1.6.8 version: 1.6.8 @@ -110,7 +110,7 @@ importers: version: 1.14.2 '@vanilla-extract/next-plugin': specifier: ^2.4.0 - version: 2.4.0(@types/node@20.12.6)(next@14.2.2(@babel/core@7.24.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(terser@5.30.3)(webpack@5.91.0(@swc/core@1.3.93(@swc/helpers@0.5.5))) + version: 2.4.0(@types/node@20.12.6)(next@14.2.2(@babel/core@7.24.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(terser@5.30.3)(webpack@5.91.0) babel-plugin-styled-components: specifier: ^2.1.4 version: 2.1.4(@babel/core@7.24.4)(styled-components@6.1.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) @@ -207,7 +207,7 @@ importers: version: 5.0.1(@types/eslint@8.56.7)(eslint-config-prettier@9.0.0(eslint@8.52.0))(eslint@8.52.0)(prettier@3.0.3) jest: specifier: 29.7.0 - version: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2)) + version: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@types/node@20.12.6)(typescript@5.2.2)) prettier: specifier: 3.0.3 version: 3.0.3 @@ -286,7 +286,7 @@ importers: version: 10.0.1(typescript@5.2.2) tsup: specifier: ^7.2.0 - version: 7.2.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2))(typescript@5.2.2) + version: 7.2.0(@swc/core@1.3.93)(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(typescript@5.2.2))(typescript@5.2.2) tsup-config: specifier: workspace:* version: link:../../packages/tsup-config @@ -295,6 +295,175 @@ importers: specifier: ^5.2.2 version: 5.2.2 + democracy/desktop: + dependencies: + '@apollo/client': + specifier: ^3.5.10 + version: 3.9.10(@types/react@17.0.80)(graphql-ws@5.14.2(graphql@16.8.1))(graphql@16.8.1)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@badrap/bar-of-progress': + specifier: ^0.1.2 + version: 0.1.2 + '@headlessui/react': + specifier: ^1.5.0 + version: 1.7.19(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@heroicons/react': + specifier: ^1.0.6 + version: 1.0.6(react@17.0.2) + '@tailwindcss/forms': + specifier: ^0.5.0 + version: 0.5.7(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@17.0.45)(typescript@4.9.5))) + '@tailwindcss/line-clamp': + specifier: ^0.3.1 + version: 0.3.1(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@17.0.45)(typescript@4.9.5))) + '@tailwindcss/typography': + specifier: ^0.5.2 + version: 0.5.13(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@17.0.45)(typescript@4.9.5))) + '@types/d3': + specifier: ^5.7.0 + version: 5.16.7 + accounting: + specifier: ^0.4.1 + version: 0.4.1 + apollo-link-debounce: + specifier: ^3.0.0 + version: 3.0.0(@apollo/client@3.9.10(@types/react@17.0.80)(graphql-ws@5.14.2(graphql@16.8.1))(graphql@16.8.1)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) + axios: + specifier: ^1.6.0 + version: 1.6.8 + chart.js: + specifier: ^3.7.1 + version: 3.9.1 + d3: + specifier: ^5.7.0 + version: 5.16.0 + dayjs: + specifier: ^1.11.0 + version: 1.11.10 + graphql: + specifier: ^16.3.0 + version: 16.8.1 + lodash-es: + specifier: ^4.17.21 + version: 4.17.21 + next: + specifier: ^12.1.4 + version: 12.3.4(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + next-seo: + specifier: ^5.4.0 + version: 5.15.0(next@12.3.4(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react: + specifier: ^17.0.2 + version: 17.0.2 + react-chartjs-2: + specifier: ^4.1.0 + version: 4.3.1(chart.js@3.9.1)(react@17.0.2) + react-cool-dimensions: + specifier: ^2.0.7 + version: 2.0.7(react@17.0.2) + react-dom: + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) + react-infinite-scroll-hook: + specifier: ^4.0.3 + version: 4.1.1(react@17.0.2) + react-use: + specifier: ^17.3.2 + version: 17.5.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + recoil: + specifier: ^0.7.0 + version: 0.7.7(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + sharp: + specifier: ^0.30.4 + version: 0.30.7 + slug: + specifier: ^5.3.0 + version: 5.3.0 + devDependencies: + '@next/bundle-analyzer': + specifier: ^12.1.4 + version: 12.3.4 + '@types/lodash-es': + specifier: ^4.17.6 + version: 4.17.12 + '@types/node': + specifier: ^17.0.23 + version: 17.0.45 + '@types/react': + specifier: ^17.0.44 + version: 17.0.80 + '@types/slug': + specifier: ^5.0.3 + version: 5.0.8 + '@typescript-eslint/eslint-plugin': + specifier: ^5.18.0 + version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^5.18.0 + version: 5.62.0(eslint@8.57.0)(typescript@4.9.5) + autoprefixer: + specifier: ^10.4.4 + version: 10.4.19(postcss@8.4.38) + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + cssnano: + specifier: ^5.1.7 + version: 5.1.15(postcss@8.4.38) + eslint: + specifier: ^8.13.0 + version: 8.57.0 + eslint-config-airbnb-base: + specifier: ^15.0.0 + version: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0))(eslint@8.57.0) + eslint-config-airbnb-typescript: + specifier: ^17.0.0 + version: 17.1.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5))(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0))(eslint@8.57.0) + eslint-config-next: + specifier: ^12.1.4 + version: 12.3.4(eslint@8.57.0)(typescript@4.9.5) + eslint-config-prettier: + specifier: ^8.5.0 + version: 8.10.0(eslint@8.57.0) + eslint-plugin-import: + specifier: ^2.26.0 + version: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-typescript@2.7.1)(eslint@8.57.0) + eslint-plugin-jsx-a11y: + specifier: ^6.5.1 + version: 6.8.0(eslint@8.57.0) + eslint-plugin-prettier: + specifier: ^4.0.0 + version: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8) + eslint-plugin-react: + specifier: ^7.29.4 + version: 7.34.1(eslint@8.57.0) + eslint-plugin-react-hooks: + specifier: ^4.4.0 + version: 4.6.0(eslint@8.57.0) + eslint-plugin-tailwindcss: + specifier: ^3.5.0 + version: 3.17.0(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@17.0.45)(typescript@4.9.5))) + eslint-plugin-unused-imports: + specifier: ^2.0.0 + version: 2.0.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0) + npm-run-all: + specifier: ^4.1.5 + version: 4.1.5 + postcss: + specifier: ^8.4.12 + version: 8.4.38 + prettier: + specifier: ^2.6.2 + version: 2.8.8 + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + tailwindcss: + specifier: ^3.0.23 + version: 3.4.3(ts-node@10.9.2(@types/node@17.0.45)(typescript@4.9.5)) + typescript: + specifier: ^4.6.3 + version: 4.9.5 + packages/tsconfig: {} packages/tsup-config: @@ -304,7 +473,7 @@ importers: version: 1.3.93(@swc/helpers@0.5.5) tsup: specifier: ^7.2.0 - version: 7.2.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4))(typescript@5.4.4) + version: 7.2.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(typescript@5.4.4))(typescript@5.4.4) services/cron-jobs/cleanup-push-queue: dependencies: @@ -320,13 +489,13 @@ importers: version: 16.3.1 ts-node-dev: specifier: ^2.0.0 - version: 2.0.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@15.14.9)(typescript@5.2.2) + version: 2.0.0(@swc/core@1.3.93)(@types/node@15.14.9)(typescript@5.2.2) ts-unused-exports: specifier: ^10.0.1 version: 10.0.1(typescript@5.2.2) tsup: specifier: ^7.2.0 - version: 7.2.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@15.14.9)(typescript@5.2.2))(typescript@5.2.2) + version: 7.2.0(@swc/core@1.3.93)(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@15.14.9)(typescript@5.2.2))(typescript@5.2.2) tsup-config: specifier: workspace:* version: link:../../../packages/tsup-config @@ -381,28 +550,28 @@ importers: version: 9.1.0(eslint@8.57.0) eslint-plugin-jest: specifier: ^27.9.0 - version: 27.9.0(@typescript-eslint/eslint-plugin@7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(jest@29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)))(typescript@5.4.2) + version: 27.9.0(@typescript-eslint/eslint-plugin@7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(jest@29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)))(typescript@5.4.2) eslint-plugin-prettier: specifier: ^5.1.3 version: 5.1.3(@types/eslint@8.56.7)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)) + version: 29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)) prettier: specifier: ^3.2.5 version: 3.2.5 ts-jest: specifier: ^29.1.2 - version: 29.1.2(@babel/core@7.24.4)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.4))(esbuild@0.19.12)(jest@29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)))(typescript@5.4.2) + version: 29.1.2(@babel/core@7.24.4)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.4))(esbuild@0.19.12)(jest@29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)))(typescript@5.4.2) ts-node-dev: specifier: ^2.0.0 - version: 2.0.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2) + version: 2.0.0(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2) tsconfig: specifier: workspace:* version: link:../../../packages/tsconfig tsup: specifier: ^8.0.2 - version: 8.0.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2))(typescript@5.4.2) + version: 8.0.2(@swc/core@1.3.93)(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2))(typescript@5.4.2) tsup-config: specifier: workspace:* version: link:../../../packages/tsup-config @@ -445,7 +614,7 @@ importers: version: link:../../../packages/tsconfig tsup: specifier: ^7.2.0 - version: 7.2.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2))(typescript@5.2.2) + version: 7.2.0(@swc/core@1.3.93)(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(typescript@5.2.2))(typescript@5.2.2) tsup-config: specifier: workspace:* version: link:../../../packages/tsup-config @@ -504,7 +673,7 @@ importers: version: 16.3.1 ts-node-dev: specifier: ^2.0.0 - version: 2.0.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2) + version: 2.0.0(@swc/core@1.3.93)(@types/node@20.12.6)(typescript@5.2.2) ts-unused-exports: specifier: ^10.0.1 version: 10.0.1(typescript@5.2.2) @@ -541,7 +710,7 @@ importers: version: 16.3.1 ts-node-dev: specifier: ^2.0.0 - version: 2.0.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.10.4)(typescript@5.3.3) + version: 2.0.0(@swc/core@1.3.93)(@types/node@20.10.4)(typescript@5.3.3) ts-unused-exports: specifier: ^10.0.1 version: 10.0.1(typescript@5.3.3) @@ -650,7 +819,7 @@ importers: version: 16.3.1 ts-node-dev: specifier: ^2.0.0 - version: 2.0.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2) + version: 2.0.0(@swc/core@1.3.93)(@types/node@20.12.6)(typescript@5.2.2) ts-unused-exports: specifier: ^9.0.2 version: 9.0.5(typescript@5.2.2) @@ -659,7 +828,7 @@ importers: version: link:../../../packages/tsconfig tsup: specifier: ^7.2.0 - version: 7.2.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2))(typescript@5.2.2) + version: 7.2.0(@swc/core@1.3.93)(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.12.6)(typescript@5.2.2))(typescript@5.2.2) tsup-config: specifier: workspace:* version: link:../../../packages/tsup-config @@ -734,7 +903,7 @@ importers: version: link:../../../packages/tsconfig tsup: specifier: ^7.2.0 - version: 7.2.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.8.7)(typescript@5.2.2))(typescript@5.2.2) + version: 7.2.0(@swc/core@1.3.93)(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.8.7)(typescript@5.2.2))(typescript@5.2.2) tsup-config: specifier: workspace:* version: link:../../../packages/tsup-config @@ -817,7 +986,7 @@ importers: version: link:../../../packages/tsconfig tsup: specifier: ^7.2.0 - version: 7.2.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.6.4)(typescript@5.2.2))(typescript@5.2.2) + version: 7.2.0(@swc/core@1.3.93)(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.6.4)(typescript@5.2.2))(typescript@5.2.2) tsup-config: specifier: workspace:* version: link:../../../packages/tsup-config @@ -875,7 +1044,7 @@ importers: version: 1.1.8(typescript@5.2.2) tsup: specifier: ^7.2.0 - version: 7.2.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2))(typescript@5.2.2) + version: 7.2.0(@swc/core@1.3.93)(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(typescript@5.2.2))(typescript@5.2.2) tsup-config: specifier: workspace:* version: link:../../../packages/tsup-config @@ -1007,7 +1176,7 @@ importers: version: 3.0.1 ts-node: specifier: ^10.9.1 - version: 10.9.1(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.8.10)(typescript@5.2.2) + version: 10.9.1(@swc/core@1.3.93)(@types/node@20.8.10)(typescript@5.2.2) tslint: specifier: ^6.1.3 version: 6.1.3(typescript@5.2.2) @@ -1074,7 +1243,7 @@ importers: version: 3.0.1 ts-node: specifier: ^10.9.1 - version: 10.9.1(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.8.10)(typescript@5.2.2) + version: 10.9.1(@swc/core@1.3.93)(@types/node@20.8.10)(typescript@5.2.2) tslint: specifier: ^6.1.3 version: 6.1.3(typescript@5.2.2) @@ -1088,6 +1257,10 @@ packages: resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + '@ampproject/remapping@2.2.1': resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} @@ -1706,6 +1879,9 @@ packages: resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} engines: {node: '>=6.9.0'} + '@badrap/bar-of-progress@0.1.2': + resolution: {integrity: sha512-bCwx/HbgUfJEndzlubJF5FVQrFEcGX4HZsoCfoa+gSq37pjbJBvIyqMBLIGnb5y0ICovIrxJUxvlbmxeic0rSQ==} + '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -2607,6 +2783,18 @@ packages: engines: {node: '>=6'} hasBin: true + '@headlessui/react@1.7.19': + resolution: {integrity: sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==} + engines: {node: '>=10'} + peerDependencies: + react: ^16 || ^17 || ^18 + react-dom: ^16 || ^17 || ^18 + + '@heroicons/react@1.0.6': + resolution: {integrity: sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ==} + peerDependencies: + react: '>= 16' + '@humanwhocodes/config-array@0.11.13': resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} engines: {node: '>=10.10.0'} @@ -2761,60 +2949,147 @@ packages: resolution: {integrity: sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==} engines: {node: '>= 0.4'} + '@next/bundle-analyzer@12.3.4': + resolution: {integrity: sha512-eKjgRICzbLTmod0UnJcArFVs5uEAiuZwB6NCf84m+btW7jdylUVoOYf1wi5tA14xk5L9Lho7Prm6/XJ8gxYzfQ==} + + '@next/env@12.3.4': + resolution: {integrity: sha512-H/69Lc5Q02dq3o+dxxy5O/oNxFsZpdL6WREtOOtOM1B/weonIwDXkekr1KV5DPVPr12IHFPrMrcJQ6bgPMfn7A==} + '@next/env@14.2.2': resolution: {integrity: sha512-sk72qRfM1Q90XZWYRoJKu/UWlTgihrASiYw/scb15u+tyzcze3bOuJ/UV6TBOQEeUaxOkRqGeuGUdiiuxc5oqw==} + '@next/eslint-plugin-next@12.3.4': + resolution: {integrity: sha512-BFwj8ykJY+zc1/jWANsDprDIu2MgwPOIKxNVnrKvPs+f5TPegrVnem8uScND+1veT4B7F6VeqgaNLFW1Hzl9Og==} + '@next/eslint-plugin-next@14.1.4': resolution: {integrity: sha512-n4zYNLSyCo0Ln5b7qxqQeQ34OZKXwgbdcx6kmkQbywr+0k6M3Vinft0T72R6CDAcDrne2IAgSud4uWCzFgc5HA==} + '@next/swc-android-arm-eabi@12.3.4': + resolution: {integrity: sha512-cM42Cw6V4Bz/2+j/xIzO8nK/Q3Ly+VSlZJTa1vHzsocJRYz8KT6MrreXaci2++SIZCF1rVRCDgAg5PpqRibdIA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + + '@next/swc-android-arm64@12.3.4': + resolution: {integrity: sha512-5jf0dTBjL+rabWjGj3eghpLUxCukRhBcEJgwLedewEA/LJk2HyqCvGIwj5rH+iwmq1llCWbOky2dO3pVljrapg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@next/swc-darwin-arm64@12.3.4': + resolution: {integrity: sha512-DqsSTd3FRjQUR6ao0E1e2OlOcrF5br+uegcEGPVonKYJpcr0MJrtYmPxd4v5T6UCJZ+XzydF7eQo5wdGvSZAyA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + '@next/swc-darwin-arm64@14.2.2': resolution: {integrity: sha512-3iPgMhzbalizGwHNFUcGnDhFPSgVBHQ8aqSTAMxB5BvJG0oYrDf1WOJZlbXBgunOEj/8KMVbejEur/FpvFsgFQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] + '@next/swc-darwin-x64@12.3.4': + resolution: {integrity: sha512-PPF7tbWD4k0dJ2EcUSnOsaOJ5rhT3rlEt/3LhZUGiYNL8KvoqczFrETlUx0cUYaXe11dRA3F80Hpt727QIwByQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + '@next/swc-darwin-x64@14.2.2': resolution: {integrity: sha512-x7Afi/jt0ZBRUZHTi49yyej4o8znfIMHO4RvThuoc0P+uli8Jd99y5GKjxoYunPKsXL09xBXEM1+OQy2xEL0Ag==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] + '@next/swc-freebsd-x64@12.3.4': + resolution: {integrity: sha512-KM9JXRXi/U2PUM928z7l4tnfQ9u8bTco/jb939pdFUHqc28V43Ohd31MmZD1QzEK4aFlMRaIBQOWQZh4D/E5lQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@next/swc-linux-arm-gnueabihf@12.3.4': + resolution: {integrity: sha512-3zqD3pO+z5CZyxtKDTnOJ2XgFFRUBciOox6EWkoZvJfc9zcidNAQxuwonUeNts6Xbm8Wtm5YGIRC0x+12YH7kw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@next/swc-linux-arm64-gnu@12.3.4': + resolution: {integrity: sha512-kiX0vgJGMZVv+oo1QuObaYulXNvdH/IINmvdZnVzMO/jic/B8EEIGlZ8Bgvw8LCjH3zNVPO3mGrdMvnEEPEhKA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-arm64-gnu@14.2.2': resolution: {integrity: sha512-zbfPtkk7L41ODMJwSp5VbmPozPmMMQrzAc0HAUomVeVIIwlDGs/UCqLJvLNDt4jpWgc21SjjyIn762lNGrMaUA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@next/swc-linux-arm64-musl@12.3.4': + resolution: {integrity: sha512-EETZPa1juczrKLWk5okoW2hv7D7WvonU+Cf2CgsSoxgsYbUCZ1voOpL4JZTOb6IbKMDo6ja+SbY0vzXZBUMvkQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-arm64-musl@14.2.2': resolution: {integrity: sha512-wPbS3pI/JU16rm3XdLvvTmlsmm1nd+sBa2ohXgBZcShX4TgOjD4R+RqHKlI1cjo/jDZKXt6OxmcU0Iys0OC/yg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@next/swc-linux-x64-gnu@12.3.4': + resolution: {integrity: sha512-4csPbRbfZbuWOk3ATyWcvVFdD9/Rsdq5YHKvRuEni68OCLkfy4f+4I9OBpyK1SKJ00Cih16NJbHE+k+ljPPpag==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-linux-x64-gnu@14.2.2': resolution: {integrity: sha512-NqWOHqqq8iC9tuHvZxjQ2tX+jWy2X9y8NX2mcB4sj2bIccuCxbIZrU/ThFPZZPauygajZuVQ6zediejQHwZHwQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@next/swc-linux-x64-musl@12.3.4': + resolution: {integrity: sha512-YeBmI+63Ro75SUiL/QXEVXQ19T++58aI/IINOyhpsRL1LKdyfK/35iilraZEFz9bLQrwy1LYAR5lK200A9Gjbg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-linux-x64-musl@14.2.2': resolution: {integrity: sha512-lGepHhwb9sGhCcU7999+iK1ZZT+6rrIoVg40MP7DZski9GIZP80wORSbt5kJzh9v2x2ev2lxC6VgwMQT0PcgTA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@next/swc-win32-arm64-msvc@12.3.4': + resolution: {integrity: sha512-Sd0qFUJv8Tj0PukAYbCCDbmXcMkbIuhnTeHm9m4ZGjCf6kt7E/RMs55Pd3R5ePjOkN7dJEuxYBehawTR/aPDSQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + '@next/swc-win32-arm64-msvc@14.2.2': resolution: {integrity: sha512-TZSh/48SfcLEQ4rD25VVn2kdIgUWmMflRX3OiyPwGNXn3NiyPqhqei/BaqCYXViIQ+6QsG9R0C8LftMqy8JPMA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] + '@next/swc-win32-ia32-msvc@12.3.4': + resolution: {integrity: sha512-rt/vv/vg/ZGGkrkKcuJ0LyliRdbskQU+91bje+PgoYmxTZf/tYs6IfbmgudBJk6gH3QnjHWbkphDdRQrseRefQ==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + '@next/swc-win32-ia32-msvc@14.2.2': resolution: {integrity: sha512-M0tBVNMEBJN2ZNQWlcekMn6pvLria7Sa2Fai5znm7CCJz4pP3lrvlSxhKdkCerk0D9E0bqx5yAo3o2Q7RrD4gA==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] + '@next/swc-win32-x64-msvc@12.3.4': + resolution: {integrity: sha512-DQ20JEfTBZAgF8QCjYfJhv2/279M6onxFjdG/+5B0Cyj00/EdBxiWb2eGGFgQhrBbNv/lsvzFbbi0Ptf8Vw/bg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + '@next/swc-win32-x64-msvc@14.2.2': resolution: {integrity: sha512-a/20E/wtTJZ3Ykv3f/8F0l7TtgQa2LWHU2oNB9bsu0VjqGuGGHmm/q6waoUNQYTVPYrrlxxaHjJcDV6aiSTt/w==} engines: {node: '>= 10'} @@ -3013,6 +3288,9 @@ packages: resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@polka/url@1.0.0-next.25': + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -3270,6 +3548,9 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + '@swc/helpers@0.4.11': + resolution: {integrity: sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==} + '@swc/helpers@0.5.5': resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} @@ -3280,10 +3561,38 @@ packages: resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} + '@tailwindcss/forms@0.5.7': + resolution: {integrity: sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==} + peerDependencies: + tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1' + + '@tailwindcss/line-clamp@0.3.1': + resolution: {integrity: sha512-pNr0T8LAc3TUx/gxCfQZRe9NB2dPEo/cedPHzUGIPxqDMhgjwNm6jYxww4W5l0zAsAddxr+XfZcqttGiFDgrGg==} + peerDependencies: + tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1' + + '@tailwindcss/typography@0.5.13': + resolution: {integrity: sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + + '@tanstack/react-virtual@3.5.0': + resolution: {integrity: sha512-rtvo7KwuIvqK9zb0VZ5IL7fiJAEnG+0EiFZz8FUOs+2mhGqdGmjKIaT1XU7Zq0eFqL0jonLlhbayJI/J2SA/Bw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@tanstack/virtual-core@3.5.0': + resolution: {integrity: sha512-KnPRCkQTyqhanNC0K63GBG3wA8I+D1fQuVnAvcBF8f13akOKeQp1gSbu6f77zCxhEk727iV5oQnbHLYzHrECLg==} + '@tootallnate/once@2.0.0': resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + '@tsconfig/node10@1.0.9': resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} @@ -3340,6 +3649,102 @@ packages: resolution: {integrity: sha512-5bBaAkqvSFBX8JMi/xCofNzG5E594TNsApMz68dLd/sQYz/HGQqgcxGHTRjOvD4G3Y+YF1Oo3S7QdCvKt1KAJQ==} deprecated: This is a stub types definition. cron provides its own type definitions, so you do not need this installed. + '@types/d3-array@1.2.12': + resolution: {integrity: sha512-zIq9wCg/JO7MGC6vq3HRDaVYkqgSPIDjpo3JhAQxl7PHYVPA5D9SMiBfjW/ZoAvPd2a+rkovqBg0nS0QOChsJQ==} + + '@types/d3-axis@1.0.19': + resolution: {integrity: sha512-rXxE2jJYv6kar/6YWS8rM0weY+jjvnJvBxHKrIUqt3Yzomrfbf5tncpKG6jq6Aaw6TZyBcb1bxEWc0zGzcmbiw==} + + '@types/d3-brush@1.1.8': + resolution: {integrity: sha512-tPVjYAjJt02fgazF9yiX/309sj6qhIiIopLuHhP4FFFq9VKqu9NQBeCK3ger0RHVZGs9RKaSBUWyPUzii5biGQ==} + + '@types/d3-chord@1.0.14': + resolution: {integrity: sha512-W9rCIbSAhwtmydW5iGg9dwTQIi3SGBOh68/T3ke3PyOgejuSLozmtAMaWNViGaGJCeuM4aFJHTUHQvMedl4ugA==} + + '@types/d3-collection@1.0.13': + resolution: {integrity: sha512-v0Rgw3IZebRyamcwVmtTDCZ8OmQcj4siaYjNc7wGMZT7PmdSHawGsCOQMxyLvZ7lWjfohYLK0oXtilMOMgfY8A==} + + '@types/d3-color@1.4.5': + resolution: {integrity: sha512-5sNP3DmtSnSozxcjqmzQKsDOuVJXZkceo1KJScDc1982kk/TS9mTPc6lpli1gTu1MIBF1YWutpHpjucNWcIj5g==} + + '@types/d3-contour@1.3.6': + resolution: {integrity: sha512-RM/QHCx8j1ovj/p4cWCM3b48EIas6TTmfG+LR2Ud8npTqgrWTjMNCpHtoj47Qa3dJsifONXGu54VuFkXWL2mIg==} + + '@types/d3-dispatch@1.0.12': + resolution: {integrity: sha512-vrhleoVNhGJGx7GQZ4207lYGyMbW/yj/iJTSvLKyfAp8nXFF+19dnMpPN/nEVs6fudIsQc7ZelBFUMe3aJDmKw==} + + '@types/d3-drag@1.2.8': + resolution: {integrity: sha512-QM6H8E6r9/51BcE4NEluQ0f9dTECCTDEALJSQIWn183+Mtz/6KvEjOxW8VzKYSnhhL+qMljMKKA1WOUUf/4Qhw==} + + '@types/d3-dsv@1.2.8': + resolution: {integrity: sha512-x1m1s0lVstZQ5/Kzp4bVIMee3fFuDm+hphVnvrYA7wU16XqwgbCBfeVvHYZzVQQIy4jyi3MEtgduLVuwIRCKLQ==} + + '@types/d3-ease@1.0.13': + resolution: {integrity: sha512-VAA4H8YNaNN0+UNIlpkwkLOj7xL5EGdyiQpdlAvOIRHckjGFCLK8eMoUd4+IMNEhQgweq0Yk/Dfzr70xhUo6hA==} + + '@types/d3-fetch@1.2.5': + resolution: {integrity: sha512-5SpBGkHtH01Zi5gMGfEXZp72NcQJB83uskIrlj9N0z9w4vVP7dHIgDu3v8BLhhqn8Oj98wuIrlatdiYK3+q3tA==} + + '@types/d3-force@1.2.7': + resolution: {integrity: sha512-zySqZfnxn67RVEGWzpD9dQA0AbNIp4Rj0qGvAuUdUNfGLrwuGCbEGAGze5hEdNaHJKQT2gTqr6j+qAzncm11ew==} + + '@types/d3-format@1.4.5': + resolution: {integrity: sha512-mLxrC1MSWupOSncXN/HOlWUAAIffAEBaI4+PKy2uMPsKe4FNZlk7qrbTjmzJXITQQqBHivaks4Td18azgqnotA==} + + '@types/d3-geo@1.12.7': + resolution: {integrity: sha512-QetZrWWjuMfCe0BHLjD+dOThlgk7YGZ2gj+yhFAbDN5TularNBEQiBs5/CIgX0+IBDjt7/fbkDd5V70J1LjjKA==} + + '@types/d3-hierarchy@1.1.11': + resolution: {integrity: sha512-lnQiU7jV+Gyk9oQYk0GGYccuexmQPTp08E0+4BidgFdiJivjEvf+esPSdZqCZ2C7UwTWejWpqetVaU8A+eX3FA==} + + '@types/d3-interpolate@1.4.5': + resolution: {integrity: sha512-k9L18hXXv7OvK4PqW1kSFYIzasGOvfhPUWmHFkoZ8/ci99EAmY4HoF6zMefrHl0SGV7XYc7Qq2MNh8dK3edg5A==} + + '@types/d3-path@1.0.11': + resolution: {integrity: sha512-4pQMp8ldf7UaB/gR8Fvvy69psNHkTpD/pVw3vmEi8iZAB9EPMBruB1JvHO4BIq9QkUUd2lV1F5YXpMNj7JPBpw==} + + '@types/d3-polygon@1.0.10': + resolution: {integrity: sha512-+hbHsFdCMs23vk9p/SpvIkHkCpl0vxkP2qWR2vEk0wRi0BXODWgB/6aHnfrz/BeQnk20XzZiQJIZ+11TGxuYMQ==} + + '@types/d3-quadtree@1.0.13': + resolution: {integrity: sha512-BAQD6gTHnXqmI7JRhXwM2pEYJJF27AT1f6zCC192BKAUhigzd5HZjdje5ufRXmYcUM/fr2IJ9KqVMeXaljmmOw==} + + '@types/d3-random@1.1.5': + resolution: {integrity: sha512-gB5CR+7xYMj56pt5zmSyDBjTNMEy96PdfUb2qBaAT9bmPcf4P/YHfhhTI5y8JoiqaSRLJY+3mqtaE9loBgB6Ng==} + + '@types/d3-scale-chromatic@1.5.4': + resolution: {integrity: sha512-HwLVEm8laYTNOR9Kc9745XDKgRa69VIIChNkSKJgrJOsDLI9QSiFSH2Bi4wMbGrvFs+X64azev7NfBPq+VOFVg==} + + '@types/d3-scale@2.2.10': + resolution: {integrity: sha512-j4V7qQ+CQzK2KpvI5NDejdPAcds+fTzNGqWXrCXv1zNR33HRir0bMdhzN1OHDQLNXYffW/zOr3FOS2qlHDEgrw==} + + '@types/d3-selection@1.4.6': + resolution: {integrity: sha512-0MhJ/LzJe6/vQVxiYJnvNq5CD/MF6Qy0dLp4BEQ6Dz8oOaB0EMXfx1GGeBFSW+3VzgjaUrxK6uECDQj9VLa/Mg==} + + '@types/d3-shape@1.3.12': + resolution: {integrity: sha512-8oMzcd4+poSLGgV0R1Q1rOlx/xdmozS4Xab7np0eamFFUYq71AU9pOCJEFnkXW2aI/oXdVYJzw6pssbSut7Z9Q==} + + '@types/d3-time-format@2.3.4': + resolution: {integrity: sha512-xdDXbpVO74EvadI3UDxjxTdR6QIxm1FKzEA/+F8tL4GWWUg/hgvBqf6chql64U5A9ZUGWo7pEu4eNlyLwbKdhg==} + + '@types/d3-time@1.1.4': + resolution: {integrity: sha512-JIvy2HjRInE+TXOmIGN5LCmeO0hkFZx5f9FZ7kiN+D+YTcc8pptsiLiuHsvwxwC7VVKmJ2ExHUgNlAiV7vQM9g==} + + '@types/d3-timer@1.0.12': + resolution: {integrity: sha512-Tv9tkA4y3UvGQnrHyYAQhf5x/297FuYwotS4UW2TpwLblvRahbyL8r9HFYTJLPfPRqS63hwlqRItjKGmKtJxNg==} + + '@types/d3-transition@1.3.5': + resolution: {integrity: sha512-gVj9AXXkoj0yKr1jsPJFkKoYTEmSdaYh8W7XBeRIhcspFX9b3MSwLxTerVHeEPXer9kYLvZfAINk8HcjWhwZSQ==} + + '@types/d3-voronoi@1.1.12': + resolution: {integrity: sha512-DauBl25PKZZ0WVJr42a6CNvI6efsdzofl9sajqZr2Gf5Gu733WkDdUGiPkUHXiUvYGzNNlFQde2wdZdfQPG+yw==} + + '@types/d3-zoom@1.8.7': + resolution: {integrity: sha512-HJWci3jXwFIuFKDqGn5PmuwrhZvuFdrnUmtSKCLXFAWyf2lAIUKMKh1/lHOkWBl/f4KVupGricJiqkQy+cVTog==} + + '@types/d3@5.16.7': + resolution: {integrity: sha512-GMwYYRuI+BNHS6c5B1OUDx6yKWtnolVYq1YxUkXn0HhlQyzKcpgpxJd7BKuazq+1+TridBbQjs4kztX6nIhl9g==} + '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -3368,6 +3773,9 @@ packages: '@types/express@4.17.20': resolution: {integrity: sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw==} + '@types/geojson@7946.0.14': + resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==} + '@types/glob@8.1.0': resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} @@ -3401,6 +3809,9 @@ packages: '@types/jest@29.5.12': resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} + '@types/js-cookie@2.2.7': + resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==} + '@types/js-yaml@4.0.8': resolution: {integrity: sha512-m6jnPk1VhlYRiLFm3f8X9Uep761f+CK8mHyS65LutH2OhmBF0BeMEjHgg05usH8PLZMWWc/BUR9RPmkvpWnyRA==} @@ -3422,6 +3833,9 @@ packages: '@types/linkify-it@3.0.3': resolution: {integrity: sha512-pTjcqY9E4nOI55Wgpz7eiI8+LzdYnw3qxXCfHyBDdPbYvbyLgWLJGh8EdPvqawwMK1Uo1794AUkkR38Fr0g+2g==} + '@types/lodash-es@4.17.12': + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} + '@types/lodash@4.14.199': resolution: {integrity: sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==} @@ -3471,6 +3885,9 @@ packages: '@types/node@15.14.9': resolution: {integrity: sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==} + '@types/node@17.0.45': + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + '@types/node@20.10.4': resolution: {integrity: sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==} @@ -3507,6 +3924,9 @@ packages: '@types/range-parser@1.2.6': resolution: {integrity: sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA==} + '@types/react@17.0.80': + resolution: {integrity: sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA==} + '@types/react@18.2.75': resolution: {integrity: sha512-+DNnF7yc5y0bHkBTiLKqXFe+L4B3nvOphiMY3tuA5X10esmjqk7smyBZzbGTy2vsiy/Bnzj8yFIBL8xhRacoOg==} @@ -3516,6 +3936,9 @@ packages: '@types/rimraf@3.0.2': resolution: {integrity: sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==} + '@types/scheduler@0.16.8': + resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} + '@types/semver@7.5.6': resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} @@ -3531,6 +3954,9 @@ packages: '@types/serve-static@1.15.4': resolution: {integrity: sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw==} + '@types/slug@5.0.8': + resolution: {integrity: sha512-mblTWR1OST257k1gZ3QvqG+ERSr8Ea6dyM1FH6Jtm4jeXi0/r0/95VNctofuiywPxCVQuE8AuFoqmvJ4iVUlXQ==} + '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -3582,6 +4008,17 @@ packages: '@types/zen-observable@0.8.4': resolution: {integrity: sha512-XWquk4B9Y9bP++I9FsKBVDR+cM1duIqTksuD4l+XUDcqKdngHrtLBe6A5DQX5sdJPWDhLFM9xHZBCiWcecZ0Jg==} + '@typescript-eslint/eslint-plugin@5.62.0': + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/eslint-plugin@6.13.2': resolution: {integrity: sha512-3+9OGAWHhk4O1LlcwLBONbdXsAhLjyCFogJY/cWy2lxdVJ2JrcTF2pTGMaLl2AE7U1l31n8Py4a8bx5DLf/0dQ==} engines: {node: ^16.0.0 || >=18.0.0} @@ -3604,6 +4041,16 @@ packages: typescript: optional: true + '@typescript-eslint/parser@5.62.0': + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/parser@6.13.2': resolution: {integrity: sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -3650,6 +4097,16 @@ packages: resolution: {integrity: sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==} engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/type-utils@5.62.0': + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/type-utils@6.13.2': resolution: {integrity: sha512-Qr6ssS1GFongzH2qfnWKkAQmMUyZSyOr0W54nZNU1MDfo+U4Mv3XveeLZzadc/yq8iYhQZHYT+eoXJqnACM1tw==} engines: {node: ^16.0.0 || >=18.0.0} @@ -3877,6 +4334,9 @@ packages: resolution: {integrity: sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==} engines: {node: '>=8'} + '@xobotyi/scrollbar-width@1.9.5': + resolution: {integrity: sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==} + '@xtuc/ieee754@1.2.0': resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} @@ -3900,6 +4360,9 @@ packages: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} + accounting@0.4.1: + resolution: {integrity: sha512-RU6KY9Y5wllyaCNBo1W11ZOTnTHMMgOZkIwdOOs6W5ibMTp72i4xIbEA48djxVGqMNTUNbvrP/1nWg5Af5m2gQ==} + acorn-globals@1.0.9: resolution: {integrity: sha512-j3/4pkfih8W4NK22gxVSXcEonTpAHOHh0hu5BoZrKcOsW/4oBPxTi4Yk3SAj+FhC1f3+bRTkXdm4019gw1vg9g==} @@ -4116,6 +4579,11 @@ packages: apollo-link-context@1.0.20: resolution: {integrity: sha512-MLLPYvhzNb8AglNsk2NcL9AvhO/Vc9hn2ZZuegbhRHGet3oGr0YH9s30NS9+ieoM0sGT11p7oZ6oAILM/kiRBA==} + apollo-link-debounce@3.0.0: + resolution: {integrity: sha512-Ytig2Ml41T2bovBIoKkStPKoIh0r/kTK1dSM9Gpvo5W3BAPxt1WguAkeaPLJqeuvrNJIjQ/Pl38/14VVA0hdYg==} + peerDependencies: + '@apollo/client': ^3.0.0 + apollo-link-error@1.1.13: resolution: {integrity: sha512-jAZOOahJU6bwSqb2ZyskEK1XdgUY9nkmeclCrW7Gddh1uasHVqmoYc4CKdb0/H0Y1J9lvaXKle2Wsw/Zx1AyUg==} @@ -4159,6 +4627,9 @@ packages: arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -4285,6 +4756,13 @@ packages: resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==} engines: {node: '>=8'} + autoprefixer@10.4.19: + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} @@ -4423,11 +4901,6 @@ packages: browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - browserslist@4.22.2: - resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - browserslist@4.23.0: resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -4513,6 +4986,10 @@ packages: camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} @@ -4524,6 +5001,9 @@ packages: camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + caniuse-lite@1.0.30001607: resolution: {integrity: sha512-WcvhVRjXLKFB/kmOFVwELtMxyhq3iM/MvmXcyCe2PNf166c39mptscOc/45TTS96n2gpNV2z7+NakArTWZCQ3w==} @@ -4582,6 +5062,9 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + chart.js@3.9.1: + resolution: {integrity: sha512-Ro2JbLmvg83gXF5F4sniaQ+lTbSv18E+TIf2cOeiH1Iqd2PGFOtem+DUufMZsCJwFE7ywPOpfXFBwRTGq7dh6w==} + check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} @@ -4607,6 +5090,9 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} @@ -4720,6 +5206,13 @@ packages: color@3.2.1: resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -4737,6 +5230,14 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} + commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} @@ -4754,6 +5255,9 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + constant-case@3.0.4: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} @@ -4831,6 +5335,11 @@ packages: cron@3.1.3: resolution: {integrity: sha512-KVxeKTKYj2eNzN4ElnT6nRSbjbfhyxR92O/Jdp6SH3pc05CDJws59jBrZWEMQlxevCiE6QUTrXy+Im3vC3oD3A==} + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + cross-fetch@3.1.8: resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} @@ -4838,6 +5347,10 @@ packages: resolution: {integrity: sha512-4PFfn4b5ZN6FMNGSZlyb7wUhuN8wvj8t/VQHZdM4JsDcruGJ8L2kf9zao98QIrBPFCpdk27qst/AGTl7pL3ypQ==} engines: {node: '>=16.0.0'} + cross-spawn@6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -4846,15 +5359,31 @@ packages: resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} engines: {node: '>=4'} + css-declaration-sorter@6.4.1: + resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 + + css-in-js-utils@3.1.0: + resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} + css-select@1.2.0: resolution: {integrity: sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==} + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + css-select@5.1.0: resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} css-to-react-native@3.2.0: resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + css-what@2.1.3: resolution: {integrity: sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==} @@ -4867,6 +5396,28 @@ packages: engines: {node: '>=4'} hasBin: true + cssnano-preset-default@5.2.14: + resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + cssnano-utils@3.1.0: + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + cssnano@5.1.15: + resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} @@ -4889,6 +5440,103 @@ packages: csv-stringify@6.4.5: resolution: {integrity: sha512-SPu1Vnh8U5EnzpNOi1NDBL5jU5Rx7DVHr15DNg9LXDTAbQlAVAmEbVt16wZvEW9Fu9Qt4Ji8kmeCJ2B1+4rFTQ==} + d3-array@1.2.4: + resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==} + + d3-axis@1.0.12: + resolution: {integrity: sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==} + + d3-brush@1.1.6: + resolution: {integrity: sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==} + + d3-chord@1.0.6: + resolution: {integrity: sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==} + + d3-collection@1.0.7: + resolution: {integrity: sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==} + + d3-color@1.4.1: + resolution: {integrity: sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==} + + d3-contour@1.3.2: + resolution: {integrity: sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==} + + d3-dispatch@1.0.6: + resolution: {integrity: sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==} + + d3-drag@1.2.5: + resolution: {integrity: sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==} + + d3-dsv@1.2.0: + resolution: {integrity: sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==} + hasBin: true + + d3-ease@1.0.7: + resolution: {integrity: sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==} + + d3-fetch@1.2.0: + resolution: {integrity: sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==} + + d3-force@1.2.1: + resolution: {integrity: sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==} + + d3-format@1.4.5: + resolution: {integrity: sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==} + + d3-geo@1.12.1: + resolution: {integrity: sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==} + + d3-hierarchy@1.1.9: + resolution: {integrity: sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==} + + d3-interpolate@1.4.0: + resolution: {integrity: sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==} + + d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + + d3-polygon@1.0.6: + resolution: {integrity: sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==} + + d3-quadtree@1.0.7: + resolution: {integrity: sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==} + + d3-random@1.1.2: + resolution: {integrity: sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==} + + d3-scale-chromatic@1.5.0: + resolution: {integrity: sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==} + + d3-scale@2.2.2: + resolution: {integrity: sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==} + + d3-selection@1.4.2: + resolution: {integrity: sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==} + + d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + + d3-time-format@2.3.0: + resolution: {integrity: sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==} + + d3-time@1.1.0: + resolution: {integrity: sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==} + + d3-timer@1.0.10: + resolution: {integrity: sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==} + + d3-transition@1.3.2: + resolution: {integrity: sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==} + + d3-voronoi@1.1.4: + resolution: {integrity: sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==} + + d3-zoom@1.8.3: + resolution: {integrity: sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==} + + d3@5.16.0: + resolution: {integrity: sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==} + damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} @@ -4983,6 +5631,10 @@ packages: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -5068,6 +5720,10 @@ packages: engines: {node: '>=0.10'} hasBin: true + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -5078,6 +5734,9 @@ packages: devtools-protocol@0.0.1235375: resolution: {integrity: sha512-MOMnfplVXEhcP7+W98NK8ZJtgoo2/A+s+FkIu9+TbSgWSZREVK5Ozh2qCQgRN4EPYMxiSJX09OoVJT+hGj4aTw==} + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5094,6 +5753,9 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} @@ -5108,6 +5770,9 @@ packages: dom-serializer@0.2.2: resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} @@ -5125,6 +5790,10 @@ packages: domhandler@2.3.0: resolution: {integrity: sha512-q9bUwjfp7Eif8jWxxxPSykdRZAb6GkguBGSgvvCrhI9wB71W2K/Kvv4E61CF/mcCfnVJDeDWx/Vb/uAqbDj6UQ==} + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + domhandler@5.0.3: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} @@ -5132,6 +5801,9 @@ packages: domutils@1.5.1: resolution: {integrity: sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==} + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + domutils@3.1.0: resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} @@ -5201,9 +5873,6 @@ packages: engines: {node: '>=0.8'} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - electron-to-chromium@1.4.609: - resolution: {integrity: sha512-ihiCP7PJmjoGNuLpl7TjNA8pCQWu09vGyjlPYw1Rqww4gvNuCcmvl+44G+2QyJ6S2K4o+wbTS++Xz0YN8Q9ERw==} - electron-to-chromium@1.4.730: resolution: {integrity: sha512-oJRPo82XEqtQAobHpJIR3zW5YO3sSRRkPz2an4yxi1UvqhsGm54vR/wzTFV74a3soDOJ8CKW7ajOOX5ESzddwg==} @@ -5268,6 +5937,9 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + es-abstract@1.22.3: resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} engines: {node: '>= 0.4'} @@ -5359,6 +6031,30 @@ packages: engines: {node: '>=4.0'} hasBin: true + eslint-config-airbnb-base@15.0.0: + resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 + + eslint-config-airbnb-typescript@17.1.0: + resolution: {integrity: sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.13.0 || ^6.0.0 + '@typescript-eslint/parser': ^5.0.0 || ^6.0.0 + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 + + eslint-config-next@12.3.4: + resolution: {integrity: sha512-WuT3gvgi7Bwz00AOmKGhOeqnyA5P29Cdyr0iVjLyfDbk+FANQKcOjFUTZIdyYfe5Tq1x4TGcmoe4CwctGvFjHQ==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + eslint-config-next@14.1.4: resolution: {integrity: sha512-cihIahbhYAWwXJwZkAaRPpUi5t9aOi/HdfWXOjZeUOqNWXHD8X22kd1KG58Dc3MVaRx3HoR/oMGk2ltcrqDn8g==} peerDependencies: @@ -5368,6 +6064,12 @@ packages: typescript: optional: true + eslint-config-prettier@8.10.0: + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + eslint-config-prettier@9.0.0: resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true @@ -5383,6 +6085,13 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + eslint-import-resolver-typescript@2.7.1: + resolution: {integrity: sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==} + engines: {node: '>=4'} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-import-resolver-typescript@3.6.1: resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} @@ -5453,6 +6162,17 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint-plugin-prettier@4.2.1: + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + eslint-plugin-prettier@5.0.1: resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} engines: {node: ^14.18.0 || >=16.0.0} @@ -5493,6 +6213,26 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint-plugin-tailwindcss@3.17.0: + resolution: {integrity: sha512-Ofl7tNh57a3W8BKHstKZSkD2gSCEkw54ycwZ958IK9zUR8TiNYdp8b0WGoLWLeyOAbeF1VPVJFBnlkJeIM2kVg==} + engines: {node: '>=14.0.0'} + peerDependencies: + tailwindcss: ^3.4.0 + + eslint-plugin-unused-imports@2.0.0: + resolution: {integrity: sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 + eslint: ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + + eslint-rule-composer@0.3.0: + resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} + engines: {node: '>=4.0.0'} + eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -5597,6 +6337,10 @@ packages: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} + expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + expect@29.7.0: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5657,9 +6401,15 @@ packages: fast-levenshtein@3.0.0: resolution: {integrity: sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==} + fast-loops@1.1.3: + resolution: {integrity: sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==} + fast-querystring@1.1.2: resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} + fast-shallow-equal@1.0.0: + resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==} + fast-text-encoding@1.0.6: resolution: {integrity: sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==} @@ -5674,6 +6424,9 @@ packages: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} + fastest-stable-stringify@2.0.2: + resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==} + fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} @@ -5842,6 +6595,9 @@ packages: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -5852,6 +6608,9 @@ packages: fromentries@1.3.2: resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==} + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + fs-extra@11.2.0: resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} @@ -5965,6 +6724,9 @@ packages: git-url-parse@11.6.0: resolution: {integrity: sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g==} + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -6115,6 +6877,13 @@ packages: resolution: {integrity: sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==} engines: {node: '>=12.0.0'} + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + + hamt_plus@1.0.2: + resolution: {integrity: sha512-t2JXKaehnMb9paaYA7J0BX8QQAY8lwfQ9Gjf4pg/mk4krt+cmwmU652HOoWonf+7+EQV97ARPMhhVgU1ra2GhA==} + har-schema@2.0.0: resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} engines: {node: '>=4'} @@ -6200,6 +6969,9 @@ packages: hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} @@ -6282,6 +7054,9 @@ packages: resolution: {integrity: sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==} engines: {node: '>=4'} + hyphenate-style-name@1.0.5: + resolution: {integrity: sha512-fedL7PRwmeVkgyhu9hLeTBaI6wcGk7JGJswdaRsa5aUbkXI1kr1xZwTPBtaYPpwf56878iDek6VbVnuWMebJmw==} + iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -6349,6 +7124,12 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + inline-style-prefixer@7.0.0: + resolution: {integrity: sha512-I7GEdScunP1dQ6IM2mQWh6v0mOYdYmH3Bp31UecKdrcUgcURTcctSe1IECdUznSHKSmsHtjrT3CwCPI1pyxfUQ==} + inquirer@8.2.6: resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} engines: {node: '>=12.0.0'} @@ -6833,6 +7614,10 @@ packages: resolution: {integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==} hasBin: true + jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + jose@4.15.4: resolution: {integrity: sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==} @@ -6846,6 +7631,9 @@ packages: jquery@3.7.1: resolution: {integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==} + js-cookie@2.2.1: + resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -7069,6 +7857,10 @@ packages: resolution: {integrity: sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==} engines: {node: '>=6'} + load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + load-json-file@5.3.0: resolution: {integrity: sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==} engines: {node: '>=6'} @@ -7097,9 +7889,15 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + lodash.castarray@4.4.0: + resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} + lodash.clonedeep@4.5.0: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} @@ -7154,6 +7952,9 @@ packages: lodash.truncate@4.4.2: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + lodash.xorby@4.7.0: resolution: {integrity: sha512-gYiD6nvuQy0AEkMoUju+t4f4Rn18fjsLB/7x7YZFqtFT9kmegRLrj/uGEQVyVDy7otTmSrIMXNOk2wwuLcfHCQ==} @@ -7276,6 +8077,9 @@ packages: resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} engines: {node: '>=10'} + mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + mdurl@1.0.1: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} @@ -7289,6 +8093,10 @@ packages: memory-pager@1.5.0: resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + merge-descriptors@1.0.1: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} @@ -7354,6 +8162,10 @@ packages: resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + mini-svg-data-uri@1.4.4: + resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} + hasBin: true + minimatch@3.0.8: resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} @@ -7387,6 +8199,9 @@ packages: resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} engines: {node: '>=16 || 14 >=14.17'} + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -7467,6 +8282,10 @@ packages: resolution: {integrity: sha512-nGjm89lHja+T/b8cybAby6H0YgA4qYC/lx6UlwvHGqvTq8bDaNeCwl1sY8uRELrNbVWJzIihxVd+vphGGn1vBw==} engines: {node: '>=12.0.0'} + mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -7486,6 +8305,12 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + nano-css@5.6.1: + resolution: {integrity: sha512-T2Mhc//CepkTa3X4pUhKgbEheJHYAxD0VptuqFhDbGMUWVV2m+lkNiW/Ieuj35wrfC8Zm0l7HvssQh7zcEttSw==} + peerDependencies: + react: '*' + react-dom: '*' + nanoid@3.3.3: resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -7496,6 +8321,12 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + napi-build-utils@1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + + natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -7520,6 +8351,31 @@ packages: nodemailer: optional: true + next-seo@5.15.0: + resolution: {integrity: sha512-LGbcY91yDKGMb7YI+28n3g+RuChUkt6pXNpa8FkfKkEmNiJkeRDEXTnnjVtwT9FmMhG6NH8qwHTelGrlYm9rgg==} + peerDependencies: + next: ^8.1.1-canary.54 || >=9.0.0 + react: '>=16.0.0' + react-dom: '>=16.0.0' + + next@12.3.4: + resolution: {integrity: sha512-VcyMJUtLZBGzLKo3oMxrEF0stxh8HwuW976pAzlHhI3t8qJ4SROjCrSh1T24bhrbjw55wfZXAbXPGwPt5FLRfQ==} + engines: {node: '>=12.22.0'} + hasBin: true + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^6.0.0 || ^7.0.0 + react: ^17.0.2 || ^18.0.0-0 + react-dom: ^17.0.2 || ^18.0.0-0 + sass: ^1.3.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + next@14.2.2: resolution: {integrity: sha512-oGwUaa2bCs47FbuxWMpOoXtBMPYpvTPgdZr3UAo+pu7Ns00z9otmYpoeV1HEiYL06AlRQQIA/ypK526KjJfaxg==} engines: {node: '>=18.17.0'} @@ -7538,12 +8394,22 @@ packages: sass: optional: true + nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + node-abi@3.62.0: + resolution: {integrity: sha512-CPMcGa+y33xuL1E0TcNIu4YyaZCxnnvkVaEXrsosR3FxN+fV8xvb7Mzpb7IgKler10qeMkE6+Dp8qJhpzdq35g==} + engines: {node: '>=10'} + node-abort-controller@3.1.1: resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + node-addon-api@7.1.0: resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} engines: {node: ^16 || ^18 || >= 20} @@ -7586,6 +8452,9 @@ packages: resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} hasBin: true + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + normalize-path@2.1.1: resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} engines: {node: '>=0.10.0'} @@ -7594,6 +8463,10 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + normalize-url@6.1.0: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} @@ -7602,6 +8475,11 @@ packages: resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} engines: {node: '>=14.16'} + npm-run-all@4.1.5: + resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} + engines: {node: '>= 4'} + hasBin: true + npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -7664,10 +8542,6 @@ packages: resolution: {integrity: sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==} engines: {node: '>= 10'} - object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} - engines: {node: '>= 0.4'} - object.assign@4.1.5: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} @@ -7735,6 +8609,10 @@ packages: resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} engines: {node: '>=14.16'} + opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + openid-client@5.6.1: resolution: {integrity: sha512-PtrWsY+dXg6y8mtMPyL/namZSYVz8pjXz3yJiBNZsEdCnu9miHLB4ELVC85WvneMKo2Rg62Ay7NkuCpM0bgiLQ==} @@ -7878,6 +8756,10 @@ packages: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -7904,6 +8786,10 @@ packages: path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -7927,6 +8813,19 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + pidtree@0.3.1: + resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} + engines: {node: '>=0.10'} + hasBin: true + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -7960,6 +8859,59 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} + postcss-calc@8.2.4: + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 + + postcss-colormin@5.3.1: + resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-convert-values@5.1.3: + resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-comments@5.1.2: + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-duplicates@5.1.0: + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-empty@5.1.1: + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-overridden@5.1.0: + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + postcss-load-config@4.0.1: resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} engines: {node: '>= 14'} @@ -7984,9 +8936,147 @@ packages: ts-node: optional: true + postcss-merge-longhand@5.1.7: + resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-merge-rules@5.1.4: + resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-font-values@5.1.0: + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-gradients@5.1.1: + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-params@5.1.4: + resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-selectors@5.2.1: + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-nested@6.0.1: + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-normalize-charset@5.1.0: + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-display-values@5.1.0: + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-positions@5.1.1: + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-repeat-style@5.1.1: + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-string@5.1.0: + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-timing-functions@5.1.0: + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-unicode@5.1.1: + resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-url@5.1.0: + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-whitespace@5.1.1: + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-ordered-values@5.1.3: + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-reduce-initial@5.1.2: + resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-reduce-transforms@5.1.0: + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + + postcss-selector-parser@6.1.0: + resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} + engines: {node: '>=4'} + + postcss-svgo@5.1.0: + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-unique-selectors@5.1.1: + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + postcss@8.4.14: + resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} + engines: {node: ^10 || ^12 || >=14} + postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} @@ -8009,6 +9099,11 @@ packages: preact@10.18.1: resolution: {integrity: sha512-mKUD7RRkQQM6s7Rkmi7IFkoEHjuFqRQUaXamO61E6Nn7vqF/bo7EZCmSyrUnp2UWHw0O7XjZ2eeXis+m7tf4lg==} + prebuild-install@7.1.2: + resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} + engines: {node: '>=10'} + hasBin: true + prelude-ls@1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} @@ -8021,6 +9116,11 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + prettier@3.0.3: resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} engines: {node: '>=14'} @@ -8104,6 +9204,9 @@ packages: pstree.remy@1.1.8: resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} + pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} @@ -8409,21 +9512,75 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-chartjs-2@4.3.1: + resolution: {integrity: sha512-5i3mjP6tU7QSn0jvb8I4hudTzHJqS8l00ORJnVwI2sYu0ihpj83Lv2YzfxunfxTZkscKvZu2F2w9LkwNBhj6xA==} + peerDependencies: + chart.js: ^3.5.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + react-cool-dimensions@2.0.7: + resolution: {integrity: sha512-z1VwkAAJ5d8QybDRuYIXTE41RxGr5GYsv1bQhbOBE8cMfoZQZpcF0odL64vdgrQVzat2jayedj1GoYi80FWcbA==} + peerDependencies: + react: '>= 16.8.0' + + react-dom@17.0.2: + resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} + peerDependencies: + react: 17.0.2 + react-dom@18.2.0: resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: react: ^18.2.0 + react-infinite-scroll-hook@4.1.1: + resolution: {integrity: sha512-1bu2572rF3DtjFMhIOzoasLMdYW0vMWxROtl99M5FYGSxm84Ro4aNBZW6ivgE45ofus4Ymo7jIS0Be3zcuLk8g==} + engines: {node: '>=10'} + peerDependencies: + react: '>=16.8.0' + + react-intersection-observer-hook@2.1.1: + resolution: {integrity: sha512-MeFGpYtcfHB9v6oGqQuHAbSwaWBpd7yZ4wMIeVtboWRdGusAF4V+/8QQ0OKZ36Ez19grYnoDVhRUCjtwI2ZVaw==} + peerDependencies: + react: '>=16.8.0' + react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + react-universal-interface@0.6.2: + resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} + peerDependencies: + react: '*' + tslib: '*' + + react-use@17.5.0: + resolution: {integrity: sha512-PbfwSPMwp/hoL847rLnm/qkjg3sTRCvn6YhUZiHaUa3FA6/aNoFX79ul5Xt70O1rK+9GxSVqkY0eTwMdsR/bWg==} + peerDependencies: + react: '*' + react-dom: '*' + + react@17.0.2: + resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} + engines: {node: '>=0.10.0'} + react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + readable-stream@1.1.14: resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} @@ -8446,6 +9603,18 @@ packages: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} + recoil@0.7.7: + resolution: {integrity: sha512-8Og5KPQW9LwC577Vc7Ug2P0vQshkv1y3zG3tSSkWMqkWSwHmE+by06L8JtnGocjW6gcCvfwB3YtrJG6/tWivNQ==} + peerDependencies: + react: '>=16.13.1' + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + redeyed@2.1.1: resolution: {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==} @@ -8622,6 +9791,9 @@ packages: rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + rtl-css-js@1.16.1: + resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} + run-applescript@5.0.0: resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} engines: {node: '>=12'} @@ -8637,6 +9809,9 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + rxjs@6.6.7: resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} engines: {npm: '>=2.0.0'} @@ -8686,6 +9861,9 @@ packages: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} + scheduler@0.20.2: + resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} + scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} @@ -8699,6 +9877,10 @@ packages: scrape-it@5.3.2: resolution: {integrity: sha512-reuuGkhu3IY7UulrKdbMYD3fxf1TP/POps1s68T81zkVyX3n4Ht4M2U7dEvCL8VVHxHaInN7oijuyCLP6syckQ==} + screenfull@5.2.0: + resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} + engines: {node: '>=0.10.0'} + scroll-into-view-if-needed@3.1.0: resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} @@ -8766,6 +9948,10 @@ packages: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} + set-harmonic-interval@1.0.1: + resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==} + engines: {node: '>=6.9'} + setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -8783,10 +9969,22 @@ packages: shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + sharp@0.30.7: + resolution: {integrity: sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==} + engines: {node: '>=12.13.0'} + + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} @@ -8819,6 +10017,12 @@ packages: signedsource@1.0.0: resolution: {integrity: sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==} + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + + simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} @@ -8826,6 +10030,10 @@ packages: resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} engines: {node: '>=10'} + sirv@1.0.19: + resolution: {integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==} + engines: {node: '>= 10'} + sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -8848,6 +10056,9 @@ packages: sliced@1.0.1: resolution: {integrity: sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==} + slug@5.3.0: + resolution: {integrity: sha512-h7yD2UDVyMcQRv/WLSjq7HDH6ToO/22MB381zfx6/ebtdWUlGcyxpJNVHl6WFvKjIMHf5ZxANFp/srsy4mfT/w==} + snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} @@ -8861,6 +10072,10 @@ packages: source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map@0.5.6: + resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} + engines: {node: '>=0.10.0'} + source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -8872,6 +10087,18 @@ packages: sparse-bitfield@3.0.3: resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.18: + resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} + split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} engines: {node: '>=6'} @@ -8893,6 +10120,13 @@ packages: engines: {node: '>=0.10.0'} hasBin: true + stable@0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + + stack-generator@2.0.10: + resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} + stack-trace@0.0.10: resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} @@ -8900,7 +10134,16 @@ packages: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} - statuses@2.0.1: + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + stacktrace-gps@3.1.2: + resolution: {integrity: sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==} + + stacktrace-js@2.0.2: + resolution: {integrity: sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==} + + statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} @@ -8957,6 +10200,10 @@ packages: resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} engines: {node: '>= 0.4'} + string.prototype.padend@3.1.6: + resolution: {integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==} + engines: {node: '>= 0.4'} + string.prototype.trim@1.2.8: resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} @@ -9045,6 +10292,19 @@ packages: react: '>= 16.8.0' react-dom: '>= 16.8.0' + styled-jsx@5.0.7: + resolution: {integrity: sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + styled-jsx@5.1.1: resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} @@ -9058,6 +10318,12 @@ packages: babel-plugin-macros: optional: true + stylehacks@5.1.1: + resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + stylis@4.3.1: resolution: {integrity: sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==} @@ -9100,6 +10366,11 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + swap-case@2.0.2: resolution: {integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==} @@ -9126,10 +10397,22 @@ packages: resolution: {integrity: sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==} engines: {node: '>=10.0.0'} + tailwindcss@3.4.3: + resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} + engines: {node: '>=14.0.0'} + hasBin: true + tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + teeny-request@8.0.3: resolution: {integrity: sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww==} engines: {node: '>=12'} @@ -9175,6 +10458,10 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + throttle-debounce@3.0.1: + resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} + engines: {node: '>=10'} + throttle-debounce@5.0.0: resolution: {integrity: sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==} engines: {node: '>=12.22'} @@ -9228,6 +10515,10 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} + totalist@1.1.0: + resolution: {integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==} + engines: {node: '>=6'} + touch@3.1.0: resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==} hasBin: true @@ -9274,6 +10565,9 @@ packages: peerDependencies: typescript: '>=4.2.0' + ts-easing@0.2.0: + resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} + ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} @@ -9598,6 +10892,11 @@ packages: engines: {node: '>=4.2.0'} hasBin: true + typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + typescript@5.2.2: resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} @@ -9719,6 +11018,11 @@ packages: urlpattern-polyfill@9.0.0: resolution: {integrity: sha512-WHN8KDQblxd32odxeIgo83rdVDE2bvdkb86it7bMhYZwWKJz0+O0RK/eZiHYnM+zgt/U7hAHOlCQGfjjvSkw2g==} + use-sync-external-store@1.2.0: + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -9753,6 +11057,9 @@ packages: resolution: {integrity: sha512-sgECfZthyaCKW10N0fm27cg8HYTFK5qMWgypqkXMQ4Wbl/zZKx7xZICgcoxIIE+WFAP/MBL2EFwC/YvLxw3Zeg==} engines: {node: '>=0.10.0'} + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + value-or-promise@1.0.12: resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==} engines: {node: '>=12'} @@ -9856,6 +11163,11 @@ packages: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} + webpack-bundle-analyzer@4.3.0: + resolution: {integrity: sha512-J3TPm54bPARx6QG8z4cKBszahnUglcv70+N+8gUqv2I5KOFHJbzBiLx+pAp606so0X004fxM7hqRu10MLjJifA==} + engines: {node: '>= 10.13.0'} + hasBin: true + webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} @@ -9925,6 +11237,10 @@ packages: resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -9978,6 +11294,18 @@ packages: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + ws@7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + ws@8.14.2: resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} engines: {node: '>=10.0.0'} @@ -10131,6 +11459,8 @@ snapshots: '@aashutoshrathi/word-wrap@1.2.6': {} + '@alloc/quick-lru@5.2.0': {} + '@ampproject/remapping@2.2.1': dependencies: '@jridgewell/gen-mapping': 0.3.3 @@ -10206,6 +11536,30 @@ snapshots: dependencies: graphql: 16.8.1 + '@apollo/client@3.9.10(@types/react@17.0.80)(graphql-ws@5.14.2(graphql@16.8.1))(graphql@16.8.1)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) + '@wry/caches': 1.0.1 + '@wry/equality': 0.5.7 + '@wry/trie': 0.5.0 + graphql: 16.8.1 + graphql-tag: 2.12.6(graphql@16.8.1) + hoist-non-react-statics: 3.3.2 + optimism: 0.18.0 + prop-types: 15.8.1 + rehackt: 0.0.6(@types/react@17.0.80)(react@17.0.2) + response-iterator: 0.2.6 + symbol-observable: 4.0.0 + ts-invariant: 0.10.3 + tslib: 2.6.2 + zen-observable-ts: 1.2.5 + optionalDependencies: + graphql-ws: 5.14.2(graphql@16.8.1) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + transitivePeerDependencies: + - '@types/react' + '@apollo/client@3.9.10(@types/react@18.2.75)(graphql-ws@5.14.2(graphql@16.8.1))(graphql@16.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) @@ -10873,6 +12227,8 @@ snapshots: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + '@badrap/bar-of-progress@0.1.2': {} + '@bcoe/v8-coverage@0.2.3': {} '@colors/colors@1.6.0': {} @@ -12086,6 +13442,17 @@ snapshots: yargs: 17.7.2 optional: true + '@headlessui/react@1.7.19(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@tanstack/react-virtual': 3.5.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + client-only: 0.0.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + '@heroicons/react@1.0.6(react@17.0.2)': + dependencies: + react: 17.0.2 + '@humanwhocodes/config-array@0.11.13': dependencies: '@humanwhocodes/object-schema': 2.0.1 @@ -12144,7 +13511,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2))': + '@jest/core@29.7.0': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -12158,7 +13525,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)) + jest-config: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@types/node@20.12.6)(typescript@5.2.2)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -12178,8 +13545,9 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + optional: true - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2))': + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -12193,7 +13561,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2)) + jest-config: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -12214,7 +13582,7 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4))': + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@20.12.6)(typescript@5.2.2))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -12228,7 +13596,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4)) + jest-config: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@types/node@20.12.6)(typescript@5.2.2)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -12248,7 +13616,6 @@ snapshots: - babel-plugin-macros - supports-color - ts-node - optional: true '@jest/environment@29.7.0': dependencies: @@ -12426,36 +13793,88 @@ snapshots: dependencies: call-bind: 1.0.5 + '@next/bundle-analyzer@12.3.4': + dependencies: + webpack-bundle-analyzer: 4.3.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@next/env@12.3.4': {} + '@next/env@14.2.2': {} + '@next/eslint-plugin-next@12.3.4': + dependencies: + glob: 7.1.7 + '@next/eslint-plugin-next@14.1.4': dependencies: glob: 10.3.10 + '@next/swc-android-arm-eabi@12.3.4': + optional: true + + '@next/swc-android-arm64@12.3.4': + optional: true + + '@next/swc-darwin-arm64@12.3.4': + optional: true + '@next/swc-darwin-arm64@14.2.2': optional: true + '@next/swc-darwin-x64@12.3.4': + optional: true + '@next/swc-darwin-x64@14.2.2': optional: true + '@next/swc-freebsd-x64@12.3.4': + optional: true + + '@next/swc-linux-arm-gnueabihf@12.3.4': + optional: true + + '@next/swc-linux-arm64-gnu@12.3.4': + optional: true + '@next/swc-linux-arm64-gnu@14.2.2': optional: true + '@next/swc-linux-arm64-musl@12.3.4': + optional: true + '@next/swc-linux-arm64-musl@14.2.2': optional: true + '@next/swc-linux-x64-gnu@12.3.4': + optional: true + '@next/swc-linux-x64-gnu@14.2.2': optional: true + '@next/swc-linux-x64-musl@12.3.4': + optional: true + '@next/swc-linux-x64-musl@14.2.2': optional: true + '@next/swc-win32-arm64-msvc@12.3.4': + optional: true + '@next/swc-win32-arm64-msvc@14.2.2': optional: true + '@next/swc-win32-ia32-msvc@12.3.4': + optional: true + '@next/swc-win32-ia32-msvc@14.2.2': optional: true + '@next/swc-win32-x64-msvc@12.3.4': + optional: true + '@next/swc-win32-x64-msvc@14.2.2': optional: true @@ -12486,7 +13905,7 @@ snapshots: '@oclif/help': 1.0.15 '@oclif/parser': 3.8.17 debug: 4.3.4(supports-color@8.1.1) - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - supports-color @@ -12534,7 +13953,7 @@ snapshots: natural-orderby: 2.0.3 object-treeify: 1.1.33 password-prompt: 1.1.3 - semver: 7.5.4 + semver: 7.6.0 string-width: 4.2.3 strip-ansi: 6.0.1 supports-color: 8.1.1 @@ -12612,7 +14031,7 @@ snapshots: http-call: 5.3.0 load-json-file: 5.3.0 npm-run-path: 4.0.1 - semver: 7.5.4 + semver: 7.6.0 tslib: 2.6.2 yarn: 1.22.19 transitivePeerDependencies: @@ -12626,7 +14045,7 @@ snapshots: fs-extra: 9.1.0 http-call: 5.3.0 lodash: 4.17.21 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - supports-color @@ -12725,6 +14144,8 @@ snapshots: picocolors: 1.0.0 tslib: 2.6.2 + '@polka/url@1.0.0-next.25': {} + '@protobufjs/aspromise@1.1.2': {} '@protobufjs/base64@1.1.2': {} @@ -12928,6 +14349,10 @@ snapshots: '@swc/counter@0.1.3': {} + '@swc/helpers@0.4.11': + dependencies: + tslib: 2.6.2 + '@swc/helpers@0.5.5': dependencies: '@swc/counter': 0.1.3 @@ -12939,8 +14364,35 @@ snapshots: dependencies: defer-to-connect: 2.0.1 + '@tailwindcss/forms@0.5.7(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@17.0.45)(typescript@4.9.5)))': + dependencies: + mini-svg-data-uri: 1.4.4 + tailwindcss: 3.4.3(ts-node@10.9.2(@types/node@17.0.45)(typescript@4.9.5)) + + '@tailwindcss/line-clamp@0.3.1(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@17.0.45)(typescript@4.9.5)))': + dependencies: + tailwindcss: 3.4.3(ts-node@10.9.2(@types/node@17.0.45)(typescript@4.9.5)) + + '@tailwindcss/typography@0.5.13(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@17.0.45)(typescript@4.9.5)))': + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 3.4.3(ts-node@10.9.2(@types/node@17.0.45)(typescript@4.9.5)) + + '@tanstack/react-virtual@3.5.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@tanstack/virtual-core': 3.5.0 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + '@tanstack/virtual-core@3.5.0': {} + '@tootallnate/once@2.0.0': {} + '@trysound/sax@0.2.0': {} + '@tsconfig/node10@1.0.9': {} '@tsconfig/node12@1.0.11': {} @@ -12951,7 +14403,7 @@ snapshots: '@types/axios@0.14.0': dependencies: - axios: 1.6.0 + axios: 1.6.8 transitivePeerDependencies: - debug @@ -13008,6 +14460,126 @@ snapshots: dependencies: cron: 3.1.3 + '@types/d3-array@1.2.12': {} + + '@types/d3-axis@1.0.19': + dependencies: + '@types/d3-selection': 1.4.6 + + '@types/d3-brush@1.1.8': + dependencies: + '@types/d3-selection': 1.4.6 + + '@types/d3-chord@1.0.14': {} + + '@types/d3-collection@1.0.13': {} + + '@types/d3-color@1.4.5': {} + + '@types/d3-contour@1.3.6': + dependencies: + '@types/d3-array': 1.2.12 + '@types/geojson': 7946.0.14 + + '@types/d3-dispatch@1.0.12': {} + + '@types/d3-drag@1.2.8': + dependencies: + '@types/d3-selection': 1.4.6 + + '@types/d3-dsv@1.2.8': {} + + '@types/d3-ease@1.0.13': {} + + '@types/d3-fetch@1.2.5': + dependencies: + '@types/d3-dsv': 1.2.8 + + '@types/d3-force@1.2.7': {} + + '@types/d3-format@1.4.5': {} + + '@types/d3-geo@1.12.7': + dependencies: + '@types/geojson': 7946.0.14 + + '@types/d3-hierarchy@1.1.11': {} + + '@types/d3-interpolate@1.4.5': + dependencies: + '@types/d3-color': 1.4.5 + + '@types/d3-path@1.0.11': {} + + '@types/d3-polygon@1.0.10': {} + + '@types/d3-quadtree@1.0.13': {} + + '@types/d3-random@1.1.5': {} + + '@types/d3-scale-chromatic@1.5.4': {} + + '@types/d3-scale@2.2.10': + dependencies: + '@types/d3-time': 1.1.4 + + '@types/d3-selection@1.4.6': {} + + '@types/d3-shape@1.3.12': + dependencies: + '@types/d3-path': 1.0.11 + + '@types/d3-time-format@2.3.4': {} + + '@types/d3-time@1.1.4': {} + + '@types/d3-timer@1.0.12': {} + + '@types/d3-transition@1.3.5': + dependencies: + '@types/d3-selection': 1.4.6 + + '@types/d3-voronoi@1.1.12': {} + + '@types/d3-zoom@1.8.7': + dependencies: + '@types/d3-interpolate': 1.4.5 + '@types/d3-selection': 1.4.6 + + '@types/d3@5.16.7': + dependencies: + '@types/d3-array': 1.2.12 + '@types/d3-axis': 1.0.19 + '@types/d3-brush': 1.1.8 + '@types/d3-chord': 1.0.14 + '@types/d3-collection': 1.0.13 + '@types/d3-color': 1.4.5 + '@types/d3-contour': 1.3.6 + '@types/d3-dispatch': 1.0.12 + '@types/d3-drag': 1.2.8 + '@types/d3-dsv': 1.2.8 + '@types/d3-ease': 1.0.13 + '@types/d3-fetch': 1.2.5 + '@types/d3-force': 1.2.7 + '@types/d3-format': 1.4.5 + '@types/d3-geo': 1.12.7 + '@types/d3-hierarchy': 1.1.11 + '@types/d3-interpolate': 1.4.5 + '@types/d3-path': 1.0.11 + '@types/d3-polygon': 1.0.10 + '@types/d3-quadtree': 1.0.13 + '@types/d3-random': 1.1.5 + '@types/d3-scale': 2.2.10 + '@types/d3-scale-chromatic': 1.5.4 + '@types/d3-selection': 1.4.6 + '@types/d3-shape': 1.3.12 + '@types/d3-time': 1.1.4 + '@types/d3-time-format': 2.3.4 + '@types/d3-timer': 1.0.12 + '@types/d3-transition': 1.3.5 + '@types/d3-voronoi': 1.1.12 + '@types/d3-zoom': 1.8.7 + '@types/debug@4.1.12': dependencies: '@types/ms': 0.7.34 @@ -13056,6 +14628,8 @@ snapshots: '@types/qs': 6.9.9 '@types/serve-static': 1.15.4 + '@types/geojson@7946.0.14': {} + '@types/glob@8.1.0': dependencies: '@types/minimatch': 5.1.2 @@ -13096,6 +14670,8 @@ snapshots: expect: 29.7.0 pretty-format: 29.7.0 + '@types/js-cookie@2.2.7': {} + '@types/js-yaml@4.0.8': {} '@types/jsdom@21.1.6': @@ -13117,6 +14693,10 @@ snapshots: '@types/linkify-it@3.0.3': optional: true + '@types/lodash-es@4.17.12': + dependencies: + '@types/lodash': 4.14.200 + '@types/lodash@4.14.199': {} '@types/lodash@4.14.200': {} @@ -13162,6 +14742,8 @@ snapshots: '@types/node@15.14.9': {} + '@types/node@17.0.45': {} + '@types/node@20.10.4': dependencies: undici-types: 5.26.5 @@ -13196,6 +14778,12 @@ snapshots: '@types/range-parser@1.2.6': {} + '@types/react@17.0.80': + dependencies: + '@types/prop-types': 15.7.9 + '@types/scheduler': 0.16.8 + csstype: 3.1.3 + '@types/react@18.2.75': dependencies: '@types/prop-types': 15.7.9 @@ -13214,6 +14802,8 @@ snapshots: '@types/node': 20.12.6 optional: true + '@types/scheduler@0.16.8': {} + '@types/semver@7.5.6': {} '@types/semver@7.5.8': {} @@ -13235,6 +14825,8 @@ snapshots: '@types/mime': 3.0.3 '@types/node': 20.12.6 + '@types/slug@5.0.8': {} + '@types/stack-utils@2.0.3': {} '@types/strip-bom@3.0.0': {} @@ -13284,6 +14876,25 @@ snapshots: '@types/zen-observable@0.8.4': {} + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5)': + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare-lite: 1.4.0 + semver: 7.6.0 + tsutils: 3.21.0(typescript@4.9.5) + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/eslint-plugin@6.13.2(@typescript-eslint/parser@6.13.2(eslint@8.55.0)(typescript@5.4.4))(eslint@8.55.0)(typescript@5.4.4)': dependencies: '@eslint-community/regexpp': 4.10.0 @@ -13324,6 +14935,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5)': + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.57.0 + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/parser@6.13.2(eslint@8.55.0)(typescript@5.4.4)': dependencies: '@typescript-eslint/scope-manager': 6.13.2 @@ -13383,6 +15006,18 @@ snapshots: '@typescript-eslint/types': 7.2.0 '@typescript-eslint/visitor-keys': 7.2.0 + '@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@4.9.5)': + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.57.0 + tsutils: 3.21.0(typescript@4.9.5) + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/type-utils@6.13.2(eslint@8.55.0)(typescript@5.4.4)': dependencies: '@typescript-eslint/typescript-estree': 6.13.2(typescript@5.4.4) @@ -13415,6 +15050,20 @@ snapshots: '@typescript-eslint/types@7.2.0': {} + '@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5)': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.6.0 + tsutils: 3.21.0(typescript@4.9.5) + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.2)': dependencies: '@typescript-eslint/types': 5.62.0 @@ -13422,7 +15071,7 @@ snapshots: debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.4 + semver: 7.6.0 tsutils: 3.21.0(typescript@5.4.2) optionalDependencies: typescript: 5.4.2 @@ -13436,7 +15085,7 @@ snapshots: debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.4 + semver: 7.6.0 tsutils: 3.21.0(typescript@5.4.4) optionalDependencies: typescript: 5.4.4 @@ -13450,7 +15099,7 @@ snapshots: debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.4 + semver: 7.6.0 ts-api-utils: 1.0.3(typescript@5.4.4) optionalDependencies: typescript: 5.4.4 @@ -13497,36 +15146,51 @@ snapshots: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.4) eslint: 8.55.0 eslint-scope: 5.1.1 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.2)': + '@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@4.9.5)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.2) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) eslint: 8.57.0 eslint-scope: 5.1.1 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@6.13.2(eslint@8.55.0)(typescript@5.4.4)': + '@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.13.2 - '@typescript-eslint/types': 6.13.2 - '@typescript-eslint/typescript-estree': 6.13.2(typescript@5.4.4) - eslint: 8.55.0 - semver: 7.5.4 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.2) + eslint: 8.57.0 + eslint-scope: 5.1.1 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@6.13.2(eslint@8.55.0)(typescript@5.4.4)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.6 + '@typescript-eslint/scope-manager': 6.13.2 + '@typescript-eslint/types': 6.13.2 + '@typescript-eslint/typescript-estree': 6.13.2(typescript@5.4.4) + eslint: 8.55.0 + semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript @@ -13612,9 +15276,9 @@ snapshots: - supports-color - terser - '@vanilla-extract/next-plugin@2.4.0(@types/node@20.12.6)(next@14.2.2(@babel/core@7.24.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(terser@5.30.3)(webpack@5.91.0(@swc/core@1.3.93(@swc/helpers@0.5.5)))': + '@vanilla-extract/next-plugin@2.4.0(@types/node@20.12.6)(next@14.2.2(@babel/core@7.24.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(terser@5.30.3)(webpack@5.91.0)': dependencies: - '@vanilla-extract/webpack-plugin': 2.3.7(@types/node@20.12.6)(terser@5.30.3)(webpack@5.91.0(@swc/core@1.3.93(@swc/helpers@0.5.5))) + '@vanilla-extract/webpack-plugin': 2.3.7(@types/node@20.12.6)(terser@5.30.3)(webpack@5.91.0) next: 14.2.2(@babel/core@7.24.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) transitivePeerDependencies: - '@types/node' @@ -13629,13 +15293,13 @@ snapshots: '@vanilla-extract/private@1.0.4': {} - '@vanilla-extract/webpack-plugin@2.3.7(@types/node@20.12.6)(terser@5.30.3)(webpack@5.91.0(@swc/core@1.3.93(@swc/helpers@0.5.5)))': + '@vanilla-extract/webpack-plugin@2.3.7(@types/node@20.12.6)(terser@5.30.3)(webpack@5.91.0)': dependencies: '@vanilla-extract/integration': 7.1.2(@types/node@20.12.6)(terser@5.30.3) chalk: 4.1.2 debug: 4.3.4(supports-color@8.1.1) loader-utils: 2.0.4 - webpack: 5.91.0(@swc/core@1.3.93(@swc/helpers@0.5.5)) + webpack: 5.91.0 transitivePeerDependencies: - '@types/node' - less @@ -13786,6 +15450,8 @@ snapshots: dependencies: tslib: 2.6.2 + '@xobotyi/scrollbar-width@1.9.5': {} + '@xtuc/ieee754@1.2.0': {} '@xtuc/long@4.2.2': {} @@ -13807,6 +15473,8 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 + accounting@0.4.1: {} + acorn-globals@1.0.9: dependencies: acorn: 2.7.0 @@ -13914,7 +15582,7 @@ snapshots: ansicolors@0.3.2: {} - antd@5.16.1(date-fns@1.30.1)(luxon@3.4.3)(moment@2.29.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + antd@5.16.1(luxon@3.4.3)(moment@2.29.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@ant-design/colors': 7.0.2 '@ant-design/cssinjs': 1.19.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -13945,7 +15613,7 @@ snapshots: rc-motion: 2.9.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) rc-notification: 5.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) rc-pagination: 4.0.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - rc-picker: 4.3.0(date-fns@1.30.1)(dayjs@1.11.10)(luxon@3.4.3)(moment@2.29.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + rc-picker: 4.3.0(dayjs@1.11.10)(luxon@3.4.3)(moment@2.29.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) rc-progress: 4.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) rc-rate: 2.12.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) rc-resize-observer: 1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -14118,7 +15786,7 @@ snapshots: core-js: 3.32.2 cosmiconfig: 7.1.0 dotenv: 16.4.5 - glob: 8.0.1 + glob: 8.1.0 graphql: 15.8.0 graphql-tag: 2.12.6(graphql@15.8.0) lodash.debounce: 4.0.8 @@ -14138,6 +15806,10 @@ snapshots: transitivePeerDependencies: - graphql + apollo-link-debounce@3.0.0(@apollo/client@3.9.10(@types/react@17.0.80)(graphql-ws@5.14.2(graphql@16.8.1))(graphql@16.8.1)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)): + dependencies: + '@apollo/client': 3.9.10(@types/react@17.0.80)(graphql-ws@5.14.2(graphql@16.8.1))(graphql@16.8.1)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + apollo-link-error@1.1.13(graphql@15.8.0): dependencies: apollo-link: 1.2.14(graphql@15.8.0) @@ -14234,6 +15906,8 @@ snapshots: arg@4.1.3: {} + arg@5.0.2: {} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -14246,8 +15920,8 @@ snapshots: array-buffer-byte-length@1.0.0: dependencies: - call-bind: 1.0.5 - is-array-buffer: 3.0.2 + call-bind: 1.0.7 + is-array-buffer: 3.0.4 array-buffer-byte-length@1.0.1: dependencies: @@ -14326,13 +16000,13 @@ snapshots: arraybuffer.prototype.slice@1.0.2: dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-array-buffer: 3.0.2 - is-shared-array-buffer: 1.0.2 + es-abstract: 1.23.3 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 arraybuffer.prototype.slice@1.0.3: dependencies: @@ -14401,6 +16075,16 @@ snapshots: auto-bind@4.0.0: {} + autoprefixer@10.4.19(postcss@8.4.38): + dependencies: + browserslist: 4.23.0 + caniuse-lite: 1.0.30001607 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + available-typed-arrays@1.0.5: {} available-typed-arrays@1.0.7: @@ -14644,13 +16328,6 @@ snapshots: browser-stdout@1.3.1: {} - browserslist@4.22.2: - dependencies: - caniuse-lite: 1.0.30001607 - electron-to-chromium: 1.4.609 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.2) - browserslist@4.23.0: dependencies: caniuse-lite: 1.0.30001607 @@ -14742,12 +16419,21 @@ snapshots: pascal-case: 3.1.2 tslib: 2.6.2 + camelcase-css@2.0.1: {} + camelcase@5.3.1: {} camelcase@6.3.0: {} camelize@1.0.1: {} + caniuse-api@3.0.0: + dependencies: + browserslist: 4.23.0 + caniuse-lite: 1.0.30001607 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + caniuse-lite@1.0.30001607: {} capital-case@1.0.4: @@ -14845,6 +16531,8 @@ snapshots: chardet@0.7.0: {} + chart.js@3.9.1: {} + check-error@1.0.3: dependencies: get-func-name: 2.0.2 @@ -14909,6 +16597,8 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + chownr@1.1.4: {} + chrome-trace-event@1.0.3: {} ci-info@3.9.0: {} @@ -14970,7 +16660,7 @@ snapshots: natural-orderby: 2.0.3 object-treeify: 1.1.33 password-prompt: 1.1.3 - semver: 7.5.4 + semver: 7.6.0 string-width: 4.2.3 strip-ansi: 6.0.1 supports-color: 8.1.1 @@ -15037,6 +16727,13 @@ snapshots: color-convert: 1.9.3 color-string: 1.9.1 + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + + colord@2.9.3: {} + colorette@2.0.20: {} colorspace@1.1.4: @@ -15052,6 +16749,10 @@ snapshots: commander@4.1.1: {} + commander@6.2.1: {} + + commander@7.2.0: {} + common-tags@1.8.2: {} commondir@1.0.1: {} @@ -15065,6 +16766,8 @@ snapshots: concat-map@0.0.1: {} + confusing-browser-globals@1.0.11: {} + constant-case@3.0.4: dependencies: no-case: 3.0.4 @@ -15150,13 +16853,13 @@ snapshots: - supports-color - utf-8-validate - create-jest@29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)): + create-jest@29.7.0: dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)) + jest-config: 29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -15164,14 +16867,15 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + optional: true - create-jest@29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2)): + create-jest@29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2)) + jest-config: 29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -15180,13 +16884,13 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4)): + create-jest@29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@types/node@20.12.6)(typescript@5.2.2)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4)) + jest-config: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@types/node@20.12.6)(typescript@5.2.2)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -15194,7 +16898,6 @@ snapshots: - babel-plugin-macros - supports-color - ts-node - optional: true create-require@1.1.1: {} @@ -15203,6 +16906,10 @@ snapshots: '@types/luxon': 3.3.3 luxon: 3.4.3 + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.3 + cross-fetch@3.1.8: dependencies: node-fetch: 2.7.0 @@ -15213,6 +16920,14 @@ snapshots: dependencies: tslib: 2.6.2 + cross-spawn@6.0.5: + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.2 + shebang-command: 1.2.0 + which: 1.3.1 + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 @@ -15221,6 +16936,14 @@ snapshots: css-color-keywords@1.0.0: {} + css-declaration-sorter@6.4.1(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + css-in-js-utils@3.1.0: + dependencies: + hyphenate-style-name: 1.0.5 + css-select@1.2.0: dependencies: boolbase: 1.0.0 @@ -15228,6 +16951,14 @@ snapshots: domutils: 1.5.1 nth-check: 1.0.2 + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + css-select@5.1.0: dependencies: boolbase: 1.0.0 @@ -15242,12 +16973,65 @@ snapshots: css-color-keywords: 1.0.0 postcss-value-parser: 4.2.0 + css-tree@1.1.3: + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + css-what@2.1.3: {} css-what@6.1.0: {} cssesc@3.0.0: {} + cssnano-preset-default@5.2.14(postcss@8.4.38): + dependencies: + css-declaration-sorter: 6.4.1(postcss@8.4.38) + cssnano-utils: 3.1.0(postcss@8.4.38) + postcss: 8.4.38 + postcss-calc: 8.2.4(postcss@8.4.38) + postcss-colormin: 5.3.1(postcss@8.4.38) + postcss-convert-values: 5.1.3(postcss@8.4.38) + postcss-discard-comments: 5.1.2(postcss@8.4.38) + postcss-discard-duplicates: 5.1.0(postcss@8.4.38) + postcss-discard-empty: 5.1.1(postcss@8.4.38) + postcss-discard-overridden: 5.1.0(postcss@8.4.38) + postcss-merge-longhand: 5.1.7(postcss@8.4.38) + postcss-merge-rules: 5.1.4(postcss@8.4.38) + postcss-minify-font-values: 5.1.0(postcss@8.4.38) + postcss-minify-gradients: 5.1.1(postcss@8.4.38) + postcss-minify-params: 5.1.4(postcss@8.4.38) + postcss-minify-selectors: 5.2.1(postcss@8.4.38) + postcss-normalize-charset: 5.1.0(postcss@8.4.38) + postcss-normalize-display-values: 5.1.0(postcss@8.4.38) + postcss-normalize-positions: 5.1.1(postcss@8.4.38) + postcss-normalize-repeat-style: 5.1.1(postcss@8.4.38) + postcss-normalize-string: 5.1.0(postcss@8.4.38) + postcss-normalize-timing-functions: 5.1.0(postcss@8.4.38) + postcss-normalize-unicode: 5.1.1(postcss@8.4.38) + postcss-normalize-url: 5.1.0(postcss@8.4.38) + postcss-normalize-whitespace: 5.1.1(postcss@8.4.38) + postcss-ordered-values: 5.1.3(postcss@8.4.38) + postcss-reduce-initial: 5.1.2(postcss@8.4.38) + postcss-reduce-transforms: 5.1.0(postcss@8.4.38) + postcss-svgo: 5.1.0(postcss@8.4.38) + postcss-unique-selectors: 5.1.1(postcss@8.4.38) + + cssnano-utils@3.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + cssnano@5.1.15(postcss@8.4.38): + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.4.38) + lilconfig: 2.1.0 + postcss: 8.4.38 + yaml: 1.10.2 + + csso@4.2.0: + dependencies: + css-tree: 1.1.3 + cssom@0.3.8: optional: true @@ -15268,6 +17052,158 @@ snapshots: csv-stringify@6.4.5: {} + d3-array@1.2.4: {} + + d3-axis@1.0.12: {} + + d3-brush@1.1.6: + dependencies: + d3-dispatch: 1.0.6 + d3-drag: 1.2.5 + d3-interpolate: 1.4.0 + d3-selection: 1.4.2 + d3-transition: 1.3.2 + + d3-chord@1.0.6: + dependencies: + d3-array: 1.2.4 + d3-path: 1.0.9 + + d3-collection@1.0.7: {} + + d3-color@1.4.1: {} + + d3-contour@1.3.2: + dependencies: + d3-array: 1.2.4 + + d3-dispatch@1.0.6: {} + + d3-drag@1.2.5: + dependencies: + d3-dispatch: 1.0.6 + d3-selection: 1.4.2 + + d3-dsv@1.2.0: + dependencies: + commander: 2.20.3 + iconv-lite: 0.4.24 + rw: 1.3.3 + + d3-ease@1.0.7: {} + + d3-fetch@1.2.0: + dependencies: + d3-dsv: 1.2.0 + + d3-force@1.2.1: + dependencies: + d3-collection: 1.0.7 + d3-dispatch: 1.0.6 + d3-quadtree: 1.0.7 + d3-timer: 1.0.10 + + d3-format@1.4.5: {} + + d3-geo@1.12.1: + dependencies: + d3-array: 1.2.4 + + d3-hierarchy@1.1.9: {} + + d3-interpolate@1.4.0: + dependencies: + d3-color: 1.4.1 + + d3-path@1.0.9: {} + + d3-polygon@1.0.6: {} + + d3-quadtree@1.0.7: {} + + d3-random@1.1.2: {} + + d3-scale-chromatic@1.5.0: + dependencies: + d3-color: 1.4.1 + d3-interpolate: 1.4.0 + + d3-scale@2.2.2: + dependencies: + d3-array: 1.2.4 + d3-collection: 1.0.7 + d3-format: 1.4.5 + d3-interpolate: 1.4.0 + d3-time: 1.1.0 + d3-time-format: 2.3.0 + + d3-selection@1.4.2: {} + + d3-shape@1.3.7: + dependencies: + d3-path: 1.0.9 + + d3-time-format@2.3.0: + dependencies: + d3-time: 1.1.0 + + d3-time@1.1.0: {} + + d3-timer@1.0.10: {} + + d3-transition@1.3.2: + dependencies: + d3-color: 1.4.1 + d3-dispatch: 1.0.6 + d3-ease: 1.0.7 + d3-interpolate: 1.4.0 + d3-selection: 1.4.2 + d3-timer: 1.0.10 + + d3-voronoi@1.1.4: {} + + d3-zoom@1.8.3: + dependencies: + d3-dispatch: 1.0.6 + d3-drag: 1.2.5 + d3-interpolate: 1.4.0 + d3-selection: 1.4.2 + d3-transition: 1.3.2 + + d3@5.16.0: + dependencies: + d3-array: 1.2.4 + d3-axis: 1.0.12 + d3-brush: 1.1.6 + d3-chord: 1.0.6 + d3-collection: 1.0.7 + d3-color: 1.4.1 + d3-contour: 1.3.2 + d3-dispatch: 1.0.6 + d3-drag: 1.2.5 + d3-dsv: 1.2.0 + d3-ease: 1.0.7 + d3-fetch: 1.2.0 + d3-force: 1.2.1 + d3-format: 1.4.5 + d3-geo: 1.12.1 + d3-hierarchy: 1.1.9 + d3-interpolate: 1.4.0 + d3-path: 1.0.9 + d3-polygon: 1.0.6 + d3-quadtree: 1.0.7 + d3-random: 1.1.2 + d3-scale: 2.2.2 + d3-scale-chromatic: 1.5.0 + d3-selection: 1.4.2 + d3-shape: 1.3.7 + d3-time: 1.1.0 + d3-time-format: 2.3.0 + d3-timer: 1.0.10 + d3-transition: 1.3.2 + d3-voronoi: 1.1.4 + d3-zoom: 1.8.3 + damerau-levenshtein@1.0.8: {} dashdash@1.14.1: @@ -15343,6 +17279,8 @@ snapshots: dependencies: type-detect: 4.0.8 + deep-extend@0.6.0: {} + deep-is@0.1.4: {} deep-object-diff@1.1.9: {} @@ -15412,12 +17350,16 @@ snapshots: detect-libc@1.0.3: optional: true + detect-libc@2.0.3: {} + detect-newline@3.1.0: {} detect-node@2.1.0: {} devtools-protocol@0.0.1235375: {} + didyoumean@1.2.2: {} + diff-sequences@29.6.3: {} diff@4.0.2: {} @@ -15428,6 +17370,8 @@ snapshots: dependencies: path-type: 4.0.0 + dlv@1.1.3: {} + doctrine@2.1.0: dependencies: esutils: 2.0.3 @@ -15446,6 +17390,12 @@ snapshots: domelementtype: 2.3.0 entities: 2.2.0 + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 @@ -15464,6 +17414,10 @@ snapshots: dependencies: domelementtype: 1.3.1 + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + domhandler@5.0.3: dependencies: domelementtype: 2.3.0 @@ -15473,6 +17427,12 @@ snapshots: dom-serializer: 0.2.2 domelementtype: 1.3.1 + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils@3.1.0: dependencies: dom-serializer: 2.0.0 @@ -15547,8 +17507,6 @@ snapshots: chalk: 1.1.3 lodash: 4.17.21 - electron-to-chromium@1.4.609: {} - electron-to-chromium@1.4.730: {} elegant-spinner@1.0.1: {} @@ -15568,7 +17526,6 @@ snapshots: end-of-stream@1.4.4: dependencies: once: 1.4.0 - optional: true enhanced-resolve@5.16.0: dependencies: @@ -15605,6 +17562,10 @@ snapshots: dependencies: is-arrayish: 0.2.1 + error-stack-parser@2.1.4: + dependencies: + stackframe: 1.3.4 + es-abstract@1.22.3: dependencies: array-buffer-byte-length: 1.0.0 @@ -15633,7 +17594,7 @@ snapshots: is-weakref: 1.0.2 object-inspect: 1.13.1 object-keys: 1.1.1 - object.assign: 4.1.4 + object.assign: 4.1.5 regexp.prototype.flags: 1.5.1 safe-array-concat: 1.0.1 safe-regex-test: 1.0.0 @@ -15729,9 +17690,9 @@ snapshots: es-set-tostringtag@2.0.2: dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 has-tostringtag: 1.0.0 - hasown: 2.0.0 + hasown: 2.0.2 es-set-tostringtag@2.0.3: dependencies: @@ -15850,6 +17811,41 @@ snapshots: source-map: 0.6.1 optional: true + eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0))(eslint@8.57.0): + dependencies: + confusing-browser-globals: 1.0.11 + eslint: 8.57.0 + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0) + object.assign: 4.1.5 + object.entries: 1.1.8 + semver: 6.3.1 + + eslint-config-airbnb-typescript@17.1.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5))(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0))(eslint@8.57.0): + dependencies: + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.9.5) + eslint: 8.57.0 + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0) + + eslint-config-next@12.3.4(eslint@8.57.0)(typescript@4.9.5): + dependencies: + '@next/eslint-plugin-next': 12.3.4 + '@rushstack/eslint-patch': 1.10.1 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.9.5) + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 2.7.1(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-typescript@2.7.1)(eslint@8.57.0) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) + eslint-plugin-react: 7.34.1(eslint@8.57.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color + eslint-config-next@14.1.4(eslint@9.0.0)(typescript@5.4.4): dependencies: '@next/eslint-plugin-next': 14.1.4 @@ -15868,6 +17864,10 @@ snapshots: - eslint-import-resolver-webpack - supports-color + eslint-config-prettier@8.10.0(eslint@8.57.0): + dependencies: + eslint: 8.57.0 + eslint-config-prettier@9.0.0(eslint@8.52.0): dependencies: eslint: 8.52.0 @@ -15888,6 +17888,18 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-import-resolver-typescript@2.7.1(eslint-plugin-import@2.29.1)(eslint@8.57.0): + dependencies: + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.57.0 + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-typescript@2.7.1)(eslint@8.57.0) + glob: 7.2.3 + is-glob: 4.0.3 + resolve: 1.22.8 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - supports-color + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@9.0.0)(typescript@5.4.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@9.0.0): dependencies: debug: 4.3.4(supports-color@8.1.1) @@ -15905,6 +17917,17 @@ snapshots: - eslint-import-resolver-webpack - supports-color + eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@2.7.1(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + dependencies: + debug: 3.2.7(supports-color@5.5.0) + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.9.5) + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 2.7.1(eslint-plugin-import@2.29.1)(eslint@8.57.0) + transitivePeerDependencies: + - supports-color + eslint-module-utils@2.8.1(@typescript-eslint/parser@6.13.2(eslint@8.55.0)(typescript@5.4.4))(eslint-import-resolver-node@0.3.9)(eslint@9.0.0): dependencies: debug: 3.2.7(supports-color@5.5.0) @@ -15926,7 +17949,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.13.2(eslint@8.55.0)(typescript@5.4.4))(eslint@9.0.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-typescript@2.7.1)(eslint@8.57.0): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 @@ -15934,9 +17957,9 @@ snapshots: array.prototype.flatmap: 1.3.2 debug: 3.2.7(supports-color@5.5.0) doctrine: 2.1.0 - eslint: 9.0.0 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.13.2(eslint@8.55.0)(typescript@5.4.4))(eslint-import-resolver-node@0.3.9)(eslint@9.0.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@2.7.1(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -15947,35 +17970,109 @@ snapshots: semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 6.13.2(eslint@8.55.0)(typescript@5.4.4) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.9.5) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@6.13.2(@typescript-eslint/parser@6.13.2(eslint@8.55.0)(typescript@5.4.4))(eslint@8.55.0)(typescript@5.4.4))(eslint@8.55.0)(jest@29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4)))(typescript@5.4.4): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0): dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.55.0)(typescript@5.4.4) - eslint: 8.55.0 - optionalDependencies: - '@typescript-eslint/eslint-plugin': 6.13.2(@typescript-eslint/parser@6.13.2(eslint@8.55.0)(typescript@5.4.4))(eslint@8.55.0)(typescript@5.4.4) - jest: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4)) - transitivePeerDependencies: - - supports-color - - typescript - - eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(jest@29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)))(typescript@5.4.2): - dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.2) + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7(supports-color@5.5.0) + doctrine: 2.1.0 eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@2.7.1(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + hasown: 2.0.2 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(typescript@5.4.2) - jest: 29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.9.5) transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack - supports-color - - typescript - eslint-plugin-jsx-a11y@6.8.0(eslint@9.0.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.13.2(eslint@8.55.0)(typescript@5.4.4))(eslint@9.0.0): + dependencies: + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7(supports-color@5.5.0) + doctrine: 2.1.0 + eslint: 9.0.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.13.2(eslint@8.55.0)(typescript@5.4.4))(eslint-import-resolver-node@0.3.9)(eslint@9.0.0) + hasown: 2.0.2 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 6.13.2(eslint@8.55.0)(typescript@5.4.4) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@6.13.2(@typescript-eslint/parser@6.13.2(eslint@8.55.0)(typescript@5.4.4))(eslint@8.55.0)(typescript@5.4.4))(eslint@8.55.0)(jest@29.7.0)(typescript@5.4.4): + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.55.0)(typescript@5.4.4) + eslint: 8.55.0 + optionalDependencies: + '@typescript-eslint/eslint-plugin': 6.13.2(@typescript-eslint/parser@6.13.2(eslint@8.55.0)(typescript@5.4.4))(eslint@8.55.0)(typescript@5.4.4) + jest: 29.7.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(jest@29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)))(typescript@5.4.2): + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.2) + eslint: 8.57.0 + optionalDependencies: + '@typescript-eslint/eslint-plugin': 7.2.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(typescript@5.4.2) + jest: 29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)) + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): + dependencies: + '@babel/runtime': 7.24.4 + aria-query: 5.3.0 + array-includes: 3.1.8 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.8 + axe-core: 4.7.0 + axobject-query: 3.2.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + es-iterator-helpers: 1.0.18 + eslint: 8.57.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + + eslint-plugin-jsx-a11y@6.8.0(eslint@9.0.0): dependencies: '@babel/runtime': 7.24.4 aria-query: 5.3.0 @@ -15995,6 +18092,14 @@ snapshots: object.entries: 1.1.8 object.fromentries: 2.0.8 + eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8): + dependencies: + eslint: 8.57.0 + prettier: 2.8.8 + prettier-linter-helpers: 1.0.0 + optionalDependencies: + eslint-config-prettier: 8.10.0(eslint@8.57.0) + eslint-plugin-prettier@5.0.1(@types/eslint@8.56.7)(eslint-config-prettier@9.0.0(eslint@8.52.0))(eslint@8.52.0)(prettier@3.0.3): dependencies: eslint: 8.52.0 @@ -16025,10 +18130,36 @@ snapshots: '@types/eslint': 8.56.7 eslint-config-prettier: 9.1.0(eslint@8.57.0) + eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): + dependencies: + eslint: 8.57.0 + eslint-plugin-react-hooks@4.6.0(eslint@9.0.0): dependencies: eslint: 9.0.0 + eslint-plugin-react@7.34.1(eslint@8.57.0): + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.2 + array.prototype.toreversed: 1.1.2 + array.prototype.tosorted: 1.1.3 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.18 + eslint: 8.57.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.hasown: 1.1.4 + object.values: 1.2.0 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.11 + eslint-plugin-react@7.34.1(eslint@9.0.0): dependencies: array-includes: 3.1.8 @@ -16051,6 +18182,21 @@ snapshots: semver: 6.3.1 string.prototype.matchall: 4.0.11 + eslint-plugin-tailwindcss@3.17.0(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@17.0.45)(typescript@4.9.5))): + dependencies: + fast-glob: 3.3.2 + postcss: 8.4.38 + tailwindcss: 3.4.3(ts-node@10.9.2(@types/node@17.0.45)(typescript@4.9.5)) + + eslint-plugin-unused-imports@2.0.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0): + dependencies: + eslint: 8.57.0 + eslint-rule-composer: 0.3.0 + optionalDependencies: + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5) + + eslint-rule-composer@0.3.0: {} + eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 @@ -16314,6 +18460,8 @@ snapshots: exit@0.1.2: {} + expand-template@2.0.3: {} + expect@29.7.0: dependencies: '@jest/expect-utils': 29.7.0 @@ -16408,10 +18556,14 @@ snapshots: dependencies: fastest-levenshtein: 1.0.16 + fast-loops@1.1.3: {} + fast-querystring@1.1.2: dependencies: fast-decode-uri-component: 1.0.1 + fast-shallow-equal@1.0.0: {} + fast-text-encoding@1.0.6: optional: true @@ -16426,6 +18578,8 @@ snapshots: fastest-levenshtein@1.0.16: {} + fastest-stable-stringify@2.0.2: {} + fastq@1.17.1: dependencies: reusify: 1.0.4 @@ -16618,12 +18772,16 @@ snapshots: forwarded@0.2.0: {} + fraction.js@4.3.7: {} + fresh@0.5.2: {} from@0.1.7: {} fromentries@1.3.2: {} + fs-constants@1.0.0: {} + fs-extra@11.2.0: dependencies: graceful-fs: 4.2.11 @@ -16725,8 +18883,8 @@ snapshots: get-symbol-description@1.0.0: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 get-symbol-description@1.0.2: dependencies: @@ -16765,6 +18923,8 @@ snapshots: dependencies: git-up: 4.0.5 + github-from-package@0.0.0: {} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -16835,7 +18995,6 @@ snapshots: inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 - optional: true global-agent@3.0.0: dependencies: @@ -16843,7 +19002,7 @@ snapshots: es6-error: 4.1.1 matcher: 3.0.0 roarr: 2.15.4 - semver: 7.5.4 + semver: 7.6.0 serialize-error: 7.0.1 globals@11.12.0: {} @@ -16867,7 +19026,7 @@ snapshots: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.1 - ignore: 5.2.4 + ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 @@ -17041,6 +19200,12 @@ snapshots: - supports-color optional: true + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + + hamt_plus@1.0.2: {} + har-schema@2.0.0: optional: true @@ -17111,7 +19276,7 @@ snapshots: header-generator@2.1.45: dependencies: - browserslist: 4.22.2 + browserslist: 4.23.0 generative-bayesian-network: 2.1.45 ow: 0.28.2 tslib: 2.6.2 @@ -17120,6 +19285,8 @@ snapshots: dependencies: react-is: 16.13.1 + hosted-git-info@2.8.9: {} + html-encoding-sniffer@3.0.0: dependencies: whatwg-encoding: 2.0.0 @@ -17228,6 +19395,8 @@ snapshots: hyperlinker@1.0.0: {} + hyphenate-style-name@1.0.5: {} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -17277,6 +19446,13 @@ snapshots: inherits@2.0.4: {} + ini@1.3.8: {} + + inline-style-prefixer@7.0.0: + dependencies: + css-in-js-utils: 3.1.0 + fast-loops: 1.1.3 + inquirer@8.2.6: dependencies: ansi-escapes: 4.3.2 @@ -17315,8 +19491,8 @@ snapshots: internal-slot@1.0.6: dependencies: - get-intrinsic: 1.2.2 - hasown: 2.0.0 + get-intrinsic: 1.2.4 + hasown: 2.0.2 side-channel: 1.0.4 internal-slot@1.0.7: @@ -17340,9 +19516,9 @@ snapshots: is-array-buffer@3.0.2: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + is-typed-array: 1.1.13 is-array-buffer@3.0.4: dependencies: @@ -17469,7 +19645,7 @@ snapshots: is-shared-array-buffer@1.0.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 is-shared-array-buffer@1.0.3: dependencies: @@ -17498,7 +19674,7 @@ snapshots: is-typed-array@1.1.12: dependencies: - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 is-typed-array@1.1.13: dependencies: @@ -17659,16 +19835,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)): + jest-cli@29.7.0: dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)) + '@jest/core': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)) + create-jest: 29.7.0 exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)) + jest-config: 29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -17677,17 +19853,18 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + optional: true - jest-cli@29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2)): + jest-cli@29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2)) + create-jest: 29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2)) + jest-config: 29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -17697,16 +19874,16 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4)): + jest-cli@29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@types/node@20.12.6)(typescript@5.2.2)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.12.6)(typescript@5.2.2)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4)) + create-jest: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@types/node@20.12.6)(typescript@5.2.2)) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4)) + jest-config: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@types/node@20.12.6)(typescript@5.2.2)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -17715,9 +19892,8 @@ snapshots: - babel-plugin-macros - supports-color - ts-node - optional: true - jest-config@29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)): + jest-config@29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)): dependencies: '@babel/core': 7.24.4 '@jest/test-sequencer': 29.7.0 @@ -17743,12 +19919,12 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.11.28 - ts-node: 10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2) + ts-node: 10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)): + jest-config@29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)): dependencies: '@babel/core': 7.24.4 '@jest/test-sequencer': 29.7.0 @@ -17774,12 +19950,12 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.12.6 - ts-node: 10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2) + ts-node: 10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2)): + jest-config@29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@types/node@20.12.6)(typescript@5.2.2)): dependencies: '@babel/core': 7.24.4 '@jest/test-sequencer': 29.7.0 @@ -17810,38 +19986,6 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4)): - dependencies: - '@babel/core': 7.24.4 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.24.4) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.12.6 - ts-node: 10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - optional: true - jest-diff@29.7.0: dependencies: chalk: 4.1.2 @@ -18063,45 +20207,47 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)): + jest@29.7.0: dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)) + '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)) + jest-cli: 29.7.0 transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node + optional: true - jest@29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2)): + jest@29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2)) + jest-cli: 29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node - jest@29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4)): + jest@29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@types/node@20.12.6)(typescript@5.2.2)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.12.6)(typescript@5.2.2)) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4)) + jest-cli: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2(@types/node@20.12.6)(typescript@5.2.2)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node - optional: true jiti@1.20.0: {} + jiti@1.21.0: {} + jose@4.15.4: {} jose@4.15.5: {} @@ -18110,6 +20256,8 @@ snapshots: jquery@3.7.1: {} + js-cookie@2.2.1: {} + js-tokens@4.0.0: {} js-yaml@3.14.1: @@ -18440,6 +20588,13 @@ snapshots: - zen-observable - zenObservable + load-json-file@4.0.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + load-json-file@5.3.0: dependencies: graceful-fs: 4.2.11 @@ -18471,9 +20626,13 @@ snapshots: dependencies: p-locate: 5.0.0 + lodash-es@4.17.21: {} + lodash.camelcase@4.3.0: optional: true + lodash.castarray@4.4.0: {} + lodash.clonedeep@4.5.0: {} lodash.debounce@4.0.8: {} @@ -18510,6 +20669,8 @@ snapshots: lodash.truncate@4.4.2: {} + lodash.uniq@4.5.0: {} + lodash.xorby@4.7.0: {} lodash@4.17.21: {} @@ -18637,6 +20798,8 @@ snapshots: dependencies: escape-string-regexp: 4.0.0 + mdn-data@2.0.14: {} + mdurl@1.0.1: optional: true @@ -18649,6 +20812,8 @@ snapshots: memory-pager@1.5.0: optional: true + memorystream@0.3.1: {} + merge-descriptors@1.0.1: {} merge-stream@2.0.0: {} @@ -18687,6 +20852,8 @@ snapshots: mimic-response@4.0.0: {} + mini-svg-data-uri@1.4.4: {} + minimatch@3.0.8: dependencies: brace-expansion: 1.1.11 @@ -18719,6 +20886,8 @@ snapshots: minipass@7.0.4: {} + mkdirp-classic@0.5.3: {} + mkdirp@0.5.6: dependencies: minimist: 1.2.8 @@ -18824,6 +20993,8 @@ snapshots: transitivePeerDependencies: - supports-color + mrmime@1.0.1: {} + ms@2.0.0: {} ms@2.1.2: {} @@ -18840,10 +21011,27 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 + nano-css@5.6.1(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + css-tree: 1.1.3 + csstype: 3.1.3 + fastest-stable-stringify: 2.0.2 + inline-style-prefixer: 7.0.0 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + rtl-css-js: 1.16.1 + stacktrace-js: 2.0.2 + stylis: 4.3.1 + nanoid@3.3.3: {} nanoid@3.3.7: {} + napi-build-utils@1.0.2: {} + + natural-compare-lite@1.4.0: {} + natural-compare@1.4.0: {} natural-orderby@2.0.3: {} @@ -18867,6 +21055,40 @@ snapshots: react-dom: 18.2.0(react@18.2.0) uuid: 8.3.2 + next-seo@5.15.0(next@12.3.4(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + next: 12.3.4(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + next@12.3.4(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + '@next/env': 12.3.4 + '@swc/helpers': 0.4.11 + caniuse-lite: 1.0.30001607 + postcss: 8.4.14 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + styled-jsx: 5.0.7(react@17.0.2) + use-sync-external-store: 1.2.0(react@17.0.2) + optionalDependencies: + '@next/swc-android-arm-eabi': 12.3.4 + '@next/swc-android-arm64': 12.3.4 + '@next/swc-darwin-arm64': 12.3.4 + '@next/swc-darwin-x64': 12.3.4 + '@next/swc-freebsd-x64': 12.3.4 + '@next/swc-linux-arm-gnueabihf': 12.3.4 + '@next/swc-linux-arm64-gnu': 12.3.4 + '@next/swc-linux-arm64-musl': 12.3.4 + '@next/swc-linux-x64-gnu': 12.3.4 + '@next/swc-linux-x64-musl': 12.3.4 + '@next/swc-win32-arm64-msvc': 12.3.4 + '@next/swc-win32-ia32-msvc': 12.3.4 + '@next/swc-win32-x64-msvc': 12.3.4 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + next@14.2.2(@babel/core@7.24.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@next/env': 14.2.2 @@ -18892,13 +21114,21 @@ snapshots: - '@babel/core' - babel-plugin-macros + nice-try@1.0.5: {} + no-case@3.0.4: dependencies: lower-case: 2.0.2 tslib: 2.6.2 + node-abi@3.62.0: + dependencies: + semver: 7.6.0 + node-abort-controller@3.1.1: {} + node-addon-api@5.1.0: {} + node-addon-api@7.1.0: optional: true @@ -18941,16 +21171,37 @@ snapshots: dependencies: abbrev: 1.1.1 + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + normalize-path@2.1.1: dependencies: remove-trailing-separator: 1.1.0 normalize-path@3.0.0: {} + normalize-range@0.1.2: {} + normalize-url@6.1.0: {} normalize-url@8.0.0: {} + npm-run-all@4.1.5: + dependencies: + ansi-styles: 3.2.1 + chalk: 2.4.2 + cross-spawn: 6.0.5 + memorystream: 0.3.1 + minimatch: 3.1.2 + pidtree: 0.3.1 + read-pkg: 3.0.0 + shell-quote: 1.8.1 + string.prototype.padend: 3.1.6 + npm-run-path@4.0.1: dependencies: path-key: 3.1.1 @@ -18994,8 +21245,7 @@ snapshots: object-hash@2.2.0: {} - object-hash@3.0.0: - optional: true + object-hash@3.0.0: {} object-inspect@1.13.1: {} @@ -19003,13 +21253,6 @@ snapshots: object-treeify@1.1.33: {} - object.assign@4.1.4: - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - object.assign@4.1.5: dependencies: call-bind: 1.0.7 @@ -19099,6 +21342,8 @@ snapshots: is-inside-container: 1.0.0 is-wsl: 2.2.0 + opener@1.5.2: {} + openid-client@5.6.1: dependencies: jose: 4.15.5 @@ -19282,6 +21527,8 @@ snapshots: path-is-absolute@1.0.1: {} + path-key@2.0.1: {} + path-key@3.1.1: {} path-key@4.0.0: {} @@ -19301,6 +21548,10 @@ snapshots: path-to-regexp@0.1.7: {} + path-type@3.0.0: + dependencies: + pify: 3.0.0 + path-type@4.0.0: {} pathe@1.1.2: {} @@ -19318,6 +21569,12 @@ snapshots: picomatch@2.3.1: {} + pidtree@0.3.1: {} + + pify@2.3.0: {} + + pify@3.0.0: {} + pify@4.0.1: {} pirates@4.0.6: {} @@ -19346,56 +21603,261 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-load-config@4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@15.14.9)(typescript@5.2.2)): + postcss-calc@8.2.4(postcss@8.4.38): dependencies: - lilconfig: 2.1.0 - yaml: 2.3.3 - optionalDependencies: postcss: 8.4.38 - ts-node: 10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@15.14.9)(typescript@5.2.2) + postcss-selector-parser: 6.1.0 + postcss-value-parser: 4.2.0 - postcss-load-config@4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2)): + postcss-colormin@5.3.1(postcss@8.4.38): dependencies: - lilconfig: 2.1.0 - yaml: 2.3.3 - optionalDependencies: + browserslist: 4.23.0 + caniuse-api: 3.0.0 + colord: 2.9.3 postcss: 8.4.38 - ts-node: 10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2) + postcss-value-parser: 4.2.0 - postcss-load-config@4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4)): + postcss-convert-values@5.1.3(postcss@8.4.38): dependencies: - lilconfig: 2.1.0 - yaml: 2.3.3 - optionalDependencies: + browserslist: 4.23.0 postcss: 8.4.38 - ts-node: 10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4) + postcss-value-parser: 4.2.0 - postcss-load-config@4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.6.4)(typescript@5.2.2)): + postcss-discard-comments@5.1.2(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + postcss-discard-duplicates@5.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + postcss-discard-empty@5.1.1(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + postcss-discard-overridden@5.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + postcss-import@15.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + + postcss-js@4.0.1(postcss@8.4.38): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.38 + + postcss-load-config@4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2)): dependencies: lilconfig: 2.1.0 yaml: 2.3.3 optionalDependencies: postcss: 8.4.38 - ts-node: 10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.6.4)(typescript@5.2.2) + ts-node: 10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2) - postcss-load-config@4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.8.7)(typescript@5.2.2)): + postcss-load-config@4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(typescript@5.4.4)): dependencies: lilconfig: 2.1.0 yaml: 2.3.3 optionalDependencies: postcss: 8.4.38 - ts-node: 10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.8.7)(typescript@5.2.2) + ts-node: 10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(typescript@5.4.4) - postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)): + postcss-load-config@4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@15.14.9)(typescript@5.2.2)): + dependencies: + lilconfig: 2.1.0 + yaml: 2.3.3 + optionalDependencies: + postcss: 8.4.38 + ts-node: 10.9.2(@swc/core@1.3.93)(@types/node@15.14.9)(typescript@5.2.2) + + postcss-load-config@4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.12.6)(typescript@5.2.2)): + dependencies: + lilconfig: 2.1.0 + yaml: 2.3.3 + optionalDependencies: + postcss: 8.4.38 + ts-node: 10.9.2(@swc/core@1.3.93)(@types/node@20.12.6)(typescript@5.2.2) + + postcss-load-config@4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.6.4)(typescript@5.2.2)): + dependencies: + lilconfig: 2.1.0 + yaml: 2.3.3 + optionalDependencies: + postcss: 8.4.38 + ts-node: 10.9.2(@swc/core@1.3.93)(@types/node@20.6.4)(typescript@5.2.2) + + postcss-load-config@4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.8.7)(typescript@5.2.2)): + dependencies: + lilconfig: 2.1.0 + yaml: 2.3.3 + optionalDependencies: + postcss: 8.4.38 + ts-node: 10.9.2(@swc/core@1.3.93)(@types/node@20.8.7)(typescript@5.2.2) + + postcss-load-config@4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(typescript@5.2.2)): + dependencies: + lilconfig: 2.1.0 + yaml: 2.3.3 + optionalDependencies: + postcss: 8.4.38 + ts-node: 10.9.2(@swc/core@1.3.93)(@types/node@15.14.9)(typescript@5.2.2) + + postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)): dependencies: lilconfig: 3.1.1 yaml: 2.4.1 optionalDependencies: postcss: 8.4.38 - ts-node: 10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2) + ts-node: 10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2) + + postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@17.0.45)(typescript@4.9.5)): + dependencies: + lilconfig: 3.1.1 + yaml: 2.4.1 + optionalDependencies: + postcss: 8.4.38 + ts-node: 10.9.2(@types/node@17.0.45)(typescript@4.9.5) + + postcss-merge-longhand@5.1.7(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.1(postcss@8.4.38) + + postcss-merge-rules@5.1.4(postcss@8.4.38): + dependencies: + browserslist: 4.23.0 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0(postcss@8.4.38) + postcss: 8.4.38 + postcss-selector-parser: 6.1.0 + + postcss-minify-font-values@5.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-minify-gradients@5.1.1(postcss@8.4.38): + dependencies: + colord: 2.9.3 + cssnano-utils: 3.1.0(postcss@8.4.38) + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-minify-params@5.1.4(postcss@8.4.38): + dependencies: + browserslist: 4.23.0 + cssnano-utils: 3.1.0(postcss@8.4.38) + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-minify-selectors@5.2.1(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-selector-parser: 6.1.0 + + postcss-nested@6.0.1(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-selector-parser: 6.1.0 + + postcss-normalize-charset@5.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + postcss-normalize-display-values@5.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-normalize-positions@5.1.1(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-normalize-repeat-style@5.1.1(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-normalize-string@5.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-normalize-timing-functions@5.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-normalize-unicode@5.1.1(postcss@8.4.38): + dependencies: + browserslist: 4.23.0 + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-normalize-url@5.1.0(postcss@8.4.38): + dependencies: + normalize-url: 6.1.0 + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-normalize-whitespace@5.1.1(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-ordered-values@5.1.3(postcss@8.4.38): + dependencies: + cssnano-utils: 3.1.0(postcss@8.4.38) + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-reduce-initial@5.1.2(postcss@8.4.38): + dependencies: + browserslist: 4.23.0 + caniuse-api: 3.0.0 + postcss: 8.4.38 + + postcss-reduce-transforms@5.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + postcss-selector-parser@6.0.10: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@6.1.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-svgo@5.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 + + postcss-unique-selectors@5.1.1(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-selector-parser: 6.1.0 postcss-value-parser@4.2.0: {} + postcss@8.4.14: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.2.0 + postcss@8.4.31: dependencies: nanoid: 3.3.7 @@ -19428,6 +21890,21 @@ snapshots: preact@10.18.1: {} + prebuild-install@7.1.2: + dependencies: + detect-libc: 2.0.3 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 3.62.0 + pump: 3.0.0 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + prelude-ls@1.1.2: optional: true @@ -19437,6 +21914,8 @@ snapshots: dependencies: fast-diff: 1.3.0 + prettier@2.8.8: {} + prettier@3.0.3: {} prettier@3.1.1: {} @@ -19547,6 +22026,11 @@ snapshots: pstree.remy@1.1.8: {} + pump@3.0.0: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + punycode@1.4.1: {} punycode@2.3.0: {} @@ -19762,7 +22246,7 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - rc-picker@4.3.0(date-fns@1.30.1)(dayjs@1.11.10)(luxon@3.4.3)(moment@2.29.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + rc-picker@4.3.0(dayjs@1.11.10)(luxon@3.4.3)(moment@2.29.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@babel/runtime': 7.24.4 '@rc-component/trigger': 2.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -19773,7 +22257,6 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) optionalDependencies: - date-fns: 1.30.1 dayjs: 1.11.10 luxon: 3.4.3 moment: 2.29.4 @@ -19940,20 +22423,91 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + react-chartjs-2@4.3.1(chart.js@3.9.1)(react@17.0.2): + dependencies: + chart.js: 3.9.1 + react: 17.0.2 + + react-cool-dimensions@2.0.7(react@17.0.2): + dependencies: + react: 17.0.2 + + react-dom@17.0.2(react@17.0.2): + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react: 17.0.2 + scheduler: 0.20.2 + react-dom@18.2.0(react@18.2.0): dependencies: loose-envify: 1.4.0 react: 18.2.0 scheduler: 0.23.0 + react-infinite-scroll-hook@4.1.1(react@17.0.2): + dependencies: + react: 17.0.2 + react-intersection-observer-hook: 2.1.1(react@17.0.2) + + react-intersection-observer-hook@2.1.1(react@17.0.2): + dependencies: + react: 17.0.2 + react-is@16.13.1: {} react-is@18.2.0: {} + react-universal-interface@0.6.2(react@17.0.2)(tslib@2.6.2): + dependencies: + react: 17.0.2 + tslib: 2.6.2 + + react-use@17.5.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + '@types/js-cookie': 2.2.7 + '@xobotyi/scrollbar-width': 1.9.5 + copy-to-clipboard: 3.3.3 + fast-deep-equal: 3.1.3 + fast-shallow-equal: 1.0.0 + js-cookie: 2.2.1 + nano-css: 5.6.1(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-universal-interface: 0.6.2(react@17.0.2)(tslib@2.6.2) + resize-observer-polyfill: 1.5.1 + screenfull: 5.2.0 + set-harmonic-interval: 1.0.1 + throttle-debounce: 3.0.1 + ts-easing: 0.2.0 + tslib: 2.6.2 + + react@17.0.2: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react@18.2.0: dependencies: loose-envify: 1.4.0 + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + read-pkg@3.0.0: + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + readable-stream@1.1.14: dependencies: core-util-is: 1.0.3 @@ -19992,6 +22546,13 @@ snapshots: dependencies: resolve: 1.22.8 + recoil@0.7.7(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + hamt_plus: 1.0.2 + react: 17.0.2 + optionalDependencies: + react-dom: 17.0.2(react@17.0.2) + redeyed@2.1.1: dependencies: esprima: 4.0.1 @@ -20016,7 +22577,7 @@ snapshots: regexp.prototype.flags@1.5.1: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 set-function-name: 2.0.1 @@ -20027,6 +22588,11 @@ snapshots: es-errors: 1.3.0 set-function-name: 2.0.2 + rehackt@0.0.6(@types/react@17.0.80)(react@17.0.2): + optionalDependencies: + '@types/react': 17.0.80 + react: 17.0.2 + rehackt@0.0.6(@types/react@18.2.75)(react@18.2.0): optionalDependencies: '@types/react': 18.2.75 @@ -20195,6 +22761,10 @@ snapshots: rrweb-cssom@0.6.0: {} + rtl-css-js@1.16.1: + dependencies: + '@babel/runtime': 7.24.4 + run-applescript@5.0.0: dependencies: execa: 5.1.1 @@ -20207,6 +22777,8 @@ snapshots: dependencies: queue-microtask: 1.2.3 + rw@1.3.3: {} + rxjs@6.6.7: dependencies: tslib: 1.14.1 @@ -20217,8 +22789,8 @@ snapshots: safe-array-concat@1.0.1: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 @@ -20235,8 +22807,8 @@ snapshots: safe-regex-test@1.0.0: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 is-regex: 1.1.4 safe-regex-test@1.0.3: @@ -20262,6 +22834,11 @@ snapshots: dependencies: xmlchars: 2.2.0 + scheduler@0.20.2: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + scheduler@0.23.0: dependencies: loose-envify: 1.4.0 @@ -20291,6 +22868,8 @@ snapshots: transitivePeerDependencies: - debug + screenfull@5.2.0: {} + scroll-into-view-if-needed@3.1.0: dependencies: compute-scroll-into-view: 3.1.0 @@ -20378,7 +22957,7 @@ snapshots: dependencies: define-data-property: 1.1.1 functions-have-names: 1.2.3 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 set-function-name@2.0.2: dependencies: @@ -20387,6 +22966,8 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 + set-harmonic-interval@1.0.1: {} + setimmediate@1.0.5: {} setprototypeof@1.2.0: {} @@ -20402,10 +22983,27 @@ snapshots: shallowequal@1.1.0: {} + sharp@0.30.7: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + node-addon-api: 5.1.0 + prebuild-install: 7.1.2 + semver: 7.6.0 + simple-get: 4.0.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + + shebang-command@1.2.0: + dependencies: + shebang-regex: 1.0.0 + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 + shebang-regex@1.0.0: {} + shebang-regex@3.0.0: {} shell-quote@1.8.1: {} @@ -20437,13 +23035,27 @@ snapshots: signedsource@1.0.0: {} + simple-concat@1.0.1: {} + + simple-get@4.0.1: + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + simple-swizzle@0.2.2: dependencies: is-arrayish: 0.3.2 simple-update-notifier@2.0.0: dependencies: - semver: 7.5.4 + semver: 7.6.0 + + sirv@1.0.19: + dependencies: + '@polka/url': 1.0.0-next.25 + mrmime: 1.0.1 + totalist: 1.1.0 sisteransi@1.0.5: {} @@ -20465,6 +23077,8 @@ snapshots: sliced@1.0.1: {} + slug@5.3.0: {} + snake-case@3.0.4: dependencies: dot-case: 3.0.4 @@ -20482,6 +23096,8 @@ snapshots: buffer-from: 1.1.2 source-map: 0.6.1 + source-map@0.5.6: {} + source-map@0.6.1: {} source-map@0.8.0-beta.0: @@ -20493,6 +23109,20 @@ snapshots: memory-pager: 1.5.0 optional: true + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.18 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.18 + + spdx-license-ids@3.0.18: {} + split-on-first@1.1.0: {} split@0.3.3: @@ -20520,12 +23150,31 @@ snapshots: tweetnacl: 0.14.5 optional: true + stable@0.1.8: {} + + stack-generator@2.0.10: + dependencies: + stackframe: 1.3.4 + stack-trace@0.0.10: {} stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 + stackframe@1.3.4: {} + + stacktrace-gps@3.1.2: + dependencies: + source-map: 0.5.6 + stackframe: 1.3.4 + + stacktrace-js@2.0.2: + dependencies: + error-stack-parser: 2.1.4 + stack-generator: 2.0.10 + stacktrace-gps: 3.1.2 + statuses@2.0.1: {} stream-chain@2.2.5: {} @@ -20597,11 +23246,18 @@ snapshots: set-function-name: 2.0.2 side-channel: 1.0.6 + string.prototype.padend@3.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + string.prototype.trim@1.2.8: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 string.prototype.trim@1.2.9: dependencies: @@ -20612,9 +23268,9 @@ snapshots: string.prototype.trimend@1.0.7: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 string.prototype.trimend@1.0.8: dependencies: @@ -20624,9 +23280,9 @@ snapshots: string.prototype.trimstart@1.0.7: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 string.prototype.trimstart@1.0.8: dependencies: @@ -20696,6 +23352,10 @@ snapshots: stylis: 4.3.1 tslib: 2.5.0 + styled-jsx@5.0.7(react@17.0.2): + dependencies: + react: 17.0.2 + styled-jsx@5.1.1(@babel/core@7.24.4)(react@18.2.0): dependencies: client-only: 0.0.1 @@ -20703,6 +23363,12 @@ snapshots: optionalDependencies: '@babel/core': 7.24.4 + stylehacks@5.1.1(postcss@8.4.38): + dependencies: + browserslist: 4.23.0 + postcss: 8.4.38 + postcss-selector-parser: 6.1.0 + stylis@4.3.1: {} sucrase@3.34.0: @@ -20748,6 +23414,16 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + svgo@2.8.0: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.0.0 + stable: 0.1.8 + swap-case@2.0.2: dependencies: tslib: 2.5.3 @@ -20776,8 +23452,50 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 + tailwindcss@3.4.3(ts-node@10.9.2(@types/node@17.0.45)(typescript@4.9.5)): + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.0 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.38 + postcss-import: 15.1.0(postcss@8.4.38) + postcss-js: 4.0.1(postcss@8.4.38) + postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@17.0.45)(typescript@4.9.5)) + postcss-nested: 6.0.1(postcss@8.4.38) + postcss-selector-parser: 6.1.0 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + tapable@2.2.1: {} + tar-fs@2.1.1: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + teeny-request@8.0.3: dependencies: http-proxy-agent: 5.0.0 @@ -20790,16 +23508,14 @@ snapshots: - supports-color optional: true - terser-webpack-plugin@5.3.10(@swc/core@1.3.93(@swc/helpers@0.5.5))(webpack@5.91.0(@swc/core@1.3.93(@swc/helpers@0.5.5))): + terser-webpack-plugin@5.3.10(webpack@5.91.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.30.3 - webpack: 5.91.0(@swc/core@1.3.93(@swc/helpers@0.5.5)) - optionalDependencies: - '@swc/core': 1.3.93(@swc/helpers@0.5.5) + webpack: 5.91.0 terser@5.30.3: dependencies: @@ -20828,6 +23544,8 @@ snapshots: dependencies: any-promise: 1.3.0 + throttle-debounce@3.0.1: {} + throttle-debounce@5.0.0: {} through@2.3.8: {} @@ -20876,6 +23594,8 @@ snapshots: toidentifier@1.0.1: {} + totalist@1.1.0: {} + touch@3.1.0: dependencies: nopt: 1.0.10 @@ -20923,6 +23643,8 @@ snapshots: dependencies: typescript: 5.4.4 + ts-easing@0.2.0: {} + ts-interface-checker@0.1.13: {} ts-invariant@0.10.3: @@ -20933,11 +23655,11 @@ snapshots: dependencies: tslib: 1.14.1 - ts-jest@29.1.2(@babel/core@7.24.4)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.4))(esbuild@0.19.12)(jest@29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)))(typescript@5.4.2): + ts-jest@29.1.2(@babel/core@7.24.4)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.4))(esbuild@0.19.12)(jest@29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)))(typescript@5.4.2): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)) + jest: 29.7.0(@types/node@20.11.28)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -20972,7 +23694,7 @@ snapshots: tsconfig: 7.0.0 typescript: 5.2.2 - ts-node-dev@2.0.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@15.14.9)(typescript@5.2.2): + ts-node-dev@2.0.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2): dependencies: chokidar: 3.5.3 dynamic-dedupe: 0.3.0 @@ -20982,7 +23704,7 @@ snapshots: rimraf: 2.7.1 source-map-support: 0.5.21 tree-kill: 1.2.2 - ts-node: 10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@15.14.9)(typescript@5.2.2) + ts-node: 10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2) tsconfig: 7.0.0 typescript: 5.2.2 transitivePeerDependencies: @@ -20990,7 +23712,7 @@ snapshots: - '@swc/wasm' - '@types/node' - ts-node-dev@2.0.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.10.4)(typescript@5.3.3): + ts-node-dev@2.0.0(@swc/core@1.3.93)(@types/node@15.14.9)(typescript@5.2.2): dependencies: chokidar: 3.5.3 dynamic-dedupe: 0.3.0 @@ -21000,7 +23722,25 @@ snapshots: rimraf: 2.7.1 source-map-support: 0.5.21 tree-kill: 1.2.2 - ts-node: 10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.10.4)(typescript@5.3.3) + ts-node: 10.9.2(@swc/core@1.3.93)(@types/node@15.14.9)(typescript@5.2.2) + tsconfig: 7.0.0 + typescript: 5.2.2 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + + ts-node-dev@2.0.0(@swc/core@1.3.93)(@types/node@20.10.4)(typescript@5.3.3): + dependencies: + chokidar: 3.5.3 + dynamic-dedupe: 0.3.0 + minimist: 1.2.8 + mkdirp: 1.0.4 + resolve: 1.22.8 + rimraf: 2.7.1 + source-map-support: 0.5.21 + tree-kill: 1.2.2 + ts-node: 10.9.2(@swc/core@1.3.93)(@types/node@20.10.4)(typescript@5.3.3) tsconfig: 7.0.0 typescript: 5.3.3 transitivePeerDependencies: @@ -21008,7 +23748,7 @@ snapshots: - '@swc/wasm' - '@types/node' - ts-node-dev@2.0.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2): + ts-node-dev@2.0.0(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2): dependencies: chokidar: 3.5.3 dynamic-dedupe: 0.3.0 @@ -21018,7 +23758,7 @@ snapshots: rimraf: 2.7.1 source-map-support: 0.5.21 tree-kill: 1.2.2 - ts-node: 10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2) + ts-node: 10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2) tsconfig: 7.0.0 typescript: 5.4.2 transitivePeerDependencies: @@ -21026,7 +23766,7 @@ snapshots: - '@swc/wasm' - '@types/node' - ts-node-dev@2.0.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2): + ts-node-dev@2.0.0(@swc/core@1.3.93)(@types/node@20.12.6)(typescript@5.2.2): dependencies: chokidar: 3.5.3 dynamic-dedupe: 0.3.0 @@ -21036,7 +23776,7 @@ snapshots: rimraf: 2.7.1 source-map-support: 0.5.21 tree-kill: 1.2.2 - ts-node: 10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2) + ts-node: 10.9.2(@swc/core@1.3.93)(@types/node@20.12.6)(typescript@5.2.2) tsconfig: 7.0.0 typescript: 5.2.2 transitivePeerDependencies: @@ -21044,7 +23784,7 @@ snapshots: - '@swc/wasm' - '@types/node' - ts-node@10.9.1(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.8.10)(typescript@5.2.2): + ts-node@10.9.1(@swc/core@1.3.93)(@types/node@20.8.10)(typescript@5.2.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -21064,7 +23804,47 @@ snapshots: optionalDependencies: '@swc/core': 1.3.93(@swc/helpers@0.5.5) - ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@15.14.9)(typescript@5.2.2): + ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.12.6 + acorn: 8.11.3 + acorn-walk: 8.3.2 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.2.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.3.93(@swc/helpers@0.5.5) + + ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(typescript@5.4.4): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + acorn: 8.11.3 + acorn-walk: 8.3.2 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.4.4 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.3.93(@swc/helpers@0.5.5) + optional: true + + ts-node@10.9.2(@swc/core@1.3.93)(@types/node@15.14.9)(typescript@5.2.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -21084,7 +23864,7 @@ snapshots: optionalDependencies: '@swc/core': 1.3.93(@swc/helpers@0.5.5) - ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.10.4)(typescript@5.3.3): + ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.10.4)(typescript@5.3.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -21104,7 +23884,7 @@ snapshots: optionalDependencies: '@swc/core': 1.3.93(@swc/helpers@0.5.5) - ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2): + ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -21124,7 +23904,7 @@ snapshots: optionalDependencies: '@swc/core': 1.3.93(@swc/helpers@0.5.5) - ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2): + ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.12.6)(typescript@5.2.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -21144,35 +23924,35 @@ snapshots: optionalDependencies: '@swc/core': 1.3.93(@swc/helpers@0.5.5) - ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4): + ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.6.4)(typescript@5.2.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.12.6 + '@types/node': 20.6.4 acorn: 8.11.3 acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.4.4 + typescript: 5.2.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: '@swc/core': 1.3.93(@swc/helpers@0.5.5) optional: true - ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.6.4)(typescript@5.2.2): + ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.8.7)(typescript@5.2.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.6.4 + '@types/node': 20.8.7 acorn: 8.11.3 acorn-walk: 8.3.2 arg: 4.1.3 @@ -21186,25 +23966,23 @@ snapshots: '@swc/core': 1.3.93(@swc/helpers@0.5.5) optional: true - ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.8.7)(typescript@5.2.2): + ts-node@10.9.2(@types/node@17.0.45)(typescript@4.9.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.8.7 + '@types/node': 17.0.45 acorn: 8.11.3 acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.2.2 + typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.3.93(@swc/helpers@0.5.5) optional: true ts-node@9.1.1(typescript@5.2.2): @@ -21299,7 +24077,7 @@ snapshots: tsutils: 2.29.0(typescript@5.2.2) typescript: 5.2.2 - tsup@7.2.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@15.14.9)(typescript@5.2.2))(typescript@5.2.2): + tsup@7.2.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2))(typescript@5.2.2): dependencies: bundle-require: 4.0.2(esbuild@0.18.20) cac: 6.7.14 @@ -21309,7 +24087,7 @@ snapshots: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@15.14.9)(typescript@5.2.2)) + postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2)) resolve-from: 5.0.0 rollup: 3.29.4 source-map: 0.8.0-beta.0 @@ -21323,7 +24101,7 @@ snapshots: - supports-color - ts-node - tsup@7.2.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2))(typescript@5.2.2): + tsup@7.2.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(typescript@5.4.4))(typescript@5.4.4): dependencies: bundle-require: 4.0.2(esbuild@0.18.20) cac: 6.7.14 @@ -21333,7 +24111,31 @@ snapshots: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.2.2)) + postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(typescript@5.4.4)) + resolve-from: 5.0.0 + rollup: 3.29.4 + source-map: 0.8.0-beta.0 + sucrase: 3.34.0 + tree-kill: 1.2.2 + optionalDependencies: + '@swc/core': 1.3.93(@swc/helpers@0.5.5) + postcss: 8.4.38 + typescript: 5.4.4 + transitivePeerDependencies: + - supports-color + - ts-node + + tsup@7.2.0(@swc/core@1.3.93)(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@15.14.9)(typescript@5.2.2))(typescript@5.2.2): + dependencies: + bundle-require: 4.0.2(esbuild@0.18.20) + cac: 6.7.14 + chokidar: 3.5.3 + debug: 4.3.4(supports-color@8.1.1) + esbuild: 0.18.20 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@15.14.9)(typescript@5.2.2)) resolve-from: 5.0.0 rollup: 3.29.4 source-map: 0.8.0-beta.0 @@ -21347,7 +24149,7 @@ snapshots: - supports-color - ts-node - tsup@7.2.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4))(typescript@5.4.4): + tsup@7.2.0(@swc/core@1.3.93)(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.12.6)(typescript@5.2.2))(typescript@5.2.2): dependencies: bundle-require: 4.0.2(esbuild@0.18.20) cac: 6.7.14 @@ -21357,7 +24159,7 @@ snapshots: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.12.6)(typescript@5.4.4)) + postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.12.6)(typescript@5.2.2)) resolve-from: 5.0.0 rollup: 3.29.4 source-map: 0.8.0-beta.0 @@ -21366,12 +24168,12 @@ snapshots: optionalDependencies: '@swc/core': 1.3.93(@swc/helpers@0.5.5) postcss: 8.4.38 - typescript: 5.4.4 + typescript: 5.2.2 transitivePeerDependencies: - supports-color - ts-node - tsup@7.2.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.6.4)(typescript@5.2.2))(typescript@5.2.2): + tsup@7.2.0(@swc/core@1.3.93)(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.6.4)(typescript@5.2.2))(typescript@5.2.2): dependencies: bundle-require: 4.0.2(esbuild@0.18.20) cac: 6.7.14 @@ -21381,7 +24183,7 @@ snapshots: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.6.4)(typescript@5.2.2)) + postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.6.4)(typescript@5.2.2)) resolve-from: 5.0.0 rollup: 3.29.4 source-map: 0.8.0-beta.0 @@ -21395,7 +24197,7 @@ snapshots: - supports-color - ts-node - tsup@7.2.0(@swc/core@1.3.93(@swc/helpers@0.5.5))(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.8.7)(typescript@5.2.2))(typescript@5.2.2): + tsup@7.2.0(@swc/core@1.3.93)(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.8.7)(typescript@5.2.2))(typescript@5.2.2): dependencies: bundle-require: 4.0.2(esbuild@0.18.20) cac: 6.7.14 @@ -21405,7 +24207,7 @@ snapshots: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.8.7)(typescript@5.2.2)) + postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.8.7)(typescript@5.2.2)) resolve-from: 5.0.0 rollup: 3.29.4 source-map: 0.8.0-beta.0 @@ -21419,7 +24221,31 @@ snapshots: - supports-color - ts-node - tsup@8.0.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2))(typescript@5.4.2): + tsup@7.2.0(@swc/core@1.3.93)(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(typescript@5.2.2))(typescript@5.2.2): + dependencies: + bundle-require: 4.0.2(esbuild@0.18.20) + cac: 6.7.14 + chokidar: 3.5.3 + debug: 4.3.4(supports-color@8.1.1) + esbuild: 0.18.20 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(typescript@5.2.2)) + resolve-from: 5.0.0 + rollup: 3.29.4 + source-map: 0.8.0-beta.0 + sucrase: 3.34.0 + tree-kill: 1.2.2 + optionalDependencies: + '@swc/core': 1.3.93(@swc/helpers@0.5.5) + postcss: 8.4.38 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + - ts-node + + tsup@8.0.2(@swc/core@1.3.93)(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2))(typescript@5.4.2): dependencies: bundle-require: 4.0.2(esbuild@0.19.12) cac: 6.7.14 @@ -21429,7 +24255,7 @@ snapshots: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93(@swc/helpers@0.5.5))(@types/node@20.11.28)(typescript@5.4.2)) + postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.3.93)(@types/node@20.11.28)(typescript@5.4.2)) resolve-from: 5.0.0 rollup: 4.13.0 source-map: 0.8.0-beta.0 @@ -21448,6 +24274,11 @@ snapshots: tslib: 1.14.1 typescript: 5.2.2 + tsutils@3.21.0(typescript@4.9.5): + dependencies: + tslib: 1.14.1 + typescript: 4.9.5 + tsutils@3.21.0(typescript@5.4.2): dependencies: tslib: 1.14.1 @@ -21531,9 +24362,9 @@ snapshots: typed-array-buffer@1.0.0: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + is-typed-array: 1.1.13 typed-array-buffer@1.0.2: dependencies: @@ -21543,10 +24374,10 @@ snapshots: typed-array-byte-length@1.0.0: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 + has-proto: 1.0.3 + is-typed-array: 1.1.13 typed-array-byte-length@1.0.1: dependencies: @@ -21558,11 +24389,11 @@ snapshots: typed-array-byte-offset@1.0.0: dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 + has-proto: 1.0.3 + is-typed-array: 1.1.13 typed-array-byte-offset@1.0.2: dependencies: @@ -21575,9 +24406,9 @@ snapshots: typed-array-length@1.0.4: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 typed-array-length@1.0.6: dependencies: @@ -21590,6 +24421,8 @@ snapshots: typescript@3.9.10: {} + typescript@4.9.5: {} + typescript@5.2.2: {} typescript@5.3.3: {} @@ -21658,12 +24491,6 @@ snapshots: untildify@4.0.0: {} - update-browserslist-db@1.0.13(browserslist@4.22.2): - dependencies: - browserslist: 4.22.2 - escalade: 3.1.1 - picocolors: 1.0.0 - update-browserslist-db@1.0.13(browserslist@4.23.0): dependencies: browserslist: 4.23.0 @@ -21696,6 +24523,10 @@ snapshots: urlpattern-polyfill@9.0.0: {} + use-sync-external-store@1.2.0(react@17.0.2): + dependencies: + react: 17.0.2 + util-deprecate@1.0.2: {} util.promisify@1.1.1: @@ -21725,6 +24556,11 @@ snapshots: vali-date@1.0.0: {} + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + value-or-promise@1.0.12: {} vary@1.1.2: {} @@ -21822,9 +24658,24 @@ snapshots: webidl-conversions@7.0.0: {} + webpack-bundle-analyzer@4.3.0: + dependencies: + acorn: 8.11.3 + acorn-walk: 8.3.2 + chalk: 4.1.2 + commander: 6.2.1 + gzip-size: 6.0.0 + lodash: 4.17.21 + opener: 1.5.2 + sirv: 1.0.19 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + webpack-sources@3.2.3: {} - webpack@5.91.0(@swc/core@1.3.93(@swc/helpers@0.5.5)): + webpack@5.91.0: dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -21847,7 +24698,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.3.93(@swc/helpers@0.5.5))(webpack@5.91.0(@swc/core@1.3.93(@swc/helpers@0.5.5))) + terser-webpack-plugin: 5.3.10(webpack@5.91.0) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -21929,8 +24780,8 @@ snapshots: which-typed-array@1.1.13: dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 @@ -21943,6 +24794,10 @@ snapshots: gopd: 1.0.1 has-tostringtag: 1.0.2 + which@1.3.1: + dependencies: + isexe: 2.0.0 + which@2.0.2: dependencies: isexe: 2.0.0 @@ -22019,6 +24874,8 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 + ws@7.5.9: {} + ws@8.14.2: {} ws@8.15.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index a7a0f12b..7544df1b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -3,3 +3,4 @@ packages: - 'packages/**/*' - 'common/**/*' - 'bundestag.io/*' + - 'democracy/*'