From 644ee3378f702c778eb9fb1cd7aec4fc3dd9e94f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aykut=20Sara=C3=A7?= Date: Thu, 19 Feb 2026 23:16:52 +0300 Subject: [PATCH] feat: migrate to turborepo and separate canvas as package (#573) * feat: migrate to turborepo and separate canvas as package * refactor: improve code formatting and linting scripts in react-jsoncrack package * fix: update lint task dependencies and outputs in turbo.json * feat: refactor project structure to use 'jsoncrack' package * feat: rename react-jsoncrack to jsoncrack * feat: add vscode app * feat: enhance spinner and overlay styles for better theming support * feat: update build scripts and fix import path for Turborepo integration * feat: update README files to enhance project documentation and usage instructions * fix: correct lint:fix script and update package manager version * feat: move files to root * feat: update version to 1.0.0 in package.json * feat: add .npm-cache to .gitignore * refactor: rename jsoncrack to jsoncrack-react and update imports - Updated package.json files in apps/vscode and apps/www to replace "jsoncrack" with "jsoncrack-react" and added license information. - Refactored imports in various components and utilities to use "jsoncrack-react" instead of "jsoncrack". - Added ESLint and Prettier configuration files to the jsoncrack package for improved code quality. - Adjusted code formatting across multiple files for consistency and readability. * refactor: jsoncrack-react build with vite * fix: update license in package.json to Apache-2.0 * refactor: remove TOML support from various components and update documentation * chore: rename package folder to jsoncrack-react * fix: update license field in package.json to Apache-2.0 and add LICENSE.md * fix: react peer deps * fix: adjust height of StyledEditorWrapper to 100% for better responsiveness * fix: restore cursor style for jsoncrack-space in GraphView * fix: update npm package link from `jsoncrack` to `jsoncrack-react` in README.md * feat: add .npmrc for engine strictness and update package.json engine requirements --- .github/workflows/deploy.yml | 21 +- .github/workflows/pull-request.yml | 19 +- .gitignore | 57 +- .npmrc | 1 + .vscode/launch.json | 17 + .vscode/tasks.json | 20 + README.md | 68 +- apps/vscode/.env | 1 + apps/vscode/.eslintrc.json | 42 + apps/vscode/.gitignore | 3 + apps/vscode/.prettierignore | 9 + .prettierrc => apps/vscode/.prettierrc | 0 apps/vscode/.vscode/extensions.json | 5 + apps/vscode/.vscode/launch.json | 21 + apps/vscode/.vscode/settings.json | 10 + apps/vscode/.vscode/tasks.json | 21 + apps/vscode/.vscodeignore | 20 + apps/vscode/LICENSE.md | 9 + apps/vscode/README.md | 33 + apps/vscode/assets/icon-dark.svg | 11 + apps/vscode/assets/icon-light.svg | 11 + apps/vscode/assets/jsoncrack.png | Bin 0 -> 67553 bytes apps/vscode/ext-src/extension.ts | 114 + apps/vscode/ext-src/webview.ts | 73 + apps/vscode/package.json | 148 + apps/vscode/public/assets/favicon.ico | Bin 0 -> 9662 bytes apps/vscode/public/index.html | 14 + apps/vscode/scripts/build-non-split.js | 45 + apps/vscode/src/App.tsx | 75 + apps/vscode/src/components/NodeModal.tsx | 63 + apps/vscode/src/global.css | 20 + apps/vscode/src/index.tsx | 10 + apps/vscode/src/react-app-env.d.ts | 7 + apps/vscode/tsconfig.extension.json | 13 + apps/vscode/tsconfig.json | 22 + apps/vscode/webpack.config.js | 48 + .dockerignore => apps/www/.dockerignore | 0 .env => apps/www/.env | 0 .env.development => apps/www/.env.development | 0 .eslintrc.json => apps/www/.eslintrc.json | 0 apps/www/.gitignore | 31 + .prettierignore => apps/www/.prettierignore | 0 apps/www/.prettierrc | 19 + Dockerfile => apps/www/Dockerfile | 0 apps/www/LICENSE.md | 201 + .../www/docker-compose.yml | 0 .../www/eslint.config.mjs | 0 next-env.d.ts => apps/www/next-env.d.ts | 2 +- .../www/next-sitemap.config.js | 0 next.config.js => apps/www/next.config.js | 1 + nginx.conf => apps/www/nginx.conf | 0 apps/www/package.json | 72 + {public => apps/www/public}/.nojekyll | 0 {public => apps/www/public}/CNAME | 0 {public => apps/www/public}/assets/192.png | Bin {public => apps/www/public}/assets/512.png | Bin .../www/public}/assets/bf2-image.png | Bin {public => apps/www/public}/assets/cursor.svg | 0 .../www/public}/assets/diagram-dark.png | Bin .../www/public}/assets/diagram-light.png | Bin .../www/public}/assets/diagram.svg | 0 .../www/public}/assets/editor.webp | Bin .../www/public}/assets/jsoncrack.png | Bin .../www/public}/assets/step1-visual.png | Bin .../www/public}/assets/step2-visual.png | Bin .../www/public}/assets/step3-visual.png | Bin {public => apps/www/public}/assets/td-1.webp | Bin {public => apps/www/public}/assets/td-2.webp | Bin {public => apps/www/public}/assets/td-3.webp | Bin {public => apps/www/public}/assets/td-4.webp | Bin .../www/public}/assets/todiagram_logo.png | Bin {public => apps/www/public}/favicon.ico | Bin {public => apps/www/public}/manifest.json | 0 {public => apps/www/public}/robots.txt | 0 {public => apps/www/public}/sitemap-0.xml | 0 {public => apps/www/public}/sitemap.xml | 0 {shims => apps/www/shims}/empty.ts | 0 .../www/src}/assets/fonts/Mona-Sans.woff2 | Bin .../www/src}/constants/globalStyle.ts | 0 {src => apps/www/src}/constants/graph.ts | 0 {src => apps/www/src}/constants/seo.ts | 0 {src => apps/www/src}/constants/theme.ts | 0 {src => apps/www/src}/data/example.json | 0 {src => apps/www/src}/data/faq.json | 2 +- {src => apps/www/src}/data/privacy.json | 0 {src => apps/www/src}/data/terms.json | 0 {src => apps/www/src}/enums/file.enum.ts | 0 {src => apps/www/src}/enums/viewMode.enum.ts | 0 {src => apps/www/src}/features/Banner.tsx | 0 .../www/src}/features/editor/BottomBar.tsx | 0 .../www/src}/features/editor/ExternalMode.tsx | 0 .../features/editor/FullscreenDropzone.tsx | 10 +- .../www/src}/features/editor/LiveEditor.tsx | 1 - .../www/src}/features/editor/TextEditor.tsx | 9 +- .../src}/features/editor/Toolbar/FileMenu.tsx | 0 .../features/editor/Toolbar/SearchInput.tsx | 0 .../features/editor/Toolbar/ThemeToggle.tsx | 0 .../features/editor/Toolbar/ToolsMenu.tsx | 0 .../src}/features/editor/Toolbar/ViewMenu.tsx | 0 .../src}/features/editor/Toolbar/index.tsx | 0 .../src}/features/editor/Toolbar/styles.ts | 0 .../views/GraphView/CustomEdge/index.tsx | 3 +- .../views/GraphView/CustomNode/ObjectNode.tsx | 2 +- .../views/GraphView/CustomNode/TextNode.tsx | 0 .../GraphView/CustomNode/TextRenderer.tsx | 0 .../views/GraphView/CustomNode/index.tsx | 2 +- .../views/GraphView/CustomNode/styles.tsx | 0 .../editor/views/GraphView/NotSupported.tsx | 0 .../editor/views/GraphView/OptionsMenu.tsx | 2 +- .../editor/views/GraphView/SecureInfo.tsx | 0 .../editor/views/GraphView/ZoomControl.tsx | 0 .../features/editor/views/GraphView/index.tsx | 100 + .../editor/views/GraphView/lib/jsonParser.ts | 2 +- .../GraphView/lib/utils/calculateNodeSize.ts | 0 .../GraphView/lib/utils/getChildrenEdges.ts | 2 +- .../views/GraphView/lib/utils/getOutgoers.ts | 2 +- .../editor/views/GraphView/stores/useGraph.ts | 50 +- .../features/editor/views/TreeView/Label.tsx | 0 .../features/editor/views/TreeView/Value.tsx | 0 .../features/editor/views/TreeView/index.tsx | 0 .../features/modals/DownloadModal/index.tsx | 0 .../features/modals/ImportModal/index.tsx | 8 +- .../src}/features/modals/JPathModal/index.tsx | 0 .../src}/features/modals/JQModal/index.tsx | 0 .../src}/features/modals/ModalController.tsx | 0 .../src}/features/modals/NodeModal/index.tsx | 2 +- .../features/modals/SchemaModal/index.tsx | 0 .../src}/features/modals/TypeModal/index.tsx | 0 .../www/src}/features/modals/index.ts | 0 .../www/src}/features/modals/modalTypes.ts | 0 {src => apps/www/src}/hooks/useFocusNode.ts | 0 {src => apps/www/src}/hooks/useJsonQuery.ts | 0 .../src}/layout/ConverterLayout/PageLinks.tsx | 0 .../src}/layout/ConverterLayout/ToolPage.tsx | 0 .../src}/layout/ConverterLayout/options.ts | 0 .../www/src}/layout/JsonCrackLogo.tsx | 0 {src => apps/www/src}/layout/Landing/FAQ.tsx | 0 .../www/src}/layout/Landing/Features.tsx | 4 +- .../www/src}/layout/Landing/HeroPreview.tsx | 0 .../www/src}/layout/Landing/HeroSection.tsx | 0 .../www/src}/layout/Landing/Section1.tsx | 0 .../www/src}/layout/Landing/Section2.tsx | 0 .../www/src}/layout/Landing/Section3.tsx | 4 +- .../www/src}/layout/PageLayout/Footer.tsx | 0 .../www/src}/layout/PageLayout/Navbar.tsx | 0 .../www/src}/layout/PageLayout/index.tsx | 0 .../www/src}/layout/TypeLayout/PageLinks.tsx | 0 .../src}/layout/TypeLayout/TypegenWrapper.tsx | 4 +- .../www/src}/lib/utils/generateType.ts | 2 +- {src => apps/www/src}/lib/utils/helpers.ts | 0 {src => apps/www/src}/lib/utils/json2go.js | 0 .../www/src}/lib/utils/jsonAdapter.ts | 0 .../www/src}/lib/utils/mantineColorScheme.ts | 0 {src => apps/www/src}/lib/utils/search.ts | 0 {src => apps/www/src}/pages/404.tsx | 0 {src => apps/www/src}/pages/_app.tsx | 1 + {src => apps/www/src}/pages/_document.tsx | 0 {src => apps/www/src}/pages/_error.tsx | 0 .../www/src}/pages/converter/csv-to-json.tsx | 0 .../www/src}/pages/converter/csv-to-xml.tsx | 0 .../www/src}/pages/converter/csv-to-yaml.tsx | 0 .../www/src}/pages/converter/json-to-csv.tsx | 0 .../www/src}/pages/converter/json-to-xml.tsx | 0 .../www/src}/pages/converter/json-to-yaml.tsx | 0 .../www/src}/pages/converter/xml-to-csv.tsx | 0 .../www/src}/pages/converter/xml-to-json.tsx | 0 .../www/src}/pages/converter/xml-to-yaml.tsx | 0 .../www/src}/pages/converter/yaml-to-csv.tsx | 0 .../www/src}/pages/converter/yaml-to-json.tsx | 0 .../www/src}/pages/converter/yaml-to-xml.tsx | 0 {src => apps/www/src}/pages/docs.tsx | 0 {src => apps/www/src}/pages/editor.tsx | 0 {src => apps/www/src}/pages/index.tsx | 0 {src => apps/www/src}/pages/legal/privacy.tsx | 0 {src => apps/www/src}/pages/legal/terms.tsx | 0 .../www/src}/pages/tools/json-schema.tsx | 0 .../www/src}/pages/type/csv-to-go.tsx | 0 .../www/src}/pages/type/csv-to-kotlin.tsx | 0 .../www/src}/pages/type/csv-to-rust.tsx | 0 .../www/src}/pages/type/csv-to-typescript.tsx | 0 .../www/src}/pages/type/json-to-go.tsx | 0 .../www/src}/pages/type/json-to-kotlin.tsx | 0 .../www/src}/pages/type/json-to-rust.tsx | 0 .../src}/pages/type/json-to-typescript.tsx | 0 .../www/src}/pages/type/xml-to-go.tsx | 0 .../www/src}/pages/type/xml-to-kotlin.tsx | 0 .../www/src}/pages/type/xml-to-rust.tsx | 0 .../www/src}/pages/type/xml-to-typescript.tsx | 0 .../www/src}/pages/type/yaml-to-go.tsx | 0 .../www/src}/pages/type/yaml-to-kotlin.tsx | 0 .../www/src}/pages/type/yaml-to-rust.tsx | 0 .../src}/pages/type/yaml-to-typescript.tsx | 0 {src => apps/www/src}/pages/widget.tsx | 9 +- {src => apps/www/src}/store/useConfig.ts | 6 +- {src => apps/www/src}/store/useFile.ts | 3 - {src => apps/www/src}/store/useJson.ts | 3 - {src => apps/www/src}/store/useModal.ts | 0 {src => apps/www/src}/types/styled.d.ts | 0 tsconfig.json => apps/www/tsconfig.json | 0 package.json | 95 +- packages/jsoncrack-react/.gitignore | 5 + packages/jsoncrack-react/.prettierrc | 14 + packages/jsoncrack-react/LICENSE.md | 201 + packages/jsoncrack-react/README.md | 148 + packages/jsoncrack-react/eslint.config.mjs | 64 + packages/jsoncrack-react/package.json | 69 + .../jsoncrack-react/src/JsonCrack.module.css | 86 + packages/jsoncrack-react/src/JsonCrack.tsx | 396 + .../src/components/Controls.module.css | 30 + .../src/components/Controls.tsx | 32 + .../src/components/CustomEdge.tsx | 67 + .../src/components/CustomNode.tsx | 58 + .../src/components/Node.module.css | 72 + .../src/components/ObjectNode.tsx | 109 + .../src/components/TextNode.tsx | 73 + .../src/components/TextRenderer.module.css | 20 + .../src/components/TextRenderer.tsx | 55 + .../src/components/nodeStyles.ts | 13 + packages/jsoncrack-react/src/css-modules.d.ts | 4 + packages/jsoncrack-react/src/index.ts | 12 + packages/jsoncrack-react/src/parser.ts | 236 + packages/jsoncrack-react/src/theme.ts | 71 + .../jsoncrack-react/src/types.ts | 11 +- .../src/utils/calculateNodeSize.ts | 98 + packages/jsoncrack-react/tsconfig.build.json | 19 + packages/jsoncrack-react/tsconfig.json | 8 + packages/jsoncrack-react/vite.config.ts | 27 + pnpm-lock.yaml | 11741 +++++++++++++++- pnpm-workspace.yaml | 3 + src/features/editor/views/GraphView/index.tsx | 198 - turbo.json | 36 + 231 files changed, 15004 insertions(+), 677 deletions(-) create mode 100644 .npmrc create mode 100644 .vscode/launch.json create mode 100644 .vscode/tasks.json create mode 100644 apps/vscode/.env create mode 100644 apps/vscode/.eslintrc.json create mode 100644 apps/vscode/.gitignore create mode 100644 apps/vscode/.prettierignore rename .prettierrc => apps/vscode/.prettierrc (100%) create mode 100644 apps/vscode/.vscode/extensions.json create mode 100644 apps/vscode/.vscode/launch.json create mode 100644 apps/vscode/.vscode/settings.json create mode 100644 apps/vscode/.vscode/tasks.json create mode 100644 apps/vscode/.vscodeignore create mode 100644 apps/vscode/LICENSE.md create mode 100644 apps/vscode/README.md create mode 100644 apps/vscode/assets/icon-dark.svg create mode 100644 apps/vscode/assets/icon-light.svg create mode 100644 apps/vscode/assets/jsoncrack.png create mode 100644 apps/vscode/ext-src/extension.ts create mode 100644 apps/vscode/ext-src/webview.ts create mode 100644 apps/vscode/package.json create mode 100644 apps/vscode/public/assets/favicon.ico create mode 100644 apps/vscode/public/index.html create mode 100755 apps/vscode/scripts/build-non-split.js create mode 100644 apps/vscode/src/App.tsx create mode 100644 apps/vscode/src/components/NodeModal.tsx create mode 100644 apps/vscode/src/global.css create mode 100644 apps/vscode/src/index.tsx create mode 100644 apps/vscode/src/react-app-env.d.ts create mode 100644 apps/vscode/tsconfig.extension.json create mode 100644 apps/vscode/tsconfig.json create mode 100644 apps/vscode/webpack.config.js rename .dockerignore => apps/www/.dockerignore (100%) rename .env => apps/www/.env (100%) rename .env.development => apps/www/.env.development (100%) rename .eslintrc.json => apps/www/.eslintrc.json (100%) create mode 100644 apps/www/.gitignore rename .prettierignore => apps/www/.prettierignore (100%) create mode 100644 apps/www/.prettierrc rename Dockerfile => apps/www/Dockerfile (100%) create mode 100644 apps/www/LICENSE.md rename docker-compose.yml => apps/www/docker-compose.yml (100%) rename eslint.config.mjs => apps/www/eslint.config.mjs (100%) rename next-env.d.ts => apps/www/next-env.d.ts (84%) rename next-sitemap.config.js => apps/www/next-sitemap.config.js (100%) rename next.config.js => apps/www/next.config.js (96%) rename nginx.conf => apps/www/nginx.conf (100%) create mode 100644 apps/www/package.json rename {public => apps/www/public}/.nojekyll (100%) rename {public => apps/www/public}/CNAME (100%) rename {public => apps/www/public}/assets/192.png (100%) rename {public => apps/www/public}/assets/512.png (100%) rename {public => apps/www/public}/assets/bf2-image.png (100%) rename {public => apps/www/public}/assets/cursor.svg (100%) rename {public => apps/www/public}/assets/diagram-dark.png (100%) rename {public => apps/www/public}/assets/diagram-light.png (100%) rename {public => apps/www/public}/assets/diagram.svg (100%) rename {public => apps/www/public}/assets/editor.webp (100%) rename {public => apps/www/public}/assets/jsoncrack.png (100%) rename {public => apps/www/public}/assets/step1-visual.png (100%) rename {public => apps/www/public}/assets/step2-visual.png (100%) rename {public => apps/www/public}/assets/step3-visual.png (100%) rename {public => apps/www/public}/assets/td-1.webp (100%) rename {public => apps/www/public}/assets/td-2.webp (100%) rename {public => apps/www/public}/assets/td-3.webp (100%) rename {public => apps/www/public}/assets/td-4.webp (100%) rename {public => apps/www/public}/assets/todiagram_logo.png (100%) rename {public => apps/www/public}/favicon.ico (100%) rename {public => apps/www/public}/manifest.json (100%) rename {public => apps/www/public}/robots.txt (100%) rename {public => apps/www/public}/sitemap-0.xml (100%) rename {public => apps/www/public}/sitemap.xml (100%) rename {shims => apps/www/shims}/empty.ts (100%) rename {src => apps/www/src}/assets/fonts/Mona-Sans.woff2 (100%) rename {src => apps/www/src}/constants/globalStyle.ts (100%) rename {src => apps/www/src}/constants/graph.ts (100%) rename {src => apps/www/src}/constants/seo.ts (100%) rename {src => apps/www/src}/constants/theme.ts (100%) rename {src => apps/www/src}/data/example.json (100%) rename {src => apps/www/src}/data/faq.json (98%) rename {src => apps/www/src}/data/privacy.json (100%) rename {src => apps/www/src}/data/terms.json (100%) rename {src => apps/www/src}/enums/file.enum.ts (100%) rename {src => apps/www/src}/enums/viewMode.enum.ts (100%) rename {src => apps/www/src}/features/Banner.tsx (100%) rename {src => apps/www/src}/features/editor/BottomBar.tsx (100%) rename {src => apps/www/src}/features/editor/ExternalMode.tsx (100%) rename {src => apps/www/src}/features/editor/FullscreenDropzone.tsx (89%) rename {src => apps/www/src}/features/editor/LiveEditor.tsx (96%) rename {src => apps/www/src}/features/editor/TextEditor.tsx (91%) rename {src => apps/www/src}/features/editor/Toolbar/FileMenu.tsx (100%) rename {src => apps/www/src}/features/editor/Toolbar/SearchInput.tsx (100%) rename {src => apps/www/src}/features/editor/Toolbar/ThemeToggle.tsx (100%) rename {src => apps/www/src}/features/editor/Toolbar/ToolsMenu.tsx (100%) rename {src => apps/www/src}/features/editor/Toolbar/ViewMenu.tsx (100%) rename {src => apps/www/src}/features/editor/Toolbar/index.tsx (100%) rename {src => apps/www/src}/features/editor/Toolbar/styles.ts (100%) rename {src => apps/www/src}/features/editor/views/GraphView/CustomEdge/index.tsx (89%) rename {src => apps/www/src}/features/editor/views/GraphView/CustomNode/ObjectNode.tsx (96%) rename {src => apps/www/src}/features/editor/views/GraphView/CustomNode/TextNode.tsx (100%) rename {src => apps/www/src}/features/editor/views/GraphView/CustomNode/TextRenderer.tsx (100%) rename {src => apps/www/src}/features/editor/views/GraphView/CustomNode/index.tsx (96%) rename {src => apps/www/src}/features/editor/views/GraphView/CustomNode/styles.tsx (100%) rename {src => apps/www/src}/features/editor/views/GraphView/NotSupported.tsx (100%) rename {src => apps/www/src}/features/editor/views/GraphView/OptionsMenu.tsx (98%) rename {src => apps/www/src}/features/editor/views/GraphView/SecureInfo.tsx (100%) rename {src => apps/www/src}/features/editor/views/GraphView/ZoomControl.tsx (100%) create mode 100644 apps/www/src/features/editor/views/GraphView/index.tsx rename {src => apps/www/src}/features/editor/views/GraphView/lib/jsonParser.ts (98%) rename {src => apps/www/src}/features/editor/views/GraphView/lib/utils/calculateNodeSize.ts (100%) rename {src => apps/www/src}/features/editor/views/GraphView/lib/utils/getChildrenEdges.ts (77%) rename {src => apps/www/src}/features/editor/views/GraphView/lib/utils/getOutgoers.ts (92%) rename {src => apps/www/src}/features/editor/views/GraphView/stores/useGraph.ts (55%) rename {src => apps/www/src}/features/editor/views/TreeView/Label.tsx (100%) rename {src => apps/www/src}/features/editor/views/TreeView/Value.tsx (100%) rename {src => apps/www/src}/features/editor/views/TreeView/index.tsx (100%) rename {src => apps/www/src}/features/modals/DownloadModal/index.tsx (100%) rename {src => apps/www/src}/features/modals/ImportModal/index.tsx (93%) rename {src => apps/www/src}/features/modals/JPathModal/index.tsx (100%) rename {src => apps/www/src}/features/modals/JQModal/index.tsx (100%) rename {src => apps/www/src}/features/modals/ModalController.tsx (100%) rename {src => apps/www/src}/features/modals/NodeModal/index.tsx (97%) rename {src => apps/www/src}/features/modals/SchemaModal/index.tsx (100%) rename {src => apps/www/src}/features/modals/TypeModal/index.tsx (100%) rename {src => apps/www/src}/features/modals/index.ts (100%) rename {src => apps/www/src}/features/modals/modalTypes.ts (100%) rename {src => apps/www/src}/hooks/useFocusNode.ts (100%) rename {src => apps/www/src}/hooks/useJsonQuery.ts (100%) rename {src => apps/www/src}/layout/ConverterLayout/PageLinks.tsx (100%) rename {src => apps/www/src}/layout/ConverterLayout/ToolPage.tsx (100%) rename {src => apps/www/src}/layout/ConverterLayout/options.ts (100%) rename {src => apps/www/src}/layout/JsonCrackLogo.tsx (100%) rename {src => apps/www/src}/layout/Landing/FAQ.tsx (100%) rename {src => apps/www/src}/layout/Landing/Features.tsx (97%) rename {src => apps/www/src}/layout/Landing/HeroPreview.tsx (100%) rename {src => apps/www/src}/layout/Landing/HeroSection.tsx (100%) rename {src => apps/www/src}/layout/Landing/Section1.tsx (100%) rename {src => apps/www/src}/layout/Landing/Section2.tsx (100%) rename {src => apps/www/src}/layout/Landing/Section3.tsx (95%) rename {src => apps/www/src}/layout/PageLayout/Footer.tsx (100%) rename {src => apps/www/src}/layout/PageLayout/Navbar.tsx (100%) rename {src => apps/www/src}/layout/PageLayout/index.tsx (100%) rename {src => apps/www/src}/layout/TypeLayout/PageLinks.tsx (100%) rename {src => apps/www/src}/layout/TypeLayout/TypegenWrapper.tsx (96%) rename {src => apps/www/src}/lib/utils/generateType.ts (91%) rename {src => apps/www/src}/lib/utils/helpers.ts (100%) rename {src => apps/www/src}/lib/utils/json2go.js (100%) rename {src => apps/www/src}/lib/utils/jsonAdapter.ts (100%) rename {src => apps/www/src}/lib/utils/mantineColorScheme.ts (100%) rename {src => apps/www/src}/lib/utils/search.ts (100%) rename {src => apps/www/src}/pages/404.tsx (100%) rename {src => apps/www/src}/pages/_app.tsx (99%) rename {src => apps/www/src}/pages/_document.tsx (100%) rename {src => apps/www/src}/pages/_error.tsx (100%) rename {src => apps/www/src}/pages/converter/csv-to-json.tsx (100%) rename {src => apps/www/src}/pages/converter/csv-to-xml.tsx (100%) rename {src => apps/www/src}/pages/converter/csv-to-yaml.tsx (100%) rename {src => apps/www/src}/pages/converter/json-to-csv.tsx (100%) rename {src => apps/www/src}/pages/converter/json-to-xml.tsx (100%) rename {src => apps/www/src}/pages/converter/json-to-yaml.tsx (100%) rename {src => apps/www/src}/pages/converter/xml-to-csv.tsx (100%) rename {src => apps/www/src}/pages/converter/xml-to-json.tsx (100%) rename {src => apps/www/src}/pages/converter/xml-to-yaml.tsx (100%) rename {src => apps/www/src}/pages/converter/yaml-to-csv.tsx (100%) rename {src => apps/www/src}/pages/converter/yaml-to-json.tsx (100%) rename {src => apps/www/src}/pages/converter/yaml-to-xml.tsx (100%) rename {src => apps/www/src}/pages/docs.tsx (100%) rename {src => apps/www/src}/pages/editor.tsx (100%) rename {src => apps/www/src}/pages/index.tsx (100%) rename {src => apps/www/src}/pages/legal/privacy.tsx (100%) rename {src => apps/www/src}/pages/legal/terms.tsx (100%) rename {src => apps/www/src}/pages/tools/json-schema.tsx (100%) rename {src => apps/www/src}/pages/type/csv-to-go.tsx (100%) rename {src => apps/www/src}/pages/type/csv-to-kotlin.tsx (100%) rename {src => apps/www/src}/pages/type/csv-to-rust.tsx (100%) rename {src => apps/www/src}/pages/type/csv-to-typescript.tsx (100%) rename {src => apps/www/src}/pages/type/json-to-go.tsx (100%) rename {src => apps/www/src}/pages/type/json-to-kotlin.tsx (100%) rename {src => apps/www/src}/pages/type/json-to-rust.tsx (100%) rename {src => apps/www/src}/pages/type/json-to-typescript.tsx (100%) rename {src => apps/www/src}/pages/type/xml-to-go.tsx (100%) rename {src => apps/www/src}/pages/type/xml-to-kotlin.tsx (100%) rename {src => apps/www/src}/pages/type/xml-to-rust.tsx (100%) rename {src => apps/www/src}/pages/type/xml-to-typescript.tsx (100%) rename {src => apps/www/src}/pages/type/yaml-to-go.tsx (100%) rename {src => apps/www/src}/pages/type/yaml-to-kotlin.tsx (100%) rename {src => apps/www/src}/pages/type/yaml-to-rust.tsx (100%) rename {src => apps/www/src}/pages/type/yaml-to-typescript.tsx (100%) rename {src => apps/www/src}/pages/widget.tsx (90%) rename {src => apps/www/src}/store/useConfig.ts (82%) rename {src => apps/www/src}/store/useFile.ts (96%) rename {src => apps/www/src}/store/useJson.ts (77%) rename {src => apps/www/src}/store/useModal.ts (100%) rename {src => apps/www/src}/types/styled.d.ts (100%) rename tsconfig.json => apps/www/tsconfig.json (100%) create mode 100644 packages/jsoncrack-react/.gitignore create mode 100644 packages/jsoncrack-react/.prettierrc create mode 100644 packages/jsoncrack-react/LICENSE.md create mode 100644 packages/jsoncrack-react/README.md create mode 100644 packages/jsoncrack-react/eslint.config.mjs create mode 100644 packages/jsoncrack-react/package.json create mode 100644 packages/jsoncrack-react/src/JsonCrack.module.css create mode 100644 packages/jsoncrack-react/src/JsonCrack.tsx create mode 100644 packages/jsoncrack-react/src/components/Controls.module.css create mode 100644 packages/jsoncrack-react/src/components/Controls.tsx create mode 100644 packages/jsoncrack-react/src/components/CustomEdge.tsx create mode 100644 packages/jsoncrack-react/src/components/CustomNode.tsx create mode 100644 packages/jsoncrack-react/src/components/Node.module.css create mode 100644 packages/jsoncrack-react/src/components/ObjectNode.tsx create mode 100644 packages/jsoncrack-react/src/components/TextNode.tsx create mode 100644 packages/jsoncrack-react/src/components/TextRenderer.module.css create mode 100644 packages/jsoncrack-react/src/components/TextRenderer.tsx create mode 100644 packages/jsoncrack-react/src/components/nodeStyles.ts create mode 100644 packages/jsoncrack-react/src/css-modules.d.ts create mode 100644 packages/jsoncrack-react/src/index.ts create mode 100644 packages/jsoncrack-react/src/parser.ts create mode 100644 packages/jsoncrack-react/src/theme.ts rename src/types/graph.ts => packages/jsoncrack-react/src/types.ts (68%) create mode 100644 packages/jsoncrack-react/src/utils/calculateNodeSize.ts create mode 100644 packages/jsoncrack-react/tsconfig.build.json create mode 100644 packages/jsoncrack-react/tsconfig.json create mode 100644 packages/jsoncrack-react/vite.config.ts create mode 100644 pnpm-workspace.yaml delete mode 100644 src/features/editor/views/GraphView/index.tsx create mode 100644 turbo.json diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 58183386..5bf915d8 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -32,7 +32,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 10.10.0 + version: 10.20.0 run_install: false - name: Get pnpm store directory @@ -48,20 +48,21 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-store- - - name: Restore cache + - name: Restore Turbo and Next.js cache uses: actions/cache@v5 with: path: | - .next/cache - key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/pnpm-lock.yaml') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }} + .turbo + apps/www/.next/cache + key: ${{ runner.os }}-turbo-next-${{ hashFiles('pnpm-lock.yaml', 'turbo.json') }}-${{ hashFiles('apps/www/**.[jt]s', 'apps/www/**.[jt]sx', 'packages/**.[jt]s', 'packages/**.[jt]sx') }} restore-keys: | - ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/pnpm-lock.yaml') }}- + ${{ runner.os }}-turbo-next-${{ hashFiles('pnpm-lock.yaml', 'turbo.json') }}- - name: Install dependencies - run: pnpm install + run: pnpm install --frozen-lockfile - - name: Build with Next.js - run: pnpm next build + - name: Build with Turborepo + run: pnpm run build:www env: NEXT_PUBLIC_GA_MEASUREMENT_ID: ${{ vars.NEXT_PUBLIC_GA_MEASUREMENT_ID }} @@ -69,12 +70,12 @@ jobs: uses: actions/upload-artifact@v6 with: name: build-files - path: ./out/_next/static/chunks + path: ./apps/www/out/_next/static/chunks - name: Upload artifact uses: actions/upload-pages-artifact@v4 with: - path: './out' + path: './apps/www/out' # Deployment job deploy: diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 10c85f8c..b6154962 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -20,7 +20,7 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 10.10.0 + version: 10.20.0 run_install: false - name: Get pnpm store directory @@ -36,22 +36,23 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-store- - - name: Restore Next.js cache - uses: actions/cache@v4 + - name: Restore Turbo and Next.js cache + uses: actions/cache@v5 with: path: | - .next/cache - key: ${{ runner.os }}-nextjs-${{ hashFiles('**/pnpm-lock.yaml') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }} + .turbo + apps/www/.next/cache + key: ${{ runner.os }}-turbo-next-${{ hashFiles('pnpm-lock.yaml', 'turbo.json') }}-${{ hashFiles('apps/www/**.[jt]s', 'apps/www/**.[jt]sx', 'packages/**.[jt]s', 'packages/**.[jt]sx') }} restore-keys: | - ${{ runner.os }}-nextjs-${{ hashFiles('**/pnpm-lock.yaml') }}- + ${{ runner.os }}-turbo-next-${{ hashFiles('pnpm-lock.yaml', 'turbo.json') }}- - name: Install dependencies - run: pnpm install + run: pnpm install --frozen-lockfile - name: Lint - run: pnpm run lint + run: pnpm turbo run lint - name: Build - run: pnpm run build + run: pnpm turbo run build diff --git a/.gitignore b/.gitignore index 916edc22..67d7702a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,41 +1,26 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. +# Agent tooling +.agents +.claude +.codex -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build - -# misc -.DS_Store -*.pem - -# debug +# Package manager +node_modules/ +.npm-cache/ +.pnpm-store/ +.pnp* npm-debug.log* +pnpm-debug.log* +yarn-debug.log* +yarn-error.log* -# local env files -.env.local -.env.development.local -.env.test.local -.env.production.local +# Turborepo +.turbo/ -# vercel -.vercel - -# typescript -*.tsbuildinfo - -# PWA workers -**/public/workbox-*.js -**/public/sw.js -**/public/fallback-*.js +# Build outputs and caches (all workspaces) +**/.next/ +**/out/ +**/coverage/ +**/*.tsbuildinfo +# OS +.DS_Store diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..b6f27f13 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..2d72b5b6 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,17 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Run VSCode Extension (apps/vscode)", + "type": "extensionHost", + "request": "launch", + "args": [ + "--extensionDevelopmentPath=${workspaceFolder}/apps/vscode" + ], + "outFiles": [ + "${workspaceFolder}/apps/vscode/build/**/*.js" + ], + "preLaunchTask": "build vscode extension" + } + ] +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 00000000..476d5243 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,20 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build vscode extension", + "type": "shell", + "command": "pnpm run build:vscode", + "group": { + "kind": "build", + "isDefault": true + } + }, + { + "label": "watch vscode extension", + "type": "shell", + "command": "pnpm run dev:vscode", + "isBackground": true + } + ] +} diff --git a/README.md b/README.md index e1a7f01e..35ae6abf 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@

- Logo + Logo

JSON Crack

@@ -28,13 +28,13 @@ ## About the Project -booking-screen +booking-screen ## Visualize JSON into interactive graphs JSON Crack is a tool for visualizing JSON data in a structured, interactive graphs, making it easier to explore, format, and validate JSON. It offers features like converting JSON to other formats (CSV, YAML), generating JSON Schema, executing queries, and exporting visualizations as images. Designed for both readability and usability. -* **Visualizer**: Instantly convert JSON, YAML, CSV, XML, and TOML into interactive graphs or trees in dark or light mode. +* **Visualizer**: Instantly convert JSON, YAML, CSV, and XML into interactive graphs or trees in dark or light mode. * **Convert**: Seamlessly transform data formats, like JSON to CSV or XML to JSON, for easy sharing. * **Format & Validate**: Beautify and validate JSON, YAML, and CSV for clear and accurate data. * **Code Generation**: Generate TypeScript interfaces, Golang structs, and JSON Schema. @@ -55,12 +55,19 @@ JSON Crack is a tool for visualizing JSON data in a structured, interactive grap JSON Crack | Product Hunt -### Built With +## Integrations -- [Next.js](https://nextjs.org/?ref=jsoncrack.com) -- [React.js](https://reactjs.org/?ref=jsoncrack.com) -- [Reaflow](https://reaflow.dev/?ref=jsoncrack.com) -- [Monaco Editor](https://github.com/suren-atoyan/monaco-react) +- [VS Code Extension](https://marketplace.visualstudio.com/items?itemName=AykutSarac.jsoncrack-vscode) +- [npm Package (`jsoncrack-react`)](https://www.npmjs.com/package/jsoncrack-react) + +## Contributing + +- Found a bug or missing feature? Open an issue on [GitHub Issues](https://github.com/AykutSarac/jsoncrack.com/issues). +- Want to contribute code or docs? Start with our [contribution guide](./CONTRIBUTING.md). + +## Sponsors & Support + +If you find JSON Crack useful, you can support the project by using [ToDiagram](https://todiagram.com). ## Stay Up-to-Date @@ -78,8 +85,8 @@ To get a local copy up and running, please follow these simple steps. Here is what you need to be able to run JSON Crack. -- Node.js (Version: >=18.x) -- Pnpm _(recommended)_ +- Node.js (Version: >=24.x) +- pnpm (Version: >=10) ## Development @@ -104,20 +111,53 @@ Here is what you need to be able to run JSON Crack. pnpm install ``` -4. Run the project +4. Run the web app ```sh - pnpm dev + pnpm dev:www # Running on http://localhost:3000/ ``` +### Useful Commands + +From repository root: + +```sh +# Web app +pnpm dev:www +pnpm build:www + +# VS Code extension +pnpm dev:vscode +pnpm build:vscode +pnpm lint:vscode +pnpm lint:fix:vscode + +# All workspaces +pnpm dev +pnpm build +pnpm lint +``` + +`pnpm build:www` is the production build command used in GitHub Actions deployment. + +### Debug VS Code Extension + +1. Open repository root in VS Code. +2. Press `F5`. +3. Select `Run VSCode Extension (apps/vscode)` when prompted. +4. In the Extension Development Host window, open a `.json` file and run: + `JSON Crack: Enable JSON Crack visualization`. + ### Docker -🐳 A [`Dockerfile`](Dockerfile) is provided in the root of the repository. +🐳 Docker assets are in `apps/www`. If you want to run JSON Crack locally: ```console +cd apps/www + # Build a Docker image with: docker compose build @@ -129,7 +169,7 @@ docker compose up ## Configuration -The supported node limit can be changed by editing the `NEXT_PUBLIC_NODE_LIMIT` value in the `.env` file at the project root. +The supported node limit can be changed by editing `NEXT_PUBLIC_NODE_LIMIT` in `apps/www/.env`. diff --git a/apps/vscode/.env b/apps/vscode/.env new file mode 100644 index 00000000..ed7b099e --- /dev/null +++ b/apps/vscode/.env @@ -0,0 +1 @@ +PUBLIC_URL=./ \ No newline at end of file diff --git a/apps/vscode/.eslintrc.json b/apps/vscode/.eslintrc.json new file mode 100644 index 00000000..155ef38a --- /dev/null +++ b/apps/vscode/.eslintrc.json @@ -0,0 +1,42 @@ +{ + "root": true, + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 6, + "sourceType": "module" + }, + "plugins": ["@typescript-eslint", + "unused-imports", + "prettier" +], + "extends": [ + "eslint:recommended", + "prettier", + "plugin:@typescript-eslint/recommended" + ], + + "rules": { + "@typescript-eslint/consistent-type-imports": "error", + "unused-imports/no-unused-imports": "error", + "@typescript-eslint/no-explicit-any": "off", + "prettier/prettier": "error", + "space-in-parens": "error", + "no-empty": "error", + "no-multiple-empty-lines": "error", + "no-irregular-whitespace": "error", + "strict": ["error", "never"], + "linebreak-style": ["error", "unix"], + "quotes": ["error", "double", { "avoidEscape": true }], + "semi": ["error", "always"], + "prefer-const": "error", + "space-before-function-paren": [ + "error", + { + "anonymous": "always", + "named": "never", + "asyncArrow": "always" + } + ] + }, + "ignorePatterns": ["build", "public", "scripts", "node_modules", "webpack.config.js"] +} diff --git a/apps/vscode/.gitignore b/apps/vscode/.gitignore new file mode 100644 index 00000000..b9b6195c --- /dev/null +++ b/apps/vscode/.gitignore @@ -0,0 +1,3 @@ +node_modules/ +build/ +*.vsix \ No newline at end of file diff --git a/apps/vscode/.prettierignore b/apps/vscode/.prettierignore new file mode 100644 index 00000000..e6dc4992 --- /dev/null +++ b/apps/vscode/.prettierignore @@ -0,0 +1,9 @@ +.github +.next +node_modules/ +out +public +*-lock.json +tsconfig.json +build +jsoncrack \ No newline at end of file diff --git a/.prettierrc b/apps/vscode/.prettierrc similarity index 100% rename from .prettierrc rename to apps/vscode/.prettierrc diff --git a/apps/vscode/.vscode/extensions.json b/apps/vscode/.vscode/extensions.json new file mode 100644 index 00000000..57dbdae4 --- /dev/null +++ b/apps/vscode/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + // See http://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": ["dbaeumer.vscode-eslint", "amodio.tsl-problem-matcher"] +} diff --git a/apps/vscode/.vscode/launch.json b/apps/vscode/.vscode/launch.json new file mode 100644 index 00000000..c9425c9d --- /dev/null +++ b/apps/vscode/.vscode/launch.json @@ -0,0 +1,21 @@ +// A launch configuration that compiles the extension and then opens it inside a new window +// 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": [ + { + "name": "Run Extension", + "type": "extensionHost", + "request": "launch", + "args": [ + "--extensionDevelopmentPath=${workspaceFolder}" + ], + "outFiles": [ + "${workspaceFolder}/build/**/*.js" + ], + "preLaunchTask": "build extension" + } + ] +} diff --git a/apps/vscode/.vscode/settings.json b/apps/vscode/.vscode/settings.json new file mode 100644 index 00000000..321ef01b --- /dev/null +++ b/apps/vscode/.vscode/settings.json @@ -0,0 +1,10 @@ +// Place your settings in this file to overwrite default and user settings. +{ + "files.exclude": { + "build": false + }, + "search.exclude": { + "build": true + }, + "typescript.tsc.autoDetect": "off" +} diff --git a/apps/vscode/.vscode/tasks.json b/apps/vscode/.vscode/tasks.json new file mode 100644 index 00000000..0c5789de --- /dev/null +++ b/apps/vscode/.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": "build extension", + "type": "shell", + "command": "pnpm run build", + "group": { + "kind": "build", + "isDefault": true + } + }, + { + "label": "watch extension", + "type": "shell", + "command": "pnpm run watch" + } + ] +} diff --git a/apps/vscode/.vscodeignore b/apps/vscode/.vscodeignore new file mode 100644 index 00000000..a5951143 --- /dev/null +++ b/apps/vscode/.vscodeignore @@ -0,0 +1,20 @@ +.vscode/** +.vscode-test/** +.github/** +.turbo/** +node_modules/** +scripts/** +src/** +.gitignore +.env +.prettierignore +.prettierrc +.pnpm-lock.yaml +webpack.config.js +tsconfig.extension.json +vsc-extension-quickstart.md +yarn.lock +**/tsconfig.json +**/.eslintrc.json +**/*.map +**/*.ts diff --git a/apps/vscode/LICENSE.md b/apps/vscode/LICENSE.md new file mode 100644 index 00000000..e6a7cd2e --- /dev/null +++ b/apps/vscode/LICENSE.md @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) 2025 Aykut Saraç + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/apps/vscode/README.md b/apps/vscode/README.md new file mode 100644 index 00000000..e8ad94fe --- /dev/null +++ b/apps/vscode/README.md @@ -0,0 +1,33 @@ + JSON Crack + +
+ +[JSON Crack](https://jsoncrack.com?utm_source=jsoncrack-vscode&utm_medium=readme)'s Official Visual Studio Code Extension that visualizes JSON data as an interactive diagram. The extension parses the open JSON file and displays its structure as a connected graph where nodes represent objects, arrays, and values. + +## How to use? + +1. Install the JSON Crack extension from the [VS Code marketplace](https://marketplace.visualstudio.com/items?itemName=AykutSarac.jsoncrack-vscode). +2. Open a JSON file. +3. Click on the JSON Crack icon in the menubar at top right. + +image + +## Privacy + +The extension works **fully offline**. No data is sent to any server. All JSON parsing and visualization happens locally in your editor. + +## Debugging + +This extension lives in `apps/vscode` inside the [jsoncrack.com](https://github.com/AykutSarac/jsoncrack.com) monorepo. + +**Prerequisites:** Node.js `>=24`, pnpm `>=10` + +```sh +# Install dependencies from repo root +pnpm install + +# Watch mode — rebuilds on every change +pnpm dev:vscode +``` + +Then press **F5** in VS Code to launch the Extension Development Host. Keep the watch process running for live iteration. diff --git a/apps/vscode/assets/icon-dark.svg b/apps/vscode/assets/icon-dark.svg new file mode 100644 index 00000000..2fe59c27 --- /dev/null +++ b/apps/vscode/assets/icon-dark.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/apps/vscode/assets/icon-light.svg b/apps/vscode/assets/icon-light.svg new file mode 100644 index 00000000..91d4cca1 --- /dev/null +++ b/apps/vscode/assets/icon-light.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/apps/vscode/assets/jsoncrack.png b/apps/vscode/assets/jsoncrack.png new file mode 100644 index 0000000000000000000000000000000000000000..71334fca6efc8da8005062d291447d46ca805b26 GIT binary patch literal 67553 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 LGhnO7Q0S4BhvbH5Ms2F7kMF8Lzj2yg>B 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 Jay9#~{{|QT5{&== literal 0 HcmV?d00001 diff --git a/apps/vscode/ext-src/extension.ts b/apps/vscode/ext-src/extension.ts new file mode 100644 index 00000000..09f10987 --- /dev/null +++ b/apps/vscode/ext-src/extension.ts @@ -0,0 +1,114 @@ +import * as path from "path"; +import * as vscode from "vscode"; +import { createWebviewPanel } from "./webview"; + +function getPanelTitle(document?: vscode.TextDocument) { + if (!document) return "JSON Crack"; + + const fileName = path.basename(document.fileName); + return fileName || "JSON Crack"; +} + +export function activate(context: vscode.ExtensionContext) { + context.subscriptions.push( + vscode.commands.registerCommand("jsoncrack-vscode.start", () => + createWebviewForActiveEditor(context) + ), + vscode.commands.registerCommand("jsoncrack-vscode.start.specific", (content?: string) => + createWebviewForContent(context, content) + ), + vscode.commands.registerCommand("jsoncrack-vscode.start.selected", () => + createWebviewForSelectedText(context) + ) + ); +} + +// create webview for selected text +async function createWebviewForSelectedText(context: vscode.ExtensionContext) { + const editor = vscode.window.activeTextEditor; + + if (editor && editor.selection.isEmpty) { + vscode.window.showInformationMessage("Please select some text first!"); + return; + } + + const selectedText = editor?.document.getText(editor.selection); + + // Create the webview panel and send the selected JSON content + const panel = createWebviewPanel(context, getPanelTitle(editor?.document)); + panel.webview.postMessage({ + json: selectedText, + }); + + const onReceiveMessage = panel.webview.onDidReceiveMessage(e => { + if (e === "ready") { + panel.webview.postMessage({ + json: selectedText, + }); + } + }); + + const onTextChange = vscode.workspace.onDidChangeTextDocument(changeEvent => { + if (changeEvent.document === editor?.document) { + panel.webview.postMessage({ + json: changeEvent.document.getText(editor?.selection), + }); + } + }); + + const disposer = () => { + onTextChange.dispose(); + onReceiveMessage.dispose(); + }; + + panel.onDidDispose(disposer, null, context.subscriptions); +} + +async function createWebviewForActiveEditor(context: vscode.ExtensionContext) { + const editor = vscode.window.activeTextEditor; + const panel = createWebviewPanel(context, getPanelTitle(editor?.document)); + + const onReceiveMessage = panel.webview.onDidReceiveMessage(e => { + if (e === "ready") { + panel.webview.postMessage({ + json: editor?.document.getText(), + }); + } + }); + + const onTextChange = vscode.workspace.onDidChangeTextDocument(changeEvent => { + if (changeEvent.document === editor?.document) { + panel.webview.postMessage({ + json: changeEvent.document.getText(), + }); + } + }); + + const disposer = () => { + onTextChange.dispose(); + onReceiveMessage.dispose(); + }; + + panel.onDidDispose(disposer, null, context.subscriptions); +} + +/** + * Renders a readonly diagram from a string + * @param context ExtensionContext + * @param content JSON content as a string + */ +function createWebviewForContent(context?: vscode.ExtensionContext, content?: string): any { + if (context && content) { + const panel = createWebviewPanel( + context, + getPanelTitle(vscode.window.activeTextEditor?.document) + ); + panel.webview.postMessage({ + json: content, + }); + } +} + +// This method is called when your extension is deactivated +// eslint-disable-next-line @typescript-eslint/no-empty-function +export function deactivate() {} diff --git a/apps/vscode/ext-src/webview.ts b/apps/vscode/ext-src/webview.ts new file mode 100644 index 00000000..db32b174 --- /dev/null +++ b/apps/vscode/ext-src/webview.ts @@ -0,0 +1,73 @@ +import * as fs from "fs"; +import * as path from "path"; +import * as vscode from "vscode"; + +export function createWebviewPanel(context: vscode.ExtensionContext, title = "JSON Crack") { + const extPath = context.extensionPath; + + const panel = vscode.window.createWebviewPanel( + "liveHTMLPreviewer", + title, + vscode.ViewColumn.Beside, + { + enableScripts: true, + retainContextWhenHidden: true, + localResourceRoots: [ + vscode.Uri.file(path.join(extPath, "build")), + vscode.Uri.file(path.join(extPath, "build", "static")), + vscode.Uri.file(path.join(extPath, "build", "static", "js")), + vscode.Uri.file(path.join(extPath, "build", "static", "css")), + vscode.Uri.file(path.join(extPath, "assets")), + ], + } + ); + panel.iconPath = vscode.Uri.file(path.join(extPath, "build", "assets", "favicon.ico")); + + const manifest = JSON.parse( + fs.readFileSync(path.join(extPath, "build", "asset-manifest.json"), "utf-8") + ); + + const mainScript = manifest.files["main.js"]; + const mainStyle = manifest.files["main.css"]; + + const scriptPathOnDisk = vscode.Uri.file(path.join(extPath, "build", mainScript)); + const stylePathOnDisk = vscode.Uri.file(path.join(extPath, "build", mainStyle)); + + const stylesMainUri = panel.webview.asWebviewUri(stylePathOnDisk); + const scriptUri = panel.webview.asWebviewUri(scriptPathOnDisk); + + const nonce = getNonce(); + const csp = [ + `default-src 'self' ${panel.webview.cspSource} blob:`, + `connect-src ${panel.webview.cspSource} blob:`, + `script-src 'unsafe-eval' 'unsafe-inline' ${panel.webview.cspSource}`, + `style-src ${panel.webview.cspSource} 'unsafe-inline'`, + `worker-src ${panel.webview.cspSource} blob: data:`, + ].join("; "); + + panel.webview.html = ` + + + + + + + + + +
+ + + `; + + return panel; +} + +function getNonce() { + let text = ""; + const possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + for (let i = 0; i < 32; i++) { + text += possible.charAt(Math.floor(Math.random() * possible.length)); + } + return text; +} diff --git a/apps/vscode/package.json b/apps/vscode/package.json new file mode 100644 index 00000000..a9c34fc4 --- /dev/null +++ b/apps/vscode/package.json @@ -0,0 +1,148 @@ +{ + "name": "vscode", + "version": "3.0.0", + "displayName": "JSON Crack", + "description": "Seamlessly visualize your JSON data instantly into graphs.", + "publisher": "AykutSarac", + "license": "MIT", + "author": { + "email": "aykutsarac0@gmail.com", + "name": "Aykut Saraç" + }, + "homepage": "https://jsoncrack.com", + "icon": "assets/jsoncrack.png", + "galleryBanner": { + "color": "#202225", + "theme": "dark" + }, + "categories": [ + "Visualization" + ], + "keywords": [ + "json", + "visualizer", + "jsoncrack", + "data", + "yaml", + "livepreview" + ], + "activationEvents": [ + "workspaceContains:**/*.{json}" + ], + "main": "./build/ext-src/extension.js", + "contributes": { + "commands": [ + { + "command": "jsoncrack-vscode.start", + "title": "Enable JSON Crack visualization", + "category": "menubar", + "icon": { + "light": "./assets/icon-light.svg", + "dark": "./assets/icon-dark.svg" + } + }, + { + "command": "jsoncrack-vscode.start.specific", + "title": "Enable JSON Crack visualization for specific file", + "category": "menubar" + }, + { + "command": "jsoncrack-vscode.start.selected", + "title": "Open with JSON Crack", + "category": "Navigation" + } + ], + "menus": { + "editor/context": [ + { + "command": "jsoncrack-vscode.start.selected", + "when": "editorHasSelection", + "group": "navigation" + } + ], + "commandPalette": [ + { + "command": "jsoncrack-vscode.start", + "when": "never" + } + ], + "editor/title": [ + { + "command": "jsoncrack-vscode.start", + "when": "resourceExtname == .json || editorLangId == json", + "group": "navigation" + } + ] + } + }, + "scripts": { + "vscode:prepublish": "pnpm run build", + "dev": "react-scripts start", + "start": "react-scripts start", + "compile": "webpack --mode development", + "watch": "webpack --mode development --watch", + "package": "webpack --mode production --devtool hidden-source-map", + "analyze": "ANALYZE=true pnpm run build", + "lint": "eslint src ext-src && prettier --check src ext-src", + "lint:fix": "eslint --fix src ext-src && prettier --write src ext-src", + "build": "node ./scripts/build-non-split.js && tsc -p tsconfig.extension.json", + "clean": "rm -rf build", + "watch-build": "nodemon --watch src --watch ext-src --watch scripts --ext js,tsx,ts --exec \"pnpm run build\"", + "eject": "react-scripts eject" + }, + "devDependencies": { + "@babel/plugin-proposal-private-property-in-object": "^7.21.11", + "@mantine/code-highlight": "^7.16.2", + "@mantine/core": "^7.16.2", + "@mantine/hooks": "^7.16.2", + "@trivago/prettier-plugin-sort-imports": "^4.3.0", + "@types/node": "16.x", + "@types/react": "^19.0.0", + "@types/react-dom": "^19.0.0", + "@types/vscode": "^1.86.0", + "@types/webpack-env": "^1.18.5", + "@typescript-eslint/eslint-plugin": "^5.31.0", + "@typescript-eslint/parser": "^5.31.0", + "eslint": "^8.20.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-unused-imports": "^4.1.4", + "nodemon": "^2.0.20", + "prettier": "^3.3.3", + "react-scripts": "^5.0.1", + "rewire": "^7.0.0", + "ts-loader": "^9.5.1", + "typescript": "^5.6.3", + "vsce": "^2.15.0", + "webpack": "^5.95.0", + "webpack-cli": "^5.1.4" + }, + "dependencies": { + "jsoncrack-react": "workspace:*", + "react": "19.2.4", + "react-dom": "19.2.4" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "repository": { + "type": "git", + "url": "https://github.com/AykutSarac/jsoncrack-vscode" + }, + "bugs": { + "url": "https://github.com/AykutSarac/jsoncrack-vscode/issues" + }, + "engines": { + "vscode": "^1.86.0" + }, + "packageManager": "pnpm@10.20.0" +} diff --git a/apps/vscode/public/assets/favicon.ico b/apps/vscode/public/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..0ddc95e0c00ad94c2f0057b06227fc5ba3b4b1a4 GIT binary patch literal 9662 zcmdT~Yiv}<6`u7Yrj&giSDhVzA>p3N5%qsX{{ARBA-prZVb7B19!r z5pAJFiERN14L?A^p-vkG8nvZ$gzEsVE9jr9QYC1GLTeIQCwOfT*lT}1-`zXwyLa!d zcd?hyv5wE3JCF0tnKS2}nOUV=@>f=-V;SqPZnltXI`oL44*rmaz`&vW?kxoACM3$ev1Fk(DV#9eTW8FZzCe7C+g#6JJ`~gzAJ6 z)Fu>Sm0IFREMpzk{pr>hjJ9La2m2Cg7s{Lpws38w?-@cngocN%dvI*uVQh3apwhJ@ zfNB#91M=2#r?QQ?4MtzXgG16ahD{kW!eNQFO!{0Zbiq67#oMnPN3**YHKI!=s!wu$ z&${8tn%#AH`_<#13`ysON~6W;RA2hpBsBQ1e|&&v)@(8CVlo>EXFrpbZLQw|%92Ez z+T?^Ol6TUUe&tyq@B6<#ji%I9ew&UZevXf_&b)hCL>vB#7^3!5(uVEE-ud}ks7YMv z$Ikv^jh`|o^Tg|K2?UH0OC&nib)-IR#>@8f7xp>78~7=cvZ+5}AtsG49G7~fLY}kl zb_eNQkK=CP*YjZ762E~}Jz99HQ`c^61LI3rw zhAns?smQQ%>e^29gZ6hiAB!?#`L@Baw-Fa8s$Pn|?!$(J$5H5zf9l{ z$B|I}4Y7}fXiW0y>w(Xf;`E7AloN64@9#%ZULi`v&N%-X%R@FS#A@z=j6EOsMD{qr zZa>vo>(JDG1$Ddsii%gSTlDY4ANTb$NLMMcwte&8{@gxC+#|O~@X?j4+K&X)Id}G) z*wP%7Th^3a|HMknlDLoR>iymO0k-30|EuC84vP21akVK`DA{${v>y}y5B`gJajBw* z0yHMC#Nfd7AZ$loIfRE7)}SiB1obn^@Z4i9`1smDKt0;hx~9(?>q*sBRZr8tlPfi;zeWEiE|MnrwOH4QLKmYi5128f3=8+DpNXQM6^Ua2@f^#xz zp#!^H1ALkjeqxq%NobJ!Yb!oJPlkWl<8M0PUufX}McYyK9grTWZbDT;evq6>R}mgs zP>uB&Rd`r9Y3-~P0ri~l6SE|K2fREdm`?mXC*BLdPXDtwImZ~AU5?IM{g!^Gxf6b3 zCiYn1=X$ax`uZ&SUU6+`Om;p6{GQi;)D{#^P8NSI-`o*oKMRr;qAn>PJtw%VCerQO zw~>>Qf$F5ZAUVWMpH(C6D#gA?v@^yiEF(E#A!bS36Wr1I4QKzyUpX=X-h8UBSuK7& zD_H+>{!*P;hLWrT6leNqQF1m)l-pm|$$l*Bw~M~WKA%%rzx0dt)Y;jIxp6ZMzsT<^ zW4IL(TYRVaX?sJM{|$5Q5Ay2-dGNpi6uR@V zAR!s~$!33G%*VBvT@e}bZ`?BLFR!jVlE$v4c6HO=ns`z63=IA?CXp=r)z0!|I7Of77 zqwV+^Yf94bTSW1*b!<-d6Tf{J>4{kZKC)WkgoDq&j2lBY!eXb*^q%@7*1OjP=upeF zz&x|wX4!v5ynm!l z*tgb=oyVfgs(+{bqd5ny+#BEP`*-u4y+=(H4vh0Fo|8}JKkas-^RcoY zo~wsDzcTUj{O|(L>h96=!}EeK`kp=_;d4^XxzB`wP>K z{P#z+rMrE9#5*h6fDrW<_5G1$9%xG*u4(#!>C~}aPu4!^`^>X`?oA@PbJ18sap|X2 z=sf)w&#*V-_|B-U^7Zqb+7J7*+@JEEBJ5pDD6FC0OMm|RYkmXy9k-tM-YI_e!M@CM z@tE9STgN2h;CGsL{T{|qj0G9bM*I5##_Mcro+Z;a@+>XrUcxGSI-f-rV?O@&!uj_b zFSMcU`+E#JB+p@fzroF>|15txF-Fpt$flp-9>_RL70x~BB_Xaq`VSKI%XeKu)HCa5 z3*E6_(bxdq0SI}OT0?$ask!9cO2w1!lHU)Jvw{4RYEp56-(udalr)ouN?j&Tn&92c z$1A1zF6ITb=FEPYX%~fC@N_e8!F!o`%XsuS^|h($ literal 0 HcmV?d00001 diff --git a/apps/vscode/public/index.html b/apps/vscode/public/index.html new file mode 100644 index 00000000..f0ce1d94 --- /dev/null +++ b/apps/vscode/public/index.html @@ -0,0 +1,14 @@ + + + + + + + + + +
+ + diff --git a/apps/vscode/scripts/build-non-split.js b/apps/vscode/scripts/build-non-split.js new file mode 100755 index 00000000..f174a864 --- /dev/null +++ b/apps/vscode/scripts/build-non-split.js @@ -0,0 +1,45 @@ +#!/usr/bin/env node + +const path = require("path"); +const rewire = require("rewire"); +const defaults = rewire("react-scripts/scripts/build.js"); +let config = defaults.__get__("config"); + +// Disable source maps +config.devtool = false; + +// Disable code splitting +config.optimization.splitChunks = { + cacheGroups: { + default: false + } +}; + +config.optimization.runtimeChunk = false; + +// Enable tree shaking +config.optimization.usedExports = true; + +// Force a single React instance in the bundle. Without this, workspace-linked +// packages can resolve a different React version and break hooks at runtime. +config.resolve.alias = { + ...(config.resolve.alias || {}), + react: path.resolve(__dirname, "../node_modules/react"), + "react-dom": path.resolve(__dirname, "../node_modules/react-dom") +}; + +config.resolve.plugins = (config.resolve.plugins || []).filter( + (plugin) => plugin.constructor.name !== "ModuleScopePlugin" +); + +// Ensure production optimizations are enabled +config.mode = 'production'; +config.optimization.minimize = true; + +// Allow extensionless imports from ESM dependencies. +config.module.rules.push({ + test: /\.m?js$/, + resolve: { + fullySpecified: false + } +}); diff --git a/apps/vscode/src/App.tsx b/apps/vscode/src/App.tsx new file mode 100644 index 00000000..e6fbfd3f --- /dev/null +++ b/apps/vscode/src/App.tsx @@ -0,0 +1,75 @@ +import { useCallback, useEffect, useState } from "react"; +import { Anchor, Box, MantineProvider, Text } from "@mantine/core"; +import type { NodeData } from "jsoncrack-react"; +import { JsonCrack } from "jsoncrack-react"; +import { NodeModal } from "./components/NodeModal"; + +function getTheme() { + const theme = document.body.getAttribute("data-vscode-theme-kind"); + if (theme?.includes("light")) return "light" as const; + return "dark"; +} + +const App: React.FC = () => { + const [json, setJson] = useState("{}"); + const [selectedNode, setSelectedNode] = useState(null); + const theme = getTheme(); + + useEffect(() => { + const vscode = window?.acquireVsCodeApi?.(); + vscode?.postMessage("ready"); + + const onMessage = (event: MessageEvent<{ json?: string }>) => { + const jsonData = event.data?.json; + if (typeof jsonData === "string") { + setJson(jsonData); + } + }; + + window.addEventListener("message", onMessage); + + return () => { + window.removeEventListener("message", onMessage); + }; + }, []); + + const handleNodeClick = useCallback((node: NodeData) => { + setSelectedNode(node); + }, []); + + const closeNodeModal = useCallback(() => { + setSelectedNode(null); + }, []); + + return ( + + + + {selectedNode && ( + + )} + + + + Powered by JSON Crack + + + + + + ); +}; + +export default App; + +declare global { + interface Window { + acquireVsCodeApi?: () => any; + } +} diff --git a/apps/vscode/src/components/NodeModal.tsx b/apps/vscode/src/components/NodeModal.tsx new file mode 100644 index 00000000..ad66e7c0 --- /dev/null +++ b/apps/vscode/src/components/NodeModal.tsx @@ -0,0 +1,63 @@ +import React from "react"; +import type { ModalProps } from "@mantine/core"; +import { Modal, Stack, Text, ScrollArea } from "@mantine/core"; +import { CodeHighlight } from "@mantine/code-highlight"; +import type { NodeData } from "jsoncrack-react"; + +interface NodeModalProps extends ModalProps { + nodeData: NodeData | null; +} + +const normalizeNodeData = (nodeRows: NodeData["text"]) => { + if (!nodeRows || nodeRows.length === 0) return "{}"; + if (nodeRows.length === 1 && !nodeRows[0].key) return `${nodeRows[0].value}`; + + const obj: Record = {}; + nodeRows.forEach(row => { + if (row.type !== "array" && row.type !== "object" && row.key) { + obj[row.key] = row.value; + } + }); + + return JSON.stringify(obj, null, 2); +}; + +const jsonPathToString = (path?: NodeData["path"]) => { + if (!path || path.length === 0) return "$"; + const segments = path.map(seg => (typeof seg === "number" ? seg : `"${seg}"`)); + return `$[${segments.join("][")}]`; +}; + +export const NodeModal = ({ opened, onClose, nodeData }: NodeModalProps) => { + const nodeContent = normalizeNodeData(nodeData?.text ?? []); + const jsonPath = jsonPathToString(nodeData?.path); + + return ( + + + + + Content + + + + + + + JSON Path + + + + + + + ); +}; diff --git a/apps/vscode/src/global.css b/apps/vscode/src/global.css new file mode 100644 index 00000000..b15e2404 --- /dev/null +++ b/apps/vscode/src/global.css @@ -0,0 +1,20 @@ +html, +body, +#root { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + overflow: hidden; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +a { + color: inherit; + text-decoration: none; +} diff --git a/apps/vscode/src/index.tsx b/apps/vscode/src/index.tsx new file mode 100644 index 00000000..458b55e1 --- /dev/null +++ b/apps/vscode/src/index.tsx @@ -0,0 +1,10 @@ +import "@mantine/core/styles.css"; +import "@mantine/code-highlight/styles.css"; +import "jsoncrack-react/style.css"; +import { createRoot } from "react-dom/client"; +import App from "./App"; +import "./global.css"; + +const container = document.getElementById("root") as HTMLElement; +const root = createRoot(container); +root.render(); diff --git a/apps/vscode/src/react-app-env.d.ts b/apps/vscode/src/react-app-env.d.ts new file mode 100644 index 00000000..f52d6f17 --- /dev/null +++ b/apps/vscode/src/react-app-env.d.ts @@ -0,0 +1,7 @@ +/// + +declare global { + interface Window { + acquireVsCodeApi?: () => any; + } +} diff --git a/apps/vscode/tsconfig.extension.json b/apps/vscode/tsconfig.extension.json new file mode 100644 index 00000000..4137d5be --- /dev/null +++ b/apps/vscode/tsconfig.extension.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "outDir": "build", + "lib": ["es6", "dom"], + "sourceMap": true, + "rootDir": ".", + "strict": true + }, + "include": ["ext-src"], + "exclude": ["node_modules", ".vscode-test"] +} diff --git a/apps/vscode/tsconfig.json b/apps/vscode/tsconfig.json new file mode 100644 index 00000000..a9f91c2e --- /dev/null +++ b/apps/vscode/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "target": "ES6", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": false, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "noImplicitAny": false + }, + "include": ["src"], + "exclude": ["node_modules"] +} diff --git a/apps/vscode/webpack.config.js b/apps/vscode/webpack.config.js new file mode 100644 index 00000000..63405e49 --- /dev/null +++ b/apps/vscode/webpack.config.js @@ -0,0 +1,48 @@ +/** @typedef {import('webpack').Configuration} WebpackConfig **/ + +const webpack = require("webpack"); +const path = require("path"); + +/** @type WebpackConfig */ +const extensionConfig = { + target: "node", + mode: "none", + entry: "./ext-src/extension.ts", + output: { + path: path.resolve(__dirname, "build"), + filename: "extension.js", + libraryTarget: "commonjs2", + }, + externals: { + vscode: "commonjs vscode", + }, + module: { + rules: [{ + test: /\.ts$/, + exclude: [/node_modules/], + use: [{ + loader: 'ts-loader' + }] + }] + }, + resolve: { + extensions: [".ts", ".js"], + }, + plugins: [ + new webpack.optimize.LimitChunkCountPlugin({ + maxChunks: 1, // disable chunks by default since web extensions must be a single bundle + }), + new webpack.ProvidePlugin({ + process: "process/browser", // provide a shim for the global `process` variable + }), + ], + devtool: "nosources-source-map", + performance: { + hints: false + }, + infrastructureLogging: { + level: "log", + }, +}; + +module.exports = extensionConfig; diff --git a/.dockerignore b/apps/www/.dockerignore similarity index 100% rename from .dockerignore rename to apps/www/.dockerignore diff --git a/.env b/apps/www/.env similarity index 100% rename from .env rename to apps/www/.env diff --git a/.env.development b/apps/www/.env.development similarity index 100% rename from .env.development rename to apps/www/.env.development diff --git a/.eslintrc.json b/apps/www/.eslintrc.json similarity index 100% rename from .eslintrc.json rename to apps/www/.eslintrc.json diff --git a/apps/www/.gitignore b/apps/www/.gitignore new file mode 100644 index 00000000..979810f3 --- /dev/null +++ b/apps/www/.gitignore @@ -0,0 +1,31 @@ +# App dependencies +node_modules/ + +# Next.js +.next/ +out/ + +# Turborepo task cache +.turbo/ + +# Test/build artifacts +coverage/ +build/ +*.tsbuildinfo + +# Local environment files +.env.local +.env.development.local +.env.test.local +.env.production.local + +# Deployment +.vercel + +# Workspace migration artifact (root lockfile is authoritative) +pnpm-lock.yaml + +# PWA workers +public/workbox-*.js +public/sw.js +public/fallback-*.js diff --git a/.prettierignore b/apps/www/.prettierignore similarity index 100% rename from .prettierignore rename to apps/www/.prettierignore diff --git a/apps/www/.prettierrc b/apps/www/.prettierrc new file mode 100644 index 00000000..25c1b456 --- /dev/null +++ b/apps/www/.prettierrc @@ -0,0 +1,19 @@ +{ + "trailingComma": "es5", + "singleQuote": false, + "semi": true, + "printWidth": 100, + "arrowParens": "avoid", + "importOrder": [ + "^(react/(.*)$)|^(react$)", + "^(next/(.*)$)|^(next$)", + "^@mantine/core", + "^@mantine", + "styled", + "", + "^src/(.*)$", + "^[./]" + ], + "importOrderParserPlugins": ["typescript", "jsx", "decorators-legacy"], + "plugins": ["@trivago/prettier-plugin-sort-imports"] +} diff --git a/Dockerfile b/apps/www/Dockerfile similarity index 100% rename from Dockerfile rename to apps/www/Dockerfile diff --git a/apps/www/LICENSE.md b/apps/www/LICENSE.md new file mode 100644 index 00000000..3604492a --- /dev/null +++ b/apps/www/LICENSE.md @@ -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 2025 Aykut Saraç + + 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. diff --git a/docker-compose.yml b/apps/www/docker-compose.yml similarity index 100% rename from docker-compose.yml rename to apps/www/docker-compose.yml diff --git a/eslint.config.mjs b/apps/www/eslint.config.mjs similarity index 100% rename from eslint.config.mjs rename to apps/www/eslint.config.mjs diff --git a/next-env.d.ts b/apps/www/next-env.d.ts similarity index 84% rename from next-env.d.ts rename to apps/www/next-env.d.ts index 19709046..7996d352 100644 --- a/next-env.d.ts +++ b/apps/www/next-env.d.ts @@ -1,6 +1,6 @@ /// /// -import "./.next/types/routes.d.ts"; +import "./.next/dev/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/pages/api-reference/config/typescript for more information. diff --git a/next-sitemap.config.js b/apps/www/next-sitemap.config.js similarity index 100% rename from next-sitemap.config.js rename to apps/www/next-sitemap.config.js diff --git a/next.config.js b/apps/www/next.config.js similarity index 96% rename from next.config.js rename to apps/www/next.config.js index 645d72a9..70b7667f 100644 --- a/next.config.js +++ b/apps/www/next.config.js @@ -7,6 +7,7 @@ const withBundleAnalyzer = require("@next/bundle-analyzer")({ */ const config = { output: "export", + transpilePackages: ["jsoncrack"], reactStrictMode: false, productionBrowserSourceMaps: true, compiler: { diff --git a/nginx.conf b/apps/www/nginx.conf similarity index 100% rename from nginx.conf rename to apps/www/nginx.conf diff --git a/apps/www/package.json b/apps/www/package.json new file mode 100644 index 00000000..ae1726e0 --- /dev/null +++ b/apps/www/package.json @@ -0,0 +1,72 @@ +{ + "name": "www", + "private": true, + "version": "0.0.0", + "license": "Apache-2.0", + "scripts": { + "dev": "next dev --webpack", + "build": "next build --webpack", + "postbuild": "next-sitemap --config next-sitemap.config.js", + "start": "next start", + "lint": "tsc --project tsconfig.json && eslint src && prettier --check src", + "lint:fix": "eslint --fix src && prettier --write src", + "analyze": "ANALYZE=true npm run build" + }, + "dependencies": { + "jsoncrack-react": "workspace:*", + "@mantine/code-highlight": "^8.3.14", + "@mantine/core": "^8.3.14", + "@mantine/dropzone": "^8.3.14", + "@mantine/hooks": "^8.3.14", + "@monaco-editor/react": "^4.7.0", + "allotment": "^1.20.5", + "fast-xml-parser": "5.3.4", + "gofmt.js": "0.0.2", + "html-to-image": "1.11.11", + "jq-web": "0.5.1", + "js-yaml": "4.1.1", + "json-2-csv": "5.5.10", + "json-schema-faker": "0.5.9", + "json_typegen_wasm": "0.7.0", + "jsonc-parser": "3.3.1", + "jsonpath-plus": "10.3.0", + "lodash.debounce": "^4.0.8", + "next": "16.1.6", + "next-seo": "^7.1.0", + "next-sitemap": "^4.2.3", + "nextjs-google-analytics": "^2.3.7", + "react": "19.2.4", + "react-dom": "19.2.4", + "react-hot-toast": "^2.6.0", + "react-icons": "^5.5.0", + "react-json-tree": "^0.20.0", + "react-linkify-it": "^2.0.0", + "react-zoomable-ui": "^0.11.0", + "reaflow": "5.4.1", + "shiki": "^3.22.0", + "styled-components": "^6.3.8", + "use-sync-external-store": "^1.6.0", + "use-long-press": "^3.3.0", + "zustand": "^5.0.11" + }, + "devDependencies": { + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.39.2", + "@next/bundle-analyzer": "16.1.6", + "@trivago/prettier-plugin-sort-imports": "^6.0.2", + "@types/js-yaml": "^4.0.9", + "@types/node": "^25.2.0", + "@types/react": "19.2.11", + "@types/react-dom": "19.2.3", + "@typescript-eslint/eslint-plugin": "^8.54.0", + "eslint": "^9.39.2", + "eslint-config-next": "16.1.6", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-prettier": "^5.5.5", + "eslint-plugin-unused-imports": "^4.3.0", + "prettier": "^3.8.1", + "ts-node": "^10.9.2", + "typescript": "5.9.3" + }, + "packageManager": "pnpm@10.20.0" +} diff --git a/public/.nojekyll b/apps/www/public/.nojekyll similarity index 100% rename from public/.nojekyll rename to apps/www/public/.nojekyll diff --git a/public/CNAME b/apps/www/public/CNAME similarity index 100% rename from public/CNAME rename to apps/www/public/CNAME diff --git a/public/assets/192.png b/apps/www/public/assets/192.png similarity index 100% rename from public/assets/192.png rename to apps/www/public/assets/192.png diff --git a/public/assets/512.png b/apps/www/public/assets/512.png similarity index 100% rename from public/assets/512.png rename to apps/www/public/assets/512.png diff --git a/public/assets/bf2-image.png b/apps/www/public/assets/bf2-image.png similarity index 100% rename from public/assets/bf2-image.png rename to apps/www/public/assets/bf2-image.png diff --git a/public/assets/cursor.svg b/apps/www/public/assets/cursor.svg similarity index 100% rename from public/assets/cursor.svg rename to apps/www/public/assets/cursor.svg diff --git a/public/assets/diagram-dark.png b/apps/www/public/assets/diagram-dark.png similarity index 100% rename from public/assets/diagram-dark.png rename to apps/www/public/assets/diagram-dark.png diff --git a/public/assets/diagram-light.png b/apps/www/public/assets/diagram-light.png similarity index 100% rename from public/assets/diagram-light.png rename to apps/www/public/assets/diagram-light.png diff --git a/public/assets/diagram.svg b/apps/www/public/assets/diagram.svg similarity index 100% rename from public/assets/diagram.svg rename to apps/www/public/assets/diagram.svg diff --git a/public/assets/editor.webp b/apps/www/public/assets/editor.webp similarity index 100% rename from public/assets/editor.webp rename to apps/www/public/assets/editor.webp diff --git a/public/assets/jsoncrack.png b/apps/www/public/assets/jsoncrack.png similarity index 100% rename from public/assets/jsoncrack.png rename to apps/www/public/assets/jsoncrack.png diff --git a/public/assets/step1-visual.png b/apps/www/public/assets/step1-visual.png similarity index 100% rename from public/assets/step1-visual.png rename to apps/www/public/assets/step1-visual.png diff --git a/public/assets/step2-visual.png b/apps/www/public/assets/step2-visual.png similarity index 100% rename from public/assets/step2-visual.png rename to apps/www/public/assets/step2-visual.png diff --git a/public/assets/step3-visual.png b/apps/www/public/assets/step3-visual.png similarity index 100% rename from public/assets/step3-visual.png rename to apps/www/public/assets/step3-visual.png diff --git a/public/assets/td-1.webp b/apps/www/public/assets/td-1.webp similarity index 100% rename from public/assets/td-1.webp rename to apps/www/public/assets/td-1.webp diff --git a/public/assets/td-2.webp b/apps/www/public/assets/td-2.webp similarity index 100% rename from public/assets/td-2.webp rename to apps/www/public/assets/td-2.webp diff --git a/public/assets/td-3.webp b/apps/www/public/assets/td-3.webp similarity index 100% rename from public/assets/td-3.webp rename to apps/www/public/assets/td-3.webp diff --git a/public/assets/td-4.webp b/apps/www/public/assets/td-4.webp similarity index 100% rename from public/assets/td-4.webp rename to apps/www/public/assets/td-4.webp diff --git a/public/assets/todiagram_logo.png b/apps/www/public/assets/todiagram_logo.png similarity index 100% rename from public/assets/todiagram_logo.png rename to apps/www/public/assets/todiagram_logo.png diff --git a/public/favicon.ico b/apps/www/public/favicon.ico similarity index 100% rename from public/favicon.ico rename to apps/www/public/favicon.ico diff --git a/public/manifest.json b/apps/www/public/manifest.json similarity index 100% rename from public/manifest.json rename to apps/www/public/manifest.json diff --git a/public/robots.txt b/apps/www/public/robots.txt similarity index 100% rename from public/robots.txt rename to apps/www/public/robots.txt diff --git a/public/sitemap-0.xml b/apps/www/public/sitemap-0.xml similarity index 100% rename from public/sitemap-0.xml rename to apps/www/public/sitemap-0.xml diff --git a/public/sitemap.xml b/apps/www/public/sitemap.xml similarity index 100% rename from public/sitemap.xml rename to apps/www/public/sitemap.xml diff --git a/shims/empty.ts b/apps/www/shims/empty.ts similarity index 100% rename from shims/empty.ts rename to apps/www/shims/empty.ts diff --git a/src/assets/fonts/Mona-Sans.woff2 b/apps/www/src/assets/fonts/Mona-Sans.woff2 similarity index 100% rename from src/assets/fonts/Mona-Sans.woff2 rename to apps/www/src/assets/fonts/Mona-Sans.woff2 diff --git a/src/constants/globalStyle.ts b/apps/www/src/constants/globalStyle.ts similarity index 100% rename from src/constants/globalStyle.ts rename to apps/www/src/constants/globalStyle.ts diff --git a/src/constants/graph.ts b/apps/www/src/constants/graph.ts similarity index 100% rename from src/constants/graph.ts rename to apps/www/src/constants/graph.ts diff --git a/src/constants/seo.ts b/apps/www/src/constants/seo.ts similarity index 100% rename from src/constants/seo.ts rename to apps/www/src/constants/seo.ts diff --git a/src/constants/theme.ts b/apps/www/src/constants/theme.ts similarity index 100% rename from src/constants/theme.ts rename to apps/www/src/constants/theme.ts diff --git a/src/data/example.json b/apps/www/src/data/example.json similarity index 100% rename from src/data/example.json rename to apps/www/src/data/example.json diff --git a/src/data/faq.json b/apps/www/src/data/faq.json similarity index 98% rename from src/data/faq.json rename to apps/www/src/data/faq.json index 80f70187..918b227a 100644 --- a/src/data/faq.json +++ b/apps/www/src/data/faq.json @@ -21,7 +21,7 @@ }, { "title": "What kind of data formats are supported?", - "content": "A wide range of data formats are supported including JSON, YAML, XML, CSV, and TOML." + "content": "A wide range of data formats are supported including JSON, YAML, XML, and CSV." }, { "title": "What size of data can I visualize?", diff --git a/src/data/privacy.json b/apps/www/src/data/privacy.json similarity index 100% rename from src/data/privacy.json rename to apps/www/src/data/privacy.json diff --git a/src/data/terms.json b/apps/www/src/data/terms.json similarity index 100% rename from src/data/terms.json rename to apps/www/src/data/terms.json diff --git a/src/enums/file.enum.ts b/apps/www/src/enums/file.enum.ts similarity index 100% rename from src/enums/file.enum.ts rename to apps/www/src/enums/file.enum.ts diff --git a/src/enums/viewMode.enum.ts b/apps/www/src/enums/viewMode.enum.ts similarity index 100% rename from src/enums/viewMode.enum.ts rename to apps/www/src/enums/viewMode.enum.ts diff --git a/src/features/Banner.tsx b/apps/www/src/features/Banner.tsx similarity index 100% rename from src/features/Banner.tsx rename to apps/www/src/features/Banner.tsx diff --git a/src/features/editor/BottomBar.tsx b/apps/www/src/features/editor/BottomBar.tsx similarity index 100% rename from src/features/editor/BottomBar.tsx rename to apps/www/src/features/editor/BottomBar.tsx diff --git a/src/features/editor/ExternalMode.tsx b/apps/www/src/features/editor/ExternalMode.tsx similarity index 100% rename from src/features/editor/ExternalMode.tsx rename to apps/www/src/features/editor/ExternalMode.tsx diff --git a/src/features/editor/FullscreenDropzone.tsx b/apps/www/src/features/editor/FullscreenDropzone.tsx similarity index 89% rename from src/features/editor/FullscreenDropzone.tsx rename to apps/www/src/features/editor/FullscreenDropzone.tsx index eaab7f94..fdb112ff 100644 --- a/src/features/editor/FullscreenDropzone.tsx +++ b/apps/www/src/features/editor/FullscreenDropzone.tsx @@ -12,13 +12,7 @@ export const FullscreenDropzone = () => { return ( toast.error(`Unable to load file ${files[0].file.name}`)} onDrop={async e => { try { @@ -55,7 +49,7 @@ export const FullscreenDropzone = () => { Invalid file - Allowed formats are JSON, YAML, CSV, XML, TOML + Allowed formats are JSON, YAML, CSV, XML diff --git a/src/features/editor/LiveEditor.tsx b/apps/www/src/features/editor/LiveEditor.tsx similarity index 96% rename from src/features/editor/LiveEditor.tsx rename to apps/www/src/features/editor/LiveEditor.tsx index aac14268..fa2ba51e 100644 --- a/src/features/editor/LiveEditor.tsx +++ b/apps/www/src/features/editor/LiveEditor.tsx @@ -10,7 +10,6 @@ const StyledLiveEditor = styled.div` height: 100%; background: ${({ theme }) => theme.GRID_BG_COLOR}; overflow: auto; - cursor: url("/assets/cursor.svg"), auto; & > ul { margin-top: 0 !important; diff --git a/src/features/editor/TextEditor.tsx b/apps/www/src/features/editor/TextEditor.tsx similarity index 91% rename from src/features/editor/TextEditor.tsx rename to apps/www/src/features/editor/TextEditor.tsx index dfccf351..57f2c2b2 100644 --- a/src/features/editor/TextEditor.tsx +++ b/apps/www/src/features/editor/TextEditor.tsx @@ -29,9 +29,14 @@ const TextEditor = () => { const getHasChanges = useFile(state => state.getHasChanges); const theme = useConfig(state => (state.darkmodeEnabled ? "vs-dark" : "light")); const fileType = useFile(state => state.format); + const jsonDefaults = (monaco?.languages as any)?.json?.jsonDefaults as + | { setDiagnosticsOptions: (options: unknown) => void } + | undefined; React.useEffect(() => { - monaco?.languages.json.jsonDefaults.setDiagnosticsOptions({ + if (!jsonDefaults) return; + + jsonDefaults.setDiagnosticsOptions({ validate: true, allowComments: true, enableSchemaRequest: true, @@ -45,7 +50,7 @@ const TextEditor = () => { ], }), }); - }, [jsonSchema, monaco?.languages.json.jsonDefaults]); + }, [jsonDefaults, jsonSchema]); React.useEffect(() => { const beforeunload = (e: BeforeUnloadEvent) => { diff --git a/src/features/editor/Toolbar/FileMenu.tsx b/apps/www/src/features/editor/Toolbar/FileMenu.tsx similarity index 100% rename from src/features/editor/Toolbar/FileMenu.tsx rename to apps/www/src/features/editor/Toolbar/FileMenu.tsx diff --git a/src/features/editor/Toolbar/SearchInput.tsx b/apps/www/src/features/editor/Toolbar/SearchInput.tsx similarity index 100% rename from src/features/editor/Toolbar/SearchInput.tsx rename to apps/www/src/features/editor/Toolbar/SearchInput.tsx diff --git a/src/features/editor/Toolbar/ThemeToggle.tsx b/apps/www/src/features/editor/Toolbar/ThemeToggle.tsx similarity index 100% rename from src/features/editor/Toolbar/ThemeToggle.tsx rename to apps/www/src/features/editor/Toolbar/ThemeToggle.tsx diff --git a/src/features/editor/Toolbar/ToolsMenu.tsx b/apps/www/src/features/editor/Toolbar/ToolsMenu.tsx similarity index 100% rename from src/features/editor/Toolbar/ToolsMenu.tsx rename to apps/www/src/features/editor/Toolbar/ToolsMenu.tsx diff --git a/src/features/editor/Toolbar/ViewMenu.tsx b/apps/www/src/features/editor/Toolbar/ViewMenu.tsx similarity index 100% rename from src/features/editor/Toolbar/ViewMenu.tsx rename to apps/www/src/features/editor/Toolbar/ViewMenu.tsx diff --git a/src/features/editor/Toolbar/index.tsx b/apps/www/src/features/editor/Toolbar/index.tsx similarity index 100% rename from src/features/editor/Toolbar/index.tsx rename to apps/www/src/features/editor/Toolbar/index.tsx diff --git a/src/features/editor/Toolbar/styles.ts b/apps/www/src/features/editor/Toolbar/styles.ts similarity index 100% rename from src/features/editor/Toolbar/styles.ts rename to apps/www/src/features/editor/Toolbar/styles.ts diff --git a/src/features/editor/views/GraphView/CustomEdge/index.tsx b/apps/www/src/features/editor/views/GraphView/CustomEdge/index.tsx similarity index 89% rename from src/features/editor/views/GraphView/CustomEdge/index.tsx rename to apps/www/src/features/editor/views/GraphView/CustomEdge/index.tsx index 69de00db..6bcda4a9 100644 --- a/src/features/editor/views/GraphView/CustomEdge/index.tsx +++ b/apps/www/src/features/editor/views/GraphView/CustomEdge/index.tsx @@ -7,11 +7,10 @@ import useGraph from "../stores/useGraph"; const CustomEdgeWrapper = (props: EdgeProps) => { const colorScheme = useComputedColorScheme(); const viewPort = useGraph(state => state.viewPort); - const edges = useGraph(state => state.edges); const [hovered, setHovered] = React.useState(false); const handeClick = () => { - const targetNodeId = edges.find(edge => edge.id === props.properties?.id)?.to; + const targetNodeId = (props.properties as { to?: string } | undefined)?.to; const targetNodeDom = document.querySelector( `[data-id$="node-${targetNodeId}"]` ) as HTMLElement; diff --git a/src/features/editor/views/GraphView/CustomNode/ObjectNode.tsx b/apps/www/src/features/editor/views/GraphView/CustomNode/ObjectNode.tsx similarity index 96% rename from src/features/editor/views/GraphView/CustomNode/ObjectNode.tsx rename to apps/www/src/features/editor/views/GraphView/CustomNode/ObjectNode.tsx index bd87e928..b6fb7704 100644 --- a/src/features/editor/views/GraphView/CustomNode/ObjectNode.tsx +++ b/apps/www/src/features/editor/views/GraphView/CustomNode/ObjectNode.tsx @@ -1,7 +1,7 @@ import React from "react"; +import type { NodeData } from "jsoncrack-react"; import type { CustomNodeProps } from "."; import { NODE_DIMENSIONS } from "../../../../../constants/graph"; -import type { NodeData } from "../../../../../types/graph"; import { TextRenderer } from "./TextRenderer"; import * as Styled from "./styles"; diff --git a/src/features/editor/views/GraphView/CustomNode/TextNode.tsx b/apps/www/src/features/editor/views/GraphView/CustomNode/TextNode.tsx similarity index 100% rename from src/features/editor/views/GraphView/CustomNode/TextNode.tsx rename to apps/www/src/features/editor/views/GraphView/CustomNode/TextNode.tsx diff --git a/src/features/editor/views/GraphView/CustomNode/TextRenderer.tsx b/apps/www/src/features/editor/views/GraphView/CustomNode/TextRenderer.tsx similarity index 100% rename from src/features/editor/views/GraphView/CustomNode/TextRenderer.tsx rename to apps/www/src/features/editor/views/GraphView/CustomNode/TextRenderer.tsx diff --git a/src/features/editor/views/GraphView/CustomNode/index.tsx b/apps/www/src/features/editor/views/GraphView/CustomNode/index.tsx similarity index 96% rename from src/features/editor/views/GraphView/CustomNode/index.tsx rename to apps/www/src/features/editor/views/GraphView/CustomNode/index.tsx index ea3ac6be..6358ffe4 100644 --- a/src/features/editor/views/GraphView/CustomNode/index.tsx +++ b/apps/www/src/features/editor/views/GraphView/CustomNode/index.tsx @@ -1,9 +1,9 @@ import React from "react"; import { useComputedColorScheme } from "@mantine/core"; +import type { NodeData } from "jsoncrack-react"; import type { NodeProps } from "reaflow"; import { Node } from "reaflow"; import { useModal } from "../../../../../store/useModal"; -import type { NodeData } from "../../../../../types/graph"; import useGraph from "../stores/useGraph"; import { ObjectNode } from "./ObjectNode"; import { TextNode } from "./TextNode"; diff --git a/src/features/editor/views/GraphView/CustomNode/styles.tsx b/apps/www/src/features/editor/views/GraphView/CustomNode/styles.tsx similarity index 100% rename from src/features/editor/views/GraphView/CustomNode/styles.tsx rename to apps/www/src/features/editor/views/GraphView/CustomNode/styles.tsx diff --git a/src/features/editor/views/GraphView/NotSupported.tsx b/apps/www/src/features/editor/views/GraphView/NotSupported.tsx similarity index 100% rename from src/features/editor/views/GraphView/NotSupported.tsx rename to apps/www/src/features/editor/views/GraphView/NotSupported.tsx diff --git a/src/features/editor/views/GraphView/OptionsMenu.tsx b/apps/www/src/features/editor/views/GraphView/OptionsMenu.tsx similarity index 98% rename from src/features/editor/views/GraphView/OptionsMenu.tsx rename to apps/www/src/features/editor/views/GraphView/OptionsMenu.tsx index 2839113e..fc99858c 100644 --- a/src/features/editor/views/GraphView/OptionsMenu.tsx +++ b/apps/www/src/features/editor/views/GraphView/OptionsMenu.tsx @@ -2,13 +2,13 @@ import React from "react"; import { ActionIcon, Button, Flex, Menu, Text } from "@mantine/core"; import { useHotkeys } from "@mantine/hooks"; import styled from "styled-components"; +import type { LayoutDirection } from "jsoncrack-react"; import { event as gaEvent } from "nextjs-google-analytics"; import { BsCheck2 } from "react-icons/bs"; import { LuChevronRight, LuImageDown, LuMenu } from "react-icons/lu"; import { TiFlowMerge } from "react-icons/ti"; import useConfig from "../../../../store/useConfig"; import { useModal } from "../../../../store/useModal"; -import type { LayoutDirection } from "../../../../types/graph"; import useGraph from "./stores/useGraph"; const StyledFlowIcon = styled(TiFlowMerge)<{ rotate: number }>` diff --git a/src/features/editor/views/GraphView/SecureInfo.tsx b/apps/www/src/features/editor/views/GraphView/SecureInfo.tsx similarity index 100% rename from src/features/editor/views/GraphView/SecureInfo.tsx rename to apps/www/src/features/editor/views/GraphView/SecureInfo.tsx diff --git a/src/features/editor/views/GraphView/ZoomControl.tsx b/apps/www/src/features/editor/views/GraphView/ZoomControl.tsx similarity index 100% rename from src/features/editor/views/GraphView/ZoomControl.tsx rename to apps/www/src/features/editor/views/GraphView/ZoomControl.tsx diff --git a/apps/www/src/features/editor/views/GraphView/index.tsx b/apps/www/src/features/editor/views/GraphView/index.tsx new file mode 100644 index 00000000..ec76508a --- /dev/null +++ b/apps/www/src/features/editor/views/GraphView/index.tsx @@ -0,0 +1,100 @@ +import React from "react"; +import { Box } from "@mantine/core"; +import styled from "styled-components"; +import { JsonCrack } from "jsoncrack-react"; +import type { NodeData } from "jsoncrack-react"; +import { useLongPress } from "use-long-press"; +import { SUPPORTED_LIMIT } from "../../../../constants/graph"; +import useConfig from "../../../../store/useConfig"; +import useJson from "../../../../store/useJson"; +import { useModal } from "../../../../store/useModal"; +import { NotSupported } from "./NotSupported"; +import { OptionsMenu } from "./OptionsMenu"; +import { SecureInfo } from "./SecureInfo"; +import { ZoomControl } from "./ZoomControl"; +import useGraph from "./stores/useGraph"; + +const StyledEditorWrapper = styled.div<{ $widget: boolean }>` + width: 100%; + height: 100%; + + .jsoncrack-space, + .jsoncrack-space:active { + cursor: url("/assets/cursor.svg"), auto; + } +`; + +interface GraphProps { + isWidget?: boolean; +} + +export const GraphView = ({ isWidget = false }: GraphProps) => { + const setViewPort = useGraph(state => state.setViewPort); + const direction = useGraph(state => state.direction); + const setSelectedNode = useGraph(state => state.setSelectedNode); + const gesturesEnabled = useConfig(state => state.gesturesEnabled); + const rulersEnabled = useConfig(state => state.rulersEnabled); + const imagePreviewEnabled = useConfig(state => state.imagePreviewEnabled); + const darkmodeEnabled = useConfig(state => state.darkmodeEnabled); + const json = useJson(state => state.json); + const setVisible = useModal(state => state.setVisible); + + const callback = React.useCallback(() => { + const canvas = document.querySelector(".jsoncrack-canvas") as HTMLDivElement | null; + canvas?.classList.add("dragging"); + }, []); + + const bindLongPress = useLongPress(callback, { + threshold: 150, + onFinish: () => { + const canvas = document.querySelector(".jsoncrack-canvas") as HTMLDivElement | null; + canvas?.classList.remove("dragging"); + }, + }); + + const blurOnClick = React.useCallback(() => { + if ("activeElement" in document) { + (document.activeElement as HTMLElement | null)?.blur(); + } + }, []); + + const handleNodeClick = React.useCallback( + (node: NodeData) => { + setSelectedNode(node); + setVisible("NodeModal", true); + }, + [setSelectedNode, setVisible] + ); + + const maxVisibleNodes = Number.isFinite(SUPPORTED_LIMIT) ? SUPPORTED_LIMIT : 1500; + + return ( + + {!isWidget && } + {!isWidget && } + + event.preventDefault()} + onClick={blurOnClick} + {...bindLongPress()} + > + } + /> + + + ); +}; diff --git a/src/features/editor/views/GraphView/lib/jsonParser.ts b/apps/www/src/features/editor/views/GraphView/lib/jsonParser.ts similarity index 98% rename from src/features/editor/views/GraphView/lib/jsonParser.ts rename to apps/www/src/features/editor/views/GraphView/lib/jsonParser.ts index 8c397983..3f25e06c 100644 --- a/src/features/editor/views/GraphView/lib/jsonParser.ts +++ b/apps/www/src/features/editor/views/GraphView/lib/jsonParser.ts @@ -4,7 +4,7 @@ * LICENSE file in the root directory of this source tree. */ import { parseTree, getNodePath, type Node } from "jsonc-parser"; -import type { EdgeData, NodeData, NodeRow } from "../../../../../types/graph"; +import type { EdgeData, NodeData, NodeRow } from "jsoncrack-react"; import { calculateNodeSize } from "./utils/calculateNodeSize"; export type Graph = { diff --git a/src/features/editor/views/GraphView/lib/utils/calculateNodeSize.ts b/apps/www/src/features/editor/views/GraphView/lib/utils/calculateNodeSize.ts similarity index 100% rename from src/features/editor/views/GraphView/lib/utils/calculateNodeSize.ts rename to apps/www/src/features/editor/views/GraphView/lib/utils/calculateNodeSize.ts diff --git a/src/features/editor/views/GraphView/lib/utils/getChildrenEdges.ts b/apps/www/src/features/editor/views/GraphView/lib/utils/getChildrenEdges.ts similarity index 77% rename from src/features/editor/views/GraphView/lib/utils/getChildrenEdges.ts rename to apps/www/src/features/editor/views/GraphView/lib/utils/getChildrenEdges.ts index 04ef0679..b0e18c52 100644 --- a/src/features/editor/views/GraphView/lib/utils/getChildrenEdges.ts +++ b/apps/www/src/features/editor/views/GraphView/lib/utils/getChildrenEdges.ts @@ -1,4 +1,4 @@ -import type { NodeData, EdgeData } from "../../../../../../types/graph"; +import type { EdgeData, NodeData } from "jsoncrack-react"; export const getChildrenEdges = (nodes: NodeData[], edges: EdgeData[]): EdgeData[] => { const nodeIds = nodes.map(node => node.id); diff --git a/src/features/editor/views/GraphView/lib/utils/getOutgoers.ts b/apps/www/src/features/editor/views/GraphView/lib/utils/getOutgoers.ts similarity index 92% rename from src/features/editor/views/GraphView/lib/utils/getOutgoers.ts rename to apps/www/src/features/editor/views/GraphView/lib/utils/getOutgoers.ts index 5dee2150..d14e530e 100644 --- a/src/features/editor/views/GraphView/lib/utils/getOutgoers.ts +++ b/apps/www/src/features/editor/views/GraphView/lib/utils/getOutgoers.ts @@ -1,4 +1,4 @@ -import type { NodeData, EdgeData } from "../../../../../../types/graph"; +import type { EdgeData, NodeData } from "jsoncrack-react"; type Outgoers = [NodeData[], string[]]; diff --git a/src/features/editor/views/GraphView/stores/useGraph.ts b/apps/www/src/features/editor/views/GraphView/stores/useGraph.ts similarity index 55% rename from src/features/editor/views/GraphView/stores/useGraph.ts rename to apps/www/src/features/editor/views/GraphView/stores/useGraph.ts index 530ba717..dca6c6f5 100644 --- a/src/features/editor/views/GraphView/stores/useGraph.ts +++ b/apps/www/src/features/editor/views/GraphView/stores/useGraph.ts @@ -1,87 +1,45 @@ +import type { LayoutDirection, NodeData } from "jsoncrack-react"; import type { ViewPort } from "react-zoomable-ui"; -import type { CanvasDirection } from "reaflow"; import { create } from "zustand"; -import { SUPPORTED_LIMIT } from "../../../../../constants/graph"; -import useJson from "../../../../../store/useJson"; -import type { EdgeData, NodeData } from "../../../../../types/graph"; -import { parser } from "../lib/jsonParser"; export interface Graph { viewPort: ViewPort | null; - direction: CanvasDirection; - loading: boolean; + direction: LayoutDirection; fullscreen: boolean; - nodes: NodeData[]; - edges: EdgeData[]; selectedNode: NodeData | null; - path: string; - aboveSupportedLimit: boolean; } const initialStates: Graph = { viewPort: null, direction: "RIGHT", - loading: true, fullscreen: false, - nodes: [], - edges: [], selectedNode: null, - path: "", - aboveSupportedLimit: false, }; interface GraphActions { - setGraph: (json?: string, options?: Partial[]) => void; - setLoading: (loading: boolean) => void; - setDirection: (direction: CanvasDirection) => void; + setDirection: (direction: LayoutDirection) => void; setViewPort: (ref: ViewPort) => void; - setSelectedNode: (nodeData: NodeData) => void; + setSelectedNode: (nodeData: NodeData | null) => void; focusFirstNode: () => void; toggleFullscreen: (value: boolean) => void; zoomIn: () => void; zoomOut: () => void; centerView: () => void; - clearGraph: () => void; - setZoomFactor: (zoomFactor: number) => void; } const useGraph = create((set, get) => ({ ...initialStates, - clearGraph: () => set({ nodes: [], edges: [], loading: false }), setSelectedNode: nodeData => set({ selectedNode: nodeData }), - setGraph: (data, options) => { - const { nodes, edges } = parser(data ?? useJson.getState().json); - - if (nodes.length > SUPPORTED_LIMIT) { - return set({ - aboveSupportedLimit: true, - ...options, - loading: false, - }); - } - - set({ - nodes, - edges, - aboveSupportedLimit: false, - ...options, - }); - }, setDirection: (direction = "RIGHT") => { set({ direction }); setTimeout(() => get().centerView(), 200); }, - setLoading: loading => set({ loading }), focusFirstNode: () => { const rootNode = document.querySelector("g[id$='node-1']"); get().viewPort?.camera?.centerFitElementIntoView(rootNode as HTMLElement, { elementExtraMarginForZoom: 100, }); }, - setZoomFactor: zoomFactor => { - const viewPort = get().viewPort; - viewPort?.camera?.recenter(viewPort.centerX, viewPort.centerY, zoomFactor); - }, zoomIn: () => { const viewPort = get().viewPort; viewPort?.camera?.recenter(viewPort.centerX, viewPort.centerY, viewPort.zoomFactor + 0.1); diff --git a/src/features/editor/views/TreeView/Label.tsx b/apps/www/src/features/editor/views/TreeView/Label.tsx similarity index 100% rename from src/features/editor/views/TreeView/Label.tsx rename to apps/www/src/features/editor/views/TreeView/Label.tsx diff --git a/src/features/editor/views/TreeView/Value.tsx b/apps/www/src/features/editor/views/TreeView/Value.tsx similarity index 100% rename from src/features/editor/views/TreeView/Value.tsx rename to apps/www/src/features/editor/views/TreeView/Value.tsx diff --git a/src/features/editor/views/TreeView/index.tsx b/apps/www/src/features/editor/views/TreeView/index.tsx similarity index 100% rename from src/features/editor/views/TreeView/index.tsx rename to apps/www/src/features/editor/views/TreeView/index.tsx diff --git a/src/features/modals/DownloadModal/index.tsx b/apps/www/src/features/modals/DownloadModal/index.tsx similarity index 100% rename from src/features/modals/DownloadModal/index.tsx rename to apps/www/src/features/modals/DownloadModal/index.tsx diff --git a/src/features/modals/ImportModal/index.tsx b/apps/www/src/features/modals/ImportModal/index.tsx similarity index 93% rename from src/features/modals/ImportModal/index.tsx rename to apps/www/src/features/modals/ImportModal/index.tsx index ab47a5fa..9d4c84ef 100644 --- a/src/features/modals/ImportModal/index.tsx +++ b/apps/www/src/features/modals/ImportModal/index.tsx @@ -71,13 +71,7 @@ export const ImportModal = ({ opened, onClose }: ModalProps) => { onReject={files => toast.error(`Unable to load file ${files[0].file.name}`)} maxFiles={1} p="md" - accept={[ - "application/json", - "application/x-yaml", - "text/csv", - "application/xml", - "application/toml", - ]} + accept={["application/json", "application/x-yaml", "text/csv", "application/xml"]} > diff --git a/src/features/modals/JPathModal/index.tsx b/apps/www/src/features/modals/JPathModal/index.tsx similarity index 100% rename from src/features/modals/JPathModal/index.tsx rename to apps/www/src/features/modals/JPathModal/index.tsx diff --git a/src/features/modals/JQModal/index.tsx b/apps/www/src/features/modals/JQModal/index.tsx similarity index 100% rename from src/features/modals/JQModal/index.tsx rename to apps/www/src/features/modals/JQModal/index.tsx diff --git a/src/features/modals/ModalController.tsx b/apps/www/src/features/modals/ModalController.tsx similarity index 100% rename from src/features/modals/ModalController.tsx rename to apps/www/src/features/modals/ModalController.tsx diff --git a/src/features/modals/NodeModal/index.tsx b/apps/www/src/features/modals/NodeModal/index.tsx similarity index 97% rename from src/features/modals/NodeModal/index.tsx rename to apps/www/src/features/modals/NodeModal/index.tsx index caba85fe..95d91935 100644 --- a/src/features/modals/NodeModal/index.tsx +++ b/apps/www/src/features/modals/NodeModal/index.tsx @@ -2,7 +2,7 @@ import React from "react"; import type { ModalProps } from "@mantine/core"; import { Modal, Stack, Text, ScrollArea, Flex, CloseButton } from "@mantine/core"; import { CodeHighlight } from "@mantine/code-highlight"; -import type { NodeData } from "../../../types/graph"; +import type { NodeData } from "jsoncrack-react"; import useGraph from "../../editor/views/GraphView/stores/useGraph"; // return object from json removing array and object fields diff --git a/src/features/modals/SchemaModal/index.tsx b/apps/www/src/features/modals/SchemaModal/index.tsx similarity index 100% rename from src/features/modals/SchemaModal/index.tsx rename to apps/www/src/features/modals/SchemaModal/index.tsx diff --git a/src/features/modals/TypeModal/index.tsx b/apps/www/src/features/modals/TypeModal/index.tsx similarity index 100% rename from src/features/modals/TypeModal/index.tsx rename to apps/www/src/features/modals/TypeModal/index.tsx diff --git a/src/features/modals/index.ts b/apps/www/src/features/modals/index.ts similarity index 100% rename from src/features/modals/index.ts rename to apps/www/src/features/modals/index.ts diff --git a/src/features/modals/modalTypes.ts b/apps/www/src/features/modals/modalTypes.ts similarity index 100% rename from src/features/modals/modalTypes.ts rename to apps/www/src/features/modals/modalTypes.ts diff --git a/src/hooks/useFocusNode.ts b/apps/www/src/hooks/useFocusNode.ts similarity index 100% rename from src/hooks/useFocusNode.ts rename to apps/www/src/hooks/useFocusNode.ts diff --git a/src/hooks/useJsonQuery.ts b/apps/www/src/hooks/useJsonQuery.ts similarity index 100% rename from src/hooks/useJsonQuery.ts rename to apps/www/src/hooks/useJsonQuery.ts diff --git a/src/layout/ConverterLayout/PageLinks.tsx b/apps/www/src/layout/ConverterLayout/PageLinks.tsx similarity index 100% rename from src/layout/ConverterLayout/PageLinks.tsx rename to apps/www/src/layout/ConverterLayout/PageLinks.tsx diff --git a/src/layout/ConverterLayout/ToolPage.tsx b/apps/www/src/layout/ConverterLayout/ToolPage.tsx similarity index 100% rename from src/layout/ConverterLayout/ToolPage.tsx rename to apps/www/src/layout/ConverterLayout/ToolPage.tsx diff --git a/src/layout/ConverterLayout/options.ts b/apps/www/src/layout/ConverterLayout/options.ts similarity index 100% rename from src/layout/ConverterLayout/options.ts rename to apps/www/src/layout/ConverterLayout/options.ts diff --git a/src/layout/JsonCrackLogo.tsx b/apps/www/src/layout/JsonCrackLogo.tsx similarity index 100% rename from src/layout/JsonCrackLogo.tsx rename to apps/www/src/layout/JsonCrackLogo.tsx diff --git a/src/layout/Landing/FAQ.tsx b/apps/www/src/layout/Landing/FAQ.tsx similarity index 100% rename from src/layout/Landing/FAQ.tsx rename to apps/www/src/layout/Landing/FAQ.tsx diff --git a/src/layout/Landing/Features.tsx b/apps/www/src/layout/Landing/Features.tsx similarity index 97% rename from src/layout/Landing/Features.tsx rename to apps/www/src/layout/Landing/Features.tsx index a5764d19..5de0a46f 100644 --- a/src/layout/Landing/Features.tsx +++ b/apps/www/src/layout/Landing/Features.tsx @@ -27,7 +27,7 @@ const features: FeatureItem[] = [ { title: "JSON Visualizer", description: - "Transform your data into interactive graphs or trees as you type. Supports JSON, YAML, CSV, XML, and TOML.", + "Transform your data into interactive graphs or trees as you type. Supports JSON, YAML, CSV, and XML.", icon: , color: "yellow", }, @@ -122,7 +122,7 @@ export const Features = () => { fz={{ base: 16, sm: 18 }} w={{ base: "100%", xs: "80%", sm: "60%", md: "40%" }} > - All in one tool for JSON, YAML, CSV, XML, and TOML. + All in one tool for JSON, YAML, CSV, and XML. { Visualize and convert to multiple formats - JSON Crack supports formats like TOML, CSV, YAML, and XML, making it easier to visualize - your data, no matter the type. + JSON Crack supports formats like CSV, YAML, and XML, making it easier to visualize your + data, no matter the type. { const checkEditorSession = useFile(state => state.checkEditorSession); const setContents = useFile(state => state.setContents); const setDirection = useGraph(state => state.setDirection); - const clearGraph = useGraph(state => state.clearGraph); + const clearJson = useJson(state => state.clear); React.useEffect(() => { if (isReady) { if (typeof query?.json === "string") checkEditorSession(query.json, true); - else clearGraph(); + else clearJson(); window.parent.postMessage(window.frameElement?.getAttribute("id"), "*"); } - }, [clearGraph, checkEditorSession, isReady, push, query.json, query.partner]); + }, [checkEditorSession, clearJson, isReady, push, query.json, query.partner]); React.useEffect(() => { const handler = (event: EmbedMessage) => { diff --git a/src/store/useConfig.ts b/apps/www/src/store/useConfig.ts similarity index 82% rename from src/store/useConfig.ts rename to apps/www/src/store/useConfig.ts index 2764c03d..bd16f487 100644 --- a/src/store/useConfig.ts +++ b/apps/www/src/store/useConfig.ts @@ -1,6 +1,5 @@ import { create } from "zustand"; import { persist } from "zustand/middleware"; -import useGraph from "../features/editor/views/GraphView/stores/useGraph"; const initialStates = { darkmodeEnabled: true, @@ -26,10 +25,7 @@ const useConfig = create( toggleGestures: gesturesEnabled => set({ gesturesEnabled }), toggleLiveTransform: liveTransformEnabled => set({ liveTransformEnabled }), toggleDarkMode: darkmodeEnabled => set({ darkmodeEnabled }), - toggleImagePreview: imagePreviewEnabled => { - set({ imagePreviewEnabled }); - useGraph.getState().setGraph(); - }, + toggleImagePreview: imagePreviewEnabled => set({ imagePreviewEnabled }), }), { name: "config", diff --git a/src/store/useFile.ts b/apps/www/src/store/useFile.ts similarity index 96% rename from src/store/useFile.ts rename to apps/www/src/store/useFile.ts index 93986bb3..194b619b 100644 --- a/src/store/useFile.ts +++ b/apps/www/src/store/useFile.ts @@ -4,7 +4,6 @@ import { toast } from "react-hot-toast"; import { create } from "zustand"; import exampleJson from "../data/example.json"; import { FileFormat } from "../enums/file.enum"; -import useGraph from "../features/editor/views/GraphView/stores/useGraph"; import { isIframe } from "../lib/utils/helpers"; import { contentToJson, jsonToContent } from "../lib/utils/jsonAdapter"; import useConfig from "./useConfig"; @@ -66,7 +65,6 @@ const isURL = (value: string) => { }; const debouncedUpdateJson = debounce((value: unknown) => { - useGraph.getState().setLoading(true); useJson.getState().setJson(JSON.stringify(value, null, 2)); }, 400); @@ -124,7 +122,6 @@ const useFile = create()((set, get) => ({ if (error?.mark?.snippet) return set({ error: error.mark.snippet }); if (error?.message) set({ error: error.message }); useJson.setState({ loading: false }); - useGraph.setState({ loading: false }); } }, setError: error => set({ error }), diff --git a/src/store/useJson.ts b/apps/www/src/store/useJson.ts similarity index 77% rename from src/store/useJson.ts rename to apps/www/src/store/useJson.ts index 62512c79..f4a3eace 100644 --- a/src/store/useJson.ts +++ b/apps/www/src/store/useJson.ts @@ -1,5 +1,4 @@ import { create } from "zustand"; -import useGraph from "../features/editor/views/GraphView/stores/useGraph"; interface JsonActions { setJson: (json: string) => void; @@ -19,11 +18,9 @@ const useJson = create()((set, get) => ({ getJson: () => get().json, setJson: json => { set({ json, loading: false }); - useGraph.getState().setGraph(json); }, clear: () => { set({ json: "", loading: false }); - useGraph.getState().clearGraph(); }, })); diff --git a/src/store/useModal.ts b/apps/www/src/store/useModal.ts similarity index 100% rename from src/store/useModal.ts rename to apps/www/src/store/useModal.ts diff --git a/src/types/styled.d.ts b/apps/www/src/types/styled.d.ts similarity index 100% rename from src/types/styled.d.ts rename to apps/www/src/types/styled.d.ts diff --git a/tsconfig.json b/apps/www/tsconfig.json similarity index 100% rename from tsconfig.json rename to apps/www/tsconfig.json diff --git a/package.json b/package.json index dc8ad769..470190a4 100644 --- a/package.json +++ b/package.json @@ -1,93 +1,56 @@ { - "name": "json-crack", + "name": "jsoncrack-monorepo", "private": true, - "version": "0.0.0", + "license": "Apache-2.0", + "homepage": "https://jsoncrack.com", "author": { "name": "Aykut Saraç", "email": "aykutsarac0@gmail.com" }, - "license": "Apache-2.0", - "homepage": "https://jsoncrack.com", "bugs": { "url": "https://github.com/AykutSarac/jsoncrack.com/issues" }, "scripts": { - "dev": "next dev --webpack", - "build": "next build --webpack", - "postbuild": "next-sitemap --config next-sitemap.config.js", - "start": "next start", - "lint": "tsc --project tsconfig.json && eslint src && prettier --check src", - "lint:fix": "eslint --fix src & prettier --write src", - "analyze": "ANALYZE=true npm run build" - }, - "dependencies": { - "@mantine/code-highlight": "^8.3.14", - "@mantine/core": "^8.3.14", - "@mantine/dropzone": "^8.3.14", - "@mantine/hooks": "^8.3.14", - "@monaco-editor/react": "^4.7.0", - "allotment": "^1.20.5", - "fast-xml-parser": "5.3.4", - "gofmt.js": "0.0.2", - "html-to-image": "1.11.11", - "jq-web": "0.5.1", - "js-yaml": "4.1.1", - "json-2-csv": "5.5.10", - "json-schema-faker": "0.5.9", - "json_typegen_wasm": "0.7.0", - "jsonc-parser": "3.3.1", - "jsonpath-plus": "10.3.0", - "lodash.debounce": "^4.0.8", - "next": "16.1.6", - "next-seo": "^7.1.0", - "next-sitemap": "^4.2.3", - "nextjs-google-analytics": "^2.3.7", - "react": "19.2.4", - "react-dom": "19.2.4", - "react-hot-toast": "^2.6.0", - "react-icons": "^5.5.0", - "react-json-tree": "^0.20.0", - "react-linkify-it": "^2.0.0", - "react-zoomable-ui": "^0.11.0", - "reaflow": "5.4.1", - "shiki": "^3.22.0", - "styled-components": "^6.3.8", - "use-long-press": "^3.3.0", - "zustand": "^5.0.11" + "dev": "turbo run dev", + "dev:www": "turbo run dev --filter=www", + "dev:vscode": "turbo run watch-build --filter=vscode", + "build": "turbo run build", + "build:www": "turbo run build --filter=www", + "build:vscode": "turbo run build --filter=vscode", + "start": "turbo run start", + "lint": "turbo run lint", + "lint:vscode": "turbo run lint --filter=vscode", + "lint:fix": "turbo run lint:fix", + "lint:fix:vscode": "turbo run lint:fix --filter=vscode", + "analyze": "turbo run analyze", + "clean": "turbo run clean" }, "devDependencies": { - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "^9.39.2", - "@next/bundle-analyzer": "16.1.6", - "@trivago/prettier-plugin-sort-imports": "^6.0.2", - "@types/js-yaml": "^4.0.9", - "@types/node": "^25.2.0", - "@types/react": "19.2.11", - "@types/react-dom": "19.2.3", - "@typescript-eslint/eslint-plugin": "^8.54.0", - "eslint": "^9.39.2", - "eslint-config-next": "16.1.6", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.5", - "eslint-plugin-unused-imports": "^4.3.0", - "prettier": "^3.8.1", - "ts-node": "^10.9.2", - "typescript": "5.9.3" + "turbo": "^2.8.8" }, "engines": { - "node": ">=24.x" + "node": ">=24", + "pnpm": ">=10" }, + "packageManager": "pnpm@10.20.0", "pnpm": { "onlyBuiltDependencies": [ + "esbuild", + "sharp", + "unrs-resolver" + ], + "approvedBuilds": [ + "esbuild", "sharp", "unrs-resolver" ], "overrides": { + "react": "19.2.4", + "react-dom": "19.2.4", "@types/react": "19.2.11", "@types/react-dom": "19.2.3", "html-to-image": "1.11.11", "jq-web": "0.5.1" } - }, - "packageManager": "pnpm@10.10.0" + } } diff --git a/packages/jsoncrack-react/.gitignore b/packages/jsoncrack-react/.gitignore new file mode 100644 index 00000000..a3dcbc39 --- /dev/null +++ b/packages/jsoncrack-react/.gitignore @@ -0,0 +1,5 @@ +node_modules +dist/ +.turbo/ +coverage/ +*.tsbuildinfo diff --git a/packages/jsoncrack-react/.prettierrc b/packages/jsoncrack-react/.prettierrc new file mode 100644 index 00000000..c933e176 --- /dev/null +++ b/packages/jsoncrack-react/.prettierrc @@ -0,0 +1,14 @@ +{ + "trailingComma": "es5", + "singleQuote": false, + "semi": true, + "printWidth": 100, + "arrowParens": "avoid", + "importOrder": [ + "^(react/(.*)$)|^(react$)", + "", + "^[./]" + ], + "importOrderParserPlugins": ["typescript", "jsx", "decorators-legacy"], + "plugins": ["@trivago/prettier-plugin-sort-imports"] +} diff --git a/packages/jsoncrack-react/LICENSE.md b/packages/jsoncrack-react/LICENSE.md new file mode 100644 index 00000000..3604492a --- /dev/null +++ b/packages/jsoncrack-react/LICENSE.md @@ -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 2025 Aykut Saraç + + 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. diff --git a/packages/jsoncrack-react/README.md b/packages/jsoncrack-react/README.md new file mode 100644 index 00000000..f30966c9 --- /dev/null +++ b/packages/jsoncrack-react/README.md @@ -0,0 +1,148 @@ +# jsoncrack-react + +Reusable JSON graph canvas component from [JSON Crack](https://jsoncrack.com) — visualize JSON, YAML, CSV and XML as interactive node graphs. + +- React component API +- Built-in parsing from `string | object | unknown[]` +- Interactive canvas (pan/zoom + optional controls) +- TypeScript types included + +[Live demo](https://jsoncrack.com) · [GitHub](https://github.com/AykutSarac/jsoncrack.com) · [npm](https://www.npmjs.com/package/jsoncrack-react) + +## Install + +```bash +npm install jsoncrack-react +``` + +Peer dependencies: `react >= 18`, `react-dom >= 18` + +## Setup + +Import the stylesheet once in your app entry point: + +```ts +import "jsoncrack-react/style.css"; +``` + +## Quick Start + +```tsx +import { JsonCrack } from "jsoncrack-react"; + +export function Example() { + return ( +
+ +
+ ); +} +``` + +The wrapper must have an explicit height. + +## Props + +| Prop | Type | Default | Description | +| --- | --- | --- | --- | +| `json` | `string \| object \| unknown[]` | - | Input data to visualize | +| `theme` | `"dark" \| "light"` | `"dark"` | Canvas theme | +| `direction` | `"LEFT" \| "RIGHT" \| "DOWN" \| "UP"` | `"RIGHT"` | Layout direction | +| `showControls` | `boolean` | `true` | Show built-in camera controls | +| `showGrid` | `boolean` | `true` | Show grid background | +| `zoomOnScroll` | `boolean` | `false` | Enables touch/trackpad gesture behavior | +| `imagePreview` | `boolean` | `true` | Render image URLs as image nodes | +| `fitViewOnLayout` | `boolean` | `true` | Auto-fit on first/major layout changes | +| `maxVisibleNodes` | `number` | `1500` | Node rendering safety limit | +| `className` | `string` | - | Wrapper class | +| `style` | `React.CSSProperties` | - | Wrapper inline style | +| `onNodeClick` | `(node: NodeData) => void` | - | Node click callback | +| `onGraphChange` | `(graph: GraphData) => void` | - | Parsed graph callback | +| `onParseError` | `(error: Error) => void` | - | Parse error callback | +| `onViewPortCreate` | `(viewPort: ViewPort) => void` | - | Viewport ready callback | +| `renderTooLarge` | `(nodeCount: number, maxVisibleNodes: number) => React.ReactNode` | - | Custom fallback when node limit is exceeded | + +## Performance + +The component renders all nodes as SVG elements. For large inputs, rendering cost grows with the number of nodes. + +- **Default limit:** `maxVisibleNodes` is set to `1500`. Graphs exceeding this render a fallback instead of the canvas. +- **Recommended range:** Up to ~300–500 nodes for smooth interaction. Beyond that, panning and zooming may feel sluggish depending on the device. +- **Reduce node count:** Flatten or trim your data before passing it in. Arrays of primitives become individual nodes, so large arrays expand the graph quickly. +- **Custom fallback:** Use `renderTooLarge` to show a message or alternative UI when the limit is hit. + +```tsx + ( +

Too large to render ({count} nodes, limit is {max})

+ )} +/> +``` + +## Imperative API (ref) + +```tsx +import { useRef } from "react"; +import { JsonCrack, type JsonCrackRef } from "jsoncrack-react"; + +export function WithRef({ json }: { json: string }) { + const ref = useRef(null); + + return ( + <> + + + +
+ +
+ + ); +} +``` + +`JsonCrackRef` methods: + +- `zoomIn()` +- `zoomOut()` +- `setZoom(zoomFactor: number)` +- `centerView()` +- `focusFirstNode()` + +## Utility: `parseGraph` + +If you only need parser output: + +```ts +import { parseGraph } from "jsoncrack-react"; + +const result = parseGraph('{"a":[1,2,3]}', { imagePreviewEnabled: true }); +// result: { nodes, edges, errors } +``` + +## Exported Types + +- `JsonCrackProps` +- `JsonCrackRef` +- `ParseGraphOptions` +- `ParseGraphResult` +- `CanvasThemeMode` +- `LayoutDirection` +- `NodeData` +- `EdgeData` +- `GraphData` +- `NodeRow` + +## License + +Apache-2.0 diff --git a/packages/jsoncrack-react/eslint.config.mjs b/packages/jsoncrack-react/eslint.config.mjs new file mode 100644 index 00000000..4294268d --- /dev/null +++ b/packages/jsoncrack-react/eslint.config.mjs @@ -0,0 +1,64 @@ +import { FlatCompat } from "@eslint/eslintrc"; +import js from "@eslint/js"; +import prettier from "eslint-plugin-prettier"; +import unusedImports from "eslint-plugin-unused-imports"; +import { defineConfig, globalIgnores } from "eslint/config"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, +}); + +export default defineConfig([ + globalIgnores(["dist", "scripts", "node_modules"]), + { + extends: [ + ...compat.extends("eslint:recommended"), + ...compat.extends("prettier"), + ...compat.extends("plugin:@typescript-eslint/recommended"), + ], + + plugins: { + prettier, + "unused-imports": unusedImports, + }, + + rules: { + "@typescript-eslint/consistent-type-imports": "error", + "unused-imports/no-unused-imports": "error", + "@typescript-eslint/no-explicit-any": "off", + "prettier/prettier": "error", + "space-in-parens": "error", + "no-empty": "error", + "no-multiple-empty-lines": "error", + "no-irregular-whitespace": "error", + strict: ["error", "never"], + "linebreak-style": ["error", "unix"], + + quotes: [ + "error", + "double", + { + avoidEscape: true, + }, + ], + + semi: ["error", "always"], + "prefer-const": "error", + + "space-before-function-paren": [ + "error", + { + anonymous: "always", + named: "never", + asyncArrow: "always", + }, + ], + }, + }, +]); diff --git a/packages/jsoncrack-react/package.json b/packages/jsoncrack-react/package.json new file mode 100644 index 00000000..5f8441ea --- /dev/null +++ b/packages/jsoncrack-react/package.json @@ -0,0 +1,69 @@ +{ + "name": "jsoncrack-react", + "version": "1.0.0", + "description": "Reusable JSON Crack canvas as a React component", + "license": "Apache-2.0", + "author": "Aykut Saraç", + "homepage": "https://jsoncrack.com", + "repository": { + "type": "git", + "url": "https://github.com/AykutSarac/jsoncrack.com" + }, + "keywords": [ + "json", + "visualizer", + "graph", + "canvas", + "react", + "json-crack", + "typescript" + ], + "type": "module", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js" + }, + "./style.css": "./dist/index.css" + }, + "files": [ + "dist" + ], + "sideEffects": [ + "./dist/index.css" + ], + "scripts": { + "build": "vite build && tsc -p tsconfig.build.json", + "clean": "rm -rf dist", + "lint": "tsc -p tsconfig.build.json --noEmit && eslint src && prettier --check src", + "lint:fix": "eslint --fix src && prettier --write src" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "dependencies": { + "jsonc-parser": "^3.3.1", + "react-zoomable-ui": "^0.11.0", + "reaflow": "5.4.1" + }, + "devDependencies": { + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.39.2", + "@trivago/prettier-plugin-sort-imports": "^4.3.0", + "@types/react": "^19.2.11", + "@types/react-dom": "^19.2.3", + "@typescript-eslint/eslint-plugin": "^8.54.0", + "@typescript-eslint/parser": "^8.54.0", + "@vitejs/plugin-react": "^4.3.0", + "eslint": "^9.39.2", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-prettier": "^5.5.5", + "eslint-plugin-unused-imports": "^4.3.0", + "prettier": "^3.8.1", + "typescript": "^5.9.3", + "vite": "^6.0.0" + } +} diff --git a/packages/jsoncrack-react/src/JsonCrack.module.css b/packages/jsoncrack-react/src/JsonCrack.module.css new file mode 100644 index 00000000..40329611 --- /dev/null +++ b/packages/jsoncrack-react/src/JsonCrack.module.css @@ -0,0 +1,86 @@ +.canvasWrapper { + position: relative; + width: 100%; + height: 100%; + background-color: var(--bg-color); +} + +.showGrid { + background-image: + linear-gradient(var(--line-color-1) 1.5px, transparent 1.5px), + linear-gradient(90deg, var(--line-color-1) 1.5px, transparent 1.5px), + linear-gradient(var(--line-color-2) 1px, transparent 1px), + linear-gradient(90deg, var(--line-color-2) 1px, transparent 1px); + background-position: + -1.5px -1.5px, + -1.5px -1.5px, + -1px -1px, + -1px -1px; + background-size: + 100px 100px, + 100px 100px, + 20px 20px, + 20px 20px; +} + +.canvasWrapper :global(.jsoncrack-space) { + cursor: grab; +} + +.canvasWrapper :global(.jsoncrack-space:active) { + cursor: grabbing; +} + +.canvasWrapper :global(.dragging), +.canvasWrapper :global(.dragging button) { + pointer-events: none; +} + +.canvasWrapper :global(text) { + fill: var(--interactive-normal) !important; +} + +.canvasWrapper :global(rect) { + fill: var(--node-fill); +} + +.overlay { + position: absolute; + inset: 0; + z-index: 30; + display: flex; + align-items: center; + justify-content: center; + pointer-events: none; + background: radial-gradient(circle at center, var(--overlay-bg) 0 44px, transparent 96px); +} + +.spinner { + width: 30px; + height: 30px; + border-radius: 9999px; + border: 3px solid var(--spinner-track); + border-top-color: var(--spinner-head); + border-right-color: var(--spinner-head); + animation: spin 0.9s linear infinite; +} + +@keyframes spin { + to { + transform: rotate(360deg); + } +} + +.tooLarge { + position: absolute; + inset: 0; + z-index: 40; + display: flex; + align-items: center; + justify-content: center; + padding: 24px; + text-align: center; + background: rgba(0, 0, 0, 0.62); + color: #ffffff; + font-size: 14px; +} diff --git a/packages/jsoncrack-react/src/JsonCrack.tsx b/packages/jsoncrack-react/src/JsonCrack.tsx new file mode 100644 index 00000000..cc93e07a --- /dev/null +++ b/packages/jsoncrack-react/src/JsonCrack.tsx @@ -0,0 +1,396 @@ +"use client"; + +import React from "react"; +import type { ViewPort } from "react-zoomable-ui"; +import { Space } from "react-zoomable-ui"; +import { Canvas } from "reaflow"; +import type { ElkRoot } from "reaflow"; +import styles from "./JsonCrack.module.css"; +import { Controls } from "./components/Controls"; +import { CustomEdge } from "./components/CustomEdge"; +import { CustomNode } from "./components/CustomNode"; +import { parseGraph } from "./parser"; +import { themes } from "./theme"; +import type { CanvasThemeMode, GraphData, LayoutDirection, NodeData } from "./types"; + +const layoutOptions = { + "elk.layered.compaction.postCompaction.strategy": "EDGE_LENGTH", + "elk.layered.nodePlacement.strategy": "NETWORK_SIMPLEX", + "elk.spacing.edgeLabel": "15", +}; + +const objectJsonCache = new WeakMap(); + +export interface JsonCrackRef { + zoomIn: () => void; + zoomOut: () => void; + setZoom: (zoomFactor: number) => void; + centerView: () => void; + focusFirstNode: () => void; +} + +export interface JsonCrackProps { + json: string | object | unknown[]; + theme?: CanvasThemeMode; + direction?: LayoutDirection; + showControls?: boolean; + showGrid?: boolean; + zoomOnScroll?: boolean; + imagePreview?: boolean; + fitViewOnLayout?: boolean; + maxVisibleNodes?: number; + className?: string; + style?: React.CSSProperties; + onNodeClick?: (node: NodeData) => void; + onGraphChange?: (graph: GraphData) => void; + onParseError?: (error: Error) => void; + onViewPortCreate?: (viewPort: ViewPort) => void; + renderTooLarge?: (nodeCount: number, maxVisibleNodes: number) => React.ReactNode; +} + +const toJsonText = (json: JsonCrackProps["json"]): string => { + if (typeof json === "string") return json; + + if (json && typeof json === "object") { + const cached = objectJsonCache.get(json); + if (cached) return cached; + + const serialized = JSON.stringify(json, null, 2); + objectJsonCache.set(json, serialized); + return serialized; + } + + return JSON.stringify(json, null, 2); +}; + +export const JsonCrack = React.forwardRef( + ( + { + json, + theme = "dark", + direction = "RIGHT", + showControls = true, + showGrid = true, + zoomOnScroll = false, + imagePreview = true, + fitViewOnLayout = true, + maxVisibleNodes = 1500, + className, + style, + onNodeClick, + onGraphChange, + onParseError, + onViewPortCreate, + renderTooLarge, + }, + ref + ) => { + const themeTokens = themes[theme]; + const containerRef = React.useRef(null); + const [viewPort, setViewPort] = React.useState(null); + const [nodes, setNodes] = React.useState([]); + const [edges, setEdges] = React.useState([]); + const [loading, setLoading] = React.useState(true); + const [aboveSupportedLimit, setAboveSupportedLimit] = React.useState(false); + const [totalNodes, setTotalNodes] = React.useState(0); + const [paneWidth, setPaneWidth] = React.useState(2000); + const [paneHeight, setPaneHeight] = React.useState(2000); + const hasAutoFittedRef = React.useRef(false); + const previousLayoutAreaRef = React.useRef(null); + const callbacksRef = React.useRef({ onGraphChange, onParseError }); + const onViewPortCreateRef = React.useRef(onViewPortCreate); + const lastParsedInputRef = React.useRef<{ + jsonText: string; + imagePreview: boolean; + maxVisibleNodes: number; + } | null>(null); + + React.useEffect(() => { + callbacksRef.current = { onGraphChange, onParseError }; + }, [onGraphChange, onParseError]); + + React.useEffect(() => { + onViewPortCreateRef.current = onViewPortCreate; + }, [onViewPortCreate]); + + React.useEffect(() => { + hasAutoFittedRef.current = false; + previousLayoutAreaRef.current = null; + }, [direction]); + + const centerView = React.useCallback(() => { + const nextViewPort = viewPort; + nextViewPort?.updateContainerSize(); + + const canvas = containerRef.current?.querySelector(".jsoncrack-canvas") as HTMLElement | null; + if (canvas) { + nextViewPort?.camera?.centerFitElementIntoView(canvas); + } + }, [viewPort]); + + const focusFirstNode = React.useCallback(() => { + const rootNode = containerRef.current?.querySelector("g[id$='node-1']") as HTMLElement | null; + if (!rootNode) return; + + viewPort?.camera?.centerFitElementIntoView(rootNode, { + elementExtraMarginForZoom: 100, + }); + }, [viewPort]); + + const setZoom = React.useCallback( + (zoomFactor: number) => { + if (!viewPort) return; + viewPort.camera?.recenter(viewPort.centerX, viewPort.centerY, zoomFactor); + }, + [viewPort] + ); + + const zoomIn = React.useCallback(() => { + if (!viewPort) return; + viewPort.camera?.recenter(viewPort.centerX, viewPort.centerY, viewPort.zoomFactor + 0.1); + }, [viewPort]); + + const zoomOut = React.useCallback(() => { + if (!viewPort) return; + viewPort.camera?.recenter(viewPort.centerX, viewPort.centerY, viewPort.zoomFactor - 0.1); + }, [viewPort]); + + React.useImperativeHandle( + ref, + () => ({ + zoomIn, + zoomOut, + setZoom, + centerView, + focusFirstNode, + }), + [centerView, focusFirstNode, setZoom, zoomIn, zoomOut] + ); + + React.useEffect(() => { + try { + const jsonText = toJsonText(json); + const lastParsedInput = lastParsedInputRef.current; + + if ( + lastParsedInput && + lastParsedInput.jsonText === jsonText && + lastParsedInput.imagePreview === imagePreview && + lastParsedInput.maxVisibleNodes === maxVisibleNodes + ) { + return; + } + + setLoading(true); + + const graph = parseGraph(jsonText, { + imagePreviewEnabled: imagePreview, + }); + + if (graph.errors.length > 0) { + callbacksRef.current.onParseError?.( + new Error(`Failed to parse data (${graph.errors.length} syntax error(s)).`) + ); + } + + setTotalNodes(graph.nodes.length); + + if (graph.nodes.length > maxVisibleNodes) { + setAboveSupportedLimit(true); + setNodes([]); + setEdges([]); + setLoading(false); + lastParsedInputRef.current = { + jsonText, + imagePreview, + maxVisibleNodes, + }; + return; + } + + setAboveSupportedLimit(false); + setNodes(graph.nodes); + setEdges(graph.edges); + callbacksRef.current.onGraphChange?.({ + nodes: graph.nodes, + edges: graph.edges, + }); + lastParsedInputRef.current = { + jsonText, + imagePreview, + maxVisibleNodes, + }; + + if (graph.nodes.length === 0) { + setLoading(false); + } + } catch (error) { + setNodes([]); + setEdges([]); + setLoading(false); + callbacksRef.current.onParseError?.( + error instanceof Error ? error : new Error("Unable to parse data.") + ); + } + }, [imagePreview, json, maxVisibleNodes]); + + const edgeTargetById = React.useMemo(() => { + const targetById = new Map(); + + for (let i = 0; i < edges.length; i += 1) { + const edge = edges[i]; + targetById.set(edge.id, edge.to); + } + + return targetById; + }, [edges]); + + const onLayoutChange = React.useCallback( + (layout: ElkRoot) => { + if (!layout.width || !layout.height) { + setLoading(false); + return; + } + + const currentLayoutArea = layout.width * layout.height; + const previousLayoutArea = previousLayoutAreaRef.current; + previousLayoutAreaRef.current = currentLayoutArea; + + setPaneWidth(layout.width + 50); + setPaneHeight(layout.height + 50); + + setTimeout(() => { + window.requestAnimationFrame(() => { + const isFirstAutoFit = !hasAutoFittedRef.current; + const hasLargeLayoutChange = + previousLayoutArea !== null && + previousLayoutArea > 0 && + Math.abs((currentLayoutArea * 100) / previousLayoutArea - 100) > 70; + const shouldAutoFit = fitViewOnLayout && (isFirstAutoFit || hasLargeLayoutChange); + + if (shouldAutoFit) { + centerView(); + hasAutoFittedRef.current = true; + } + + setLoading(false); + }); + }, 0); + }, + [centerView, fitViewOnLayout] + ); + + const tooLargeContent = renderTooLarge?.(totalNodes, maxVisibleNodes); + const canvasClassName = [styles.canvasWrapper, showGrid ? styles.showGrid : "", className] + .filter(Boolean) + .join(" "); + const canvasStyle = { + "--bg-color": themeTokens.GRID_BG_COLOR, + "--line-color-1": themeTokens.GRID_COLOR_PRIMARY, + "--line-color-2": themeTokens.GRID_COLOR_SECONDARY, + "--edge-stroke": theme === "dark" ? "#444444" : "#BCBEC0", + "--node-fill": theme === "dark" ? "#292929" : "#ffffff", + "--node-stroke": theme === "dark" ? "#424242" : "#BCBEC0", + "--interactive-normal": themeTokens.INTERACTIVE_NORMAL, + "--background-node": themeTokens.BACKGROUND_NODE, + "--node-text": themeTokens.NODE_COLORS.TEXT, + "--node-key": themeTokens.NODE_COLORS.NODE_KEY, + "--node-value": themeTokens.NODE_COLORS.NODE_VALUE, + "--node-integer": themeTokens.NODE_COLORS.INTEGER, + "--node-null": themeTokens.NODE_COLORS.NULL, + "--node-bool-true": themeTokens.NODE_COLORS.BOOL.TRUE, + "--node-bool-false": themeTokens.NODE_COLORS.BOOL.FALSE, + "--node-child-count": themeTokens.NODE_COLORS.CHILD_COUNT, + "--node-divider": themeTokens.NODE_COLORS.DIVIDER, + "--text-positive": themeTokens.TEXT_POSITIVE, + "--background-modifier-accent": themeTokens.BACKGROUND_MODIFIER_ACCENT, + "--spinner-track": theme === "dark" ? "rgba(255, 255, 255, 0.3)" : "rgba(17, 24, 39, 0.2)", + "--spinner-head": theme === "dark" ? "#FFFFFF" : "#111827", + "--overlay-bg": theme === "dark" ? "rgba(0, 0, 0, 0.2)" : "rgba(255, 255, 255, 0.38)", + ...style, + } as React.CSSProperties; + + return ( +
event.preventDefault()} + > + {showControls && ( + + )} + + {aboveSupportedLimit && + (tooLargeContent ? ( + tooLargeContent + ) : ( +
+ {`This graph has ${totalNodes} nodes and exceeds the maxVisibleNodes limit (${maxVisibleNodes}).`} +
+ ))} + + {loading && ( +
+
+
+ )} + + { + setViewPort(nextViewPort); + onViewPortCreateRef.current?.(nextViewPort); + }} + onContextMenu={event => event.preventDefault()} + treatTwoFingerTrackPadGesturesLikeTouch={zoomOnScroll} + pollForElementResizing + className="jsoncrack-space" + > + ( + + )} + edge={edgeProps => ( + + )} + nodes={nodes} + edges={edges} + arrow={null} + maxHeight={paneHeight} + maxWidth={paneWidth} + height={paneHeight} + width={paneWidth} + direction={direction} + layoutOptions={layoutOptions} + key={direction} + pannable={false} + zoomable={false} + animated={false} + readonly + dragEdge={null} + dragNode={null} + fit + /> + +
+ ); + } +); + +JsonCrack.displayName = "JsonCrack"; diff --git a/packages/jsoncrack-react/src/components/Controls.module.css b/packages/jsoncrack-react/src/components/Controls.module.css new file mode 100644 index 00000000..353634b7 --- /dev/null +++ b/packages/jsoncrack-react/src/components/Controls.module.css @@ -0,0 +1,30 @@ +.controls { + position: absolute; + bottom: 10px; + left: 10px; + z-index: 100; + display: inline-flex; + align-items: center; + gap: 6px; + background: rgba(20, 20, 20, 0.38); + border: 1px solid rgba(255, 255, 255, 0.18); + border-radius: 8px; + padding: 6px; + backdrop-filter: blur(8px); +} + +.button { + border: none; + border-radius: 6px; + cursor: pointer; + min-width: 30px; + height: 30px; + padding: 0 8px; + font-size: 12px; + color: #ffffff; + background: rgba(255, 255, 255, 0.18); +} + +.button:hover { + background: rgba(255, 255, 255, 0.28); +} diff --git a/packages/jsoncrack-react/src/components/Controls.tsx b/packages/jsoncrack-react/src/components/Controls.tsx new file mode 100644 index 00000000..9d953fb6 --- /dev/null +++ b/packages/jsoncrack-react/src/components/Controls.tsx @@ -0,0 +1,32 @@ +import styles from "./Controls.module.css"; + +interface ControlsProps { + onFocusRoot: () => void; + onCenterView: () => void; + onZoomOut: () => void; + onZoomIn: () => void; +} + +export const Controls = ({ onFocusRoot, onCenterView, onZoomOut, onZoomIn }: ControlsProps) => { + return ( +
+ + + + +
+ ); +}; diff --git a/packages/jsoncrack-react/src/components/CustomEdge.tsx b/packages/jsoncrack-react/src/components/CustomEdge.tsx new file mode 100644 index 00000000..df39d1f3 --- /dev/null +++ b/packages/jsoncrack-react/src/components/CustomEdge.tsx @@ -0,0 +1,67 @@ +import React from "react"; +import type { ViewPort } from "react-zoomable-ui"; +import type { EdgeProps } from "reaflow"; +import { Edge } from "reaflow"; +import type { EdgeData } from "../types"; + +type QueryRoot = { + querySelector: (selector: string) => Element | null; +}; + +type CustomEdgeProps = EdgeProps & { + viewPort: ViewPort | null; + edgeTargetById: Map; + hostElement: QueryRoot | null; +}; + +const isQueryRoot = (value: unknown): value is QueryRoot => { + return ( + typeof value === "object" && + value !== null && + "querySelector" in value && + typeof (value as QueryRoot).querySelector === "function" + ); +}; + +const CustomEdgeBase = ({ viewPort, edgeTargetById, hostElement, ...props }: CustomEdgeProps) => { + const [hovered, setHovered] = React.useState(false); + const edgeId = (props.properties as EdgeData | undefined)?.id; + + const handleClick = React.useCallback(() => { + const targetNodeId = edgeId ? edgeTargetById.get(edgeId) : undefined; + if (!targetNodeId) return; + + const queryRoot = isQueryRoot(hostElement) + ? hostElement + : typeof document !== "undefined" + ? document + : null; + if (!queryRoot) return; + + const targetNodeDom = queryRoot.querySelector( + `[data-id$="node-${targetNodeId}"]` + ) as HTMLElement | null; + + if (targetNodeDom?.parentElement) { + viewPort?.camera.centerFitElementIntoView(targetNodeDom.parentElement, { + elementExtraMarginForZoom: 150, + }); + } + }, [hostElement, edgeId, edgeTargetById, viewPort]); + + return ( + setHovered(true)} + onLeave={() => setHovered(false)} + style={{ + stroke: hovered ? "#3B82F6" : "var(--edge-stroke)", + strokeWidth: 1.5, + }} + {...props} + /> + ); +}; + +export const CustomEdge = React.memo(CustomEdgeBase); diff --git a/packages/jsoncrack-react/src/components/CustomNode.tsx b/packages/jsoncrack-react/src/components/CustomNode.tsx new file mode 100644 index 00000000..cf946ad9 --- /dev/null +++ b/packages/jsoncrack-react/src/components/CustomNode.tsx @@ -0,0 +1,58 @@ +import React from "react"; +import type { NodeProps } from "reaflow"; +import { Node } from "reaflow"; +import type { NodeData } from "../types"; +import { ObjectNode } from "./ObjectNode"; +import { TextNode } from "./TextNode"; + +type CustomNodeProps = NodeProps & { + imagePreviewEnabled: boolean; + onNodeClick?: (node: NodeData) => void; +}; + +const CustomNodeBase = ({ imagePreviewEnabled, onNodeClick, ...nodeProps }: CustomNodeProps) => { + const handleNodeClick = React.useCallback( + (_: React.MouseEvent, data: NodeData) => { + onNodeClick?.(data); + }, + [onNodeClick] + ); + + return ( + { + event.currentTarget.style.stroke = "#3B82F6"; + }} + onLeave={event => { + event.currentTarget.style.stroke = "var(--node-stroke)"; + }} + style={{ + fill: "var(--node-fill)", + stroke: "var(--node-stroke)", + strokeWidth: 1, + }} + > + {({ node, x, y }) => { + const hasKey = nodeProps.properties.text[0]?.key; + if (!hasKey) { + return ( + + ); + } + + return ; + }} + + ); +}; + +export const CustomNode = React.memo(CustomNodeBase); diff --git a/packages/jsoncrack-react/src/components/Node.module.css b/packages/jsoncrack-react/src/components/Node.module.css new file mode 100644 index 00000000..d3c4bf1a --- /dev/null +++ b/packages/jsoncrack-react/src/components/Node.module.css @@ -0,0 +1,72 @@ +.foreignObject { + text-align: center; + color: var(--node-text); + font-family: + ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", + monospace; + font-size: 12px; + font-weight: 500; + overflow: hidden; + pointer-events: none; +} + +.objectForeignObject { + text-align: left; +} + +.key { + display: inline; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.row { + padding: 3px 10px; + height: 30px; + line-height: 24px; + display: block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + border-bottom: 1px solid var(--node-divider); + box-sizing: border-box; +} + +.row:last-of-type { + border-bottom: none; +} + +.textNodeWrapper { + display: flex; + justify-content: flex-start; + align-items: center; + height: 100%; + width: 100%; + overflow: hidden; + padding: 0 10px; +} + +.imageWrapper { + padding: 5px; +} + +.image { + border-radius: 2px; + object-fit: contain; +} + +.foreignObject:global(.searched) { + background: rgba(27, 255, 0, 0.1); + border: 1px solid var(--text-positive); + border-radius: 2px; + box-sizing: border-box; +} + +.foreignObject :global(.highlight) { + background: rgba(255, 214, 0, 0.15); +} + +.foreignObject:global(.searched) .row { + border-bottom: 1px solid var(--text-positive); +} diff --git a/packages/jsoncrack-react/src/components/ObjectNode.tsx b/packages/jsoncrack-react/src/components/ObjectNode.tsx new file mode 100644 index 00000000..a922d21d --- /dev/null +++ b/packages/jsoncrack-react/src/components/ObjectNode.tsx @@ -0,0 +1,109 @@ +import React from "react"; +import type { NodeData } from "../types"; +import styles from "./Node.module.css"; +import { TextRenderer } from "./TextRenderer"; +import { getTextColor } from "./nodeStyles"; + +type ObjectNodeProps = { + node: NodeData; + x: number; + y: number; +}; + +type RowProps = { + row: NodeData["text"][number]; + x: number; + y: number; + index: number; +}; + +const ROW_HEIGHT = 30; + +const Row = ({ row, x, y, index }: RowProps) => { + const rowPosition = index * ROW_HEIGHT; + + const getRowText = () => { + if (row.type === "object") return `{${row.childrenCount ?? 0} keys}`; + if (row.type === "array") return `[${row.childrenCount ?? 0} items]`; + return row.value; + }; + + return ( + + + {row.key}:{" "} + + {getRowText()} + + ); +}; + +const ObjectNodeBase = ({ node, x, y }: ObjectNodeProps) => ( + + {node.text.map((row, index) => ( + + ))} + +); + +const areRowTargetsEqual = (prevTargets?: string[], nextTargets?: string[]) => { + if (prevTargets === nextTargets) return true; + if (!prevTargets || !nextTargets) return false; + if (prevTargets.length !== nextTargets.length) return false; + + for (let i = 0; i < prevTargets.length; i += 1) { + if (prevTargets[i] !== nextTargets[i]) return false; + } + + return true; +}; + +const areRowsEqual = (prevRows: NodeData["text"], nextRows: NodeData["text"]) => { + if (prevRows === nextRows) return true; + if (prevRows.length !== nextRows.length) return false; + + for (let i = 0; i < prevRows.length; i += 1) { + const prevRow = prevRows[i]; + const nextRow = nextRows[i]; + + if ( + prevRow.key !== nextRow.key || + prevRow.value !== nextRow.value || + prevRow.type !== nextRow.type || + prevRow.childrenCount !== nextRow.childrenCount || + !areRowTargetsEqual(prevRow.to, nextRow.to) + ) { + return false; + } + } + + return true; +}; + +const propsAreEqual = (prev: ObjectNodeProps, next: ObjectNodeProps) => { + return ( + prev.node.width === next.node.width && + prev.node.height === next.node.height && + areRowsEqual(prev.node.text, next.node.text) + ); +}; + +export const ObjectNode = React.memo(ObjectNodeBase, propsAreEqual); diff --git a/packages/jsoncrack-react/src/components/TextNode.tsx b/packages/jsoncrack-react/src/components/TextNode.tsx new file mode 100644 index 00000000..b59237f5 --- /dev/null +++ b/packages/jsoncrack-react/src/components/TextNode.tsx @@ -0,0 +1,73 @@ +import React from "react"; +import type { NodeData } from "../types"; +import { isContentImage } from "../utils/calculateNodeSize"; +import styles from "./Node.module.css"; +import { TextRenderer } from "./TextRenderer"; +import { getTextColor } from "./nodeStyles"; + +type TextNodeProps = { + node: NodeData; + x: number; + y: number; + imagePreviewEnabled: boolean; +}; + +const TextNodeBase = ({ node, x, y, imagePreviewEnabled }: TextNodeProps) => { + const { text, width, height } = node; + const firstRow = text[0]; + + if (!firstRow) return null; + + const value = firstRow.value; + const normalizedValue = typeof value === "string" ? value : `${value}`; + const isImage = imagePreviewEnabled && isContentImage(normalizedValue); + + return ( + + {isImage ? ( +
+ +
+ ) : ( + + + {value} + + + )} +
+ ); +}; + +const propsAreEqual = (prev: TextNodeProps, next: TextNodeProps) => { + return ( + prev.imagePreviewEnabled === next.imagePreviewEnabled && + prev.node.text === next.node.text && + prev.node.width === next.node.width + ); +}; + +export const TextNode = React.memo(TextNodeBase, propsAreEqual); diff --git a/packages/jsoncrack-react/src/components/TextRenderer.module.css b/packages/jsoncrack-react/src/components/TextRenderer.module.css new file mode 100644 index 00000000..dc441e5e --- /dev/null +++ b/packages/jsoncrack-react/src/components/TextRenderer.module.css @@ -0,0 +1,20 @@ +.row { + display: inline-flex; + align-items: center; + overflow: hidden; + gap: 4px; + vertical-align: middle; +} + +.colorPreview { + width: 12px; + height: 12px; + border-radius: 3px; + display: inline-block; + border: 1px solid rgba(0, 0, 0, 0.25); +} + +.link { + text-decoration: underline; + pointer-events: all; +} diff --git a/packages/jsoncrack-react/src/components/TextRenderer.tsx b/packages/jsoncrack-react/src/components/TextRenderer.tsx new file mode 100644 index 00000000..943172ba --- /dev/null +++ b/packages/jsoncrack-react/src/components/TextRenderer.tsx @@ -0,0 +1,55 @@ +import React from "react"; +import styles from "./TextRenderer.module.css"; + +const URL_PATTERN = + /^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([-.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/i; +const HEX_CODE_PATTERN = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/; +const RGB_PATTERN = /^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/; +const RGBA_PATTERN = /^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(0|1|0\.\d+)\s*\)$/; + +const isURL = (word: string) => { + return URL_PATTERN.test(word); +}; + +const isColorFormat = (colorString: string) => { + return ( + HEX_CODE_PATTERN.test(colorString) || + RGB_PATTERN.test(colorString) || + RGBA_PATTERN.test(colorString) + ); +}; + +const LinkifiedText = ({ text }: { text: string }) => { + if (!isURL(text)) return <>{text}; + + const href = text.startsWith("http://") || text.startsWith("https://") ? text : `https://${text}`; + + return ( + event.stopPropagation()} + href={href} + target="_blank" + rel="noopener noreferrer" + > + {text} + + ); +}; + +export const TextRenderer = ({ children }: React.PropsWithChildren) => { + if (typeof children === "string" && isColorFormat(children)) { + return ( + + + {children} + + ); + } + + if (typeof children === "string") { + return ; + } + + return <>{`${children}`}; +}; diff --git a/packages/jsoncrack-react/src/components/nodeStyles.ts b/packages/jsoncrack-react/src/components/nodeStyles.ts new file mode 100644 index 00000000..f128b9ad --- /dev/null +++ b/packages/jsoncrack-react/src/components/nodeStyles.ts @@ -0,0 +1,13 @@ +type TextColorOptions = { + type?: string; + value?: string | number | null | boolean; +}; + +export const getTextColor = ({ type, value }: TextColorOptions) => { + if (value === null) return "var(--node-null)"; + if (type === "object") return "var(--node-key)"; + if (type === "number") return "var(--node-integer)"; + if (value === true) return "var(--node-bool-true)"; + if (value === false) return "var(--node-bool-false)"; + return "var(--node-value)"; +}; diff --git a/packages/jsoncrack-react/src/css-modules.d.ts b/packages/jsoncrack-react/src/css-modules.d.ts new file mode 100644 index 00000000..c65e67a2 --- /dev/null +++ b/packages/jsoncrack-react/src/css-modules.d.ts @@ -0,0 +1,4 @@ +declare module "*.module.css" { + const classes: Record; + export default classes; +} diff --git a/packages/jsoncrack-react/src/index.ts b/packages/jsoncrack-react/src/index.ts new file mode 100644 index 00000000..cf78600f --- /dev/null +++ b/packages/jsoncrack-react/src/index.ts @@ -0,0 +1,12 @@ +export { JsonCrack } from "./JsonCrack"; +export { parseGraph } from "./parser"; +export type { JsonCrackProps, JsonCrackRef } from "./JsonCrack"; +export type { ParseGraphOptions, ParseGraphResult } from "./parser"; +export type { + CanvasThemeMode, + EdgeData, + GraphData, + LayoutDirection, + NodeData, + NodeRow, +} from "./types"; diff --git a/packages/jsoncrack-react/src/parser.ts b/packages/jsoncrack-react/src/parser.ts new file mode 100644 index 00000000..a41efb95 --- /dev/null +++ b/packages/jsoncrack-react/src/parser.ts @@ -0,0 +1,236 @@ +import { getNodePath, parseTree, type Node, type ParseError } from "jsonc-parser"; +import type { EdgeData, GraphData, NodeData, NodeRow } from "./types"; +import { calculateNodeSize } from "./utils/calculateNodeSize"; + +export interface ParseGraphOptions { + imagePreviewEnabled?: boolean; +} + +export interface ParseGraphResult extends GraphData { + errors: ParseError[]; +} + +export const parseGraph = (json: string, options: ParseGraphOptions = {}): ParseGraphResult => { + const parseErrors: ParseError[] = []; + const jsonTree = parseTree(json, parseErrors); + + if (!jsonTree) { + return { + nodes: [], + edges: [], + errors: parseErrors, + }; + } + + const nodes: NodeData[] = []; + const edges: EdgeData[] = []; + let nodeId = 1; + let edgeId = 1; + + function traverse(node: Node, parentId?: string): string | undefined { + const id = String(nodeId++); + const text: NodeRow[] = []; + + if (parentId !== undefined && node.parent?.type === "array") { + edges.push({ + id: String(edgeId++), + from: parentId, + to: id, + text: "", + }); + } + + const isArray = node.type === "array"; + const isRootArray = !node.parent || node.parent.type === "array"; + + if (isArray && isRootArray) { + const { width, height } = calculateNodeSize( + `[${node.children?.length ?? "0"} items]`, + false, + options.imagePreviewEnabled ?? true + ); + + nodes.push({ + id, + text: [ + { + key: null, + value: `[${node.children?.length ?? 0} items]`, + type: "array", + childrenCount: node.children?.length, + }, + ], + width, + height, + path: [], + }); + + node.children?.forEach(child => { + traverse(child, id); + }); + + return id; + } + + node.children?.forEach(child => { + if (!child.children || !child.children[1]) { + traverse(child, id); + return; + } + + const key = child.children[0].value?.toString() ?? null; + const valueNode = child.children[1]; + const type = valueNode.type; + + if (type === "array") { + const targetIds: string[] = []; + + valueNode.children?.forEach(arrayChild => { + const arrayChildId = traverse(arrayChild, undefined); + if (arrayChildId) targetIds.push(arrayChildId); + }); + + text.push({ + key, + value: valueNode.value as NodeRow["value"], + type, + to: targetIds.length > 0 ? targetIds : undefined, + childrenCount: valueNode.children?.length, + }); + + targetIds.forEach(targetId => { + edges.push({ + id: String(edgeId++), + from: id, + to: targetId, + text: key, + }); + }); + } else if (type === "object") { + const objectNodeId = traverse(valueNode, id); + + text.push({ + key, + value: valueNode.value as NodeRow["value"], + type, + childrenCount: Object.keys(valueNode.children ?? {}).length, + ...(objectNodeId && { to: [objectNodeId] }), + }); + + if (objectNodeId) { + edges.push({ + id: String(edgeId++), + from: id, + to: objectNodeId, + text: key, + }); + } + } else { + text.push({ + key, + value: valueNode.value as NodeRow["value"], + type, + }); + } + }); + + if (node.parent?.type === "array" && node.type === "object" && node.children?.length === 0) { + text.push({ + key: null, + value: "{0 keys}", + type: "object", + childrenCount: 0, + }); + } + + const appendParentKey = () => { + const getParentKey = (targetNode: Node) => { + const path = getNodePath(targetNode); + return path?.pop()?.toString(); + }; + + if (!node.parent) { + return { parentKey: getParentKey(node), parentType: node.type }; + } + + if (node.parent.type === "array") { + return { parentKey: getParentKey(node.parent), parentType: "array" }; + } + + if (node.parent.type === "property") { + return { parentKey: getParentKey(node), parentType: "object" }; + } + + return { + parentKey: getParentKey(node), + parentType: node.parent.type.replace("property", "object"), + }; + }; + + if (text.length === 0) { + if (typeof node.value === "undefined") return undefined; + + const { width, height } = calculateNodeSize( + node.value as string | number, + false, + options.imagePreviewEnabled ?? true + ); + + nodes.push({ + id, + text: [ + { + key: null, + value: node.value as NodeRow["value"], + type: node.type, + }, + ], + width, + height, + path: getNodePath(node), + ...appendParentKey(), + }); + } else { + let displayText: string | [string, string][] = ""; + + if (text.some(row => row.key !== null)) { + displayText = text.map(row => { + const keyStr = row.key === null ? "" : row.key; + + if (row.type === "object") return [keyStr, `{${row.childrenCount ?? 0} keys}`]; + if (row.type === "array") return [keyStr, `[${row.childrenCount ?? 0} items]`]; + if (row.value === null) return [keyStr, "null"]; + + return [keyStr, `${row.value}`]; + }); + } else { + displayText = `${text[0].value}`; + } + + const { width, height } = calculateNodeSize( + displayText, + false, + options.imagePreviewEnabled ?? true + ); + + nodes.push({ + id, + text, + width, + height, + path: getNodePath(node), + ...appendParentKey(), + }); + } + + return id; + } + + traverse(jsonTree); + + return { + nodes, + edges, + errors: parseErrors, + }; +}; diff --git a/packages/jsoncrack-react/src/theme.ts b/packages/jsoncrack-react/src/theme.ts new file mode 100644 index 00000000..90cbf5d9 --- /dev/null +++ b/packages/jsoncrack-react/src/theme.ts @@ -0,0 +1,71 @@ +import type { CanvasThemeMode } from "./types"; + +export interface JsonCrackTheme { + NODE_COLORS: { + TEXT: string; + NODE_KEY: string; + NODE_VALUE: string; + INTEGER: string; + NULL: string; + BOOL: { + FALSE: string; + TRUE: string; + }; + CHILD_COUNT: string; + DIVIDER: string; + }; + INTERACTIVE_NORMAL: string; + BACKGROUND_NODE: string; + BACKGROUND_MODIFIER_ACCENT: string; + TEXT_POSITIVE: string; + GRID_BG_COLOR: string; + GRID_COLOR_PRIMARY: string; + GRID_COLOR_SECONDARY: string; +} + +export const themes: Record = { + dark: { + NODE_COLORS: { + TEXT: "#DCE5E7", + NODE_KEY: "#59b8ff", + NODE_VALUE: "#DCE5E7", + INTEGER: "#e8c479", + NULL: "#939598", + BOOL: { + FALSE: "#F85C50", + TRUE: "#00DC7D", + }, + CHILD_COUNT: "#FFFFFF", + DIVIDER: "#383838", + }, + INTERACTIVE_NORMAL: "#b9bbbe", + BACKGROUND_NODE: "#2B2C3E", + BACKGROUND_MODIFIER_ACCENT: "rgba(79,84,92,0.48)", + TEXT_POSITIVE: "hsl(139,calc(var(--saturation-factor, 1)*51.6%),52.2%)", + GRID_BG_COLOR: "#141414", + GRID_COLOR_PRIMARY: "#1c1b1b", + GRID_COLOR_SECONDARY: "#191919", + }, + light: { + NODE_COLORS: { + TEXT: "#000000", + NODE_KEY: "#761CEA", + NODE_VALUE: "#535353", + INTEGER: "#FD0079", + NULL: "#afafaf", + BOOL: { + FALSE: "#FF0000", + TRUE: "#748700", + }, + CHILD_COUNT: "#535353", + DIVIDER: "#e6e6e6", + }, + INTERACTIVE_NORMAL: "#4f5660", + BACKGROUND_NODE: "#F6F8FA", + BACKGROUND_MODIFIER_ACCENT: "rgba(106,116,128,0.24)", + TEXT_POSITIVE: "#008736", + GRID_BG_COLOR: "#f7f7f7", + GRID_COLOR_PRIMARY: "#ebe8e8", + GRID_COLOR_SECONDARY: "#f2eeee", + }, +}; diff --git a/src/types/graph.ts b/packages/jsoncrack-react/src/types.ts similarity index 68% rename from src/types/graph.ts rename to packages/jsoncrack-react/src/types.ts index 428dd646..d361280b 100644 --- a/src/types/graph.ts +++ b/packages/jsoncrack-react/src/types.ts @@ -2,7 +2,7 @@ import type { JSONPath, Node } from "jsonc-parser"; export interface NodeRow { key: string | null; - value: string | number | null; + value: string | number | null | boolean; type: Node["type"]; childrenCount?: number; to?: string[]; @@ -14,6 +14,8 @@ export interface NodeData { width: number; height: number; path?: JSONPath; + parentKey?: string; + parentType?: string; } export interface EdgeData { @@ -23,4 +25,11 @@ export interface EdgeData { text: string | null; } +export interface GraphData { + nodes: NodeData[]; + edges: EdgeData[]; +} + export type LayoutDirection = "LEFT" | "RIGHT" | "DOWN" | "UP"; + +export type CanvasThemeMode = "light" | "dark"; diff --git a/packages/jsoncrack-react/src/utils/calculateNodeSize.ts b/packages/jsoncrack-react/src/utils/calculateNodeSize.ts new file mode 100644 index 00000000..f8ab80a5 --- /dev/null +++ b/packages/jsoncrack-react/src/utils/calculateNodeSize.ts @@ -0,0 +1,98 @@ +const NODE_DIMENSIONS = { + ROW_HEIGHT: 30, + PARENT_HEIGHT: 36, +} as const; + +type Text = number | string | [string, string][]; +type Size = { width: number; height: number }; + +const CACHE_TTL_MS = 120_000; +const sizeCache = new Map(); +let lastCacheClearAt = Date.now(); + +export const isContentImage = (value: Text) => { + if (typeof value !== "string") return false; + + const isImageURL = /(https?:\/\/.*\.(?:png|jpg|jpeg|gif|svg|webp))/i.test(value); + const isBase64 = value.startsWith("data:image/") && value.includes("base64"); + + return isImageURL || isBase64; +}; + +const calculateLines = (text: Text): string => { + if (Array.isArray(text)) { + return text.map(([k, v]) => `${k}: ${JSON.stringify(v).slice(0, 80)}`).join("\n"); + } + + return `${text}`; +}; + +const fallbackSize = (str: string, single: boolean): Size => { + const lines = str.split("\n"); + const longestLine = lines.reduce((max, line) => Math.max(max, line.length), 0); + + return { + width: Math.min(700, Math.max(45, longestLine * 8 + 24)), + height: single ? NODE_DIMENSIONS.PARENT_HEIGHT : lines.length * NODE_DIMENSIONS.ROW_HEIGHT, + }; +}; + +const calculateWidthAndHeight = (str: string, single = false): Size => { + if (!str) return { width: 45, height: 45 }; + + if (typeof document === "undefined") { + return fallbackSize(str, single); + } + + const dummyElement = document.createElement("div"); + dummyElement.style.position = "absolute"; + dummyElement.style.visibility = "hidden"; + dummyElement.style.pointerEvents = "none"; + dummyElement.style.whiteSpace = single ? "nowrap" : "pre-wrap"; + dummyElement.innerText = str; + dummyElement.style.fontSize = "12px"; + dummyElement.style.width = "fit-content"; + dummyElement.style.padding = "0 10px"; + dummyElement.style.fontWeight = "500"; + dummyElement.style.fontFamily = "monospace"; + document.body.appendChild(dummyElement); + + const clientRect = dummyElement.getBoundingClientRect(); + const lines = str.split("\n").length; + + const width = clientRect.width + 4; + const height = single ? NODE_DIMENSIONS.PARENT_HEIGHT : lines * NODE_DIMENSIONS.ROW_HEIGHT; + + document.body.removeChild(dummyElement); + return { width, height }; +}; + +const maybeClearCache = () => { + if (Date.now() - lastCacheClearAt < CACHE_TTL_MS) return; + sizeCache.clear(); + lastCacheClearAt = Date.now(); +}; + +export const calculateNodeSize = (text: Text, isParent = false, imagePreviewEnabled = true) => { + maybeClearCache(); + + const isImage = isContentImage(text) && imagePreviewEnabled; + const cacheKey = `${JSON.stringify(text)}-${isParent}-${imagePreviewEnabled}`; + + const cached = sizeCache.get(cacheKey); + if (cached) return cached; + + const lines = calculateLines(text); + const sizes = calculateWidthAndHeight(lines, typeof text === "string"); + + if (isImage) { + sizes.width = 80; + sizes.height = 80; + } + + if (isParent) sizes.width += 80; + if (sizes.width > 700) sizes.width = 700; + + sizeCache.set(cacheKey, sizes); + return sizes; +}; diff --git a/packages/jsoncrack-react/tsconfig.build.json b/packages/jsoncrack-react/tsconfig.build.json new file mode 100644 index 00000000..d431320f --- /dev/null +++ b/packages/jsoncrack-react/tsconfig.build.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "ES2020", + "lib": ["DOM", "ES2020"], + "module": "ESNext", + "moduleResolution": "Bundler", + "strict": true, + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "dist", + "rootDir": "src", + "jsx": "react-jsx", + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true + }, + "include": ["src"] +} diff --git a/packages/jsoncrack-react/tsconfig.json b/packages/jsoncrack-react/tsconfig.json new file mode 100644 index 00000000..11954826 --- /dev/null +++ b/packages/jsoncrack-react/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.build.json", + "compilerOptions": { + "noEmit": true + }, + "include": ["src"], + "exclude": ["dist", "node_modules"] +} diff --git a/packages/jsoncrack-react/vite.config.ts b/packages/jsoncrack-react/vite.config.ts new file mode 100644 index 00000000..ded85fcc --- /dev/null +++ b/packages/jsoncrack-react/vite.config.ts @@ -0,0 +1,27 @@ +import react from "@vitejs/plugin-react"; +import { resolve } from "node:path"; +import { defineConfig } from "vite"; + +export default defineConfig({ + plugins: [react()], + build: { + lib: { + entry: resolve(__dirname, "src/index.ts"), + formats: ["es"], + fileName: "index", + }, + rollupOptions: { + external: [ + "react", + "react-dom", + "react/jsx-runtime", + "reaflow", + "react-zoomable-ui", + "jsonc-parser", + ], + output: { + assetFileNames: "index[extname]", + }, + }, + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d25d621b..11c1c61b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,8 @@ settings: excludeLinksFromLockfile: false overrides: + react: 19.2.4 + react-dom: 19.2.4 '@types/react': 19.2.11 '@types/react-dom': 19.2.3 html-to-image: 1.11.11 @@ -13,6 +15,100 @@ overrides: importers: .: + devDependencies: + turbo: + specifier: ^2.8.8 + version: 2.8.8 + + apps/vscode: + dependencies: + jsoncrack-react: + specifier: workspace:* + version: link:../../packages/jsoncrack-react + react: + specifier: 19.2.4 + version: 19.2.4 + react-dom: + specifier: 19.2.4 + version: 19.2.4(react@19.2.4) + devDependencies: + '@babel/plugin-proposal-private-property-in-object': + specifier: ^7.21.11 + version: 7.21.11(@babel/core@7.29.0) + '@mantine/code-highlight': + specifier: ^7.16.2 + version: 7.17.8(@mantine/core@7.17.8(@mantine/hooks@7.17.8(react@19.2.4))(@types/react@19.2.11)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@7.17.8(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mantine/core': + specifier: ^7.16.2 + version: 7.17.8(@mantine/hooks@7.17.8(react@19.2.4))(@types/react@19.2.11)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mantine/hooks': + specifier: ^7.16.2 + version: 7.17.8(react@19.2.4) + '@trivago/prettier-plugin-sort-imports': + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.1) + '@types/node': + specifier: 16.x + version: 16.18.126 + '@types/react': + specifier: 19.2.11 + version: 19.2.11 + '@types/react-dom': + specifier: 19.2.3 + version: 19.2.3(@types/react@19.2.11) + '@types/vscode': + specifier: ^1.86.0 + version: 1.109.0 + '@types/webpack-env': + specifier: ^1.18.5 + version: 1.18.8 + '@typescript-eslint/eslint-plugin': + specifier: ^5.31.0 + version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/parser': + specifier: ^5.31.0 + version: 5.62.0(eslint@8.57.1)(typescript@5.9.3) + eslint: + specifier: ^8.20.0 + version: 8.57.1 + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.2(eslint@8.57.1) + eslint-plugin-prettier: + specifier: ^5.2.1 + version: 5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@9.1.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.8.1) + eslint-plugin-unused-imports: + specifier: ^4.1.4 + version: 4.4.1(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1) + nodemon: + specifier: ^2.0.20 + version: 2.0.22 + prettier: + specifier: ^3.3.3 + version: 3.8.1 + react-scripts: + specifier: ^5.0.1 + version: 5.0.1(@babel/plugin-syntax-flow@7.28.6(@babel/core@7.29.0))(@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0))(@types/babel__core@7.20.5)(eslint@8.57.1)(react@19.2.4)(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3))(type-fest@4.41.0)(typescript@5.9.3)(webpack-cli@5.1.4) + rewire: + specifier: ^7.0.0 + version: 7.0.0 + ts-loader: + specifier: ^9.5.1 + version: 9.5.4(typescript@5.9.3)(webpack@5.105.2) + typescript: + specifier: ^5.6.3 + version: 5.9.3 + vsce: + specifier: ^2.15.0 + version: 2.15.0 + webpack: + specifier: ^5.95.0 + version: 5.105.2(webpack-cli@5.1.4) + webpack-cli: + specifier: ^5.1.4 + version: 5.1.4(webpack-dev-server@4.15.2)(webpack@5.105.2) + + apps/www: dependencies: '@mantine/code-highlight': specifier: ^8.3.14 @@ -28,7 +124,7 @@ importers: version: 8.3.14(react@19.2.4) '@monaco-editor/react': specifier: ^4.7.0 - version: 4.7.0(monaco-editor@0.52.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 4.7.0(monaco-editor@0.55.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) allotment: specifier: ^1.20.5 version: 1.20.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -59,6 +155,9 @@ importers: jsonc-parser: specifier: 3.3.1 version: 3.3.1 + jsoncrack-react: + specifier: workspace:* + version: link:../../packages/jsoncrack-react jsonpath-plus: specifier: 10.3.0 version: 10.3.0 @@ -67,16 +166,16 @@ importers: version: 4.0.8 next: specifier: 16.1.6 - version: 16.1.6(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) next-seo: specifier: ^7.1.0 - version: 7.1.0(next@16.1.6(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4) + version: 7.1.0(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4) next-sitemap: specifier: ^4.2.3 - version: 4.2.3(next@16.1.6(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) + version: 4.2.3(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) nextjs-google-analytics: specifier: ^2.3.7 - version: 2.3.7(next@16.1.6(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4) + version: 2.3.7(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4) react: specifier: 19.2.4 version: 19.2.4 @@ -106,13 +205,16 @@ importers: version: 3.22.0 styled-components: specifier: ^6.3.8 - version: 6.3.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 6.3.9(react-dom@19.2.4(react@19.2.4))(react@19.2.4) use-long-press: specifier: ^3.3.0 version: 3.3.0(react@19.2.4) + use-sync-external-store: + specifier: ^1.6.0 + version: 1.6.0(react@19.2.4) zustand: specifier: ^5.0.11 - version: 5.0.11(@types/react@19.2.11)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)) + version: 5.0.11(@types/react@19.2.11)(immer@9.0.21)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)) devDependencies: '@eslint/eslintrc': specifier: ^3.2.0 @@ -131,7 +233,7 @@ importers: version: 4.0.9 '@types/node': specifier: ^25.2.0 - version: 25.2.0 + version: 25.2.3 '@types/react': specifier: 19.2.11 version: 19.2.11 @@ -140,34 +242,108 @@ importers: version: 19.2.3(@types/react@19.2.11) '@typescript-eslint/eslint-plugin': specifier: ^8.54.0 - version: 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + version: 8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) eslint: specifier: ^9.39.2 - version: 9.39.2 + version: 9.39.2(jiti@1.21.7) eslint-config-next: specifier: 16.1.6 - version: 16.1.6(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + version: 16.1.6(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.39.2) + version: 10.1.8(eslint@9.39.2(jiti@1.21.7)) eslint-plugin-prettier: specifier: ^5.5.5 - version: 5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.2))(eslint@9.39.2)(prettier@3.8.1) + version: 5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@1.21.7)))(eslint@9.39.2(jiti@1.21.7))(prettier@3.8.1) eslint-plugin-unused-imports: specifier: ^4.3.0 - version: 4.3.0(@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2) + version: 4.4.1(@typescript-eslint/eslint-plugin@8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.2(jiti@1.21.7)) prettier: specifier: ^3.8.1 version: 3.8.1 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@25.2.0)(typescript@5.9.3) + version: 10.9.2(@types/node@25.2.3)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 + packages/jsoncrack-react: + dependencies: + jsonc-parser: + specifier: ^3.3.1 + version: 3.3.1 + react: + specifier: 19.2.4 + version: 19.2.4 + react-dom: + specifier: 19.2.4 + version: 19.2.4(react@19.2.4) + react-zoomable-ui: + specifier: ^0.11.0 + version: 0.11.0(react@19.2.4) + reaflow: + specifier: 5.4.1 + version: 5.4.1(@emotion/is-prop-valid@1.4.0)(@types/react@19.2.11)(prop-types@15.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + devDependencies: + '@eslint/eslintrc': + specifier: ^3.2.0 + version: 3.3.3 + '@eslint/js': + specifier: ^9.39.2 + version: 9.39.2 + '@trivago/prettier-plugin-sort-imports': + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.1) + '@types/react': + specifier: 19.2.11 + version: 19.2.11 + '@types/react-dom': + specifier: 19.2.3 + version: 19.2.3(@types/react@19.2.11) + '@typescript-eslint/eslint-plugin': + specifier: ^8.54.0 + version: 8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/parser': + specifier: ^8.54.0 + version: 8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) + '@vitejs/plugin-react': + specifier: ^4.3.0 + version: 4.7.0(vite@6.4.1(@types/node@25.2.3)(jiti@1.21.7)(terser@5.46.0)) + eslint: + specifier: ^9.39.2 + version: 9.39.2(jiti@1.21.7) + eslint-config-prettier: + specifier: ^10.1.8 + version: 10.1.8(eslint@9.39.2(jiti@1.21.7)) + eslint-plugin-prettier: + specifier: ^5.5.5 + version: 5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@1.21.7)))(eslint@9.39.2(jiti@1.21.7))(prettier@3.8.1) + eslint-plugin-unused-imports: + specifier: ^4.3.0 + version: 4.4.1(@typescript-eslint/eslint-plugin@8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.2(jiti@1.21.7)) + prettier: + specifier: ^3.8.1 + version: 3.8.1 + typescript: + specifier: ^5.9.3 + version: 5.9.3 + vite: + specifier: ^6.0.0 + version: 6.4.1(@types/node@25.2.3)(jiti@1.21.7)(terser@5.46.0) + packages: + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@apideck/better-ajv-errors@0.3.6': + resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} + engines: {node: '>=10'} + peerDependencies: + ajv: '>=8' + '@babel/code-frame@7.29.0': resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} @@ -180,18 +356,66 @@ packages: resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} + '@babel/eslint-parser@7.28.6': + resolution: {integrity: sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 + + '@babel/generator@7.17.7': + resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.29.1': resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.28.6': resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} engines: {node: '>=6.9.0'} + '@babel/helper-create-class-features-plugin@7.28.6': + resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.28.5': + resolution: {integrity: sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.6': + resolution: {integrity: sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-environment-visitor@7.24.7': + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-function-name@7.24.7': + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} + engines: {node: '>=6.9.0'} + '@babel/helper-globals@7.28.0': resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} + '@babel/helper-hoist-variables@7.24.7': + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.28.5': + resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.28.6': resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} @@ -202,6 +426,34 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.28.6': + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.27.1': + resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.28.6': + resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-split-export-declaration@7.24.7': + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -214,6 +466,10 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} + '@babel/helper-wrap-function@7.28.6': + resolution: {integrity: sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==} + engines: {node: '>=6.9.0'} + '@babel/helpers@7.28.6': resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} engines: {node: '>=6.9.0'} @@ -223,6 +479,594 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5': + resolution: {integrity: sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1': + resolution: {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': + resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': + resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6': + resolution: {integrity: sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-class-properties@7.18.6': + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-decorators@7.29.0': + resolution: {integrity: sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-numeric-separator@7.18.6': + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-optional-chaining@7.21.0': + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-methods@7.18.6': + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-property-in-object@7.21.11': + resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-decorators@7.28.6': + resolution: {integrity: sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-flow@7.28.6': + resolution: {integrity: sha512-D+OrJumc9McXNEBI/JmFnc/0uCM2/Y3PEBG3gfV3QIYkKv5pvnpzFrl1kYCrcHJP8nOeFB/SHi1IHz29pNGuew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.28.6': + resolution: {integrity: sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.28.6': + resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.28.6': + resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.28.6': + resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.27.1': + resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.29.0': + resolution: {integrity: sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.28.6': + resolution: {integrity: sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.27.1': + resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.28.6': + resolution: {integrity: sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.28.6': + resolution: {integrity: sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.28.6': + resolution: {integrity: sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.28.6': + resolution: {integrity: sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.28.6': + resolution: {integrity: sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.28.5': + resolution: {integrity: sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.28.6': + resolution: {integrity: sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.27.1': + resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0': + resolution: {integrity: sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.27.1': + resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-explicit-resource-management@7.28.6': + resolution: {integrity: sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.28.6': + resolution: {integrity: sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.27.1': + resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-flow-strip-types@7.27.1': + resolution: {integrity: sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.27.1': + resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.27.1': + resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.28.6': + resolution: {integrity: sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.27.1': + resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.28.6': + resolution: {integrity: sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.27.1': + resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.27.1': + resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.28.6': + resolution: {integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.29.0': + resolution: {integrity: sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.27.1': + resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.29.0': + resolution: {integrity: sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.27.1': + resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6': + resolution: {integrity: sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.28.6': + resolution: {integrity: sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.28.6': + resolution: {integrity: sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.27.1': + resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.28.6': + resolution: {integrity: sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.28.6': + resolution: {integrity: sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.27.7': + resolution: {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.28.6': + resolution: {integrity: sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.28.6': + resolution: {integrity: sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.27.1': + resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-constant-elements@7.27.1': + resolution: {integrity: sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-display-name@7.28.0': + resolution: {integrity: sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-development@7.27.1': + resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-self@7.27.1': + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.27.1': + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx@7.28.6': + resolution: {integrity: sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-pure-annotations@7.27.1': + resolution: {integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.29.0': + resolution: {integrity: sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.28.6': + resolution: {integrity: sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.27.1': + resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-runtime@7.29.0': + resolution: {integrity: sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.27.1': + resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.28.6': + resolution: {integrity: sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.27.1': + resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.27.1': + resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.27.1': + resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.28.6': + resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.27.1': + resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.28.6': + resolution: {integrity: sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.27.1': + resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.28.6': + resolution: {integrity: sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.29.0': + resolution: {integrity: sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/preset-react@7.28.5': + resolution: {integrity: sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.28.5': + resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/runtime@7.28.6': resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} engines: {node: '>=6.9.0'} @@ -231,14 +1075,25 @@ packages: resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.23.2': + resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.29.0': resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} + '@babel/types@7.17.0': + resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} + engines: {node: '>=6.9.0'} + '@babel/types@7.29.0': resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@corex/deepmerge@4.0.43': resolution: {integrity: sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ==} @@ -246,6 +1101,99 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} + '@csstools/normalize.css@12.1.1': + resolution: {integrity: sha512-YAYeJ+Xqh7fUou1d1j9XHl44BmsuThiTr4iNrgCQ3J27IbhXsxXDGZ1cXv8Qvs99d4rBbLiSKy3+WZiet32PcQ==} + + '@csstools/postcss-cascade-layers@1.1.1': + resolution: {integrity: sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-color-function@1.1.1': + resolution: {integrity: sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-font-format-keywords@1.0.1': + resolution: {integrity: sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-hwb-function@1.0.2': + resolution: {integrity: sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-ic-unit@1.0.1': + resolution: {integrity: sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-is-pseudo-class@2.0.7': + resolution: {integrity: sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-nested-calc@1.0.0': + resolution: {integrity: sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-normalize-display-values@1.0.1': + resolution: {integrity: sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-oklab-function@1.1.1': + resolution: {integrity: sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-progressive-custom-properties@1.3.0': + resolution: {integrity: sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + + '@csstools/postcss-stepped-value-functions@1.0.1': + resolution: {integrity: sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-text-decoration-shorthand@1.0.0': + resolution: {integrity: sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-trigonometric-functions@1.0.2': + resolution: {integrity: sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==} + engines: {node: ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-unset-value@1.0.2': + resolution: {integrity: sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/selector-specificity@2.2.0': + resolution: {integrity: sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.10 + '@discoveryjs/json-ext@0.5.7': resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} @@ -268,6 +1216,162 @@ packages: '@emotion/unitless@0.10.0': resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.9.1': resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -290,10 +1394,18 @@ packages: resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/eslintrc@3.3.3': resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/js@9.39.2': resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -315,20 +1427,20 @@ packages: '@floating-ui/react-dom@2.1.7': resolution: {integrity: sha512-0tLRojf/1Go2JgEVm+3Frg9A3IW8bJgKgdO0BN5RkF//ufuz2joZM63Npau2ff3J6lUVYgDSNzNkR+aH3IVfjg==} peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + react: 19.2.4 + react-dom: 19.2.4 '@floating-ui/react@0.26.28': resolution: {integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==} peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + react: 19.2.4 + react-dom: 19.2.4 '@floating-ui/react@0.27.17': resolution: {integrity: sha512-LGVZKHwmWGg6MRHjLLgsfyaX2y2aCNgnD1zT/E6B+/h+vxg+nIJUqHPAlTzsHDyqdgEpJ1Np5kxWuFEErXzoGg==} peerDependencies: - react: '>=17.0.0' - react-dom: '>=17.0.0' + react: 19.2.4 + react-dom: 19.2.4 '@floating-ui/utils@0.2.10': resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} @@ -341,10 +1453,19 @@ packages: resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} engines: {node: '>=18.18.0'} + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + '@humanwhocodes/retry@0.4.3': resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} @@ -486,6 +1607,84 @@ packages: cpu: [x64] os: [win32] + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@27.5.1': + resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/console@28.1.3': + resolution: {integrity: sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + + '@jest/core@27.5.1': + resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/environment@27.5.1': + resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/fake-timers@27.5.1': + resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/globals@27.5.1': + resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/reporters@27.5.1': + resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/schemas@28.1.3': + resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + + '@jest/source-map@27.5.1': + resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/test-result@27.5.1': + resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/test-result@28.1.3': + resolution: {integrity: sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + + '@jest/test-sequencer@27.5.1': + resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/transform@27.5.1': + resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/types@27.5.1': + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/types@28.1.3': + resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -496,6 +1695,9 @@ packages: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} @@ -520,6 +1722,9 @@ packages: '@juggle/resize-observer@3.4.0': resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} + '@leichtgewicht/ip-codec@2.0.5': + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + '@ljharb/resumer@0.0.1': resolution: {integrity: sha512-skQiAOrCfO7vRTq53cxznMpks7wS1va95UCidALlOVWqvBAzwPVErwizDwoMqNVMEn1mDq0utxZd02eIrvF1lw==} engines: {node: '>= 0.4'} @@ -528,33 +1733,53 @@ packages: resolution: {integrity: sha512-ajBvlKpWucBB17FuQYUShqpqy8GRgYEpJW0vWJbUu1CV9lWyrDCapy0lScU8T8Z6qn49sSwJB3+M+evYIdGg+A==} engines: {node: '>= 0.4'} + '@mantine/code-highlight@7.17.8': + resolution: {integrity: sha512-KfdLi8MhpoeHiXkLMfuPQz1IDTUjvP2w3hbdx8Oz/hL0o+mbPYfgrU/w/D3ONjVQMoEbPpEL5vSA2eTYCmwVKg==} + peerDependencies: + '@mantine/core': 7.17.8 + '@mantine/hooks': 7.17.8 + react: 19.2.4 + react-dom: 19.2.4 + '@mantine/code-highlight@8.3.14': resolution: {integrity: sha512-7ywMnadaw4O/QG9sQOCIWPZKh6Q97ibyZgkH2cjVNvVbChmZKXIlcHW/QbQJUS84Bs/eGDhnkxwnq78v9w16gQ==} peerDependencies: '@mantine/core': 8.3.14 '@mantine/hooks': 8.3.14 - react: ^18.x || ^19.x - react-dom: ^18.x || ^19.x + react: 19.2.4 + react-dom: 19.2.4 + + '@mantine/core@7.17.8': + resolution: {integrity: sha512-42sfdLZSCpsCYmLCjSuntuPcDg3PLbakSmmYfz5Auea8gZYLr+8SS5k647doVu0BRAecqYOytkX2QC5/u/8VHw==} + peerDependencies: + '@mantine/hooks': 7.17.8 + react: 19.2.4 + react-dom: 19.2.4 '@mantine/core@8.3.14': resolution: {integrity: sha512-ZOxggx65Av1Ii1NrckCuqzluRpmmG+8DyEw24wDom3rmwsPg9UV+0le2QTyI5Eo60LzPfUju1KuEPiUzNABIPg==} peerDependencies: '@mantine/hooks': 8.3.14 - react: ^18.x || ^19.x - react-dom: ^18.x || ^19.x + react: 19.2.4 + react-dom: 19.2.4 '@mantine/dropzone@8.3.14': resolution: {integrity: sha512-+wpsiLMqhyJMRxFj+q+wTZ+xk8VAH/5TBojjFcvt9riDn/ujGYpWZ7j+RFbmRVHOqcG0mkbCVUzCyPywuYjqLQ==} peerDependencies: '@mantine/core': 8.3.14 '@mantine/hooks': 8.3.14 - react: ^18.x || ^19.x - react-dom: ^18.x || ^19.x + react: 19.2.4 + react-dom: 19.2.4 + + '@mantine/hooks@7.17.8': + resolution: {integrity: sha512-96qygbkTjRhdkzd5HDU8fMziemN/h758/EwrFu7TlWrEP10Vw076u+Ap/sG6OT4RGPZYYoHrTlT+mkCZblWHuw==} + peerDependencies: + react: 19.2.4 '@mantine/hooks@8.3.14': resolution: {integrity: sha512-0SbHnGEuHcF2QyjzBBcqidpjNmIb6n7TC3obnhkBToYhUTbMcJSK/8ei/yHtAelridJH4CPeohRlQdc0HajHyQ==} peerDependencies: - react: ^18.x || ^19.x + react: 19.2.4 '@marko19907/string-to-color@1.0.2': resolution: {integrity: sha512-kADXIfypDWoCnqvqAjvgTm7curpHoigUpPVXKQY5fP2hUFfX72xx5H7ga4T7CwdBmIbYrbvU4zU/Al2NWPD+qQ==} @@ -566,8 +1791,8 @@ packages: resolution: {integrity: sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA==} peerDependencies: monaco-editor: '>= 0.25.0 < 1' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: 19.2.4 + react-dom: 19.2.4 '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} @@ -632,6 +1857,9 @@ packages: cpu: [x64] os: [win32] + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -652,6 +1880,32 @@ packages: resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@pmmmwh/react-refresh-webpack-plugin@0.5.17': + resolution: {integrity: sha512-tXDyE1/jzFsHXjhRZQ3hMl0IVhYe5qula43LDWIhVfjp9G/nT5OQY5AORVOrkEGAUltBJOfOWeETbmhm6kHhuQ==} + engines: {node: '>= 10.13'} + peerDependencies: + '@types/webpack': 4.x || 5.x + react-refresh: '>=0.10.0 <1.0.0' + sockjs-client: ^1.4.0 + type-fest: '>=0.17.0 <5.0.0' + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x || 4.x || 5.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} @@ -659,11 +1913,170 @@ packages: resolution: {integrity: sha512-ON5RxiI0r9zNpEKHvxqT8zz3iI4kzc37NzB4t8lfXSWwCEkpzxWY9TB2JAdYp9LC3UW2tN9zxdMnaNBLz4atTw==} peerDependencies: fuse.js: ^6.6.2 - react: '>= 16' + react: 19.2.4 + + '@rolldown/pluginutils@1.0.0-beta.27': + resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} + + '@rollup/plugin-babel@5.3.1': + resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} + engines: {node: '>= 10.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true + + '@rollup/plugin-node-resolve@11.2.1': + resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + + '@rollup/plugin-replace@2.4.2': + resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + + '@rollup/pluginutils@3.1.0': + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + + '@rollup/rollup-android-arm-eabi@4.57.1': + resolution: {integrity: sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.57.1': + resolution: {integrity: sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.57.1': + resolution: {integrity: sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.57.1': + resolution: {integrity: sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.57.1': + resolution: {integrity: sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.57.1': + resolution: {integrity: sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.57.1': + resolution: {integrity: sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.57.1': + resolution: {integrity: sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.57.1': + resolution: {integrity: sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.57.1': + resolution: {integrity: sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.57.1': + resolution: {integrity: sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.57.1': + resolution: {integrity: sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.57.1': + resolution: {integrity: sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.57.1': + resolution: {integrity: sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.57.1': + resolution: {integrity: sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.57.1': + resolution: {integrity: sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.57.1': + resolution: {integrity: sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.57.1': + resolution: {integrity: sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.57.1': + resolution: {integrity: sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openbsd-x64@4.57.1': + resolution: {integrity: sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.57.1': + resolution: {integrity: sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.57.1': + resolution: {integrity: sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.57.1': + resolution: {integrity: sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.57.1': + resolution: {integrity: sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.57.1': + resolution: {integrity: sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==} + cpu: [x64] + os: [win32] '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + '@rushstack/eslint-patch@1.15.0': + resolution: {integrity: sha512-ojSshQPKwVvSMR8yT2L/QtUkV5SXi/IfDiJ4/8d6UbTPjiHVmxZzUAzGD8Tzks1b9+qQkZa0isUOvYObedITaw==} + '@shikijs/core@3.22.0': resolution: {integrity: sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA==} @@ -685,9 +2098,90 @@ packages: '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@sinclair/typebox@0.24.51': + resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} + + '@sinonjs/commons@1.8.6': + resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} + + '@sinonjs/fake-timers@8.1.0': + resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} + + '@surma/rollup-plugin-off-main-thread@2.2.3': + resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} + + '@svgr/babel-plugin-add-jsx-attribute@5.4.0': + resolution: {integrity: sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==} + engines: {node: '>=10'} + + '@svgr/babel-plugin-remove-jsx-attribute@5.4.0': + resolution: {integrity: sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==} + engines: {node: '>=10'} + + '@svgr/babel-plugin-remove-jsx-empty-expression@5.0.1': + resolution: {integrity: sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==} + engines: {node: '>=10'} + + '@svgr/babel-plugin-replace-jsx-attribute-value@5.0.1': + resolution: {integrity: sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==} + engines: {node: '>=10'} + + '@svgr/babel-plugin-svg-dynamic-title@5.4.0': + resolution: {integrity: sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==} + engines: {node: '>=10'} + + '@svgr/babel-plugin-svg-em-dimensions@5.4.0': + resolution: {integrity: sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==} + engines: {node: '>=10'} + + '@svgr/babel-plugin-transform-react-native-svg@5.4.0': + resolution: {integrity: sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==} + engines: {node: '>=10'} + + '@svgr/babel-plugin-transform-svg-component@5.5.0': + resolution: {integrity: sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==} + engines: {node: '>=10'} + + '@svgr/babel-preset@5.5.0': + resolution: {integrity: sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==} + engines: {node: '>=10'} + + '@svgr/core@5.5.0': + resolution: {integrity: sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==} + engines: {node: '>=10'} + + '@svgr/hast-util-to-babel-ast@5.5.0': + resolution: {integrity: sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==} + engines: {node: '>=10'} + + '@svgr/plugin-jsx@5.5.0': + resolution: {integrity: sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==} + engines: {node: '>=10'} + + '@svgr/plugin-svgo@5.5.0': + resolution: {integrity: sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==} + engines: {node: '>=10'} + + '@svgr/webpack@5.5.0': + resolution: {integrity: sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==} + engines: {node: '>=10'} + '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@tootallnate/once@1.1.2': + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} + + '@trivago/prettier-plugin-sort-imports@4.3.0': + resolution: {integrity: sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==} + peerDependencies: + '@vue/compiler-sfc': 3.x + prettier: 2.x - 3.x + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + '@trivago/prettier-plugin-sort-imports@6.0.2': resolution: {integrity: sha512-3DgfkukFyC/sE/VuYjaUUWoFfuVjPK55vOFDsxD56XXynFMCZDYFogH2l/hDfOsQAm1myoU/1xByJ3tWqtulXA==} engines: {node: '>= 20'} @@ -707,6 +2201,10 @@ packages: svelte: optional: true + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + '@tsconfig/node10@1.0.12': resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} @@ -722,12 +2220,78 @@ packages: '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + + '@types/body-parser@1.19.6': + resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} + + '@types/bonjour@3.5.13': + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} + + '@types/connect-history-api-fallback@1.5.4': + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@8.56.12': + resolution: {integrity: sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/estree@0.0.39': + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/express-serve-static-core@4.19.8': + resolution: {integrity: sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==} + + '@types/express-serve-static-core@5.1.1': + resolution: {integrity: sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==} + + '@types/express@4.17.25': + resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/html-minifier-terser@6.1.0': + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} + + '@types/http-errors@2.0.5': + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} + + '@types/http-proxy@1.17.17': + resolution: {integrity: sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + '@types/js-yaml@4.0.9': resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} @@ -743,8 +2307,32 @@ packages: '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - '@types/node@25.2.0': - resolution: {integrity: sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w==} + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/node-forge@1.3.14': + resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} + + '@types/node@16.18.126': + resolution: {integrity: sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==} + + '@types/node@25.2.3': + resolution: {integrity: sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/prettier@2.7.3': + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + + '@types/q@1.5.8': + resolution: {integrity: sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==} + + '@types/qs@6.14.0': + resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} '@types/react-dom@19.2.3': resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} @@ -754,69 +2342,181 @@ packages: '@types/react@19.2.11': resolution: {integrity: sha512-tORuanb01iEzWvMGVGv2ZDhYZVeRMrw453DCSAIn/5yvcSVnMoUMTyf33nQJLahYEnv9xqrTNbgz4qY5EfSh0g==} + '@types/resolve@1.17.1': + resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + + '@types/retry@0.12.0': + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} + + '@types/send@0.17.6': + resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} + + '@types/send@1.2.1': + resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} + + '@types/serve-index@1.9.4': + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} + + '@types/serve-static@1.15.10': + resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} + + '@types/sockjs@0.3.36': + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + '@types/stylis@4.2.7': resolution: {integrity: sha512-VgDNokpBoKF+wrdvhAAfS55OMQpL6QRglwTwNC3kIgBrzZxA4WsFj+2eLfEA/uMUDzBcEhYmjSbwQakn/i3ajA==} + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@typescript-eslint/eslint-plugin@8.54.0': - resolution: {integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==} + '@types/vscode@1.109.0': + resolution: {integrity: sha512-0Pf95rnwEIwDbmXGC08r0B4TQhAbsHQ5UyTIgVgoieDe4cOnf92usuR5dEczb6bTKEp7ziZH4TV1TRGPPCExtw==} + + '@types/webpack-env@1.18.8': + resolution: {integrity: sha512-G9eAoJRMLjcvN4I08wB5I7YofOb/kaJNd5uoCMX+LbKXTPCF+ZIHuqTnFaK9Jz1rgs035f9JUPUhNFtqgucy/A==} + + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@16.0.11': + resolution: {integrity: sha512-sbtvk8wDN+JvEdabmZExoW/HNr1cB7D/j4LT08rMiuikfA7m/JNJg7ATQcgzs34zHnoScDkY0ZRSl29Fkmk36g==} + + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} + + '@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@8.55.0': + resolution: {integrity: sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.54.0 + '@typescript-eslint/parser': ^8.55.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.54.0': - resolution: {integrity: sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==} + '@typescript-eslint/experimental-utils@5.62.0': + resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + + '@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@8.55.0': + resolution: {integrity: sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.54.0': - resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==} + '@typescript-eslint/project-service@8.55.0': + resolution: {integrity: sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.54.0': - resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} + '@typescript-eslint/scope-manager@5.62.0': + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/scope-manager@8.55.0': + resolution: {integrity: sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.54.0': - resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} + '@typescript-eslint/tsconfig-utils@8.55.0': + resolution: {integrity: sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.54.0': - resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} + '@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@8.55.0': + resolution: {integrity: sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.54.0': - resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} + '@typescript-eslint/types@5.62.0': + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/types@8.55.0': + resolution: {integrity: sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.54.0': - resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} + '@typescript-eslint/typescript-estree@5.62.0': + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@8.55.0': + resolution: {integrity: sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.54.0': - resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} + '@typescript-eslint/utils@5.62.0': + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + + '@typescript-eslint/utils@8.55.0': + resolution: {integrity: sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.54.0': - resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} + '@typescript-eslint/visitor-keys@5.62.0': + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/visitor-keys@8.55.0': + resolution: {integrity: sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -917,36 +2617,217 @@ packages: cpu: [x64] os: [win32] + '@vitejs/plugin-react@4.7.0': + resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + + '@webassemblyjs/ast@1.14.1': + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} + + '@webassemblyjs/floating-point-hex-parser@1.13.2': + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} + + '@webassemblyjs/helper-api-error@1.13.2': + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} + + '@webassemblyjs/helper-buffer@1.14.1': + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} + + '@webassemblyjs/helper-numbers@1.13.2': + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} + + '@webassemblyjs/helper-wasm-section@1.14.1': + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} + + '@webassemblyjs/ieee754@1.13.2': + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} + + '@webassemblyjs/leb128@1.13.2': + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} + + '@webassemblyjs/utf8@1.13.2': + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} + + '@webassemblyjs/wasm-edit@1.14.1': + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} + + '@webassemblyjs/wasm-gen@1.14.1': + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} + + '@webassemblyjs/wasm-opt@1.14.1': + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} + + '@webassemblyjs/wasm-parser@1.14.1': + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} + + '@webassemblyjs/wast-printer@1.14.1': + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + + '@webpack-cli/configtest@2.1.1': + resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + + '@webpack-cli/info@2.0.2': + resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + + '@webpack-cli/serve@2.0.5': + resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + webpack-dev-server: '*' + peerDependenciesMeta: + webpack-dev-server: + optional: true + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-globals@6.0.0: + resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} + + acorn-import-phases@1.0.4: + resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} + engines: {node: '>=10.13.0'} + peerDependencies: + acorn: ^8.14.0 + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-walk@7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + acorn-walk@8.3.4: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} + acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} hasBin: true + address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + + adjust-sourcemap-loader@4.0.0: + resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} + engines: {node: '>=8.9'} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@8.18.0: + resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} + allotment@1.20.5: resolution: {integrity: sha512-7i4NT7ieXEyAd5lBrXmE7WHz/e7hRuo97+j+TwrPE85ha6kyFURoc76nom0dWSZ1pTKVEAMJy/+f3/Isfu/41A==} peerDependencies: - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + react: 19.2.4 + react-dom: 19.2.4 + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + + ansi-html@0.0.9: + resolution: {integrity: sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==} + engines: {'0': node >= 0.8.0} + hasBin: true + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + 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==} @@ -961,10 +2842,17 @@ packages: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + array-includes@3.1.9: resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} engines: {node: '>= 0.4'} + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + array.prototype.findlast@1.2.5: resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} engines: {node: '>= 0.4'} @@ -981,6 +2869,10 @@ packages: resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} engines: {node: '>= 0.4'} + array.prototype.reduce@1.0.8: + resolution: {integrity: sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw==} + engines: {node: '>= 0.4'} + array.prototype.tosorted@1.1.4: resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} engines: {node: '>= 0.4'} @@ -989,6 +2881,9 @@ packages: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} @@ -996,10 +2891,27 @@ packages: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + attr-accept@2.2.5: resolution: {integrity: sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ==} engines: {node: '>=4'} + autoprefixer@10.4.24: + resolution: {integrity: sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -1012,16 +2924,119 @@ packages: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} + azure-devops-node-api@11.2.0: + resolution: {integrity: sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==} + + babel-jest@27.5.1: + resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-loader@8.4.1: + resolution: {integrity: sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@27.5.1: + resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + babel-plugin-named-asset-import@0.3.8: + resolution: {integrity: sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==} + peerDependencies: + '@babel/core': ^7.1.0 + + babel-plugin-polyfill-corejs2@0.4.15: + resolution: {integrity: sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.13.0: + resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.14.0: + resolution: {integrity: sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.6: + resolution: {integrity: sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-transform-react-remove-prop-types@0.4.24: + resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} + + babel-preset-current-node-syntax@1.2.0: + resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} + peerDependencies: + '@babel/core': ^7.0.0 || ^8.0.0-0 + + babel-preset-jest@27.5.1: + resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-react-app@10.1.0: + resolution: {integrity: sha512-f9B1xMdnkCIqe+2dHrJsoQFRz7reChaAHE/65SdaykPklQqhme2WaC08oD3is77x9ff98/9EazAKFDZv5rFEQg==} + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + baseline-browser-mapping@2.9.19: resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} hasBin: true + batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + + bfj@7.1.0: + resolution: {integrity: sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==} + engines: {node: '>= 8.0.0'} + + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + body-parser@1.20.4: + resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-scroll-lock-upgrade@1.1.0: resolution: {integrity: sha512-nnfVAS+tB7CS9RaksuHVTpgHWHF7fE/ptIBJnwZrMqImIvWJF1OGcLnMpBhC6qhkx9oelvyxmWXwmIJXCV98Sw==} + bonjour-service@1.3.0: + resolution: {integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -1032,11 +3047,34 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + browser-process-hrtime@1.0.0: + resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + browserslist@4.28.1: resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + calculate-size@1.1.1: resolution: {integrity: sha512-jJZ7pvbQVM/Ss3VO789qpsypN3xmnepg242cejOAslsmlZLYw2dnj7knnNowabQ0Kzabzx56KFTy2Pot/y6FmA==} @@ -1059,42 +3097,132 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + 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'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - caniuse-lite@1.0.30001767: - resolution: {integrity: sha512-34+zUAMhSH+r+9eKmYG+k2Rpt8XttfE4yXAjoZvkAPs15xcYQhyBYdalJ65BzivAvGRMViEjy6oKr/S91loekQ==} + caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + + caniuse-lite@1.0.30001769: + resolution: {integrity: sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==} + + case-sensitive-paths-webpack-plugin@2.4.0: + resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} + engines: {node: '>=4'} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + char-regex@2.0.2: + resolution: {integrity: sha512-cbGOjAptfM2LVmWhwRFHEKTPkLwNddVmuqYZQt895yXwAsWsXObCG+YN4DGQ/JBtT4GP1a1lPPdio2z413LmTg==} + engines: {node: '>=12.20'} + character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} character-entities-legacy@3.0.0: resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + check-types@11.2.3: + resolution: {integrity: sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==} + + cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + + cheerio@1.2.0: + resolution: {integrity: sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==} + engines: {node: '>=20.18.1'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + chroma-js@2.6.0: resolution: {integrity: sha512-BLHvCB9s8Z1EV4ethr6xnkl/P2YRFOGqfgvuMG/MyCbZPrTA+NeiByY6XvgF0zP4/2deU2CXnWyMa3zu1LqQ3A==} + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + classnames@2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} + engines: {node: '>= 10.0'} + client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + coa@2.0.2: + resolution: {integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==} + engines: {node: '>= 4.0'} + + collect-v8-coverage@1.0.3: + resolution: {integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -1105,19 +3233,108 @@ packages: 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==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + 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'} + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.8.1: + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} + engines: {node: '>= 0.8.0'} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + + connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + cookie-signature@1.0.7: + resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + core-js-compat@3.48.0: + resolution: {integrity: sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==} + + core-js-pure@3.48.0: + resolution: {integrity: sha512-1slJgk89tWC51HQ1AEqG+s2VuwpTRr8ocu4n20QUcH1v9lAN0RXen0Q0AABa/DK1I7RrNWLucplOHMx8hfTGTw==} + + core-js@3.48.0: + resolution: {integrity: sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig@6.0.0: + resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} + engines: {node: '>=8'} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + coverup@0.1.1: resolution: {integrity: sha512-Q2Fs0v3M4eMNfj0TGaFb4Oh0yuaQj9EhQbEKtFhD3Tm4HZt1Zn7TrBKX14gVEO9aeWP8KnF2/qrh7fr/rvbcXw==} deprecated: No longer maintained @@ -1132,13 +3349,143 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + + css-blank-pseudo@3.0.3: + resolution: {integrity: sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + css-color-keywords@1.0.0: 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-has-pseudo@3.0.4: + resolution: {integrity: sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + + css-loader@6.11.0: + resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} + engines: {node: '>= 12.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + css-minimizer-webpack-plugin@3.4.1: + resolution: {integrity: sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + '@parcel/css': '*' + clean-css: '*' + csso: '*' + esbuild: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@parcel/css': + optional: true + clean-css: + optional: true + csso: + optional: true + esbuild: + optional: true + + css-prefers-color-scheme@6.0.3: + resolution: {integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + + css-select-base-adapter@0.1.1: + resolution: {integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==} + + css-select@2.1.0: + resolution: {integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==} + + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + css-to-react-native@3.2.0: resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + css-tree@1.0.0-alpha.37: + resolution: {integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==} + engines: {node: '>=8.0.0'} + + css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + + css-what@3.4.2: + resolution: {integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==} + engines: {node: '>= 6'} + + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} + + cssdb@7.11.2: + resolution: {integrity: sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A==} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + 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==} + + cssom@0.4.4: + resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} + + cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} @@ -1157,6 +3504,10 @@ packages: damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + data-urls@2.0.0: + resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} + engines: {node: '>=10'} + data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} @@ -1175,6 +3526,14 @@ packages: debounce@1.2.1: resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -1192,6 +3551,16 @@ packages: supports-color: optional: true + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + deeks@3.1.0: resolution: {integrity: sha512-e7oWH1LzIdv/prMQ7pmlDlaVoL64glqzvNgkgQNgyec9ORPHrT2jaOqMtRyqJuwWjtfb6v+2rk9pmaHj+F137A==} engines: {node: '>= 16'} @@ -1204,9 +3573,21 @@ packages: resolution: {integrity: sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==} engines: {node: '>= 0.4'} + 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==} + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + defaulty@2.1.0: resolution: {integrity: sha512-dNWjHNxL32khAaX/kS7/a3rXsgvqqp7cptqt477wAVnJLgaOKjcQt+53jKgPofn6hL2xyG51MegPlB5TKImXjA==} @@ -1214,6 +3595,10 @@ packages: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} @@ -1221,24 +3606,70 @@ packages: defined@1.0.1: resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + + detect-port-alt@1.1.6: + resolution: {integrity: sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==} + engines: {node: '>= 4.2.1'} + hasBin: true + devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + diff-sequences@27.5.1: + resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + diff@4.0.4: resolution: {integrity: sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==} engines: {node: '>=0.3.1'} + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + doc-path@4.1.1: resolution: {integrity: sha512-h1ErTglQAVv2gCnOpD3sFS6uolDbOKHDU1BZq+Kl3npPqroU3dYL42lUgMfd5UimlwtRgp7C9dLGwqQ5D2HYgQ==} engines: {node: '>=16'} @@ -1247,6 +3678,63 @@ packages: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-converter@0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + + 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==} + + domelementtype@1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domexception@2.0.1: + resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} + engines: {node: '>=8'} + deprecated: Use your platform's native DOMException instead + + 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'} + + dompurify@3.2.7: + resolution: {integrity: sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==} + + domutils@1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + dotenv-expand@5.1.0: + resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} + + dotenv@10.0.0: + resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} + engines: {node: '>=10'} + dotignore@0.1.2: resolution: {integrity: sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==} hasBin: true @@ -1258,6 +3746,14 @@ packages: duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + electron-to-chromium@1.5.286: resolution: {integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==} @@ -1270,13 +3766,74 @@ packages: ellipsize@0.5.1: resolution: {integrity: sha512-0jEAyuIRU6U8MN0S5yUqIrkK/AQWkChh642N3zQuGV57s9bsUWYLc0jJOoDIUkZ2sbEL3ySq8xfq71BvG4q3hw==} + emittery@0.10.2: + resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} + engines: {node: '>=12'} + + emittery@0.8.1: + resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} + engines: {node: '>=10'} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + encoding-sniffer@0.2.1: + resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + enhanced-resolve@5.19.0: + resolution: {integrity: sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==} + engines: {node: '>=10.13.0'} + + entities@2.1.0: + resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + + envinfo@7.21.0: + resolution: {integrity: sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==} + engines: {node: '>=4'} + hasBin: true + + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + es-abstract@1.24.1: resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} engines: {node: '>= 0.4'} + es-array-method-boxes-properly@1.0.0: + resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -1289,6 +3846,9 @@ packages: resolution: {integrity: sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==} engines: {node: '>= 0.4'} + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -1305,14 +3865,35 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + eslint-config-next@16.1.6: resolution: {integrity: sha512-vKq40io2B0XtkkNDYyleATwblNt8xuh3FWp8SpSz3pt7P01OkBFlKsJZ2mWt5WsCySlDQLckb1zMY9yE9Qy0LA==} peerDependencies: @@ -1328,6 +3909,22 @@ packages: peerDependencies: eslint: '>=7.0.0' + eslint-config-prettier@9.1.2: + resolution: {integrity: sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-config-react-app@7.0.1: + resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} + engines: {node: '>=14.0.0'} + peerDependencies: + eslint: ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} @@ -1365,6 +3962,14 @@ packages: eslint-import-resolver-webpack: optional: true + eslint-plugin-flowtype@8.0.3: + resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@babel/plugin-syntax-flow': ^7.14.5 + '@babel/plugin-transform-react-jsx': ^7.14.9 + eslint: ^8.1.0 + eslint-plugin-import@2.32.0: resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} engines: {node: '>=4'} @@ -1375,6 +3980,19 @@ packages: '@typescript-eslint/parser': optional: true + eslint-plugin-jest@25.7.0: + resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^4.0.0 || ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + eslint-plugin-jsx-a11y@6.10.2: resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} engines: {node: '>=4.0'} @@ -1395,6 +4013,12 @@ packages: eslint-config-prettier: optional: true + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + eslint-plugin-react-hooks@7.0.1: resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==} engines: {node: '>=18'} @@ -1407,19 +4031,37 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-plugin-unused-imports@4.3.0: - resolution: {integrity: sha512-ZFBmXMGBYfHttdRtOG9nFFpmUvMtbHSjsKrS20vdWdbfiVYsO3yA2SGYy9i9XmZJDfMGBflZGBCm70SEnFQtOA==} + eslint-plugin-testing-library@5.11.1: + resolution: {integrity: sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} + peerDependencies: + eslint: ^7.5.0 || ^8.0.0 + + eslint-plugin-unused-imports@4.4.1: + resolution: {integrity: sha512-oZGYUz1X3sRMGUB+0cZyK2VcvRX5lm/vB56PgNNcU+7ficUCKm66oZWKUubXWnOuPjQ8PvmXtCViXBMONPe7tQ==} peerDependencies: '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 - eslint: ^9.0.0 || ^8.0.0 + eslint: ^10.0.0 || ^9.0.0 || ^8.0.0 peerDependenciesMeta: '@typescript-eslint/eslint-plugin': optional: true + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@8.4.0: resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1428,6 +4070,19 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-webpack-plugin@3.2.0: + resolution: {integrity: sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==} + engines: {node: '>= 12.13.0'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + webpack: ^5.0.0 + + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + eslint@9.39.2: resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1445,6 +4100,15 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@1.2.5: + resolution: {integrity: sha512-S9VbPDU0adFErpDai3qDkjq8+G05ONtKzcyNrPKg/ZKa+tf879nX2KexNU95b31UoTJjRLInNBHHHjFPoCd7lQ==} + engines: {node: '>=0.4.0'} + hasBin: true + esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -1458,17 +4122,55 @@ packages: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + estree-walker@1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + eventemitter3@5.0.4: resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + exit@0.1.2: + 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@27.5.1: + resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + express@4.22.1: + resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==} + engines: {node: '>= 0.10.0'} + fast-deep-equal@1.1.0: resolution: {integrity: sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw==} @@ -1492,13 +4194,30 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fast-xml-parser@5.3.4: resolution: {integrity: sha512-EFd6afGmXlCx8H8WTZHhAoDaWaGyuIBoZJ2mknrNxug+aZKjkp0a0dlars9Izl+jF+7Gu1/5f/2h68cQpe0IiA==} hasBin: true + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -1508,26 +4227,67 @@ packages: picomatch: optional: true + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} + file-loader@6.2.0: + resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + file-selector@2.1.2: resolution: {integrity: sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig==} engines: {node: '>= 12'} + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + filesize@8.0.7: + resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==} + engines: {node: '>= 0.4.0'} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + finalhandler@1.3.2: + resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} + engines: {node: '>= 0.8'} + + find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} @@ -1535,25 +4295,59 @@ packages: resolution: {integrity: sha512-PN4Ya9xf9nyj/Nd9VxBNMuD7IrlRbmaG6POAQ8VLqgtc6IY/Ln1tYakow+UIq4fihYYYFM70/2oyidE6bbiPgw==} peerDependencies: prop-types: ^15.8.1 - react: '>=16.3.0' - react-dom: '>=16.3.0' + react: 19.2.4 + react-dom: 19.2.4 focus-trap@7.8.0: resolution: {integrity: sha512-/yNdlIkpWbM0ptxno3ONTuf+2g318kh2ez3KSeZN5dZ8YC6AAmgeWz+GasYYiBJPFaYcSAPeu4GfhUaChzIJXA==} + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} + fork-ts-checker-webpack-plugin@6.5.3: + resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + + form-data@3.0.4: + resolution: {integrity: sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==} + engines: {node: '>= 6'} + format-util@1.0.5: resolution: {integrity: sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==} - framer-motion@12.31.0: - resolution: {integrity: sha512-Tnd0FU05zGRFI3JJmBegXonF1rfuzYeuXd1QSdQ99Ysnppk0yWBWSW2wUsqzRpS5nv0zPNx+y0wtDj4kf0q5RQ==} + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} + + framer-motion@12.34.0: + resolution: {integrity: sha512-+/H49owhzkzQyxtn7nZeF4kdH++I2FWrESQ184Zbcw5cEqNHYkE5yxWxcTLSj5lNx3NWdbIRy5FHqUvetD8FWg==} peerDependencies: '@emotion/is-prop-valid': '*' - react: ^18.0.0 || ^19.0.0 - react-dom: ^18.0.0 || ^19.0.0 + react: 19.2.4 + react-dom: 19.2.4 peerDependenciesMeta: '@emotion/is-prop-valid': optional: true @@ -1562,6 +4356,24 @@ packages: react-dom: optional: true + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fs-monkey@1.1.0: + resolution: {integrity: sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==} + fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -1592,6 +4404,10 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -1600,16 +4416,30 @@ packages: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} + get-own-enumerable-property-symbols@3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + get-proto@1.0.1: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + get-symbol-description@1.1.0: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.13.1: - resolution: {integrity: sha512-EoY1N2xCn44xU6750Sx7OjOIT59FkmstNc3X6y5xpz7D5cBtZRe/3pSlTkDJgqsOk3WwZPkWfonhhUJfttQo3w==} + get-tsconfig@4.13.6: + resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} + + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -1619,10 +4449,29 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -1635,6 +4484,10 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + gofmt.js@0.0.2: resolution: {integrity: sha512-79B7Ja5UBfWfEFutuvrQtJp2nVdiyrskFjH/66rdun2y74DENfxrfdzXTQS2QFgeSHGWOrgR9eJGrsszu8RWXA==} @@ -1647,6 +4500,12 @@ packages: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + gzip-size@6.0.0: resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} engines: {node: '>=10'} @@ -1655,10 +4514,20 @@ packages: resolution: {integrity: sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==} engines: {node: '>=0.8.0'} + handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + + harmony-reflect@1.6.2: + resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} + has-bigints@1.1.0: resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -1692,6 +4561,10 @@ packages: hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + hermes-estree@0.25.1: resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} @@ -1701,19 +4574,130 @@ packages: highlight-words-core@1.2.3: resolution: {integrity: sha512-m1O9HW3/GNHxzSIXWw1wCNXXsgLlxrP0OI6+ycGUhiUHkikqW3OrwVHz+lxeNBe5yqLESdIcj8PowHQ2zLvUvQ==} + highlight.js@11.11.1: + resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==} + engines: {node: '>=12.0.0'} + + hoopy@0.1.4: + resolution: {integrity: sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==} + engines: {node: '>= 6.0.0'} + + hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + + hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + + html-encoding-sniffer@2.0.1: + resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} + engines: {node: '>=10'} + + html-entities@2.6.0: + resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} + html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + html-to-image@1.11.11: resolution: {integrity: sha512-9gux8QhvjRO/erSnDPv28noDZcPZmYE7e1vFsBLKLlRlKDSqNJYebj6Qz1TGd5lsRV+X+xYyjCKjuZdABinWjA==} html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + html-webpack-plugin@5.6.6: + resolution: {integrity: sha512-bLjW01UTrvoWTJQL5LsMRo1SypHW80FTm12OJRSnr3v6YHNhfe+1r0MYUZJMACxnCHURVnBWRwAsWs2yPU9Ezw==} + engines: {node: '>=10.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.20.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + htmlparser2@10.1.0: + resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==} + + htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + + http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + + http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + + http-parser-js@0.5.10: + resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} + + http-proxy-agent@4.0.1: + resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + engines: {node: '>= 6'} + + http-proxy-middleware@2.0.9: + resolution: {integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + human-format@1.2.1: resolution: {integrity: sha512-o5Ldz62VWR5lYUZ8aVQaLKiN37NsHnmk3xjMoUjza3mGkk8MvMofgZT0T6HKSCKSJIir+AWk9Dx8KhxvZAUgCg==} engines: {node: '>=4'} + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + idb@7.1.1: + resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} + + identity-obj-proxy@3.0.0: + resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} + engines: {node: '>=4'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore-by-default@1.0.1: + resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -1722,10 +4706,18 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} + immer@9.0.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -1737,10 +4729,25 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} + interpret@3.1.1: + resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} + engines: {node: '>=10.13.0'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + ipaddr.js@2.3.0: + resolution: {integrity: sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==} + engines: {node: '>= 10'} + is-arguments@1.2.0: resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} engines: {node: '>= 0.4'} @@ -1749,6 +4756,9 @@ packages: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-arrayish@0.3.4: resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} @@ -1760,6 +4770,10 @@ packages: resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} engines: {node: '>= 0.4'} + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + is-boolean-object@1.2.2: resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} @@ -1783,6 +4797,11 @@ packages: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -1791,6 +4810,14 @@ packages: resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} engines: {node: '>= 0.4'} + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + is-generator-function@1.1.2: resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} engines: {node: '>= 0.4'} @@ -1803,6 +4830,9 @@ packages: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} @@ -1815,10 +4845,29 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-obj@1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -1827,6 +4876,14 @@ packages: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} + is-regexp@1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + + is-root@2.1.0: + resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} + engines: {node: '>=6'} + is-set@2.0.3: resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} engines: {node: '>= 0.4'} @@ -1835,6 +4892,10 @@ packages: resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + is-string@1.1.1: resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} @@ -1847,6 +4908,9 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + is-weakmap@2.0.2: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} @@ -1859,19 +4923,227 @@ packages: resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} + engines: {node: '>=8'} + iterator.prototype@1.1.5: resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} engines: {node: '>= 0.4'} + jake@10.9.4: + resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} + engines: {node: '>=10'} + hasBin: true + javascript-natural-sort@0.7.1: resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} + jest-changed-files@27.5.1: + resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-circus@27.5.1: + resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-cli@27.5.1: + resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@27.5.1: + resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + + jest-diff@27.5.1: + resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-docblock@27.5.1: + resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-each@27.5.1: + resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-environment-jsdom@27.5.1: + resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-environment-node@27.5.1: + resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-get-type@27.5.1: + resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-haste-map@27.5.1: + resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-jasmine2@27.5.1: + resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-leak-detector@27.5.1: + resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-matcher-utils@27.5.1: + resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-message-util@27.5.1: + resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-message-util@28.1.3: + resolution: {integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + + jest-mock@27.5.1: + resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@27.5.1: + resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-regex-util@28.0.2: + resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + + jest-resolve-dependencies@27.5.1: + resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-resolve@27.5.1: + resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-runner@27.5.1: + resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-runtime@27.5.1: + resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-serializer@27.5.1: + resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-snapshot@27.5.1: + resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-util@27.5.1: + resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-util@28.1.3: + resolution: {integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + + jest-validate@27.5.1: + resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-watch-typeahead@1.1.0: + resolution: {integrity: sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + jest: ^27.0.0 || ^28.0.0 + + jest-watcher@27.5.1: + resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-watcher@28.1.3: + resolution: {integrity: sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + + jest-worker@26.6.2: + resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} + engines: {node: '>= 10.13.0'} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jest-worker@28.1.3: + resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + + jest@27.5.1: + resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + jq-web@0.5.1: resolution: {integrity: sha512-3Fa3E6g3U1O1j46ljy0EM10yRr4txzILga8J7bqOG8F89gZ6Lilz82WG9z6TItWpYEO0YGa4W8yFGj+NMM1xqQ==} @@ -1886,10 +5158,24 @@ packages: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true + jsdom@16.7.0: + resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} + engines: {node: '>=10'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + jsep@1.4.0: resolution: {integrity: sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==} engines: {node: '>= 10.16.0'} + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -1902,6 +5188,9 @@ packages: json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-schema-faker@0.5.9: resolution: {integrity: sha512-fNKLHgDvfGNNTX1zqIjqFMJjCLzJ2kvnJ831x4aqkAoeE4jE2TxvpJdhOnk3JU3s42vFzmXvkpbYzH5H3ncAzg==} hasBin: true @@ -1913,6 +5202,12 @@ packages: json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -1931,18 +5226,35 @@ packages: jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + jsonpath-plus@10.3.0: resolution: {integrity: sha512-8TNmfeTCk2Le33A3vRRwtuworG/L5RrgMvdjhKZxvyShO+mBu2fP50OWUjRLNtvw344DdDarFh9buFAZs5ujeA==} engines: {node: '>=18.0.0'} hasBin: true + jsonpath@1.2.1: + resolution: {integrity: sha512-Jl6Jhk0jG+kP3yk59SSeGq7LFPR4JQz1DU0K+kXTysUhMostbhU3qh5mjTuf0PqFcXpAT7kvmMt9WxV10NyIgQ==} + + jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} + keytar@7.9.0: + resolution: {integrity: sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + kld-affine@2.1.1: resolution: {integrity: sha512-NIS9sph8ZKdnQxZa5TcggaFs/Qr9zX3brFlGwE0+0Z4EzFIvAFuqLSwNeU4GkEpaX8ndh3ggGmWV7BPPcS3vjQ==} engines: {node: '>= 10.15.3'} @@ -1959,6 +5271,14 @@ packages: resolution: {integrity: sha512-PEfxjQ6tsxL9DHBIhM2UZsSes0GI+OIMjbE0kj60jr80Biq/xXl1eGfnyzmfoackAMdKZtw2060L09HdjkPP5w==} engines: {node: '>= 10.15.3'} + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + klona@2.0.6: + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} + language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} @@ -1966,10 +5286,51 @@ packages: resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} engines: {node: '>=0.10'} + launch-editor@2.12.0: + resolution: {integrity: sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + linkify-it@3.0.3: + resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} + + loader-runner@4.3.1: + resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} + engines: {node: '>=6.11.5'} + + loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + + loader-utils@3.3.1: + resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} + engines: {node: '>= 12.13.0'} + + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -1983,19 +5344,61 @@ packages: lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash@4.17.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + markdown-it@12.3.2: + resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} + hasBin: true + + marked@14.0.0: + resolution: {integrity: sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==} + engines: {node: '>= 18'} + hasBin: true + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -2003,13 +5406,40 @@ packages: mdast-util-to-hast@13.2.1: resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + + mdn-data@2.0.4: + resolution: {integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==} + + mdurl@1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + memoize-one@4.0.3: resolution: {integrity: sha512-QmpUu4KqDmX0plH4u+tf0riMc1KHE1+lw95cMrLlXQAFOx/xnBtwhZ52XJxd9X2O6kwKBqX32kmhbhlobD0cuw==} + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + micromark-util-character@2.1.1: resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} @@ -2029,9 +5459,47 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + mini-css-extract-plugin@2.10.0: + resolution: {integrity: sha512-540P2c5dYnJlyJxTaSloliZexv8rji6rY8FhQN+WF/82iHQfA23j/xtJx97L+mXOML27EqksSek/g4eK7jaL3g==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -2039,25 +5507,32 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + 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 + mock-property@1.0.3: resolution: {integrity: sha512-2emPTb1reeLLYwHxyVx993iYyCHEiRRO+y8NFXFPL5kl5q14sgTK76cXyEKkeKCHeRw35SfdkUJ10Q1KfHuiIQ==} engines: {node: '>= 0.4'} - monaco-editor@0.52.2: - resolution: {integrity: sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==} + monaco-editor@0.55.1: + resolution: {integrity: sha512-jz4x+TJNFHwHtwuV9vA9rMujcZRb0CEilTEwG2rRSpe/A7Jdkuj8xPKttCgOh+v/lkHy7HsZ64oj+q3xoAFl9A==} - motion-dom@12.30.1: - resolution: {integrity: sha512-QXB+iFJRzZTqL+Am4a1CRoHdH+0Nq12wLdqQQZZsfHlp9AMt6PA098L/61oVZsDA+Ep3QSGudzpViyRrhYhGcQ==} + motion-dom@12.34.0: + resolution: {integrity: sha512-Lql3NuEcScRDxTAO6GgUsRHBZOWI/3fnMlkMcH5NftzcN37zJta+bpbMAV9px4Nj057TuvRooMK7QrzMCgtz6Q==} motion-utils@12.29.2: resolution: {integrity: sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A==} - motion@12.31.0: - resolution: {integrity: sha512-KpZQik3LLFdsiaLdFXQGnty84KcDvvdvBCHSvA9aH+RjQTP6jkJGyngRPSngau13ARUI6TbPphf/Vv/QxwxRJQ==} + motion@12.34.0: + resolution: {integrity: sha512-01Sfa/zgsD/di8zA/uFW5Eb7/SPXoGyUfy+uMRMW5Spa8j0z/UbfQewAYvPMYFCXRlyD6e5aLHh76TxeeJD+RA==} peerDependencies: '@emotion/is-prop-valid': '*' - react: ^18.0.0 || ^19.0.0 - react-dom: ^18.0.0 || ^19.0.0 + react: 19.2.4 + react-dom: 19.2.4 peerDependenciesMeta: '@emotion/is-prop-valid': optional: true @@ -2070,9 +5545,22 @@ packages: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true + + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + name-initials@0.1.3: resolution: {integrity: sha512-UJcpCmyftGuZ7I46dqOw776VvH3VqHhAM7ma4eyY0t52FahFv/VhmDqSeekwSZFXyK9HLg9MXmb9udeOJ3YtCA==} @@ -2081,19 +5569,36 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + napi-build-utils@2.0.0: + resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} + napi-postinstall@0.3.4: resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} hasBin: true + natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + next-seo@7.1.0: resolution: {integrity: sha512-gTWm9wnAXvtqD8QPIpbBA6iMnqMp1WyNTGza9QJPabVIPoX+ZDt1/J0KUkziiIKRyad+nSGLC0BfHgekqcfq0Q==} peerDependencies: next: '>=13.4.0' - react: '>=18.2.0' + react: 19.2.4 next-sitemap@4.2.3: resolution: {integrity: sha512-vjdCxeDuWDzldhCnyFCQipw5bfpl4HmZA7uoo3GAaYGjGgfL4Cxb1CiztPuWGmS+auYs7/8OekRS8C2cjdAsjQ==} @@ -2110,8 +5615,8 @@ packages: '@opentelemetry/api': ^1.1.0 '@playwright/test': ^1.51.1 babel-plugin-react-compiler: '*' - react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 - react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react: 19.2.4 + react-dom: 19.2.4 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': @@ -2127,15 +5632,62 @@ packages: resolution: {integrity: sha512-kuE5OcqmAg1qh9J6LskoDLybj8WmLyfxD+KsVGGvRe5zZg6bGQ/QM/1/7TdJq/u7hIeVqFqcloadD0pcosRXUw==} peerDependencies: next: '>=11.0.0' - react: '>=17.0.0' + react: 19.2.4 + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + node-abi@3.87.0: + resolution: {integrity: sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==} + engines: {node: '>=10'} + + node-addon-api@4.3.0: + resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} + + node-forge@1.3.3: + resolution: {integrity: sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==} + engines: {node: '>= 6.13.0'} + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + nodemon@2.0.22: + resolution: {integrity: sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==} + engines: {node: '>=8.10.0'} + hasBin: true + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + nth-check@1.0.2: + resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + nwsapi@2.2.23: + resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + object-inspect@1.12.3: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} @@ -2163,6 +5715,10 @@ packages: resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} + object.getownpropertydescriptors@2.1.9: + resolution: {integrity: sha512-mt8YM6XwsTTovI+kdZdHSxoyF2DI59up034orlC9NfweclcWOt7CVascNNLp6U+bjFVCVCIh9PwS76tDM/rH8g==} + engines: {node: '>= 0.4'} + object.groupby@1.0.3: resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} engines: {node: '>= 0.4'} @@ -2171,9 +5727,24 @@ packages: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} + obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.1.0: + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} + engines: {node: '>= 0.8'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + oniguruma-parser@0.12.1: resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} @@ -2183,6 +5754,10 @@ packages: ono@4.0.11: resolution: {integrity: sha512-jQ31cORBFE6td25deYeD80wxKBMj+zBmHTrVxnc6CKhx8gho6ipmWM5zj/oeoqioZ99yqBls9Z/9Nss7J26G2g==} + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true @@ -2199,14 +5774,37 @@ packages: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} + p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -2214,9 +5812,39 @@ packages: parse-imports-exports@0.2.4: resolution: {integrity: sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==} + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-semver@1.1.1: + resolution: {integrity: sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==} + parse-statements@1.0.11: resolution: {integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==} + parse5-htmlparser2-tree-adapter@7.1.0: + resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} + + parse5-parser-stream@7.1.2: + resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -2232,6 +5860,22 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + + picocolors@0.2.1: + resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -2243,6 +5887,22 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} @@ -2251,9 +5911,438 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} + postcss-attribute-case-insensitive@5.0.2: + resolution: {integrity: sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-browser-comments@4.0.0: + resolution: {integrity: sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==} + engines: {node: '>=8'} + peerDependencies: + browserslist: '>=4' + postcss: '>=8' + + postcss-calc@8.2.4: + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 + + postcss-clamp@4.1.0: + resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} + engines: {node: '>=7.6.0'} + peerDependencies: + postcss: ^8.4.6 + + postcss-color-functional-notation@4.2.4: + resolution: {integrity: sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-color-hex-alpha@8.0.4: + resolution: {integrity: sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + + postcss-color-rebeccapurple@7.1.1: + resolution: {integrity: sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.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-custom-media@8.0.2: + resolution: {integrity: sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + + postcss-custom-properties@12.1.11: + resolution: {integrity: sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-custom-selectors@6.0.3: + resolution: {integrity: sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + + postcss-dir-pseudo-class@6.0.5: + resolution: {integrity: sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + 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-double-position-gradients@3.1.2: + resolution: {integrity: sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-env-function@4.0.6: + resolution: {integrity: sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + + postcss-flexbugs-fixes@5.0.2: + resolution: {integrity: sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==} + peerDependencies: + postcss: ^8.1.4 + + postcss-focus-visible@6.0.4: + resolution: {integrity: sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + + postcss-focus-within@5.0.4: + resolution: {integrity: sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + + postcss-font-variant@5.0.0: + resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} + peerDependencies: + postcss: ^8.1.0 + + postcss-gap-properties@3.0.5: + resolution: {integrity: sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-image-set-function@4.0.7: + resolution: {integrity: sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-initial@4.0.1: + resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.1.0: + resolution: {integrity: sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-lab-function@4.2.1: + resolution: {integrity: sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true + + postcss-loader@6.2.1: + resolution: {integrity: sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + + postcss-logical@5.0.4: + resolution: {integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + + postcss-media-minmax@5.0.0: + resolution: {integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.1.0 + + 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-modules-extract-imports@3.1.0: + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.2.0: + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.2.1: + resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-nesting@10.2.0: + resolution: {integrity: sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + 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-normalize@10.0.1: + resolution: {integrity: sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==} + engines: {node: '>= 12'} + peerDependencies: + browserslist: '>= 4' + postcss: '>= 8' + + postcss-opacity-percentage@1.1.3: + resolution: {integrity: sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-ordered-values@5.1.3: + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-overflow-shorthand@3.0.4: + resolution: {integrity: sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-page-break@3.0.4: + resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} + peerDependencies: + postcss: ^8 + + postcss-place@7.0.5: + resolution: {integrity: sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-preset-env@7.8.3: + resolution: {integrity: sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-pseudo-class-any-link@7.1.6: + resolution: {integrity: sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + 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-replace-overflow-wrap@4.0.0: + resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} + peerDependencies: + postcss: ^8.0.3 + + postcss-selector-not@6.0.1: + resolution: {integrity: sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-selector-parser@7.1.1: + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} + 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@7.0.39: + resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} + engines: {node: '>=6.0.0'} + postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} @@ -2262,6 +6351,15 @@ packages: resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + prebuild-install@7.1.3: + resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} + engines: {node: '>=10'} + hasBin: true + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -2275,24 +6373,99 @@ packages: engines: {node: '>=14'} hasBin: true + pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + + pretty-error@4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + pretty-format@28.1.3: + resolution: {integrity: sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + pstree.remy@1.1.8: + resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} + + pump@3.0.3: + resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + q@1.5.1: + resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} + engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + deprecated: |- + You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. + + (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) + + qs@6.14.2: + resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==} + engines: {node: '>=0.6'} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + raf@3.4.1: + resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.3: + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} + engines: {node: '>= 0.8'} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + reablocks@8.7.15: resolution: {integrity: sha512-Ruzzyacl5f2OKplL+G9eg4BJPqhs07JzG/8D/PDR7SdYAn0H7UToaMGgQ1iTAWqFuae0fTqIaNwnO+2Z6LR4Vg==} peerDependencies: - react: '>=16' - react-dom: '>=16' + react: 19.2.4 + react-dom: 19.2.4 + + react-app-polyfill@3.0.0: + resolution: {integrity: sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==} + engines: {node: '>=14'} react-base16-styling@0.10.0: resolution: {integrity: sha512-H1k2eFB6M45OaiRru3PBXkuCcn2qNmx+gzLb4a9IPMR7tMH8oBRXU5jGbPDYG1Hz+82d88ED0vjR8BmqU3pQdg==} @@ -2300,18 +6473,31 @@ packages: react-cool-dimensions@2.0.7: resolution: {integrity: sha512-z1VwkAAJ5d8QybDRuYIXTE41RxGr5GYsv1bQhbOBE8cMfoZQZpcF0odL64vdgrQVzat2jayedj1GoYi80FWcbA==} peerDependencies: - react: '>= 16.8.0' + react: 19.2.4 + + react-dev-utils@12.0.1: + resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=2.7' + webpack: '>=4' + peerDependenciesMeta: + typescript: + optional: true react-dom@19.2.4: resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} peerDependencies: - react: ^19.2.4 + react: 19.2.4 react-dropzone@14.3.8: resolution: {integrity: sha512-sBgODnq+lcA4P296DY4wacOZz3JFpD99fp+hb//iBO2HHnyeZU3FwWyXJ6salNpqQdsZrgMrotuko/BdJMV8Ug==} engines: {node: '>= 10.13'} peerDependencies: - react: '>= 16.8 || 18.0.0' + react: 19.2.4 + + react-error-overlay@6.1.0: + resolution: {integrity: sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==} react-fast-compare@3.2.2: resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} @@ -2319,46 +6505,60 @@ packages: react-highlight-words@0.20.0: resolution: {integrity: sha512-asCxy+jCehDVhusNmCBoxDf2mm1AJ//D+EzDx1m5K7EqsMBIHdZ5G4LdwbSEXqZq1Ros0G0UySWmAtntSph7XA==} peerDependencies: - react: ^0.14.0 || ^15.0.0 || ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + react: 19.2.4 react-hot-toast@2.6.0: resolution: {integrity: sha512-bH+2EBMZ4sdyou/DPrfgIouFpcRLCJ+HoCA32UoAYHn6T3Ur5yfcDCeSr5mwldl6pFOsiocmrXMuoCJ1vV8bWg==} engines: {node: '>=10'} peerDependencies: - react: '>=16' - react-dom: '>=16' + react: 19.2.4 + react-dom: 19.2.4 react-icons@5.5.0: resolution: {integrity: sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==} peerDependencies: - react: '*' + react: 19.2.4 react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-json-tree@0.20.0: resolution: {integrity: sha512-h+f9fUNAxzBx1rbrgUF7+zSWKGHDtt2VPYLErIuB0JyKGnWgFMM21ksqQyb3EXwXNnoMW2rdE5kuAaubgGOx2Q==} peerDependencies: '@types/react': 19.2.11 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: 19.2.4 react-linkify-it@2.0.0: resolution: {integrity: sha512-L9FY853JgBL+HXyXUZMvMin95WZ/lHNrpBs28P8WYk7B4zC2z7e0j/BrDfjIqB8ZeDCpcBgcWi+Cwjbd4/OlyQ==} peerDependencies: - react: '*' + react: 19.2.4 react-number-format@5.4.4: resolution: {integrity: sha512-wOmoNZoOpvMminhifQYiYSTCLUDOiUbBunrMrMjA+dV52sY+vck1S4UhR6PkgnoCquvvMSeJjErXZ4qSaWCliA==} peerDependencies: - react: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: 19.2.4 + react-dom: 19.2.4 + + react-refresh@0.11.0: + resolution: {integrity: sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==} + engines: {node: '>=0.10.0'} + + react-refresh@0.17.0: + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} + engines: {node: '>=0.10.0'} react-remove-scroll-bar@2.3.8: resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} engines: {node: '>=10'} peerDependencies: '@types/react': 19.2.11 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: 19.2.4 peerDependenciesMeta: '@types/react': optional: true @@ -2368,17 +6568,29 @@ packages: engines: {node: '>=10'} peerDependencies: '@types/react': 19.2.11 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react: 19.2.4 peerDependenciesMeta: '@types/react': optional: true + react-scripts@5.0.1: + resolution: {integrity: sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==} + engines: {node: '>=14.0.0'} + hasBin: true + peerDependencies: + eslint: '*' + react: 19.2.4 + typescript: ^3.2.1 || ^4 + peerDependenciesMeta: + typescript: + optional: true + react-style-singleton@2.2.3: resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} engines: {node: '>=10'} peerDependencies: '@types/react': 19.2.11 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react: 19.2.4 peerDependenciesMeta: '@types/react': optional: true @@ -2387,39 +6599,78 @@ packages: resolution: {integrity: sha512-U1DGlIQN5AwgjTyOEnI1oCcMuEr1pv1qOtklB2l4nyMGbHzWrI0eFsYK0zos2YWqAolJyG0IWJaqWmWj5ETh0A==} engines: {node: '>=10'} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: 19.2.4 react-use-gesture@8.0.1: resolution: {integrity: sha512-CXzUNkulUdgouaAlvAsC5ZVo0fi9KGSBSk81WrE4kOIcJccpANe9zZkAYr5YZZhqpicIFxitsrGVS4wmoMun9A==} deprecated: This package is no longer maintained. Please use @use-gesture/react instead peerDependencies: - react: '>= 16.8.0' + react: 19.2.4 react-zoomable-ui@0.11.0: resolution: {integrity: sha512-2msg8DyZUToHNTek3WfvlvZ6mumWyocp7xPzUvMaYpQAwjXvenRYR9nlmmITLymJdZReNqR2nDW8I5yUC8mXiQ==} peerDependencies: - react: '*' + react: 19.2.4 react@19.2.4: resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} engines: {node: '>=0.10.0'} + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + read@1.0.7: + resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==} + engines: {node: '>=0.8'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + reaflow@5.4.1: resolution: {integrity: sha512-E9Pr1yv9HJ8TeSw9FU9lbZ/S6Hv9DzwPs0lToIO+iFURnwziAkDzTB+F1aJ6aIhfmQ9sV9eaqOJNwSwf7/svjw==} peerDependencies: - react: '>=16' - react-dom: '>=16' + react: 19.2.4 + react-dom: 19.2.4 reakeys@2.0.6: resolution: {integrity: sha512-dmZPhOwU3NuLjy61CLqf3dGEhhetx4Du7m/DlX1eqZrBKcKrDqpR0O1tHyYMB95KVdhVRjrfcuFFawI7EqGyxQ==} peerDependencies: - react: '>=16' - react-dom: '>=16' + react: 19.2.4 + react-dom: 19.2.4 + + rechoir@0.8.0: + resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} + engines: {node: '>= 10.13.0'} + + recursive-readdir@2.2.3: + resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} + engines: {node: '>=6.0.0'} reflect.getprototypeof@1.0.10: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} + regenerate-unicode-properties@10.2.2: + resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + regex-parser@2.3.1: + resolution: {integrity: sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==} + regex-recursion@6.0.2: resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} @@ -2433,13 +6684,66 @@ packages: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} + regexpu-core@6.4.0: + resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.13.0: + resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} + hasBin: true + + relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + + renderkid@3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve-url-loader@4.0.0: + resolution: {integrity: sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==} + engines: {node: '>=8.9'} + peerDependencies: + rework: 1.0.1 + rework-visit: 1.0.0 + peerDependenciesMeta: + rework: + optional: true + rework-visit: + optional: true + + resolve.exports@1.1.1: + resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} + engines: {node: '>=10'} + resolve@1.22.11: resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} engines: {node: '>= 0.4'} @@ -2449,10 +6753,38 @@ packages: resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rewire@7.0.0: + resolution: {integrity: sha512-DyyNyzwMtGYgu0Zl/ya0PR/oaunM+VuCuBxCuhYJHHaV0V+YvYa3bBGxb5OZ71vndgmp1pYY8F4YOwQo1siRGw==} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup-plugin-terser@7.0.2: + resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} + deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser + peerDependencies: + rollup: ^2.0.0 + + rollup@2.79.2: + resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==} + engines: {node: '>=10.0.0'} + hasBin: true + + rollup@4.57.1: + resolution: {integrity: sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -2460,6 +6792,12 @@ packages: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-push-apply@1.0.0: resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} engines: {node: '>= 0.4'} @@ -2468,18 +6806,103 @@ packages: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sanitize.css@13.0.0: + resolution: {integrity: sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==} + + sass-loader@12.6.0: + resolution: {integrity: sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + sass: ^1.3.0 + sass-embedded: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + sass-embedded: + optional: true + + sax@1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + + sax@1.4.4: + resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} + engines: {node: '>=11.0.0'} + + saxes@5.0.1: + resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} + engines: {node: '>=10'} + scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + schema-utils@2.7.0: + resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} + engines: {node: '>= 8.9.0'} + + schema-utils@2.7.1: + resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} + engines: {node: '>= 8.9.0'} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + schema-utils@4.3.3: + resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} + engines: {node: '>= 10.13.0'} + + select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.3: - resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + semver@7.0.0: + resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} + hasBin: true + + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} hasBin: true + send@0.19.2: + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} + engines: {node: '>= 0.8.0'} + + serialize-javascript@4.0.0: + resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + serve-index@1.9.2: + resolution: {integrity: sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==} + engines: {node: '>= 0.8.0'} + + serve-static@1.16.3: + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} + engines: {node: '>= 0.8.0'} + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -2492,6 +6915,13 @@ packages: resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} @@ -2507,6 +6937,10 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + engines: {node: '>= 0.4'} + shiki@3.22.0: resolution: {integrity: sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g==} @@ -2526,33 +6960,137 @@ packages: resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + 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.4: resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} + simple-update-notifier@1.1.0: + resolution: {integrity: sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==} + engines: {node: '>=8.10.0'} + sirv@2.0.4: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + + sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + + source-list-map@2.0.1: + resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map-loader@3.0.2: + resolution: {integrity: sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + deprecated: The work that was done in this beta branch won't be included in future versions + + sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + + spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} stable-hash@0.0.5: resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} + 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-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + state-local@1.0.7: resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==} + static-eval@2.1.1: + resolution: {integrity: sha512-MgWpQ/ZjGieSVB3eOJVs4OA2LT/q1vx98KPCTTQPzq/aLr0YUXTsgryTXr4SLfR0ZfUUCiedM9n/ABeDIyy4mA==} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + stop-iteration-iterator@1.1.0: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-length@5.0.1: + resolution: {integrity: sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==} + engines: {node: '>=12.20'} + + string-natural-compare@3.0.1: + resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + string.prototype.includes@2.0.1: resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} engines: {node: '>= 0.4'} @@ -2576,13 +7114,47 @@ packages: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + stringify-object@3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + engines: {node: '>=12'} + strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-comments@2.0.1: + resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} + engines: {node: '>=10'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -2590,12 +7162,18 @@ packages: strnum@2.1.2: resolution: {integrity: sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==} - styled-components@6.3.8: - resolution: {integrity: sha512-Kq/W41AKQloOqKM39zfaMdJ4BcYDw/N5CIq4/GTI0YjU6pKcZ1KKhk6b4du0a+6RA9pIfOP/eu94Ge7cu+PDCA==} + style-loader@3.3.4: + resolution: {integrity: sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + + styled-components@6.3.9: + resolution: {integrity: sha512-J72R4ltw0UBVUlEjTzI0gg2STOqlI9JBhQOL4Dxt7aJOnnSesy0qJDn4PYfMCafk9cWOaVg129Pesl5o+DIh0Q==} engines: {node: '>= 16'} peerDependencies: - react: '>= 16.8.0' - react-dom: '>= 16.8.0' + react: 19.2.4 + react-dom: 19.2.4 peerDependenciesMeta: react-dom: optional: true @@ -2606,24 +7184,64 @@ packages: peerDependencies: '@babel/core': '*' babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + react: 19.2.4 peerDependenciesMeta: '@babel/core': optional: true 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.6: resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + svg-parser@2.0.4: + resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} + + svgo@1.3.2: + resolution: {integrity: sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==} + engines: {node: '>=4.0.0'} + deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x. + hasBin: true + + svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + synckit@0.11.12: resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -2634,35 +7252,151 @@ packages: tailwind-merge@2.6.1: resolution: {integrity: sha512-Oo6tHdpZsGpkKG88HJ8RR1rg/RdnEkQEfMoEk2x1XRI3F1AxeU+ijRXpiVUF4UbLfcxxRGw6TbUINKYdWVsQTQ==} + tailwindcss@3.4.19: + resolution: {integrity: sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==} + engines: {node: '>=14.0.0'} + hasBin: true + + tapable@1.1.3: + resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} + engines: {node: '>=6'} + + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + engines: {node: '>=6'} + tape@4.17.0: resolution: {integrity: sha512-KCuXjYxCZ3ru40dmND+oCLsXyuA8hoseu2SS404Px5ouyS0A99v8X/mdiLqsR5MTAyamMBN7PRwt2Dv3+xGIxw==} hasBin: true + tar-fs@2.1.4: + resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + + temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + + tempy@0.6.0: + resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==} + engines: {node: '>=10'} + + terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} + + terser-webpack-plugin@5.3.16: + resolution: {integrity: sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.46.0: + resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + throat@6.0.2: + resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} + + thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tmp@0.2.5: + resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} + engines: {node: '>=14.14'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} + touch@3.1.1: + resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==} + hasBin: true + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + + tr46@2.1.0: + resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} + engines: {node: '>=8'} + trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + tryer@1.0.1: + resolution: {integrity: sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==} + ts-api-utils@2.4.0: resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + ts-invariant@0.10.3: resolution: {integrity: sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==} engines: {node: '>=8'} + ts-loader@9.5.4: + resolution: {integrity: sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + typescript: '*' + webpack: ^5.0.0 + ts-node@10.9.2: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true @@ -2680,17 +7414,87 @@ packages: tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsutils@3.21.0: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + tunnel@0.0.6: + resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} + engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + + turbo-darwin-64@2.8.8: + resolution: {integrity: sha512-7R/XRAleyNB8nIJuenRpS7EnmCM/kYFgcG1rW3F5DF57Nl4WyBO3DzxqwooRheuoXDD1UsJvDse0yRufgxjClA==} + cpu: [x64] + os: [darwin] + + turbo-darwin-arm64@2.8.8: + resolution: {integrity: sha512-whpveO0w/dMcgQ0zFrzqK76mG2W+RBQ/pKIpW+sEvNr+T4UcYd2gZpfV2euehJLvdeFErWgW74dIt/MFfkG1bA==} + cpu: [arm64] + os: [darwin] + + turbo-linux-64@2.8.8: + resolution: {integrity: sha512-BISkcKk+5/Dh11q+YhdQIGONXmdlQ6LY0iQ+GBIK7QOBAJyJFKmKvUeAeMdWGXOa3sImz2oZ6u2StyR+0Y/VVA==} + cpu: [x64] + os: [linux] + + turbo-linux-arm64@2.8.8: + resolution: {integrity: sha512-B+DQWWtM3O+AexFF4aYucT0MvvnQOW4n5y9LA5h3Zc3Lpj10yl9K4dEBzJvMVQ2jTkCRNAvA8q9G3EjqmGmGGA==} + cpu: [arm64] + os: [linux] + + turbo-windows-64@2.8.8: + resolution: {integrity: sha512-KP5TRVrmVnrxDyvERvQq7VXu+h5AiEiBwyr90YsRuYy/Z5zLz8hrNZXejTyUR17xmnuI+RbUSxrQlfmPnxiW1A==} + cpu: [x64] + os: [win32] + + turbo-windows-arm64@2.8.8: + resolution: {integrity: sha512-X45sTOksR8iidk+PZUXpNcfEkOhGCTS2p2J8nSUExr1v7u3T4FixwplzliuWmG7QTPGJapAwItzHbi+d/9ckNQ==} + cpu: [arm64] + os: [win32] + + turbo@2.8.8: + resolution: {integrity: sha512-wP+axjWAKzYfZ7bghuggVST9bX4j5cn3NPMU9NPQqtwaUKL9n9JOnWWBIc9gdrEma1aViYR73EoPjDEpVq+liQ==} + hasBin: true + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.16.0: + resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} + engines: {node: '>=10'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + type-fest@4.41.0: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} @@ -2707,8 +7511,14 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript-eslint@8.54.0: - resolution: {integrity: sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ==} + typed-rest-client@1.8.11: + resolution: {integrity: sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==} + + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + + typescript-eslint@8.55.0: + resolution: {integrity: sha512-HE4wj+r5lmDVS9gdaN0/+iqNvPZwGfnJ5lZuz7s5vLlg9ODw0bIiiETaios9LvFI1U94/VBXGm3CB2Y5cNFMpw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2719,16 +7529,52 @@ packages: engines: {node: '>=14.17'} hasBin: true + uc.micro@1.0.6: + resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} + undefsafe@2.0.5: + resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} + + underscore@1.13.6: + resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} + + underscore@1.13.7: + resolution: {integrity: sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==} + undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + undici@7.22.0: + resolution: {integrity: sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg==} + engines: {node: '>=20.18.1'} + undoo@0.5.0: resolution: {integrity: sha512-SPlDcde+AUHoFKeVlH2uBJxqVkw658I4WR2rPoygC1eRCzm3GeoP8S6xXZVJeBVOQQid8X2xUBW0N4tOvvHH3Q==} + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.1: + resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.2.0: + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} + engines: {node: '>=4'} + + unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} + unist-util-is@6.0.1: resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} @@ -2744,9 +7590,28 @@ packages: unist-util-visit@5.1.0: resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unquote@1.1.1: + resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} + unrs-resolver@1.11.1: resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} + upath@1.2.0: + resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} + engines: {node: '>=4'} + update-browserslist-db@1.2.3: resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true @@ -2756,12 +7621,18 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + url-join@4.0.1: + resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + use-callback-ref@1.3.3: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} peerDependencies: '@types/react': 19.2.11 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react: 19.2.4 peerDependenciesMeta: '@types/react': optional: true @@ -2770,7 +7641,7 @@ packages: resolution: {integrity: sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w==} peerDependencies: '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: 19.2.4 peerDependenciesMeta: '@types/react': optional: true @@ -2779,7 +7650,7 @@ packages: resolution: {integrity: sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==} peerDependencies: '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: 19.2.4 peerDependenciesMeta: '@types/react': optional: true @@ -2788,7 +7659,7 @@ packages: resolution: {integrity: sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==} peerDependencies: '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: 19.2.4 peerDependenciesMeta: '@types/react': optional: true @@ -2796,14 +7667,14 @@ packages: use-long-press@3.3.0: resolution: {integrity: sha512-Yedz46ILxsb1BTS6kUzpV/wyEZPUlJDq+8Oat0LP1eOZQHbS887baJHJbIGENqCo8wTKNxmoTHLdY8lU/e+wvw==} peerDependencies: - react: '>=16.8.0' + react: 19.2.4 use-sidecar@1.1.3: resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} engines: {node: '>=10'} peerDependencies: '@types/react': 19.2.11 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react: 19.2.4 peerDependenciesMeta: '@types/react': optional: true @@ -2811,31 +7682,232 @@ packages: use-sync-external-store@1.6.0: resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: 19.2.4 usehooks-ts@3.1.1: resolution: {integrity: sha512-I4diPp9Cq6ieSUH2wu+fDAVQO43xwtulo+fKEidHUwZPnYImbtkTjzIJYcDcJqxgmX31GVqNFURodvcgHcW0pA==} engines: {node: '>=16.15.0'} peerDependencies: - react: ^16.8.0 || ^17 || ^18 || ^19 || ^19.0.0-rc + react: 19.2.4 + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util.promisify@1.0.1: + resolution: {integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==} + + utila@0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + v8-to-istanbul@8.1.1: + resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} + engines: {node: '>=10.12.0'} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + vfile-message@4.0.3: resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + vite@6.4.1: + resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vsce@2.15.0: + resolution: {integrity: sha512-P8E9LAZvBCQnoGoizw65JfGvyMqNGlHdlUXD1VAuxtvYAaHBKLBdKPnpy60XKVDAkQCfmMu53g+gq9FM+ydepw==} + engines: {node: '>= 14'} + deprecated: vsce has been renamed to @vscode/vsce. Install using @vscode/vsce instead. + hasBin: true + + w3c-hr-time@1.0.2: + resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} + deprecated: Use your platform's native performance.now() and performance.timeOrigin. + + w3c-xmlserializer@2.0.0: + resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} + engines: {node: '>=10'} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + watchpack@2.5.1: + resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} + engines: {node: '>=10.13.0'} + + wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + web-worker@1.5.0: resolution: {integrity: sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw==} + webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + + webidl-conversions@5.0.0: + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} + + webidl-conversions@6.1.0: + resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} + engines: {node: '>=10.4'} + webpack-bundle-analyzer@4.10.1: resolution: {integrity: sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==} engines: {node: '>= 10.13.0'} hasBin: true + webpack-cli@5.1.4: + resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} + engines: {node: '>=14.15.0'} + hasBin: true + peerDependencies: + '@webpack-cli/generators': '*' + webpack: 5.x.x + webpack-bundle-analyzer: '*' + webpack-dev-server: '*' + peerDependenciesMeta: + '@webpack-cli/generators': + optional: true + webpack-bundle-analyzer: + optional: true + webpack-dev-server: + optional: true + + webpack-dev-middleware@5.3.4: + resolution: {integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + + webpack-dev-server@4.15.2: + resolution: {integrity: sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==} + engines: {node: '>= 12.13.0'} + hasBin: true + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + + webpack-manifest-plugin@4.1.1: + resolution: {integrity: sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==} + engines: {node: '>=12.22.0'} + peerDependencies: + webpack: ^4.44.2 || ^5.47.0 + + webpack-merge@5.10.0: + resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} + engines: {node: '>=10.0.0'} + + webpack-sources@1.4.3: + resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} + + webpack-sources@2.3.1: + resolution: {integrity: sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==} + engines: {node: '>=10.13.0'} + + webpack-sources@3.3.3: + resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} + engines: {node: '>=10.13.0'} + + webpack@5.105.2: + resolution: {integrity: sha512-dRXm0a2qcHPUBEzVk8uph0xWSjV/xZxenQQbLwnwP7caQCYpqG1qddwlyEkIDkYn0K8tvmcrZ+bOrzoQ3HxCDw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + + websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + + whatwg-encoding@1.0.5: + resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation + + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation + + whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + + whatwg-mimetype@2.3.0: + resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + + whatwg-url@8.7.0: + resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} + engines: {node: '>=10'} + which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -2852,18 +7924,89 @@ packages: resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} 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'} hasBin: true + wildcard@2.0.1: + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} + workbox-background-sync@6.6.0: + resolution: {integrity: sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==} + + workbox-broadcast-update@6.6.0: + resolution: {integrity: sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==} + + workbox-build@6.6.0: + resolution: {integrity: sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==} + engines: {node: '>=10.0.0'} + + workbox-cacheable-response@6.6.0: + resolution: {integrity: sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==} + deprecated: workbox-background-sync@6.6.0 + + workbox-core@6.6.0: + resolution: {integrity: sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==} + + workbox-expiration@6.6.0: + resolution: {integrity: sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==} + + workbox-google-analytics@6.6.0: + resolution: {integrity: sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==} + deprecated: It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained + + workbox-navigation-preload@6.6.0: + resolution: {integrity: sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==} + + workbox-precaching@6.6.0: + resolution: {integrity: sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==} + + workbox-range-requests@6.6.0: + resolution: {integrity: sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==} + + workbox-recipes@6.6.0: + resolution: {integrity: sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==} + + workbox-routing@6.6.0: + resolution: {integrity: sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==} + + workbox-strategies@6.6.0: + resolution: {integrity: sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==} + + workbox-streams@6.6.0: + resolution: {integrity: sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==} + + workbox-sw@6.6.0: + resolution: {integrity: sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==} + + workbox-webpack-plugin@6.6.0: + resolution: {integrity: sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==} + engines: {node: '>=10.0.0'} + peerDependencies: + webpack: ^4.4.0 || ^5.9.0 + + workbox-window@6.6.0: + resolution: {integrity: sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + ws@7.5.10: resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} @@ -2876,9 +8019,60 @@ packages: utf-8-validate: optional: true + ws@8.19.0: + resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xml-name-validator@3.0.0: + resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} + + xml2js@0.4.23: + resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + + yazl@2.5.1: + resolution: {integrity: sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==} + yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} @@ -2902,7 +8096,7 @@ packages: peerDependencies: '@types/react': 19.2.11 immer: '>=9.0.6' - react: '>=18.0.0' + react: 19.2.4 use-sync-external-store: '>=1.2.0' peerDependenciesMeta: '@types/react': @@ -2919,6 +8113,15 @@ packages: snapshots: + '@alloc/quick-lru@5.2.0': {} + + '@apideck/better-ajv-errors@0.3.6(ajv@8.18.0)': + dependencies: + ajv: 8.18.0 + json-schema: 0.4.0 + jsonpointer: 5.0.1 + leven: 3.1.0 + '@babel/code-frame@7.29.0': dependencies: '@babel/helper-validator-identifier': 7.28.5 @@ -2947,6 +8150,20 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/eslint-parser@7.28.6(@babel/core@7.29.0)(eslint@8.57.1)': + dependencies: + '@babel/core': 7.29.0 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.57.1 + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + + '@babel/generator@7.17.7': + dependencies: + '@babel/types': 7.29.0 + jsesc: 2.5.2 + source-map: 0.5.7 + '@babel/generator@7.29.1': dependencies: '@babel/parser': 7.29.0 @@ -2955,6 +8172,10 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.29.0 + '@babel/helper-compilation-targets@7.28.6': dependencies: '@babel/compat-data': 7.29.0 @@ -2963,8 +8184,59 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.29.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + regexpu-core: 6.4.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + debug: 4.4.3 + lodash.debounce: 4.0.8 + resolve: 1.22.11 + transitivePeerDependencies: + - supports-color + + '@babel/helper-environment-visitor@7.24.7': + dependencies: + '@babel/types': 7.29.0 + + '@babel/helper-function-name@7.24.7': + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + '@babel/helper-globals@7.28.0': {} + '@babel/helper-hoist-variables@7.24.7': + dependencies: + '@babel/types': 7.29.0 + + '@babel/helper-member-expression-to-functions@7.28.5': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-imports@7.28.6': dependencies: '@babel/traverse': 7.29.0 @@ -2981,12 +8253,55 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.29.0 + + '@babel/helper-plugin-utils@7.28.6': {} + + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-wrap-function': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-split-export-declaration@7.24.7': + dependencies: + '@babel/types': 7.29.0 + '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.28.5': {} '@babel/helper-validator-option@7.27.1': {} + '@babel/helper-wrap-function@7.28.6': + dependencies: + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + '@babel/helpers@7.28.6': dependencies: '@babel/template': 7.28.6 @@ -2996,6 +8311,719 @@ snapshots: dependencies: '@babel/types': 7.29.0 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-decorators@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-decorators': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.0) + + '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.0) + + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + + '@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-decorators@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-flow@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-async-generator-functions@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-globals': 7.28.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/template': 7.28.6 + + '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-flow': 7.28.6(@babel/core@7.29.0) + + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-react-constant-elements@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-runtime@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + babel-plugin-polyfill-corejs2: 0.4.15(@babel/core@7.29.0) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.0) + babel-plugin-polyfill-regenerator: 0.6.6(@babel/core@7.29.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-spread@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/preset-env@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/compat-data': 7.29.0 + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0) + '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.0) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-modules-systemjs': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) + '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-regenerator': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.29.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0) + babel-plugin-polyfill-corejs2: 0.4.15(@babel/core@7.29.0) + babel-plugin-polyfill-corejs3: 0.14.0(@babel/core@7.29.0) + babel-plugin-polyfill-regenerator: 0.6.6(@babel/core@7.29.0) + core-js-compat: 3.48.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/types': 7.29.0 + esutils: 2.0.3 + + '@babel/preset-react@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + '@babel/runtime@7.28.6': {} '@babel/template@7.28.6': @@ -3004,6 +9032,21 @@ snapshots: '@babel/parser': 7.29.0 '@babel/types': 7.29.0 + '@babel/traverse@7.23.2': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + debug: 4.4.3 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/traverse@7.29.0': dependencies: '@babel/code-frame': 7.29.0 @@ -3016,17 +9059,104 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/types@7.17.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + to-fast-properties: 2.0.0 + '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@bcoe/v8-coverage@0.2.3': {} + '@corex/deepmerge@4.0.43': {} '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 + '@csstools/normalize.css@12.1.1': {} + + '@csstools/postcss-cascade-layers@1.1.1(postcss@8.4.49)': + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.1.2) + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + + '@csstools/postcss-color-function@1.1.1(postcss@8.4.49)': + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.49) + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-font-format-keywords@1.0.1(postcss@8.4.49)': + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-hwb-function@1.0.2(postcss@8.4.49)': + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-ic-unit@1.0.1(postcss@8.4.49)': + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.49) + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-is-pseudo-class@2.0.7(postcss@8.4.49)': + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.1.2) + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + + '@csstools/postcss-nested-calc@1.0.0(postcss@8.4.49)': + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-normalize-display-values@1.0.1(postcss@8.4.49)': + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-oklab-function@1.1.1(postcss@8.4.49)': + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.49) + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-progressive-custom-properties@1.3.0(postcss@8.4.49)': + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-stepped-value-functions@1.0.1(postcss@8.4.49)': + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-text-decoration-shorthand@1.0.0(postcss@8.4.49)': + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-trigonometric-functions@1.0.2(postcss@8.4.49)': + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-unset-value@1.0.2(postcss@8.4.49)': + dependencies: + postcss: 8.4.49 + + '@csstools/selector-specificity@2.2.0(postcss-selector-parser@6.1.2)': + dependencies: + postcss-selector-parser: 6.1.2 + '@discoveryjs/json-ext@0.5.7': {} '@emnapi/core@1.8.1': @@ -3053,9 +9183,92 @@ snapshots: '@emotion/unitless@0.10.0': {} - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2)': + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/darwin-arm64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-loong64@0.25.12': + optional: true + + '@esbuild/linux-mips64el@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + + '@eslint-community/eslint-utils@4.9.1(eslint@8.57.1)': dependencies: - eslint: 9.39.2 + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@1.21.7))': + dependencies: + eslint: 9.39.2(jiti@1.21.7) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -3076,6 +9289,20 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.4.3 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + '@eslint/eslintrc@3.3.3': dependencies: ajv: 6.12.6 @@ -3090,6 +9317,8 @@ snapshots: transitivePeerDependencies: - supports-color + '@eslint/js@8.57.1': {} + '@eslint/js@9.39.2': {} '@eslint/object-schema@2.1.7': {} @@ -3139,8 +9368,18 @@ snapshots: '@humanfs/core': 0.19.1 '@humanwhocodes/retry': 0.4.3 + '@humanwhocodes/config-array@0.13.0': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.3 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + '@humanwhocodes/module-importer@1.0.1': {} + '@humanwhocodes/object-schema@2.0.3': {} + '@humanwhocodes/retry@0.4.3': {} '@img/colour@1.0.0': @@ -3240,6 +9479,193 @@ snapshots: '@img/sharp-win32-x64@0.34.5': optional: true + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.2 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@27.5.1': + dependencies: + '@jest/types': 27.5.1 + '@types/node': 16.18.126 + chalk: 4.1.2 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + slash: 3.0.0 + + '@jest/console@28.1.3': + dependencies: + '@jest/types': 28.1.3 + '@types/node': 16.18.126 + chalk: 4.1.2 + jest-message-util: 28.1.3 + jest-util: 28.1.3 + slash: 3.0.0 + + '@jest/core@27.5.1(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3))': + dependencies: + '@jest/console': 27.5.1 + '@jest/reporters': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.126 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.8.1 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 27.5.1 + jest-config: 27.5.1(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3)) + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-resolve-dependencies: 27.5.1 + jest-runner: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + jest-watcher: 27.5.1 + micromatch: 4.0.8 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + '@jest/environment@27.5.1': + dependencies: + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.126 + jest-mock: 27.5.1 + + '@jest/fake-timers@27.5.1': + dependencies: + '@jest/types': 27.5.1 + '@sinonjs/fake-timers': 8.1.0 + '@types/node': 16.18.126 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-util: 27.5.1 + + '@jest/globals@27.5.1': + dependencies: + '@jest/environment': 27.5.1 + '@jest/types': 27.5.1 + expect: 27.5.1 + + '@jest/reporters@27.5.1': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.126 + chalk: 4.1.2 + collect-v8-coverage: 1.0.3 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.2.0 + jest-haste-map: 27.5.1 + jest-resolve: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + slash: 3.0.0 + source-map: 0.6.1 + string-length: 4.0.2 + terminal-link: 2.1.1 + v8-to-istanbul: 8.1.1 + transitivePeerDependencies: + - supports-color + + '@jest/schemas@28.1.3': + dependencies: + '@sinclair/typebox': 0.24.51 + + '@jest/source-map@27.5.1': + dependencies: + callsites: 3.1.0 + graceful-fs: 4.2.11 + source-map: 0.6.1 + + '@jest/test-result@27.5.1': + dependencies: + '@jest/console': 27.5.1 + '@jest/types': 27.5.1 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.3 + + '@jest/test-result@28.1.3': + dependencies: + '@jest/console': 28.1.3 + '@jest/types': 28.1.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.3 + + '@jest/test-sequencer@27.5.1': + dependencies: + '@jest/test-result': 27.5.1 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-runtime: 27.5.1 + transitivePeerDependencies: + - supports-color + + '@jest/transform@27.5.1': + dependencies: + '@babel/core': 7.29.0 + '@jest/types': 27.5.1 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-regex-util: 27.5.1 + jest-util: 27.5.1 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + source-map: 0.6.1 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + + '@jest/types@27.5.1': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 16.18.126 + '@types/yargs': 16.0.11 + chalk: 4.1.2 + + '@jest/types@28.1.3': + dependencies: + '@jest/schemas': 28.1.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 16.18.126 + '@types/yargs': 17.0.35 + chalk: 4.1.2 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -3252,6 +9678,11 @@ snapshots: '@jridgewell/resolve-uri@3.1.2': {} + '@jridgewell/source-map@0.3.11': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/sourcemap-codec@1.5.5': {} '@jridgewell/trace-mapping@0.3.31': @@ -3274,6 +9705,8 @@ snapshots: '@juggle/resize-observer@3.4.0': {} + '@leichtgewicht/ip-codec@2.0.5': {} + '@ljharb/resumer@0.0.1': dependencies: '@ljharb/through': 2.3.14 @@ -3282,6 +9715,15 @@ snapshots: dependencies: call-bind: 1.0.8 + '@mantine/code-highlight@7.17.8(@mantine/core@7.17.8(@mantine/hooks@7.17.8(react@19.2.4))(@types/react@19.2.11)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@7.17.8(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@mantine/core': 7.17.8(@mantine/hooks@7.17.8(react@19.2.4))(@types/react@19.2.11)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mantine/hooks': 7.17.8(react@19.2.4) + clsx: 2.1.1 + highlight.js: 11.11.1 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + '@mantine/code-highlight@8.3.14(@mantine/core@8.3.14(@mantine/hooks@8.3.14(react@19.2.4))(@types/react@19.2.11)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.14(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@mantine/core': 8.3.14(@mantine/hooks@8.3.14(react@19.2.4))(@types/react@19.2.11)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -3290,6 +9732,20 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) + '@mantine/core@7.17.8(@mantine/hooks@7.17.8(react@19.2.4))(@types/react@19.2.11)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@floating-ui/react': 0.26.28(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mantine/hooks': 7.17.8(react@19.2.4) + clsx: 2.1.1 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-number-format: 5.4.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react-remove-scroll: 2.7.2(@types/react@19.2.11)(react@19.2.4) + react-textarea-autosize: 8.5.9(@types/react@19.2.11)(react@19.2.4) + type-fest: 4.41.0 + transitivePeerDependencies: + - '@types/react' + '@mantine/core@8.3.14(@mantine/hooks@8.3.14(react@19.2.4))(@types/react@19.2.11)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@floating-ui/react': 0.27.17(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -3312,6 +9768,10 @@ snapshots: react-dom: 19.2.4(react@19.2.4) react-dropzone: 14.3.8(react@19.2.4) + '@mantine/hooks@7.17.8(react@19.2.4)': + dependencies: + react: 19.2.4 + '@mantine/hooks@8.3.14(react@19.2.4)': dependencies: react: 19.2.4 @@ -3324,10 +9784,10 @@ snapshots: dependencies: state-local: 1.0.7 - '@monaco-editor/react@4.7.0(monaco-editor@0.52.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@monaco-editor/react@4.7.0(monaco-editor@0.55.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@monaco-editor/loader': 1.7.0 - monaco-editor: 0.52.2 + monaco-editor: 0.55.1 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) @@ -3377,6 +9837,10 @@ snapshots: '@next/swc-win32-x64-msvc@16.1.6': optional: true + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + dependencies: + eslint-scope: 5.1.1 + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -3393,6 +9857,21 @@ snapshots: '@pkgr/core@0.2.9': {} + '@pmmmwh/react-refresh-webpack-plugin@0.5.17(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@4.15.2)(webpack@5.105.2)': + dependencies: + ansi-html: 0.0.9 + core-js-pure: 3.48.0 + error-stack-parser: 2.1.4 + html-entities: 2.6.0 + loader-utils: 2.0.4 + react-refresh: 0.11.0 + schema-utils: 4.3.3 + source-map: 0.7.6 + webpack: 5.105.2(webpack-cli@5.1.4) + optionalDependencies: + type-fest: 4.41.0 + webpack-dev-server: 4.15.2(webpack-cli@5.1.4)(webpack@5.105.2) + '@polka/url@1.0.0-next.29': {} '@reaviz/react-use-fuzzy@1.0.3(fuse.js@6.6.2)(react@19.2.4)': @@ -3400,8 +9879,121 @@ snapshots: fuse.js: 6.6.2 react: 19.2.4 + '@rolldown/pluginutils@1.0.0-beta.27': {} + + '@rollup/plugin-babel@5.3.1(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@2.79.2)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) + rollup: 2.79.2 + optionalDependencies: + '@types/babel__core': 7.20.5 + transitivePeerDependencies: + - supports-color + + '@rollup/plugin-node-resolve@11.2.1(rollup@2.79.2)': + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) + '@types/resolve': 1.17.1 + builtin-modules: 3.3.0 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.11 + rollup: 2.79.2 + + '@rollup/plugin-replace@2.4.2(rollup@2.79.2)': + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) + magic-string: 0.25.9 + rollup: 2.79.2 + + '@rollup/pluginutils@3.1.0(rollup@2.79.2)': + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 2.79.2 + + '@rollup/rollup-android-arm-eabi@4.57.1': + optional: true + + '@rollup/rollup-android-arm64@4.57.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.57.1': + optional: true + + '@rollup/rollup-darwin-x64@4.57.1': + optional: true + + '@rollup/rollup-freebsd-arm64@4.57.1': + optional: true + + '@rollup/rollup-freebsd-x64@4.57.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.57.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.57.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.57.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.57.1': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.57.1': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.57.1': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.57.1': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.57.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.57.1': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.57.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.57.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.57.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.57.1': + optional: true + + '@rollup/rollup-openbsd-x64@4.57.1': + optional: true + + '@rollup/rollup-openharmony-arm64@4.57.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.57.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.57.1': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.57.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.57.1': + optional: true + '@rtsao/scc@1.1.0': {} + '@rushstack/eslint-patch@1.15.0': {} + '@shikijs/core@3.22.0': dependencies: '@shikijs/types': 3.22.0 @@ -3435,10 +10027,108 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} + '@sinclair/typebox@0.24.51': {} + + '@sinonjs/commons@1.8.6': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@8.1.0': + dependencies: + '@sinonjs/commons': 1.8.6 + + '@surma/rollup-plugin-off-main-thread@2.2.3': + dependencies: + ejs: 3.1.10 + json5: 2.2.3 + magic-string: 0.25.9 + string.prototype.matchall: 4.0.12 + + '@svgr/babel-plugin-add-jsx-attribute@5.4.0': {} + + '@svgr/babel-plugin-remove-jsx-attribute@5.4.0': {} + + '@svgr/babel-plugin-remove-jsx-empty-expression@5.0.1': {} + + '@svgr/babel-plugin-replace-jsx-attribute-value@5.0.1': {} + + '@svgr/babel-plugin-svg-dynamic-title@5.4.0': {} + + '@svgr/babel-plugin-svg-em-dimensions@5.4.0': {} + + '@svgr/babel-plugin-transform-react-native-svg@5.4.0': {} + + '@svgr/babel-plugin-transform-svg-component@5.5.0': {} + + '@svgr/babel-preset@5.5.0': + dependencies: + '@svgr/babel-plugin-add-jsx-attribute': 5.4.0 + '@svgr/babel-plugin-remove-jsx-attribute': 5.4.0 + '@svgr/babel-plugin-remove-jsx-empty-expression': 5.0.1 + '@svgr/babel-plugin-replace-jsx-attribute-value': 5.0.1 + '@svgr/babel-plugin-svg-dynamic-title': 5.4.0 + '@svgr/babel-plugin-svg-em-dimensions': 5.4.0 + '@svgr/babel-plugin-transform-react-native-svg': 5.4.0 + '@svgr/babel-plugin-transform-svg-component': 5.5.0 + + '@svgr/core@5.5.0': + dependencies: + '@svgr/plugin-jsx': 5.5.0 + camelcase: 6.3.0 + cosmiconfig: 7.1.0 + transitivePeerDependencies: + - supports-color + + '@svgr/hast-util-to-babel-ast@5.5.0': + dependencies: + '@babel/types': 7.29.0 + + '@svgr/plugin-jsx@5.5.0': + dependencies: + '@babel/core': 7.29.0 + '@svgr/babel-preset': 5.5.0 + '@svgr/hast-util-to-babel-ast': 5.5.0 + svg-parser: 2.0.4 + transitivePeerDependencies: + - supports-color + + '@svgr/plugin-svgo@5.5.0': + dependencies: + cosmiconfig: 7.1.0 + deepmerge: 4.3.1 + svgo: 1.3.2 + + '@svgr/webpack@5.5.0': + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-transform-react-constant-elements': 7.27.1(@babel/core@7.29.0) + '@babel/preset-env': 7.29.0(@babel/core@7.29.0) + '@babel/preset-react': 7.28.5(@babel/core@7.29.0) + '@svgr/core': 5.5.0 + '@svgr/plugin-jsx': 5.5.0 + '@svgr/plugin-svgo': 5.5.0 + loader-utils: 2.0.4 + transitivePeerDependencies: + - supports-color + '@swc/helpers@0.5.15': dependencies: tslib: 2.8.1 + '@tootallnate/once@1.1.2': {} + + '@trivago/prettier-plugin-sort-imports@4.3.0(prettier@3.8.1)': + dependencies: + '@babel/generator': 7.17.7 + '@babel/parser': 7.29.0 + '@babel/traverse': 7.23.2 + '@babel/types': 7.17.0 + javascript-natural-sort: 0.7.1 + lodash: 4.17.23 + prettier: 3.8.1 + transitivePeerDependencies: + - supports-color + '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.1)': dependencies: '@babel/generator': 7.29.1 @@ -3453,6 +10143,8 @@ snapshots: transitivePeerDependencies: - supports-color + '@trysound/sax@0.2.0': {} + '@tsconfig/node10@1.0.12': {} '@tsconfig/node12@1.0.11': {} @@ -3466,12 +10158,111 @@ snapshots: tslib: 2.8.1 optional: true + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.29.0 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.29.0 + + '@types/body-parser@1.19.6': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 16.18.126 + + '@types/bonjour@3.5.13': + dependencies: + '@types/node': 16.18.126 + + '@types/connect-history-api-fallback@1.5.4': + dependencies: + '@types/express-serve-static-core': 5.1.1 + '@types/node': 16.18.126 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 16.18.126 + + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.8 + + '@types/eslint@8.56.12': + dependencies: + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + + '@types/estree@0.0.39': {} + '@types/estree@1.0.8': {} + '@types/express-serve-static-core@4.19.8': + dependencies: + '@types/node': 16.18.126 + '@types/qs': 6.14.0 + '@types/range-parser': 1.2.7 + '@types/send': 1.2.1 + + '@types/express-serve-static-core@5.1.1': + dependencies: + '@types/node': 16.18.126 + '@types/qs': 6.14.0 + '@types/range-parser': 1.2.7 + '@types/send': 1.2.1 + + '@types/express@4.17.25': + dependencies: + '@types/body-parser': 1.19.6 + '@types/express-serve-static-core': 4.19.8 + '@types/qs': 6.14.0 + '@types/serve-static': 1.15.10 + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 16.18.126 + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 + '@types/html-minifier-terser@6.1.0': {} + + '@types/http-errors@2.0.5': {} + + '@types/http-proxy@1.17.17': + dependencies: + '@types/node': 16.18.126 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + '@types/js-yaml@4.0.9': {} '@types/json-schema@7.0.15': {} @@ -3484,10 +10275,28 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/node@25.2.0': + '@types/mime@1.3.5': {} + + '@types/node-forge@1.3.14': + dependencies: + '@types/node': 16.18.126 + + '@types/node@16.18.126': {} + + '@types/node@25.2.3': dependencies: undici-types: 7.16.0 + '@types/parse-json@4.0.2': {} + + '@types/prettier@2.7.3': {} + + '@types/q@1.5.8': {} + + '@types/qs@6.14.0': {} + + '@types/range-parser@1.2.7': {} + '@types/react-dom@19.2.3(@types/react@19.2.11)': dependencies: '@types/react': 19.2.11 @@ -3496,19 +10305,91 @@ snapshots: dependencies: csstype: 3.2.3 + '@types/resolve@1.17.1': + dependencies: + '@types/node': 16.18.126 + + '@types/retry@0.12.0': {} + + '@types/semver@7.7.1': {} + + '@types/send@0.17.6': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 16.18.126 + + '@types/send@1.2.1': + dependencies: + '@types/node': 16.18.126 + + '@types/serve-index@1.9.4': + dependencies: + '@types/express': 4.17.25 + + '@types/serve-static@1.15.10': + dependencies: + '@types/http-errors': 2.0.5 + '@types/node': 16.18.126 + '@types/send': 0.17.6 + + '@types/sockjs@0.3.36': + dependencies: + '@types/node': 16.18.126 + + '@types/stack-utils@2.0.3': {} + '@types/stylis@4.2.7': {} + '@types/trusted-types@2.0.7': {} + '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@types/vscode@1.109.0': {} + + '@types/webpack-env@1.18.8': {} + + '@types/ws@8.18.1': + dependencies: + '@types/node': 16.18.126 + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@16.0.11': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@types/yargs@17.0.35': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.54.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/type-utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.54.0 - eslint: 9.39.2 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.9.3) + debug: 4.4.3 + eslint: 8.57.1 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare-lite: 1.4.0 + semver: 7.7.4 + tsutils: 3.21.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/eslint-plugin@8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.55.0 + '@typescript-eslint/type-utils': 8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/utils': 8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.55.0 + eslint: 9.39.2(jiti@1.21.7) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3516,79 +10397,152 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/experimental-utils@5.62.0(eslint@8.57.1)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.9.3) + eslint: 8.57.1 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.3) debug: 4.4.3 - eslint: 9.39.2 + eslint: 8.57.1 + optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.54.0(typescript@5.9.3)': + '@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) - '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/scope-manager': 8.55.0 + '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.55.0 + debug: 4.4.3 + eslint: 9.39.2(jiti@1.21.7) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.55.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.9.3) + '@typescript-eslint/types': 8.55.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.54.0': + '@typescript-eslint/scope-manager@5.62.0': dependencies: - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 - '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3)': + '@typescript-eslint/scope-manager@8.55.0': + dependencies: + '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/visitor-keys': 8.55.0 + + '@typescript-eslint/tsconfig-utils@8.55.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.54.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.9.3) debug: 4.4.3 - eslint: 9.39.2 + eslint: 8.57.1 + tsutils: 3.21.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/type-utils@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.39.2(jiti@1.21.7) ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.54.0': {} + '@typescript-eslint/types@5.62.0': {} - '@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3)': + '@typescript-eslint/types@8.55.0': {} + + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.54.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.4.3 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.7.4 + tsutils: 3.21.0(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@8.55.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.55.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.9.3) + '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/visitor-keys': 8.55.0 debug: 4.4.3 minimatch: 9.0.5 - semver: 7.7.3 + semver: 7.7.4 tinyglobby: 0.2.15 ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.54.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - eslint: 9.39.2 + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.7.1 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.3) + eslint: 8.57.1 + eslint-scope: 5.1.1 + semver: 7.7.4 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@1.21.7)) + '@typescript-eslint/scope-manager': 8.55.0 + '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) + eslint: 9.39.2(jiti@1.21.7) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.54.0': + '@typescript-eslint/visitor-keys@5.62.0': dependencies: - '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + + '@typescript-eslint/visitor-keys@8.55.0': + dependencies: + '@typescript-eslint/types': 8.55.0 eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} @@ -3652,16 +10606,171 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true + '@vitejs/plugin-react@4.7.0(vite@6.4.1(@types/node@25.2.3)(jiti@1.21.7)(terser@5.46.0))': + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) + '@rolldown/pluginutils': 1.0.0-beta.27 + '@types/babel__core': 7.20.5 + react-refresh: 0.17.0 + vite: 6.4.1(@types/node@25.2.3)(jiti@1.21.7)(terser@5.46.0) + transitivePeerDependencies: + - supports-color + + '@webassemblyjs/ast@1.14.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + + '@webassemblyjs/floating-point-hex-parser@1.13.2': {} + + '@webassemblyjs/helper-api-error@1.13.2': {} + + '@webassemblyjs/helper-buffer@1.14.1': {} + + '@webassemblyjs/helper-numbers@1.13.2': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} + + '@webassemblyjs/helper-wasm-section@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 + + '@webassemblyjs/ieee754@1.13.2': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.13.2': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.13.2': {} + + '@webassemblyjs/wasm-edit@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 + + '@webassemblyjs/wasm-gen@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wasm-opt@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + + '@webassemblyjs/wasm-parser@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wast-printer@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@xtuc/long': 4.2.2 + + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.105.2)': + dependencies: + webpack: 5.105.2(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-dev-server@4.15.2)(webpack@5.105.2) + + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.105.2)': + dependencies: + webpack: 5.105.2(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-dev-server@4.15.2)(webpack@5.105.2) + + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@4.15.2)(webpack@5.105.2)': + dependencies: + webpack: 5.105.2(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-dev-server@4.15.2)(webpack@5.105.2) + optionalDependencies: + webpack-dev-server: 4.15.2(webpack-cli@5.1.4)(webpack@5.105.2) + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + abab@2.0.6: {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-globals@6.0.0: + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + + acorn-import-phases@1.0.4(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 + acorn-walk@7.2.0: {} + acorn-walk@8.3.4: dependencies: acorn: 8.15.0 + acorn@7.4.1: {} + acorn@8.15.0: {} + address@1.2.2: {} + + adjust-sourcemap-loader@4.0.0: + dependencies: + loader-utils: 2.0.4 + regex-parser: 2.3.1 + + agent-base@6.0.2: + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + ajv-formats@2.1.1(ajv@8.18.0): + optionalDependencies: + ajv: 8.18.0 + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + + ajv-keywords@5.1.0(ajv@8.18.0): + dependencies: + ajv: 8.18.0 + fast-deep-equal: 3.1.3 + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -3669,6 +10778,13 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + ajv@8.18.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.0 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + allotment@1.20.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: classnames: 2.5.1 @@ -3680,12 +10796,39 @@ snapshots: react-dom: 19.2.4(react@19.2.4) usehooks-ts: 3.1.1(react@19.2.4) + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-html-community@0.0.8: {} + + ansi-html@0.0.9: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 + ansi-styles@5.2.0: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + arg@4.1.3: {} + arg@5.0.2: {} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -3699,6 +10842,8 @@ snapshots: call-bound: 1.0.4 is-array-buffer: 3.0.5 + array-flatten@1.1.1: {} + array-includes@3.1.9: dependencies: call-bind: 1.0.8 @@ -3710,6 +10855,8 @@ snapshots: is-string: 1.1.1 math-intrinsics: 1.1.0 + array-union@2.1.0: {} + array.prototype.findlast@1.2.5: dependencies: call-bind: 1.0.8 @@ -3743,6 +10890,17 @@ snapshots: es-abstract: 1.24.1 es-shim-unscopables: 1.1.0 + array.prototype.reduce@1.0.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-array-method-boxes-properly: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + is-string: 1.1.1 + array.prototype.tosorted@1.1.4: dependencies: call-bind: 1.0.8 @@ -3761,12 +10919,29 @@ snapshots: get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 + asap@2.0.6: {} + ast-types-flow@0.0.8: {} async-function@1.0.0: {} + async@3.2.6: {} + + asynckit@0.4.0: {} + + at-least-node@1.0.0: {} + attr-accept@2.2.5: {} + autoprefixer@10.4.24(postcss@8.4.49): + dependencies: + browserslist: 4.28.1 + caniuse-lite: 1.0.30001769 + fraction.js: 5.3.4 + picocolors: 1.1.1 + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 @@ -3775,12 +10950,196 @@ snapshots: axobject-query@4.1.0: {} + azure-devops-node-api@11.2.0: + dependencies: + tunnel: 0.0.6 + typed-rest-client: 1.8.11 + + babel-jest@27.5.1(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 27.5.1(@babel/core@7.29.0) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-loader@8.4.1(@babel/core@7.29.0)(webpack@5.105.2): + dependencies: + '@babel/core': 7.29.0 + find-cache-dir: 3.3.2 + loader-utils: 2.0.4 + make-dir: 3.1.0 + schema-utils: 2.7.1 + webpack: 5.105.2(webpack-cli@5.1.4) + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.28.6 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@27.5.1: + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.28.0 + + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.28.6 + cosmiconfig: 7.1.0 + resolve: 1.22.11 + + babel-plugin-named-asset-import@0.3.8(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + + babel-plugin-polyfill-corejs2@0.4.15(@babel/core@7.29.0): + dependencies: + '@babel/compat-data': 7.29.0 + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.29.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.29.0) + core-js-compat: 3.48.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.14.0(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.29.0) + core-js-compat: 3.48.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.6(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + babel-plugin-transform-react-remove-prop-types@0.4.24: {} + + babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.0) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.0) + + babel-preset-jest@27.5.1(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + babel-plugin-jest-hoist: 27.5.1 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) + + babel-preset-react-app@10.1.0: + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.29.0) + '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.29.0) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.29.0) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.29.0) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.29.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.29.0) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.29.0) + '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0) + '@babel/preset-env': 7.29.0(@babel/core@7.29.0) + '@babel/preset-react': 7.28.5(@babel/core@7.29.0) + '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) + '@babel/runtime': 7.28.6 + babel-plugin-macros: 3.1.0 + babel-plugin-transform-react-remove-prop-types: 0.4.24 + transitivePeerDependencies: + - supports-color + balanced-match@1.0.2: {} + base64-js@1.5.1: {} + baseline-browser-mapping@2.9.19: {} + batch@0.6.1: {} + + bfj@7.1.0: + dependencies: + bluebird: 3.7.2 + check-types: 11.2.3 + hoopy: 0.1.4 + jsonpath: 1.2.1 + tryer: 1.0.1 + + big.js@5.2.2: {} + + binary-extensions@2.3.0: {} + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + bluebird@3.7.2: {} + + body-parser@1.20.4: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.1 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.14.2 + raw-body: 2.5.3 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + body-scroll-lock-upgrade@1.1.0: {} + bonjour-service@1.3.0: + dependencies: + fast-deep-equal: 3.1.3 + multicast-dns: 7.2.5 + + boolbase@1.0.0: {} + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -3794,14 +11153,33 @@ snapshots: dependencies: fill-range: 7.1.1 + browser-process-hrtime@1.0.0: {} + browserslist@4.28.1: dependencies: baseline-browser-mapping: 2.9.19 - caniuse-lite: 1.0.30001767 + caniuse-lite: 1.0.30001769 electron-to-chromium: 1.5.286 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-crc32@0.2.13: {} + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + builtin-modules@3.3.0: {} + + bytes@3.1.2: {} + calculate-size@1.1.1: {} call-bind-apply-helpers@1.0.2: @@ -3825,33 +11203,140 @@ snapshots: callsites@3.1.0: {} + camel-case@4.1.2: + dependencies: + pascal-case: 3.1.2 + tslib: 2.8.1 + + camelcase-css@2.0.1: {} + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + camelize@1.0.1: {} - caniuse-lite@1.0.30001767: {} + caniuse-api@3.0.0: + dependencies: + browserslist: 4.28.1 + caniuse-lite: 1.0.30001769 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + + caniuse-lite@1.0.30001769: {} + + case-sensitive-paths-webpack-plugin@2.4.0: {} ccount@2.0.1: {} + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + char-regex@1.0.2: {} + + char-regex@2.0.2: {} + character-entities-html4@2.1.0: {} character-entities-legacy@3.0.0: {} + check-types@11.2.3: {} + + cheerio-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-select: 5.2.2 + css-what: 6.2.2 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + + cheerio@1.2.0: + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.2.2 + encoding-sniffer: 0.2.1 + htmlparser2: 10.1.0 + parse5: 7.3.0 + parse5-htmlparser2-tree-adapter: 7.1.0 + parse5-parser-stream: 7.1.2 + undici: 7.22.0 + whatwg-mimetype: 4.0.0 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chownr@1.1.4: {} + chroma-js@2.6.0: {} + chrome-trace-event@1.0.4: {} + + ci-info@3.9.0: {} + + cjs-module-lexer@1.4.3: {} + classnames@2.5.1: {} + clean-css@5.3.3: + dependencies: + source-map: 0.6.1 + client-only@0.0.1: {} + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone-deep@4.0.1: + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + clsx@2.1.1: {} + co@4.6.0: {} + + coa@2.0.2: + dependencies: + '@types/q': 1.5.8 + chalk: 2.4.2 + q: 1.5.1 + + collect-v8-coverage@1.0.3: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + color-convert@2.0.1: dependencies: color-name: 1.1.4 + color-name@1.1.3: {} + color-name@1.1.4: {} color-string@1.9.1: @@ -3864,14 +11349,94 @@ snapshots: color-convert: 2.0.1 color-string: 1.9.1 + colord@2.9.3: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + comma-separated-tokens@2.0.3: {} + commander@10.0.1: {} + + commander@2.20.3: {} + + commander@4.1.1: {} + + commander@6.2.1: {} + commander@7.2.0: {} + commander@8.3.0: {} + + common-tags@1.8.2: {} + + commondir@1.0.1: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.54.0 + + compression@1.8.1: + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9 + negotiator: 0.6.4 + on-headers: 1.1.0 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + concat-map@0.0.1: {} + confusing-browser-globals@1.0.11: {} + + connect-history-api-fallback@2.0.0: {} + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + convert-source-map@1.9.0: {} + convert-source-map@2.0.0: {} + cookie-signature@1.0.7: {} + + cookie@0.7.2: {} + + core-js-compat@3.48.0: + dependencies: + browserslist: 4.28.1 + + core-js-pure@3.48.0: {} + + core-js@3.48.0: {} + + core-util-is@1.0.3: {} + + cosmiconfig@6.0.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + coverup@0.1.1: {} create-global-state-hook@0.0.2: {} @@ -3884,14 +11449,156 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + crypto-random-string@2.0.0: {} + + css-blank-pseudo@3.0.3(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + css-color-keywords@1.0.0: {} + css-declaration-sorter@6.4.1(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + css-has-pseudo@3.0.4(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + + css-loader@6.11.0(webpack@5.105.2): + dependencies: + icss-utils: 5.1.0(postcss@8.4.49) + postcss: 8.4.49 + postcss-modules-extract-imports: 3.1.0(postcss@8.4.49) + postcss-modules-local-by-default: 4.2.0(postcss@8.4.49) + postcss-modules-scope: 3.2.1(postcss@8.4.49) + postcss-modules-values: 4.0.0(postcss@8.4.49) + postcss-value-parser: 4.2.0 + semver: 7.7.4 + optionalDependencies: + webpack: 5.105.2(webpack-cli@5.1.4) + + css-minimizer-webpack-plugin@3.4.1(webpack@5.105.2): + dependencies: + cssnano: 5.1.15(postcss@8.4.49) + jest-worker: 27.5.1 + postcss: 8.4.49 + schema-utils: 4.3.3 + serialize-javascript: 6.0.2 + source-map: 0.6.1 + webpack: 5.105.2(webpack-cli@5.1.4) + + css-prefers-color-scheme@6.0.3(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + css-select-base-adapter@0.1.1: {} + + css-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 3.4.2 + domutils: 1.7.0 + nth-check: 1.0.2 + + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-select@5.2.2: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + css-to-react-native@3.2.0: dependencies: camelize: 1.0.1 css-color-keywords: 1.0.0 postcss-value-parser: 4.2.0 + css-tree@1.0.0-alpha.37: + dependencies: + mdn-data: 2.0.4 + source-map: 0.6.1 + + css-tree@1.1.3: + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + + css-what@3.4.2: {} + + css-what@6.2.2: {} + + cssdb@7.11.2: {} + + cssesc@3.0.0: {} + + cssnano-preset-default@5.2.14(postcss@8.4.49): + dependencies: + css-declaration-sorter: 6.4.1(postcss@8.4.49) + cssnano-utils: 3.1.0(postcss@8.4.49) + postcss: 8.4.49 + postcss-calc: 8.2.4(postcss@8.4.49) + postcss-colormin: 5.3.1(postcss@8.4.49) + postcss-convert-values: 5.1.3(postcss@8.4.49) + postcss-discard-comments: 5.1.2(postcss@8.4.49) + postcss-discard-duplicates: 5.1.0(postcss@8.4.49) + postcss-discard-empty: 5.1.1(postcss@8.4.49) + postcss-discard-overridden: 5.1.0(postcss@8.4.49) + postcss-merge-longhand: 5.1.7(postcss@8.4.49) + postcss-merge-rules: 5.1.4(postcss@8.4.49) + postcss-minify-font-values: 5.1.0(postcss@8.4.49) + postcss-minify-gradients: 5.1.1(postcss@8.4.49) + postcss-minify-params: 5.1.4(postcss@8.4.49) + postcss-minify-selectors: 5.2.1(postcss@8.4.49) + postcss-normalize-charset: 5.1.0(postcss@8.4.49) + postcss-normalize-display-values: 5.1.0(postcss@8.4.49) + postcss-normalize-positions: 5.1.1(postcss@8.4.49) + postcss-normalize-repeat-style: 5.1.1(postcss@8.4.49) + postcss-normalize-string: 5.1.0(postcss@8.4.49) + postcss-normalize-timing-functions: 5.1.0(postcss@8.4.49) + postcss-normalize-unicode: 5.1.1(postcss@8.4.49) + postcss-normalize-url: 5.1.0(postcss@8.4.49) + postcss-normalize-whitespace: 5.1.1(postcss@8.4.49) + postcss-ordered-values: 5.1.3(postcss@8.4.49) + postcss-reduce-initial: 5.1.2(postcss@8.4.49) + postcss-reduce-transforms: 5.1.0(postcss@8.4.49) + postcss-svgo: 5.1.0(postcss@8.4.49) + postcss-unique-selectors: 5.1.1(postcss@8.4.49) + + cssnano-utils@3.1.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + cssnano@5.1.15(postcss@8.4.49): + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.4.49) + lilconfig: 2.1.0 + postcss: 8.4.49 + yaml: 1.10.2 + + csso@4.2.0: + dependencies: + css-tree: 1.1.3 + + cssom@0.3.8: {} + + cssom@0.4.4: {} + + cssstyle@2.3.0: + dependencies: + cssom: 0.3.8 + csstype@3.2.3: {} ctrl-keys@1.0.6: {} @@ -3904,6 +11611,12 @@ snapshots: damerau-levenshtein@1.0.8: {} + data-urls@2.0.0: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + data-view-buffer@1.0.2: dependencies: call-bound: 1.0.4 @@ -3926,14 +11639,28 @@ snapshots: debounce@1.2.1: {} - debug@3.2.7: + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.2.7(supports-color@5.5.0): dependencies: ms: 2.1.3 + optionalDependencies: + supports-color: 5.5.0 debug@4.4.3: dependencies: ms: 2.1.3 + decimal.js@10.6.0: {} + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + dedent@0.7.0: {} + deeks@3.1.0: {} deep-copy@1.4.2: {} @@ -3947,8 +11674,16 @@ snapshots: object-keys: 1.1.1 regexp.prototype.flags: 1.5.4 + deep-extend@0.6.0: {} + deep-is@0.1.4: {} + deepmerge@4.3.1: {} + + default-gateway@6.0.3: + dependencies: + execa: 5.1.1 + defaulty@2.1.0: dependencies: deep-copy: 1.4.2 @@ -3959,6 +11694,8 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + define-lazy-prop@2.0.0: {} + define-properties@1.2.1: dependencies: define-data-property: 1.1.4 @@ -3967,25 +11704,128 @@ snapshots: defined@1.0.1: {} + delayed-stream@1.0.0: {} + + depd@1.1.2: {} + + depd@2.0.0: {} + dequal@2.0.3: {} - detect-libc@2.1.2: - optional: true + destroy@1.2.0: {} + + detect-libc@2.1.2: {} + + detect-newline@3.1.0: {} detect-node-es@1.1.0: {} + detect-node@2.1.0: {} + + detect-port-alt@1.1.6: + dependencies: + address: 1.2.2 + debug: 2.6.9 + transitivePeerDependencies: + - supports-color + devlop@1.1.0: dependencies: dequal: 2.0.3 + didyoumean@1.2.2: {} + + diff-sequences@27.5.1: {} + diff@4.0.4: {} + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dlv@1.1.3: {} + + dns-packet@5.6.1: + dependencies: + '@leichtgewicht/ip-codec': 2.0.5 + doc-path@4.1.1: {} doctrine@2.1.0: dependencies: esutils: 2.0.3 + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dom-converter@0.2.0: + dependencies: + utila: 0.4.0 + + dom-serializer@0.2.2: + dependencies: + 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 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@1.3.1: {} + + domelementtype@2.3.0: {} + + domexception@2.0.1: + dependencies: + webidl-conversions: 5.0.0 + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + dompurify@3.2.7: + optionalDependencies: + '@types/trusted-types': 2.0.7 + + domutils@1.7.0: + dependencies: + 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.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + dotenv-expand@5.1.0: {} + + dotenv@10.0.0: {} + dotignore@0.1.2: dependencies: minimatch: 3.1.2 @@ -3998,6 +11838,12 @@ snapshots: duplexer@0.1.2: {} + ee-first@1.1.1: {} + + ejs@3.1.10: + dependencies: + jake: 10.9.4 + electron-to-chromium@1.5.286: {} elkjs@0.10.2: {} @@ -4008,8 +11854,52 @@ snapshots: ellipsize@0.5.1: {} + emittery@0.10.2: {} + + emittery@0.8.1: {} + + emoji-regex@8.0.0: {} + emoji-regex@9.2.2: {} + emojis-list@3.0.0: {} + + encodeurl@2.0.0: {} + + encoding-sniffer@0.2.1: + dependencies: + iconv-lite: 0.6.3 + whatwg-encoding: 3.1.1 + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.19.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.0 + + entities@2.1.0: {} + + entities@2.2.0: {} + + entities@4.5.0: {} + + entities@6.0.1: {} + + entities@7.0.1: {} + + envinfo@7.21.0: {} + + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + + error-stack-parser@2.1.4: + dependencies: + stackframe: 1.3.4 + es-abstract@1.24.1: dependencies: array-buffer-byte-length: 1.0.2 @@ -4067,6 +11957,8 @@ snapshots: unbox-primitive: 1.1.0 which-typed-array: 1.1.20 + es-array-method-boxes-properly@1.0.0: {} + es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -4090,6 +11982,8 @@ snapshots: iterator.prototype: 1.1.5 safe-array-concat: 1.1.3 + es-module-lexer@2.0.0: {} + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -4111,22 +12005,65 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + escalade@3.2.0: {} + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.0.0: {} + escape-string-regexp@4.0.0: {} - eslint-config-next@16.1.6(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3): + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + eslint-config-next@16.1.6(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3): dependencies: '@next/eslint-plugin-next': 16.1.6 - eslint: 9.39.2 + eslint: 9.39.2(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2))(eslint@9.39.2) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2))(eslint@9.39.2))(eslint@9.39.2) - eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.2) - eslint-plugin-react: 7.37.5(eslint@9.39.2) - eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@1.21.7)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@1.21.7)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.2(jiti@1.21.7)) + eslint-plugin-react: 7.37.5(eslint@9.39.2(jiti@1.21.7)) + eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@1.21.7)) globals: 16.4.0 - typescript-eslint: 8.54.0(eslint@9.39.2)(typescript@5.9.3) + typescript-eslint: 8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -4135,56 +12072,105 @@ snapshots: - eslint-plugin-import-x - supports-color - eslint-config-prettier@10.1.8(eslint@9.39.2): + eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@1.21.7)): dependencies: - eslint: 9.39.2 + eslint: 9.39.2(jiti@1.21.7) + + eslint-config-prettier@9.1.2(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + + eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.28.6(@babel/core@7.29.0))(@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0))(eslint@8.57.1)(jest@27.5.1(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3)))(typescript@5.9.3): + dependencies: + '@babel/core': 7.29.0 + '@babel/eslint-parser': 7.28.6(@babel/core@7.29.0)(eslint@8.57.1) + '@rushstack/eslint-patch': 1.15.0 + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.9.3) + babel-preset-react-app: 10.1.0 + confusing-browser-globals: 1.0.11 + eslint: 8.57.1 + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.28.6(@babel/core@7.29.0))(@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0))(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(jest@27.5.1(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3)))(typescript@5.9.3) + eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) + eslint-plugin-react: 7.37.5(eslint@8.57.1) + eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) + eslint-plugin-testing-library: 5.11.1(eslint@8.57.1)(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@babel/plugin-syntax-flow' + - '@babel/plugin-transform-react-jsx' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - jest + - supports-color eslint-import-resolver-node@0.3.9: dependencies: - debug: 3.2.7 + debug: 3.2.7(supports-color@5.5.0) is-core-module: 2.16.1 resolve: 1.22.11 transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2))(eslint@9.39.2): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@1.21.7)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 - eslint: 9.39.2 - get-tsconfig: 4.13.1 + eslint: 9.39.2(jiti@1.21.7) + get-tsconfig: 4.13.6 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2))(eslint@9.39.2))(eslint@9.39.2) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@1.21.7)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2))(eslint@9.39.2))(eslint@9.39.2): + eslint-module-utils@2.12.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): dependencies: - debug: 3.2.7 + debug: 3.2.7(supports-color@5.5.0) optionalDependencies: - '@typescript-eslint/parser': 8.54.0(eslint@9.39.2)(typescript@5.9.3) - eslint: 9.39.2 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.9.3) + eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2))(eslint@9.39.2) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2))(eslint@9.39.2))(eslint@9.39.2): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@1.21.7)): + dependencies: + debug: 3.2.7(supports-color@5.5.0) + optionalDependencies: + '@typescript-eslint/parser': 8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) + eslint: 9.39.2(jiti@1.21.7) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@1.21.7)) + transitivePeerDependencies: + - supports-color + + eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.28.6(@babel/core@7.29.0))(@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0))(eslint@8.57.1): + dependencies: + '@babel/plugin-syntax-flow': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) + eslint: 8.57.1 + lodash: 4.17.23 + string-natural-compare: 3.0.1 + + eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 array.prototype.findlastindex: 1.2.6 array.prototype.flat: 1.3.3 array.prototype.flatmap: 1.3.3 - debug: 3.2.7 + debug: 3.2.7(supports-color@5.5.0) doctrine: 2.1.0 - eslint: 9.39.2 + eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2))(eslint@9.39.2))(eslint@9.39.2) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -4196,13 +12182,53 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.54.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.2): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@1.21.7)): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7(supports-color@5.5.0) + doctrine: 2.1.0 + eslint: 9.39.2(jiti@1.21.7) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@1.21.7)) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(jest@27.5.1(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3)))(typescript@5.9.3): + dependencies: + '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.57.1)(typescript@5.9.3) + eslint: 8.57.1 + optionalDependencies: + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + jest: 27.5.1(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3)) + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1): dependencies: aria-query: 5.3.2 array-includes: 3.1.9 @@ -4212,7 +12238,7 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.39.2 + eslint: 8.57.1 hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -4221,27 +12247,61 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.2))(eslint@9.39.2)(prettier@3.8.1): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.2(jiti@1.21.7)): dependencies: - eslint: 9.39.2 + aria-query: 5.3.2 + array-includes: 3.1.9 + array.prototype.flatmap: 1.3.3 + ast-types-flow: 0.0.8 + axe-core: 4.11.1 + axobject-query: 4.1.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 9.39.2(jiti@1.21.7) + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + safe-regex-test: 1.1.0 + string.prototype.includes: 2.0.1 + + eslint-plugin-prettier@5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@1.21.7)))(eslint@9.39.2(jiti@1.21.7))(prettier@3.8.1): + dependencies: + eslint: 9.39.2(jiti@1.21.7) prettier: 3.8.1 prettier-linter-helpers: 1.0.1 synckit: 0.11.12 optionalDependencies: - eslint-config-prettier: 10.1.8(eslint@9.39.2) + '@types/eslint': 9.6.1 + eslint-config-prettier: 10.1.8(eslint@9.39.2(jiti@1.21.7)) - eslint-plugin-react-hooks@7.0.1(eslint@9.39.2): + eslint-plugin-prettier@5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@9.1.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.8.1): + dependencies: + eslint: 8.57.1 + prettier: 3.8.1 + prettier-linter-helpers: 1.0.1 + synckit: 0.11.12 + optionalDependencies: + '@types/eslint': 9.6.1 + eslint-config-prettier: 9.1.2(eslint@8.57.1) + + eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + + eslint-plugin-react-hooks@7.0.1(eslint@9.39.2(jiti@1.21.7)): dependencies: '@babel/core': 7.29.0 '@babel/parser': 7.29.0 - eslint: 9.39.2 + eslint: 9.39.2(jiti@1.21.7) hermes-parser: 0.25.1 zod: 4.3.6 zod-validation-error: 4.0.2(zod@4.3.6) transitivePeerDependencies: - supports-color - eslint-plugin-react@7.37.5(eslint@9.39.2): + eslint-plugin-react@7.37.5(eslint@8.57.1): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -4249,7 +12309,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.2 - eslint: 9.39.2 + eslint: 8.57.1 estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -4263,24 +12323,125 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-unused-imports@4.3.0(@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2): + eslint-plugin-react@7.37.5(eslint@9.39.2(jiti@1.21.7)): dependencies: - eslint: 9.39.2 + array-includes: 3.1.9 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.2.2 + eslint: 9.39.2(jiti@1.21.7) + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + + eslint-plugin-testing-library@5.11.1(eslint@8.57.1)(typescript@5.9.3): + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.9.3) + eslint: 8.57.1 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1): + dependencies: + eslint: 8.57.1 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + + eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.2(jiti@1.21.7)): + dependencies: + eslint: 9.39.2(jiti@1.21.7) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 + eslint-visitor-keys@2.1.0: {} + eslint-visitor-keys@3.4.3: {} eslint-visitor-keys@4.2.1: {} - eslint@9.39.2: + eslint-webpack-plugin@3.2.0(eslint@8.57.1)(webpack@5.105.2): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) + '@types/eslint': 8.56.12 + eslint: 8.57.1 + jest-worker: 28.1.3 + micromatch: 4.0.8 + normalize-path: 3.0.0 + schema-utils: 4.3.3 + webpack: 5.105.2(webpack-cli@5.1.4) + + eslint@8.57.1: + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.2 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.3.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.1 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + eslint@9.39.2(jiti@1.21.7): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@1.21.7)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.21.1 '@eslint/config-helpers': 0.4.2 @@ -4314,6 +12475,8 @@ snapshots: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 + optionalDependencies: + jiti: 1.21.7 transitivePeerDependencies: - supports-color @@ -4325,6 +12488,14 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.1 + espree@9.6.1: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 3.4.3 + + esprima@1.2.5: {} + esprima@4.0.1: {} esquery@1.7.0: @@ -4335,12 +12506,81 @@ snapshots: dependencies: estraverse: 5.3.0 + estraverse@4.3.0: {} + estraverse@5.3.0: {} + estree-walker@1.0.1: {} + esutils@2.0.3: {} + etag@1.8.1: {} + + eventemitter3@4.0.7: {} + eventemitter3@5.0.4: {} + events@3.3.0: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + exit@0.1.2: {} + + expand-template@2.0.3: {} + + expect@27.5.1: + dependencies: + '@jest/types': 27.5.1 + jest-get-type: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + + express@4.22.1: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.4 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.0.7 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.2 + fresh: 0.5.2 + http-errors: 2.0.1 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: 2.0.7 + qs: 6.14.2 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.2 + serve-static: 1.16.3 + setprototypeof: 1.2.0 + statuses: 2.0.2 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + fast-deep-equal@1.1.0: {} fast-deep-equal@3.1.3: {} @@ -4367,40 +12607,107 @@ snapshots: fast-levenshtein@2.0.6: {} + fast-uri@3.1.0: {} + fast-xml-parser@5.3.4: dependencies: strnum: 2.1.2 + fastest-levenshtein@1.0.16: {} + fastq@1.20.1: dependencies: reusify: 1.1.0 + faye-websocket@0.11.4: + dependencies: + websocket-driver: 0.7.4 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 + file-loader@6.2.0(webpack@5.105.2): + dependencies: + loader-utils: 2.0.4 + schema-utils: 3.3.0 + webpack: 5.105.2(webpack-cli@5.1.4) + file-selector@2.1.2: dependencies: tslib: 2.8.1 + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + + filesize@8.0.7: {} + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 + finalhandler@1.3.2: + dependencies: + debug: 2.6.9 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.2 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-cache-dir@3.3.2: + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + + find-up@3.0.0: + dependencies: + locate-path: 3.0.0 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 + flat-cache@3.2.0: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + rimraf: 3.0.2 + flat-cache@4.0.1: dependencies: flatted: 3.3.3 keyv: 4.5.4 + flat@5.0.2: {} + flatted@3.3.3: {} focus-trap-react@10.3.1(prop-types@15.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): @@ -4415,15 +12722,49 @@ snapshots: dependencies: tabbable: 6.4.0 + follow-redirects@1.15.11: {} + for-each@0.3.5: dependencies: is-callable: 1.2.7 + fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.1)(typescript@5.9.3)(webpack@5.105.2): + dependencies: + '@babel/code-frame': 7.29.0 + '@types/json-schema': 7.0.15 + chalk: 4.1.2 + chokidar: 3.6.0 + cosmiconfig: 6.0.0 + deepmerge: 4.3.1 + fs-extra: 9.1.0 + glob: 7.2.3 + memfs: 3.5.3 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.7.4 + tapable: 1.1.3 + typescript: 5.9.3 + webpack: 5.105.2(webpack-cli@5.1.4) + optionalDependencies: + eslint: 8.57.1 + + form-data@3.0.4: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + format-util@1.0.5: {} - framer-motion@12.31.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + forwarded@0.2.0: {} + + fraction.js@5.3.4: {} + + framer-motion@12.34.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - motion-dom: 12.30.1 + motion-dom: 12.34.0 motion-utils: 12.29.2 tslib: 2.8.1 optionalDependencies: @@ -4431,6 +12772,25 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) + fresh@0.5.2: {} + + fs-constants@1.0.0: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + + fs-monkey@1.1.0: {} + fs.realpath@1.0.0: {} fsevents@2.3.3: @@ -4455,6 +12815,8 @@ snapshots: gensync@1.0.0-beta.2: {} + get-caller-file@2.0.5: {} + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -4470,21 +12832,29 @@ snapshots: get-nonce@1.0.1: {} + get-own-enumerable-property-symbols@3.0.2: {} + + get-package-type@0.1.0: {} + get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + get-stream@6.0.1: {} + get-symbol-description@1.1.0: dependencies: call-bound: 1.0.4 es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-tsconfig@4.13.1: + get-tsconfig@4.13.6: dependencies: resolve-pkg-maps: 1.0.0 + github-from-package@0.0.0: {} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -4493,6 +12863,8 @@ snapshots: dependencies: is-glob: 4.0.3 + glob-to-regexp@0.4.1: {} + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -4502,6 +12874,22 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + globals@11.12.0: {} + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + globals@14.0.0: {} globals@16.4.0: {} @@ -4511,6 +12899,15 @@ snapshots: define-properties: 1.2.1 gopd: 1.2.0 + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + gofmt.js@0.0.2: {} goober@2.1.18(csstype@3.2.3): @@ -4519,14 +12916,24 @@ snapshots: gopd@1.2.0: {} + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + gzip-size@6.0.0: dependencies: duplexer: 0.1.2 hammerjs@2.0.8: {} + handle-thing@2.0.1: {} + + harmony-reflect@1.6.2: {} + has-bigints@1.1.0: {} + has-flag@3.0.0: {} + has-flag@4.0.0: {} has-property-descriptors@1.0.2: @@ -4567,6 +12974,8 @@ snapshots: dependencies: '@types/hast': 3.0.4 + he@1.2.0: {} + hermes-estree@0.25.1: {} hermes-parser@0.25.1: @@ -4575,23 +12984,164 @@ snapshots: highlight-words-core@1.2.3: {} + highlight.js@11.11.1: {} + + hoopy@0.1.4: {} + + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + + hpack.js@2.1.6: + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + + html-encoding-sniffer@2.0.1: + dependencies: + whatwg-encoding: 1.0.5 + + html-entities@2.6.0: {} + html-escaper@2.0.2: {} + html-minifier-terser@6.1.0: + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.3 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.46.0 + html-to-image@1.11.11: {} html-void-elements@3.0.0: {} + html-webpack-plugin@5.6.6(webpack@5.105.2): + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.23 + pretty-error: 4.0.0 + tapable: 2.3.0 + optionalDependencies: + webpack: 5.105.2(webpack-cli@5.1.4) + + htmlparser2@10.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 7.0.1 + + htmlparser2@6.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + + http-deceiver@1.2.7: {} + + http-errors@1.8.1: + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.1 + + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + + http-parser-js@0.5.10: {} + + http-proxy-agent@4.0.1: + dependencies: + '@tootallnate/once': 1.1.2 + agent-base: 6.0.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + http-proxy-middleware@2.0.9(@types/express@4.17.25): + dependencies: + '@types/http-proxy': 1.17.17 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.8 + optionalDependencies: + '@types/express': 4.17.25 + transitivePeerDependencies: + - debug + + http-proxy@1.18.1: + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.11 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + human-format@1.2.1: {} + human-signals@2.1.0: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + icss-utils@5.1.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + idb@7.1.1: {} + + identity-obj-proxy@3.0.0: + dependencies: + harmony-reflect: 1.6.2 + + ieee754@1.2.1: {} + + ignore-by-default@1.0.1: {} + ignore@5.3.2: {} ignore@7.0.5: {} + immer@9.0.21: {} + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + imurmurhash@0.1.4: {} inflight@1.0.6: @@ -4601,12 +13151,20 @@ snapshots: inherits@2.0.4: {} + ini@1.3.8: {} + internal-slot@1.1.0: dependencies: es-errors: 1.3.0 hasown: 2.0.2 side-channel: 1.1.0 + interpret@3.1.1: {} + + ipaddr.js@1.9.1: {} + + ipaddr.js@2.3.0: {} + is-arguments@1.2.0: dependencies: call-bound: 1.0.4 @@ -4618,6 +13176,8 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 + is-arrayish@0.2.1: {} + is-arrayish@0.3.4: {} is-async-function@2.1.1: @@ -4632,6 +13192,10 @@ snapshots: dependencies: has-bigints: 1.1.0 + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + is-boolean-object@1.2.2: dependencies: call-bound: 1.0.4 @@ -4639,7 +13203,7 @@ snapshots: is-bun-module@2.0.0: dependencies: - semver: 7.7.3 + semver: 7.7.4 is-callable@1.2.7: {} @@ -4658,12 +13222,18 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 + is-docker@2.2.1: {} + is-extglob@2.1.1: {} is-finalizationregistry@1.1.1: dependencies: call-bound: 1.0.4 + is-fullwidth-code-point@3.0.0: {} + + is-generator-fn@2.1.0: {} + is-generator-function@1.1.2: dependencies: call-bound: 1.0.4 @@ -4678,6 +13248,8 @@ snapshots: is-map@2.0.3: {} + is-module@1.0.0: {} + is-negative-zero@2.0.3: {} is-number-object@1.1.1: @@ -4687,8 +13259,20 @@ snapshots: is-number@7.0.0: {} + is-obj@1.0.1: {} + + is-path-inside@3.0.3: {} + + is-plain-obj@3.0.0: {} + + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + is-plain-object@5.0.0: {} + is-potential-custom-element-name@1.0.1: {} + is-regex@1.1.4: dependencies: call-bind: 1.0.8 @@ -4701,12 +13285,18 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 + is-regexp@1.0.0: {} + + is-root@2.1.0: {} + is-set@2.0.3: {} is-shared-array-buffer@1.0.4: dependencies: call-bound: 1.0.4 + is-stream@2.0.1: {} + is-string@1.1.1: dependencies: call-bound: 1.0.4 @@ -4722,6 +13312,8 @@ snapshots: dependencies: which-typed-array: 1.1.20 + is-typedarray@1.0.0: {} + is-weakmap@2.0.2: {} is-weakref@1.1.1: @@ -4733,10 +13325,49 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isarray@1.0.0: {} + isarray@2.0.5: {} isexe@2.0.0: {} + isobject@3.0.1: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.29.0 + '@babel/parser': 7.29.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.4.3 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.2.0: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + iterator.prototype@1.1.5: dependencies: define-data-property: 1.1.4 @@ -4746,8 +13377,432 @@ snapshots: has-symbols: 1.1.0 set-function-name: 2.0.2 + jake@10.9.4: + dependencies: + async: 3.2.6 + filelist: 1.0.4 + picocolors: 1.1.1 + javascript-natural-sort@0.7.1: {} + jest-changed-files@27.5.1: + dependencies: + '@jest/types': 27.5.1 + execa: 5.1.1 + throat: 6.0.2 + + jest-circus@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.126 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + expect: 27.5.1 + is-generator-fn: 2.1.0 + jest-each: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.6 + throat: 6.0.2 + transitivePeerDependencies: + - supports-color + + jest-cli@27.5.1(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3)): + dependencies: + '@jest/core': 27.5.1(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3)) + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.2.0 + jest-config: 27.5.1(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3)) + jest-util: 27.5.1 + jest-validate: 27.5.1 + prompts: 2.4.2 + yargs: 16.2.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + jest-config@27.5.1(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3)): + dependencies: + '@babel/core': 7.29.0 + '@jest/test-sequencer': 27.5.1 + '@jest/types': 27.5.1 + babel-jest: 27.5.1(@babel/core@7.29.0) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-get-type: 27.5.1 + jest-jasmine2: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runner: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 27.5.1 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + ts-node: 10.9.2(@types/node@16.18.126)(typescript@5.9.3) + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-diff@27.5.1: + dependencies: + chalk: 4.1.2 + diff-sequences: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-docblock@27.5.1: + dependencies: + detect-newline: 3.1.0 + + jest-each@27.5.1: + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + jest-get-type: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + + jest-environment-jsdom@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.126 + jest-mock: 27.5.1 + jest-util: 27.5.1 + jsdom: 16.7.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-environment-node@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.126 + jest-mock: 27.5.1 + jest-util: 27.5.1 + + jest-get-type@27.5.1: {} + + jest-haste-map@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/graceful-fs': 4.1.9 + '@types/node': 16.18.126 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 27.5.1 + jest-serializer: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-jasmine2@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.126 + chalk: 4.1.2 + co: 4.6.0 + expect: 27.5.1 + is-generator-fn: 2.1.0 + jest-each: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + throat: 6.0.2 + transitivePeerDependencies: + - supports-color + + jest-leak-detector@27.5.1: + dependencies: + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-matcher-utils@27.5.1: + dependencies: + chalk: 4.1.2 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-message-util@27.5.1: + dependencies: + '@babel/code-frame': 7.29.0 + '@jest/types': 27.5.1 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-message-util@28.1.3: + dependencies: + '@babel/code-frame': 7.29.0 + '@jest/types': 28.1.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 28.1.3 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/node': 16.18.126 + + jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): + optionalDependencies: + jest-resolve: 27.5.1 + + jest-regex-util@27.5.1: {} + + jest-regex-util@28.0.2: {} + + jest-resolve-dependencies@27.5.1: + dependencies: + '@jest/types': 27.5.1 + jest-regex-util: 27.5.1 + jest-snapshot: 27.5.1 + transitivePeerDependencies: + - supports-color + + jest-resolve@27.5.1: + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-pnp-resolver: 1.2.3(jest-resolve@27.5.1) + jest-util: 27.5.1 + jest-validate: 27.5.1 + resolve: 1.22.11 + resolve.exports: 1.1.1 + slash: 3.0.0 + + jest-runner@27.5.1: + dependencies: + '@jest/console': 27.5.1 + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.126 + chalk: 4.1.2 + emittery: 0.8.1 + graceful-fs: 4.2.11 + jest-docblock: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-haste-map: 27.5.1 + jest-leak-detector: 27.5.1 + jest-message-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runtime: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + source-map-support: 0.5.21 + throat: 6.0.2 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-runtime@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/globals': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + cjs-module-lexer: 1.4.3 + collect-v8-coverage: 1.0.3 + execa: 5.1.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + jest-serializer@27.5.1: + dependencies: + '@types/node': 16.18.126 + graceful-fs: 4.2.11 + + jest-snapshot@27.5.1: + dependencies: + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__traverse': 7.28.0 + '@types/prettier': 2.7.3 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) + chalk: 4.1.2 + expect: 27.5.1 + graceful-fs: 4.2.11 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + jest-haste-map: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + natural-compare: 1.4.0 + pretty-format: 27.5.1 + semver: 7.7.4 + transitivePeerDependencies: + - supports-color + + jest-util@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/node': 16.18.126 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-util@28.1.3: + dependencies: + '@jest/types': 28.1.3 + '@types/node': 16.18.126 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@27.5.1: + dependencies: + '@jest/types': 27.5.1 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 27.5.1 + leven: 3.1.0 + pretty-format: 27.5.1 + + jest-watch-typeahead@1.1.0(jest@27.5.1(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3))): + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + jest: 27.5.1(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3)) + jest-regex-util: 28.0.2 + jest-watcher: 28.1.3 + slash: 4.0.0 + string-length: 5.0.1 + strip-ansi: 7.1.2 + + jest-watcher@27.5.1: + dependencies: + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.126 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + jest-util: 27.5.1 + string-length: 4.0.2 + + jest-watcher@28.1.3: + dependencies: + '@jest/test-result': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 16.18.126 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.10.2 + jest-util: 28.1.3 + string-length: 4.0.2 + + jest-worker@26.6.2: + dependencies: + '@types/node': 16.18.126 + merge-stream: 2.0.0 + supports-color: 7.2.0 + + jest-worker@27.5.1: + dependencies: + '@types/node': 16.18.126 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest-worker@28.1.3: + dependencies: + '@types/node': 16.18.126 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@27.5.1(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3)): + dependencies: + '@jest/core': 27.5.1(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3)) + import-local: 3.2.0 + jest-cli: 27.5.1(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3)) + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + jiti@1.21.7: {} + jq-web@0.5.1: {} js-tokens@4.0.0: {} @@ -4761,8 +13816,44 @@ snapshots: dependencies: argparse: 2.0.1 + jsdom@16.7.0: + dependencies: + abab: 2.0.6 + acorn: 8.15.0 + acorn-globals: 6.0.0 + cssom: 0.4.4 + cssstyle: 2.3.0 + data-urls: 2.0.0 + decimal.js: 10.6.0 + domexception: 2.0.1 + escodegen: 2.1.0 + form-data: 3.0.4 + html-encoding-sniffer: 2.0.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.23 + parse5: 6.0.1 + saxes: 5.0.1 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-hr-time: 1.0.2 + w3c-xmlserializer: 2.0.0 + webidl-conversions: 6.1.0 + whatwg-encoding: 1.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + ws: 7.5.10 + xml-name-validator: 3.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + jsep@1.4.0: {} + jsesc@2.5.2: {} + jsesc@3.1.0: {} json-2-csv@5.5.10: @@ -4772,6 +13863,8 @@ snapshots: json-buffer@3.0.1: {} + json-parse-even-better-errors@2.3.1: {} + json-schema-faker@0.5.9: dependencies: json-schema-ref-parser: 6.1.0 @@ -4785,6 +13878,10 @@ snapshots: json-schema-traverse@0.4.1: {} + json-schema-traverse@1.0.0: {} + + json-schema@0.4.0: {} + json-stable-stringify-without-jsonify@1.0.1: {} json5@1.0.2: @@ -4797,12 +13894,26 @@ snapshots: jsonc-parser@3.3.1: {} + jsonfile@6.2.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + jsonpath-plus@10.3.0: dependencies: '@jsep-plugin/assignment': 1.3.0(jsep@1.4.0) '@jsep-plugin/regex': 1.0.4(jsep@1.4.0) jsep: 1.4.0 + jsonpath@1.2.1: + dependencies: + esprima: 1.2.5 + static-eval: 2.1.1 + underscore: 1.13.6 + + jsonpointer@5.0.1: {} + jsx-ast-utils@3.3.5: dependencies: array-includes: 3.1.9 @@ -4810,10 +13921,17 @@ snapshots: object.assign: 4.1.7 object.values: 1.2.1 + keytar@7.9.0: + dependencies: + node-addon-api: 4.3.0 + prebuild-install: 7.1.3 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 + kind-of@6.0.3: {} + kld-affine@2.1.1: {} kld-intersections@0.7.0: @@ -4826,17 +13944,57 @@ snapshots: kld-polynomial@0.3.0: {} + kleur@3.0.3: {} + + klona@2.0.6: {} + language-subtag-registry@0.3.23: {} language-tags@1.0.9: dependencies: language-subtag-registry: 0.3.23 + launch-editor@2.12.0: + dependencies: + picocolors: 1.1.1 + shell-quote: 1.8.3 + + leven@3.1.0: {} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 + lilconfig@2.1.0: {} + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + linkify-it@3.0.3: + dependencies: + uc.micro: 1.0.6 + + loader-runner@4.3.1: {} + + loader-utils@2.0.4: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + + loader-utils@3.3.1: {} + + locate-path@3.0.0: + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -4847,18 +14005,60 @@ snapshots: lodash.debounce@4.0.8: {} + lodash.memoize@4.1.2: {} + lodash.merge@4.6.2: {} + lodash.sortby@4.7.0: {} + + lodash.uniq@4.5.0: {} + + lodash@4.17.23: {} + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 + lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + lru-cache@5.1.1: dependencies: yallist: 3.1.1 + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + magic-string@0.25.9: + dependencies: + sourcemap-codec: 1.4.8 + + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + + make-dir@4.0.0: + dependencies: + semver: 7.7.4 + make-error@1.3.6: {} + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + markdown-it@12.3.2: + dependencies: + argparse: 2.0.1 + entities: 2.1.0 + linkify-it: 3.0.3 + mdurl: 1.0.1 + uc.micro: 1.0.6 + + marked@14.0.0: {} + math-intrinsics@1.1.0: {} mdast-util-to-hast@13.2.1: @@ -4873,10 +14073,28 @@ snapshots: unist-util-visit: 5.1.0 vfile: 6.0.3 + mdn-data@2.0.14: {} + + mdn-data@2.0.4: {} + + mdurl@1.0.1: {} + + media-typer@0.3.0: {} + + memfs@3.5.3: + dependencies: + fs-monkey: 1.1.0 + memoize-one@4.0.3: {} + merge-descriptors@1.0.3: {} + + merge-stream@2.0.0: {} + merge2@1.4.1: {} + methods@1.1.2: {} + micromark-util-character@2.1.1: dependencies: micromark-util-symbol: 2.0.1 @@ -4899,16 +14117,48 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + mime-db@1.52.0: {} + + mime-db@1.54.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mimic-fn@2.1.0: {} + + mimic-response@3.1.0: {} + + mini-css-extract-plugin@2.10.0(webpack@5.105.2): + dependencies: + schema-utils: 4.3.3 + tapable: 2.3.0 + webpack: 5.105.2(webpack-cli@5.1.4) + + minimalistic-assert@1.0.1: {} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.2 + minimatch@9.0.5: dependencies: brace-expansion: 2.0.2 minimist@1.2.8: {} + mkdirp-classic@0.5.3: {} + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + mock-property@1.0.3: dependencies: define-data-property: 1.1.4 @@ -4918,17 +14168,20 @@ snapshots: hasown: 2.0.2 isarray: 2.0.5 - monaco-editor@0.52.2: {} + monaco-editor@0.55.1: + dependencies: + dompurify: 3.2.7 + marked: 14.0.0 - motion-dom@12.30.1: + motion-dom@12.34.0: dependencies: motion-utils: 12.29.2 motion-utils@12.29.2: {} - motion@12.31.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + motion@12.34.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - framer-motion: 12.31.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + framer-motion: 12.34.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) tslib: 2.8.1 optionalDependencies: '@emotion/is-prop-valid': 1.4.0 @@ -4937,39 +14190,64 @@ snapshots: mrmime@2.0.1: {} + ms@2.0.0: {} + ms@2.1.3: {} + multicast-dns@7.2.5: + dependencies: + dns-packet: 5.6.1 + thunky: 1.1.0 + + mute-stream@0.0.8: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + name-initials@0.1.3: {} nanoid@3.3.11: {} + napi-build-utils@2.0.0: {} + napi-postinstall@0.3.4: {} + natural-compare-lite@1.4.0: {} + natural-compare@1.4.0: {} - next-seo@7.1.0(next@16.1.6(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4): + negotiator@0.6.3: {} + + negotiator@0.6.4: {} + + neo-async@2.6.2: {} + + next-seo@7.1.0(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4): dependencies: - next: 16.1.6(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + next: 16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 - next-sitemap@4.2.3(next@16.1.6(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)): + next-sitemap@4.2.3(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4)): dependencies: '@corex/deepmerge': 4.0.43 '@next/env': 13.5.11 fast-glob: 3.3.3 minimist: 1.2.8 - next: 16.1.6(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + next: 16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - next@16.1.6(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: '@next/env': 16.1.6 '@swc/helpers': 0.5.15 baseline-browser-mapping: 2.9.19 - caniuse-lite: 1.0.30001767 + caniuse-lite: 1.0.30001769 postcss: 8.4.31 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.4) + styled-jsx: 5.1.6(react@19.2.4) optionalDependencies: '@next/swc-darwin-arm64': 16.1.6 '@next/swc-darwin-x64': 16.1.6 @@ -4984,17 +14262,65 @@ snapshots: - '@babel/core' - babel-plugin-macros - nextjs-google-analytics@2.3.7(next@16.1.6(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4): + nextjs-google-analytics@2.3.7(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4): dependencies: - next: 16.1.6(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + next: 16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 optionalDependencies: fsevents: 2.3.3 + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 + + node-abi@3.87.0: + dependencies: + semver: 7.7.4 + + node-addon-api@4.3.0: {} + + node-forge@1.3.3: {} + + node-int64@0.4.0: {} + node-releases@2.0.27: {} + nodemon@2.0.22: + dependencies: + chokidar: 3.6.0 + debug: 3.2.7(supports-color@5.5.0) + ignore-by-default: 1.0.1 + minimatch: 3.1.2 + pstree.remy: 1.1.8 + semver: 5.7.2 + simple-update-notifier: 1.1.0 + supports-color: 5.5.0 + touch: 3.1.1 + undefsafe: 2.0.5 + + normalize-path@3.0.0: {} + + normalize-url@6.1.0: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + nth-check@1.0.2: + dependencies: + boolbase: 1.0.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + nwsapi@2.2.23: {} + object-assign@4.1.1: {} + object-hash@3.0.0: {} + object-inspect@1.12.3: {} object-inspect@1.13.4: {} @@ -5029,6 +14355,16 @@ snapshots: es-abstract: 1.24.1 es-object-atoms: 1.1.1 + object.getownpropertydescriptors@2.1.9: + dependencies: + array.prototype.reduce: 1.0.8 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-object-atoms: 1.1.1 + gopd: 1.2.0 + safe-array-concat: 1.1.3 + object.groupby@1.0.3: dependencies: call-bind: 1.0.8 @@ -5042,10 +14378,22 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 + obuf@1.1.2: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.1.0: {} + once@1.4.0: dependencies: wrappy: 1.0.2 + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + oniguruma-parser@0.12.1: {} oniguruma-to-es@4.3.4: @@ -5058,6 +14406,12 @@ snapshots: dependencies: format-util: 1.0.5 + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + opener@1.5.2: {} optionator@0.9.4: @@ -5077,14 +14431,38 @@ snapshots: p-cancelable@3.0.0: {} + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 + p-locate@3.0.0: + dependencies: + p-limit: 2.3.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + p-locate@5.0.0: dependencies: p-limit: 3.1.0 + p-retry@4.6.2: + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + + p-try@2.2.0: {} + + param-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -5093,8 +14471,43 @@ snapshots: dependencies: parse-statements: 1.0.11 + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.29.0 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-semver@1.1.1: + dependencies: + semver: 5.7.2 + parse-statements@1.0.11: {} + parse5-htmlparser2-tree-adapter@7.1.0: + dependencies: + domhandler: 5.0.3 + parse5: 7.3.0 + + parse5-parser-stream@7.1.2: + dependencies: + parse5: 7.3.0 + + parse5@6.0.1: {} + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + + parseurl@1.3.3: {} + + pascal-case@3.1.2: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + path-exists@3.0.0: {} + path-exists@4.0.0: {} path-is-absolute@1.0.1: {} @@ -5103,18 +14516,461 @@ snapshots: path-parse@1.0.7: {} + path-to-regexp@0.1.12: {} + + path-type@4.0.0: {} + + pend@1.2.0: {} + + performance-now@2.1.0: {} + + picocolors@0.2.1: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} picomatch@4.0.3: {} + pify@2.3.0: {} + + pirates@4.0.7: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pkg-up@3.1.0: + dependencies: + find-up: 3.0.0 + pluralize@8.0.0: {} possible-typed-array-names@1.1.0: {} + postcss-attribute-case-insensitive@5.0.2(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + + postcss-browser-comments@4.0.0(browserslist@4.28.1)(postcss@8.4.49): + dependencies: + browserslist: 4.28.1 + postcss: 8.4.49 + + postcss-calc@8.2.4(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + + postcss-clamp@4.1.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-color-functional-notation@4.2.4(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-color-hex-alpha@8.0.4(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-color-rebeccapurple@7.1.1(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-colormin@5.3.1(postcss@8.4.49): + dependencies: + browserslist: 4.28.1 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-convert-values@5.1.3(postcss@8.4.49): + dependencies: + browserslist: 4.28.1 + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-custom-media@8.0.2(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-custom-properties@12.1.11(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-custom-selectors@6.0.3(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + + postcss-dir-pseudo-class@6.0.5(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + + postcss-discard-comments@5.1.2(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-discard-duplicates@5.1.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-discard-empty@5.1.1(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-discard-overridden@5.1.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-double-position-gradients@3.1.2(postcss@8.4.49): + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.49) + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-env-function@4.0.6(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-flexbugs-fixes@5.0.2(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-focus-visible@6.0.4(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + + postcss-focus-within@5.0.4(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + + postcss-font-variant@5.0.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-gap-properties@3.0.5(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-image-set-function@4.0.7(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-import@15.1.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.11 + + postcss-initial@4.0.1(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-js@4.1.0(postcss@8.4.49): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.49 + + postcss-lab-function@4.2.1(postcss@8.4.49): + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.49) + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.4.49): + dependencies: + lilconfig: 3.1.3 + optionalDependencies: + jiti: 1.21.7 + postcss: 8.4.49 + + postcss-loader@6.2.1(postcss@8.4.49)(webpack@5.105.2): + dependencies: + cosmiconfig: 7.1.0 + klona: 2.0.6 + postcss: 8.4.49 + semver: 7.7.4 + webpack: 5.105.2(webpack-cli@5.1.4) + + postcss-logical@5.0.4(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-media-minmax@5.0.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-merge-longhand@5.1.7(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.1(postcss@8.4.49) + + postcss-merge-rules@5.1.4(postcss@8.4.49): + dependencies: + browserslist: 4.28.1 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0(postcss@8.4.49) + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + + postcss-minify-font-values@5.1.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-minify-gradients@5.1.1(postcss@8.4.49): + dependencies: + colord: 2.9.3 + cssnano-utils: 3.1.0(postcss@8.4.49) + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-minify-params@5.1.4(postcss@8.4.49): + dependencies: + browserslist: 4.28.1 + cssnano-utils: 3.1.0(postcss@8.4.49) + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-minify-selectors@5.2.1(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + + postcss-modules-extract-imports@3.1.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-modules-local-by-default@4.2.0(postcss@8.4.49): + dependencies: + icss-utils: 5.1.0(postcss@8.4.49) + postcss: 8.4.49 + postcss-selector-parser: 7.1.1 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.2.1(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-selector-parser: 7.1.1 + + postcss-modules-values@4.0.0(postcss@8.4.49): + dependencies: + icss-utils: 5.1.0(postcss@8.4.49) + postcss: 8.4.49 + + postcss-nested@6.2.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + + postcss-nesting@10.2.0(postcss@8.4.49): + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.1.2) + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + + postcss-normalize-charset@5.1.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-normalize-display-values@5.1.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-normalize-positions@5.1.1(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-normalize-repeat-style@5.1.1(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-normalize-string@5.1.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-normalize-timing-functions@5.1.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-normalize-unicode@5.1.1(postcss@8.4.49): + dependencies: + browserslist: 4.28.1 + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-normalize-url@5.1.0(postcss@8.4.49): + dependencies: + normalize-url: 6.1.0 + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-normalize-whitespace@5.1.1(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-normalize@10.0.1(browserslist@4.28.1)(postcss@8.4.49): + dependencies: + '@csstools/normalize.css': 12.1.1 + browserslist: 4.28.1 + postcss: 8.4.49 + postcss-browser-comments: 4.0.0(browserslist@4.28.1)(postcss@8.4.49) + sanitize.css: 13.0.0 + + postcss-opacity-percentage@1.1.3(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-ordered-values@5.1.3(postcss@8.4.49): + dependencies: + cssnano-utils: 3.1.0(postcss@8.4.49) + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-overflow-shorthand@3.0.4(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-page-break@3.0.4(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-place@7.0.5(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-preset-env@7.8.3(postcss@8.4.49): + dependencies: + '@csstools/postcss-cascade-layers': 1.1.1(postcss@8.4.49) + '@csstools/postcss-color-function': 1.1.1(postcss@8.4.49) + '@csstools/postcss-font-format-keywords': 1.0.1(postcss@8.4.49) + '@csstools/postcss-hwb-function': 1.0.2(postcss@8.4.49) + '@csstools/postcss-ic-unit': 1.0.1(postcss@8.4.49) + '@csstools/postcss-is-pseudo-class': 2.0.7(postcss@8.4.49) + '@csstools/postcss-nested-calc': 1.0.0(postcss@8.4.49) + '@csstools/postcss-normalize-display-values': 1.0.1(postcss@8.4.49) + '@csstools/postcss-oklab-function': 1.1.1(postcss@8.4.49) + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.49) + '@csstools/postcss-stepped-value-functions': 1.0.1(postcss@8.4.49) + '@csstools/postcss-text-decoration-shorthand': 1.0.0(postcss@8.4.49) + '@csstools/postcss-trigonometric-functions': 1.0.2(postcss@8.4.49) + '@csstools/postcss-unset-value': 1.0.2(postcss@8.4.49) + autoprefixer: 10.4.24(postcss@8.4.49) + browserslist: 4.28.1 + css-blank-pseudo: 3.0.3(postcss@8.4.49) + css-has-pseudo: 3.0.4(postcss@8.4.49) + css-prefers-color-scheme: 6.0.3(postcss@8.4.49) + cssdb: 7.11.2 + postcss: 8.4.49 + postcss-attribute-case-insensitive: 5.0.2(postcss@8.4.49) + postcss-clamp: 4.1.0(postcss@8.4.49) + postcss-color-functional-notation: 4.2.4(postcss@8.4.49) + postcss-color-hex-alpha: 8.0.4(postcss@8.4.49) + postcss-color-rebeccapurple: 7.1.1(postcss@8.4.49) + postcss-custom-media: 8.0.2(postcss@8.4.49) + postcss-custom-properties: 12.1.11(postcss@8.4.49) + postcss-custom-selectors: 6.0.3(postcss@8.4.49) + postcss-dir-pseudo-class: 6.0.5(postcss@8.4.49) + postcss-double-position-gradients: 3.1.2(postcss@8.4.49) + postcss-env-function: 4.0.6(postcss@8.4.49) + postcss-focus-visible: 6.0.4(postcss@8.4.49) + postcss-focus-within: 5.0.4(postcss@8.4.49) + postcss-font-variant: 5.0.0(postcss@8.4.49) + postcss-gap-properties: 3.0.5(postcss@8.4.49) + postcss-image-set-function: 4.0.7(postcss@8.4.49) + postcss-initial: 4.0.1(postcss@8.4.49) + postcss-lab-function: 4.2.1(postcss@8.4.49) + postcss-logical: 5.0.4(postcss@8.4.49) + postcss-media-minmax: 5.0.0(postcss@8.4.49) + postcss-nesting: 10.2.0(postcss@8.4.49) + postcss-opacity-percentage: 1.1.3(postcss@8.4.49) + postcss-overflow-shorthand: 3.0.4(postcss@8.4.49) + postcss-page-break: 3.0.4(postcss@8.4.49) + postcss-place: 7.0.5(postcss@8.4.49) + postcss-pseudo-class-any-link: 7.1.6(postcss@8.4.49) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.49) + postcss-selector-not: 6.0.1(postcss@8.4.49) + postcss-value-parser: 4.2.0 + + postcss-pseudo-class-any-link@7.1.6(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + + postcss-reduce-initial@5.1.2(postcss@8.4.49): + dependencies: + browserslist: 4.28.1 + caniuse-api: 3.0.0 + postcss: 8.4.49 + + postcss-reduce-transforms@5.1.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + postcss-replace-overflow-wrap@4.0.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-selector-not@6.0.1(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@7.1.1: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-svgo@5.1.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 + + postcss-unique-selectors@5.1.1(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + postcss-value-parser@4.2.0: {} + postcss@7.0.39: + dependencies: + picocolors: 0.2.1 + source-map: 0.6.1 + postcss@8.4.31: dependencies: nanoid: 3.3.11 @@ -5127,6 +14983,27 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prebuild-install@7.1.3: + dependencies: + detect-libc: 2.1.2 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 2.0.0 + node-abi: 3.87.0 + pump: 3.0.3 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.4 + tunnel-agent: 0.6.0 + prelude-ls@1.2.1: {} prettier-linter-helpers@1.0.1: @@ -5135,6 +15012,37 @@ snapshots: prettier@3.8.1: {} + pretty-bytes@5.6.0: {} + + pretty-error@4.0.0: + dependencies: + lodash: 4.17.23 + renderkid: 3.0.0 + + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + pretty-format@28.1.3: + dependencies: + '@jest/schemas': 28.1.3 + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + process-nextick-args@2.0.1: {} + + promise@8.3.0: + dependencies: + asap: 2.0.6 + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -5143,10 +15051,58 @@ snapshots: property-information@7.1.0: {} + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + pstree.remy@1.1.8: {} + + pump@3.0.3: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + punycode@2.3.1: {} + q@1.5.1: {} + + qs@6.14.2: + dependencies: + side-channel: 1.1.0 + + querystringify@2.2.0: {} + queue-microtask@1.2.3: {} + raf@3.4.1: + dependencies: + performance-now: 2.1.0 + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + range-parser@1.2.1: {} + + raw-body@2.5.3: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.1 + iconv-lite: 0.4.24 + unpipe: 1.0.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 + reablocks@8.7.15(@emotion/is-prop-valid@1.4.0)(@types/react@19.2.11)(prop-types@15.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: '@floating-ui/react': 0.26.28(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -5163,7 +15119,7 @@ snapshots: focus-trap-react: 10.3.1(prop-types@15.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) fuse.js: 6.6.2 human-format: 1.2.1 - motion: 12.31.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + motion: 12.34.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) name-initials: 0.1.3 pluralize: 8.0.0 react: 19.2.4 @@ -5177,6 +15133,15 @@ snapshots: - '@types/react' - prop-types + react-app-polyfill@3.0.0: + dependencies: + core-js: 3.48.0 + object-assign: 4.1.1 + promise: 8.3.0 + raf: 3.4.1 + regenerator-runtime: 0.13.11 + whatwg-fetch: 3.6.20 + react-base16-styling@0.10.0: dependencies: '@types/lodash': 4.17.23 @@ -5188,6 +15153,40 @@ snapshots: dependencies: react: 19.2.4 + react-dev-utils@12.0.1(eslint@8.57.1)(typescript@5.9.3)(webpack@5.105.2): + dependencies: + '@babel/code-frame': 7.29.0 + address: 1.2.2 + browserslist: 4.28.1 + chalk: 4.1.2 + cross-spawn: 7.0.6 + detect-port-alt: 1.1.6 + escape-string-regexp: 4.0.0 + filesize: 8.0.7 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.1)(typescript@5.9.3)(webpack@5.105.2) + global-modules: 2.0.0 + globby: 11.1.0 + gzip-size: 6.0.0 + immer: 9.0.21 + is-root: 2.1.0 + loader-utils: 3.3.1 + open: 8.4.2 + pkg-up: 3.1.0 + prompts: 2.4.2 + react-error-overlay: 6.1.0 + recursive-readdir: 2.2.3 + shell-quote: 1.8.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + webpack: 5.105.2(webpack-cli@5.1.4) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - eslint + - supports-color + - vue-template-compiler + react-dom@19.2.4(react@19.2.4): dependencies: react: 19.2.4 @@ -5200,6 +15199,8 @@ snapshots: prop-types: 15.8.1 react: 19.2.4 + react-error-overlay@6.1.0: {} + react-fast-compare@3.2.2: {} react-highlight-words@0.20.0(react@19.2.4): @@ -5222,6 +15223,10 @@ snapshots: react-is@16.13.1: {} + react-is@17.0.2: {} + + react-is@18.3.1: {} + react-json-tree@0.20.0(@types/react@19.2.11)(react@19.2.4): dependencies: '@types/lodash': 4.17.23 @@ -5238,6 +15243,10 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) + react-refresh@0.11.0: {} + + react-refresh@0.17.0: {} + react-remove-scroll-bar@2.3.8(@types/react@19.2.11)(react@19.2.4): dependencies: react: 19.2.4 @@ -5257,6 +15266,95 @@ snapshots: optionalDependencies: '@types/react': 19.2.11 + react-scripts@5.0.1(@babel/plugin-syntax-flow@7.28.6(@babel/core@7.29.0))(@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0))(@types/babel__core@7.20.5)(eslint@8.57.1)(react@19.2.4)(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3))(type-fest@4.41.0)(typescript@5.9.3)(webpack-cli@5.1.4): + dependencies: + '@babel/core': 7.29.0 + '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@4.15.2)(webpack@5.105.2) + '@svgr/webpack': 5.5.0 + babel-jest: 27.5.1(@babel/core@7.29.0) + babel-loader: 8.4.1(@babel/core@7.29.0)(webpack@5.105.2) + babel-plugin-named-asset-import: 0.3.8(@babel/core@7.29.0) + babel-preset-react-app: 10.1.0 + bfj: 7.1.0 + browserslist: 4.28.1 + camelcase: 6.3.0 + case-sensitive-paths-webpack-plugin: 2.4.0 + css-loader: 6.11.0(webpack@5.105.2) + css-minimizer-webpack-plugin: 3.4.1(webpack@5.105.2) + dotenv: 10.0.0 + dotenv-expand: 5.1.0 + eslint: 8.57.1 + eslint-config-react-app: 7.0.1(@babel/plugin-syntax-flow@7.28.6(@babel/core@7.29.0))(@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0))(eslint@8.57.1)(jest@27.5.1(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3)))(typescript@5.9.3) + eslint-webpack-plugin: 3.2.0(eslint@8.57.1)(webpack@5.105.2) + file-loader: 6.2.0(webpack@5.105.2) + fs-extra: 10.1.0 + html-webpack-plugin: 5.6.6(webpack@5.105.2) + identity-obj-proxy: 3.0.0 + jest: 27.5.1(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3)) + jest-resolve: 27.5.1 + jest-watch-typeahead: 1.1.0(jest@27.5.1(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3))) + mini-css-extract-plugin: 2.10.0(webpack@5.105.2) + postcss: 8.4.49 + postcss-flexbugs-fixes: 5.0.2(postcss@8.4.49) + postcss-loader: 6.2.1(postcss@8.4.49)(webpack@5.105.2) + postcss-normalize: 10.0.1(browserslist@4.28.1)(postcss@8.4.49) + postcss-preset-env: 7.8.3(postcss@8.4.49) + prompts: 2.4.2 + react: 19.2.4 + react-app-polyfill: 3.0.0 + react-dev-utils: 12.0.1(eslint@8.57.1)(typescript@5.9.3)(webpack@5.105.2) + react-refresh: 0.11.0 + resolve: 1.22.11 + resolve-url-loader: 4.0.0 + sass-loader: 12.6.0(webpack@5.105.2) + semver: 7.7.4 + source-map-loader: 3.0.2(webpack@5.105.2) + style-loader: 3.3.4(webpack@5.105.2) + tailwindcss: 3.4.19 + terser-webpack-plugin: 5.3.16(webpack@5.105.2) + webpack: 5.105.2(webpack-cli@5.1.4) + webpack-dev-server: 4.15.2(webpack-cli@5.1.4)(webpack@5.105.2) + webpack-manifest-plugin: 4.1.1(webpack@5.105.2) + workbox-webpack-plugin: 6.6.0(@types/babel__core@7.20.5)(webpack@5.105.2) + optionalDependencies: + fsevents: 2.3.3 + typescript: 5.9.3 + transitivePeerDependencies: + - '@babel/plugin-syntax-flow' + - '@babel/plugin-transform-react-jsx' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@types/babel__core' + - '@types/webpack' + - bufferutil + - canvas + - clean-css + - csso + - debug + - esbuild + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - fibers + - node-notifier + - node-sass + - rework + - rework-visit + - sass + - sass-embedded + - sockjs-client + - supports-color + - ts-node + - tsx + - type-fest + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-hot-middleware + - webpack-plugin-serve + - yaml + react-style-singleton@2.2.3(@types/react@19.2.11)(react@19.2.4): dependencies: get-nonce: 1.0.1 @@ -5286,6 +15384,34 @@ snapshots: react@19.2.4: {} + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + read@1.0.7: + dependencies: + mute-stream: 0.0.8 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + reaflow@5.4.1(@emotion/is-prop-valid@1.4.0)(@types/react@19.2.11)(prop-types@15.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: '@juggle/resize-observer': 3.4.0 @@ -5296,7 +15422,7 @@ snapshots: ellipsize: 0.2.0 kld-affine: 2.1.1 kld-intersections: 0.7.0 - motion: 12.31.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + motion: 12.34.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) p-cancelable: 3.0.0 reablocks: 8.7.15(@emotion/is-prop-valid@1.4.0)(@types/react@19.2.11)(prop-types@15.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 @@ -5318,6 +15444,14 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) + rechoir@0.8.0: + dependencies: + resolve: 1.22.11 + + recursive-readdir@2.2.3: + dependencies: + minimatch: 3.1.2 + reflect.getprototypeof@1.0.10: dependencies: call-bind: 1.0.8 @@ -5329,6 +15463,16 @@ snapshots: get-proto: 1.0.1 which-builtin-type: 1.2.1 + regenerate-unicode-properties@10.2.2: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.13.11: {} + + regex-parser@2.3.1: {} + regex-recursion@6.0.2: dependencies: regex-utilities: 2.3.0 @@ -5348,10 +15492,57 @@ snapshots: gopd: 1.2.0 set-function-name: 2.0.2 + regexpu-core@6.4.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.2 + regjsgen: 0.8.0 + regjsparser: 0.13.0 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.1 + + regjsgen@0.8.0: {} + + regjsparser@0.13.0: + dependencies: + jsesc: 3.1.0 + + relateurl@0.2.7: {} + + renderkid@3.0.0: + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.17.23 + strip-ansi: 6.0.1 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + requires-port@1.0.0: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + resolve-from@4.0.0: {} + resolve-from@5.0.0: {} + resolve-pkg-maps@1.0.0: {} + resolve-url-loader@4.0.0: + dependencies: + adjust-sourcemap-loader: 4.0.0 + convert-source-map: 1.9.0 + loader-utils: 2.0.4 + postcss: 7.0.39 + source-map: 0.6.1 + + resolve.exports@1.1.1: {} + resolve@1.22.11: dependencies: is-core-module: 2.16.1 @@ -5364,8 +15555,63 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + retry@0.13.1: {} + reusify@1.1.0: {} + rewire@7.0.0: + dependencies: + eslint: 8.57.1 + transitivePeerDependencies: + - supports-color + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup-plugin-terser@7.0.2(rollup@2.79.2): + dependencies: + '@babel/code-frame': 7.29.0 + jest-worker: 26.6.2 + rollup: 2.79.2 + serialize-javascript: 4.0.0 + terser: 5.46.0 + + rollup@2.79.2: + optionalDependencies: + fsevents: 2.3.3 + + rollup@4.57.1: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.57.1 + '@rollup/rollup-android-arm64': 4.57.1 + '@rollup/rollup-darwin-arm64': 4.57.1 + '@rollup/rollup-darwin-x64': 4.57.1 + '@rollup/rollup-freebsd-arm64': 4.57.1 + '@rollup/rollup-freebsd-x64': 4.57.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.57.1 + '@rollup/rollup-linux-arm-musleabihf': 4.57.1 + '@rollup/rollup-linux-arm64-gnu': 4.57.1 + '@rollup/rollup-linux-arm64-musl': 4.57.1 + '@rollup/rollup-linux-loong64-gnu': 4.57.1 + '@rollup/rollup-linux-loong64-musl': 4.57.1 + '@rollup/rollup-linux-ppc64-gnu': 4.57.1 + '@rollup/rollup-linux-ppc64-musl': 4.57.1 + '@rollup/rollup-linux-riscv64-gnu': 4.57.1 + '@rollup/rollup-linux-riscv64-musl': 4.57.1 + '@rollup/rollup-linux-s390x-gnu': 4.57.1 + '@rollup/rollup-linux-x64-gnu': 4.57.1 + '@rollup/rollup-linux-x64-musl': 4.57.1 + '@rollup/rollup-openbsd-x64': 4.57.1 + '@rollup/rollup-openharmony-arm64': 4.57.1 + '@rollup/rollup-win32-arm64-msvc': 4.57.1 + '@rollup/rollup-win32-ia32-msvc': 4.57.1 + '@rollup/rollup-win32-x64-gnu': 4.57.1 + '@rollup/rollup-win32-x64-msvc': 4.57.1 + fsevents: 2.3.3 + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -5378,6 +15624,10 @@ snapshots: has-symbols: 1.1.0 isarray: 2.0.5 + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + safe-push-apply@1.0.0: dependencies: es-errors: 1.3.0 @@ -5389,11 +15639,112 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 + safer-buffer@2.1.2: {} + + sanitize.css@13.0.0: {} + + sass-loader@12.6.0(webpack@5.105.2): + dependencies: + klona: 2.0.6 + neo-async: 2.6.2 + webpack: 5.105.2(webpack-cli@5.1.4) + + sax@1.2.4: {} + + sax@1.4.4: {} + + saxes@5.0.1: + dependencies: + xmlchars: 2.2.0 + scheduler@0.27.0: {} + schema-utils@2.7.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@2.7.1: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@3.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@4.3.3: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.18.0 + ajv-formats: 2.1.1(ajv@8.18.0) + ajv-keywords: 5.1.0(ajv@8.18.0) + + select-hose@2.0.0: {} + + selfsigned@2.4.1: + dependencies: + '@types/node-forge': 1.3.14 + node-forge: 1.3.3 + + semver@5.7.2: {} + semver@6.3.1: {} - semver@7.7.3: {} + semver@7.0.0: {} + + semver@7.7.4: {} + + send@0.19.2: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.1 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + + serialize-javascript@4.0.0: + dependencies: + randombytes: 2.1.0 + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + serve-index@1.9.2: + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.8.1 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.3: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.2 + transitivePeerDependencies: + - supports-color set-function-length@1.2.2: dependencies: @@ -5417,13 +15768,19 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 + setprototypeof@1.2.0: {} + + shallow-clone@3.0.1: + dependencies: + kind-of: 6.0.3 + shallowequal@1.1.0: {} sharp@0.34.5: dependencies: '@img/colour': 1.0.0 detect-libc: 2.1.2 - semver: 7.7.3 + semver: 7.7.4 optionalDependencies: '@img/sharp-darwin-arm64': 0.34.5 '@img/sharp-darwin-x64': 0.34.5 @@ -5457,6 +15814,8 @@ snapshots: shebang-regex@3.0.0: {} + shell-quote@1.8.3: {} + shiki@3.22.0: dependencies: '@shikijs/core': 3.22.0 @@ -5496,31 +15855,138 @@ snapshots: side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 + signal-exit@3.0.7: {} + + 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.4: dependencies: is-arrayish: 0.3.4 + simple-update-notifier@1.1.0: + dependencies: + semver: 7.0.0 + sirv@2.0.4: dependencies: '@polka/url': 1.0.0-next.29 mrmime: 2.0.1 totalist: 3.0.1 + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + slash@4.0.0: {} + + sockjs@0.3.24: + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + + source-list-map@2.0.1: {} + source-map-js@1.2.1: {} + source-map-loader@3.0.2(webpack@5.105.2): + dependencies: + abab: 2.0.6 + iconv-lite: 0.6.3 + source-map-js: 1.2.1 + webpack: 5.105.2(webpack-cli@5.1.4) + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + source-map@0.7.6: {} + + source-map@0.8.0-beta.0: + dependencies: + whatwg-url: 7.1.0 + + sourcemap-codec@1.4.8: {} + space-separated-tokens@2.0.2: {} + spdy-transport@3.0.0: + dependencies: + debug: 4.4.3 + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + + spdy@4.0.2: + dependencies: + debug: 4.4.3 + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + sprintf-js@1.0.3: {} stable-hash@0.0.5: {} + stable@0.1.8: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + stackframe@1.3.4: {} + state-local@1.0.7: {} + static-eval@2.1.1: + dependencies: + escodegen: 2.1.0 + + statuses@1.5.0: {} + + statuses@2.0.2: {} + stop-iteration-iterator@1.1.0: dependencies: es-errors: 1.3.0 internal-slot: 1.1.0 + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-length@5.0.1: + dependencies: + char-regex: 2.0.2 + strip-ansi: 7.1.2 + + string-natural-compare@3.0.1: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + string.prototype.includes@2.0.1: dependencies: call-bind: 1.0.8 @@ -5571,18 +16037,52 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 + stringify-object@3.3.0: + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.2: + dependencies: + ansi-regex: 6.2.2 + strip-bom@3.0.0: {} + strip-bom@4.0.0: {} + + strip-comments@2.0.1: {} + + strip-final-newline@2.0.0: {} + + strip-json-comments@2.0.1: {} + strip-json-comments@3.1.1: {} strnum@2.1.2: {} - styled-components@6.3.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + style-loader@3.3.4(webpack@5.105.2): + dependencies: + webpack: 5.105.2(webpack-cli@5.1.4) + + styled-components@6.3.9(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: '@emotion/is-prop-valid': 1.4.0 '@emotion/unitless': 0.10.0 @@ -5597,21 +16097,78 @@ snapshots: optionalDependencies: react-dom: 19.2.4(react@19.2.4) - styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.4): + styled-jsx@5.1.6(react@19.2.4): dependencies: client-only: 0.0.1 react: 19.2.4 - optionalDependencies: - '@babel/core': 7.29.0 + + stylehacks@5.1.1(postcss@8.4.49): + dependencies: + browserslist: 4.28.1 + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 stylis@4.3.6: {} + sucrase@3.35.1: + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + commander: 4.1.1 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + tinyglobby: 0.2.15 + ts-interface-checker: 0.1.13 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@2.3.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + supports-preserve-symlinks-flag@1.0.0: {} + svg-parser@2.0.4: {} + + svgo@1.3.2: + dependencies: + chalk: 2.4.2 + coa: 2.0.2 + css-select: 2.1.0 + css-select-base-adapter: 0.1.1 + css-tree: 1.0.0-alpha.37 + csso: 4.2.0 + js-yaml: 3.14.2 + mkdirp: 0.5.6 + object.values: 1.2.1 + sax: 1.2.4 + stable: 0.1.8 + unquote: 1.1.1 + util.promisify: 1.0.1 + + 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.1.1 + stable: 0.1.8 + + symbol-tree@3.2.4: {} + synckit@0.11.12: dependencies: '@pkgr/core': 0.2.9 @@ -5620,6 +16177,38 @@ snapshots: tailwind-merge@2.6.1: {} + tailwindcss@3.4.19: + 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.3 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.7 + lilconfig: 3.1.3 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.4.49 + postcss-import: 15.1.0(postcss@8.4.49) + postcss-js: 4.1.0(postcss@8.4.49) + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.4.49) + postcss-nested: 6.2.0(postcss@8.4.49) + postcss-selector-parser: 6.1.2 + resolve: 1.22.11 + sucrase: 3.35.1 + transitivePeerDependencies: + - tsx + - yaml + + tapable@1.1.3: {} + + tapable@2.3.0: {} + tape@4.17.0: dependencies: '@ljharb/resumer': 0.0.1 @@ -5639,35 +16228,158 @@ snapshots: resolve: 1.22.11 string.prototype.trim: 1.2.10 + tar-fs@2.1.4: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.3 + tar-stream: 2.2.0 + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.5 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + + temp-dir@2.0.0: {} + + tempy@0.6.0: + dependencies: + is-stream: 2.0.1 + temp-dir: 2.0.0 + type-fest: 0.16.0 + unique-string: 2.0.0 + + terminal-link@2.1.1: + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.3.0 + + terser-webpack-plugin@5.3.16(webpack@5.105.2): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + jest-worker: 27.5.1 + schema-utils: 4.3.3 + serialize-javascript: 6.0.2 + terser: 5.46.0 + webpack: 5.105.2(webpack-cli@5.1.4) + + terser@5.46.0: + dependencies: + '@jridgewell/source-map': 0.3.11 + acorn: 8.15.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + text-table@0.2.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + throat@6.0.2: {} + + thunky@1.1.0: {} + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 + tmp@0.2.5: {} + + tmpl@1.0.5: {} + + to-fast-properties@2.0.0: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 + toidentifier@1.0.1: {} + totalist@3.0.1: {} + touch@3.1.1: {} + + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@1.0.1: + dependencies: + punycode: 2.3.1 + + tr46@2.1.0: + dependencies: + punycode: 2.3.1 + trim-lines@3.0.1: {} + tryer@1.0.1: {} + ts-api-utils@2.4.0(typescript@5.9.3): dependencies: typescript: 5.9.3 + ts-interface-checker@0.1.13: {} + ts-invariant@0.10.3: dependencies: tslib: 2.8.1 - ts-node@10.9.2(@types/node@25.2.0)(typescript@5.9.3): + ts-loader@9.5.4(typescript@5.9.3)(webpack@5.105.2): + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.19.0 + micromatch: 4.0.8 + semver: 7.7.4 + source-map: 0.7.6 + typescript: 5.9.3 + webpack: 5.105.2(webpack-cli@5.1.4) + + ts-node@10.9.2(@types/node@16.18.126)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 25.2.0 + '@types/node': 16.18.126 + acorn: 8.15.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.4 + make-error: 1.3.6 + typescript: 5.9.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optional: true + + ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.12 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 25.2.3 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -5685,14 +16397,67 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 + tslib@1.14.1: {} + tslib@2.8.1: {} + tsutils@3.21.0(typescript@5.9.3): + dependencies: + tslib: 1.14.1 + typescript: 5.9.3 + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + tunnel@0.0.6: {} + + turbo-darwin-64@2.8.8: + optional: true + + turbo-darwin-arm64@2.8.8: + optional: true + + turbo-linux-64@2.8.8: + optional: true + + turbo-linux-arm64@2.8.8: + optional: true + + turbo-windows-64@2.8.8: + optional: true + + turbo-windows-arm64@2.8.8: + optional: true + + turbo@2.8.8: + optionalDependencies: + turbo-darwin-64: 2.8.8 + turbo-darwin-arm64: 2.8.8 + turbo-linux-64: 2.8.8 + turbo-linux-arm64: 2.8.8 + turbo-windows-64: 2.8.8 + turbo-windows-arm64: 2.8.8 + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 + type-detect@4.0.8: {} + + type-fest@0.16.0: {} + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + type-fest@4.41.0: {} + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.4 @@ -5726,19 +16491,31 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.54.0(eslint@9.39.2)(typescript@5.9.3): + typed-rest-client@1.8.11: dependencies: - '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.54.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2)(typescript@5.9.3) - eslint: 9.39.2 + qs: 6.14.2 + tunnel: 0.0.6 + underscore: 1.13.7 + + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + + typescript-eslint@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/parser': 8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) + eslint: 9.39.2(jiti@1.21.7) typescript: 5.9.3 transitivePeerDependencies: - supports-color typescript@5.9.3: {} + uc.micro@1.0.6: {} + unbox-primitive@1.1.0: dependencies: call-bound: 1.0.4 @@ -5746,13 +16523,36 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 + undefsafe@2.0.5: {} + + underscore@1.13.6: {} + + underscore@1.13.7: {} + undici-types@7.16.0: {} + undici@7.22.0: {} + undoo@0.5.0: dependencies: defaulty: 2.1.0 fast-deep-equal: 1.1.0 + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.2.0 + + unicode-match-property-value-ecmascript@2.2.1: {} + + unicode-property-aliases-ecmascript@2.2.0: {} + + unique-string@2.0.0: + dependencies: + crypto-random-string: 2.0.0 + unist-util-is@6.0.1: dependencies: '@types/unist': 3.0.3 @@ -5776,6 +16576,14 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 + universalify@0.2.0: {} + + universalify@2.0.1: {} + + unpipe@1.0.0: {} + + unquote@1.1.1: {} + unrs-resolver@1.11.1: dependencies: napi-postinstall: 0.3.4 @@ -5800,6 +16608,8 @@ snapshots: '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 + upath@1.2.0: {} + update-browserslist-db@1.2.3(browserslist@4.28.1): dependencies: browserslist: 4.28.1 @@ -5810,6 +16620,13 @@ snapshots: dependencies: punycode: 2.3.1 + url-join@4.0.1: {} + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + use-callback-ref@1.3.3(@types/react@19.2.11)(react@19.2.4): dependencies: react: 19.2.4 @@ -5851,15 +16668,37 @@ snapshots: use-sync-external-store@1.6.0(react@19.2.4): dependencies: react: 19.2.4 - optional: true usehooks-ts@3.1.1(react@19.2.4): dependencies: lodash.debounce: 4.0.8 react: 19.2.4 + util-deprecate@1.0.2: {} + + util.promisify@1.0.1: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.24.1 + has-symbols: 1.1.0 + object.getownpropertydescriptors: 2.1.9 + + utila@0.4.0: {} + + utils-merge@1.0.1: {} + + uuid@8.3.2: {} + v8-compile-cache-lib@3.0.1: {} + v8-to-istanbul@8.1.1: + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 1.9.0 + source-map: 0.7.6 + + vary@1.1.2: {} + vfile-message@4.0.3: dependencies: '@types/unist': 3.0.3 @@ -5870,8 +16709,72 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 + vite@6.4.1(@types/node@25.2.3)(jiti@1.21.7)(terser@5.46.0): + dependencies: + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.57.1 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 25.2.3 + fsevents: 2.3.3 + jiti: 1.21.7 + terser: 5.46.0 + + vsce@2.15.0: + dependencies: + azure-devops-node-api: 11.2.0 + chalk: 2.4.2 + cheerio: 1.2.0 + commander: 6.2.1 + glob: 7.2.3 + hosted-git-info: 4.1.0 + keytar: 7.9.0 + leven: 3.1.0 + markdown-it: 12.3.2 + mime: 1.6.0 + minimatch: 3.1.2 + parse-semver: 1.1.1 + read: 1.0.7 + semver: 5.7.2 + tmp: 0.2.5 + typed-rest-client: 1.8.11 + url-join: 4.0.1 + xml2js: 0.4.23 + yauzl: 2.10.0 + yazl: 2.5.1 + + w3c-hr-time@1.0.2: + dependencies: + browser-process-hrtime: 1.0.0 + + w3c-xmlserializer@2.0.0: + dependencies: + xml-name-validator: 3.0.0 + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + watchpack@2.5.1: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + wbuf@1.7.3: + dependencies: + minimalistic-assert: 1.0.1 + web-worker@1.5.0: {} + webidl-conversions@4.0.2: {} + + webidl-conversions@5.0.0: {} + + webidl-conversions@6.1.0: {} + webpack-bundle-analyzer@4.10.1: dependencies: '@discoveryjs/json-ext': 0.5.7 @@ -5891,6 +16794,167 @@ snapshots: - bufferutil - utf-8-validate + webpack-cli@5.1.4(webpack-dev-server@4.15.2)(webpack@5.105.2): + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.105.2) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.105.2) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack-dev-server@4.15.2)(webpack@5.105.2) + colorette: 2.0.20 + commander: 10.0.1 + cross-spawn: 7.0.6 + envinfo: 7.21.0 + fastest-levenshtein: 1.0.16 + import-local: 3.2.0 + interpret: 3.1.1 + rechoir: 0.8.0 + webpack: 5.105.2(webpack-cli@5.1.4) + webpack-merge: 5.10.0 + optionalDependencies: + webpack-dev-server: 4.15.2(webpack-cli@5.1.4)(webpack@5.105.2) + + webpack-dev-middleware@5.3.4(webpack@5.105.2): + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.3.3 + webpack: 5.105.2(webpack-cli@5.1.4) + + webpack-dev-server@4.15.2(webpack-cli@5.1.4)(webpack@5.105.2): + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.25 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.10 + '@types/sockjs': 0.3.36 + '@types/ws': 8.18.1 + ansi-html-community: 0.0.8 + bonjour-service: 1.3.0 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.8.1 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.22.1 + graceful-fs: 4.2.11 + html-entities: 2.6.0 + http-proxy-middleware: 2.0.9(@types/express@4.17.25) + ipaddr.js: 2.3.0 + launch-editor: 2.12.0 + open: 8.4.2 + p-retry: 4.6.2 + rimraf: 3.0.2 + schema-utils: 4.3.3 + selfsigned: 2.4.1 + serve-index: 1.9.2 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack-dev-middleware: 5.3.4(webpack@5.105.2) + ws: 8.19.0 + optionalDependencies: + webpack: 5.105.2(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-dev-server@4.15.2)(webpack@5.105.2) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + webpack-manifest-plugin@4.1.1(webpack@5.105.2): + dependencies: + tapable: 2.3.0 + webpack: 5.105.2(webpack-cli@5.1.4) + webpack-sources: 2.3.1 + + webpack-merge@5.10.0: + dependencies: + clone-deep: 4.0.1 + flat: 5.0.2 + wildcard: 2.0.1 + + webpack-sources@1.4.3: + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + + webpack-sources@2.3.1: + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + + webpack-sources@3.3.3: {} + + webpack@5.105.2(webpack-cli@5.1.4): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.15.0 + acorn-import-phases: 1.0.4(acorn@8.15.0) + browserslist: 4.28.1 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.19.0 + es-module-lexer: 2.0.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.1 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 4.3.3 + tapable: 2.3.0 + terser-webpack-plugin: 5.3.16(webpack@5.105.2) + watchpack: 2.5.1 + webpack-sources: 3.3.3 + optionalDependencies: + webpack-cli: 5.1.4(webpack-dev-server@4.15.2)(webpack@5.105.2) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + websocket-driver@0.7.4: + dependencies: + http-parser-js: 0.5.10 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + + websocket-extensions@0.1.4: {} + + whatwg-encoding@1.0.5: + dependencies: + iconv-lite: 0.4.24 + + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + + whatwg-fetch@3.6.20: {} + + whatwg-mimetype@2.3.0: {} + + whatwg-mimetype@4.0.0: {} + + whatwg-url@7.1.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + + whatwg-url@8.7.0: + dependencies: + lodash: 4.17.23 + tr46: 2.1.0 + webidl-conversions: 6.1.0 + which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 @@ -5932,18 +16996,202 @@ snapshots: gopd: 1.2.0 has-tostringtag: 1.0.2 + which@1.3.1: + dependencies: + isexe: 2.0.0 + which@2.0.2: dependencies: isexe: 2.0.0 + wildcard@2.0.1: {} + word-wrap@1.2.5: {} + workbox-background-sync@6.6.0: + dependencies: + idb: 7.1.1 + workbox-core: 6.6.0 + + workbox-broadcast-update@6.6.0: + dependencies: + workbox-core: 6.6.0 + + workbox-build@6.6.0(@types/babel__core@7.20.5): + dependencies: + '@apideck/better-ajv-errors': 0.3.6(ajv@8.18.0) + '@babel/core': 7.29.0 + '@babel/preset-env': 7.29.0(@babel/core@7.29.0) + '@babel/runtime': 7.28.6 + '@rollup/plugin-babel': 5.3.1(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@2.79.2) + '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.2) + '@rollup/plugin-replace': 2.4.2(rollup@2.79.2) + '@surma/rollup-plugin-off-main-thread': 2.2.3 + ajv: 8.18.0 + common-tags: 1.8.2 + fast-json-stable-stringify: 2.1.0 + fs-extra: 9.1.0 + glob: 7.2.3 + lodash: 4.17.23 + pretty-bytes: 5.6.0 + rollup: 2.79.2 + rollup-plugin-terser: 7.0.2(rollup@2.79.2) + source-map: 0.8.0-beta.0 + stringify-object: 3.3.0 + strip-comments: 2.0.1 + tempy: 0.6.0 + upath: 1.2.0 + workbox-background-sync: 6.6.0 + workbox-broadcast-update: 6.6.0 + workbox-cacheable-response: 6.6.0 + workbox-core: 6.6.0 + workbox-expiration: 6.6.0 + workbox-google-analytics: 6.6.0 + workbox-navigation-preload: 6.6.0 + workbox-precaching: 6.6.0 + workbox-range-requests: 6.6.0 + workbox-recipes: 6.6.0 + workbox-routing: 6.6.0 + workbox-strategies: 6.6.0 + workbox-streams: 6.6.0 + workbox-sw: 6.6.0 + workbox-window: 6.6.0 + transitivePeerDependencies: + - '@types/babel__core' + - supports-color + + workbox-cacheable-response@6.6.0: + dependencies: + workbox-core: 6.6.0 + + workbox-core@6.6.0: {} + + workbox-expiration@6.6.0: + dependencies: + idb: 7.1.1 + workbox-core: 6.6.0 + + workbox-google-analytics@6.6.0: + dependencies: + workbox-background-sync: 6.6.0 + workbox-core: 6.6.0 + workbox-routing: 6.6.0 + workbox-strategies: 6.6.0 + + workbox-navigation-preload@6.6.0: + dependencies: + workbox-core: 6.6.0 + + workbox-precaching@6.6.0: + dependencies: + workbox-core: 6.6.0 + workbox-routing: 6.6.0 + workbox-strategies: 6.6.0 + + workbox-range-requests@6.6.0: + dependencies: + workbox-core: 6.6.0 + + workbox-recipes@6.6.0: + dependencies: + workbox-cacheable-response: 6.6.0 + workbox-core: 6.6.0 + workbox-expiration: 6.6.0 + workbox-precaching: 6.6.0 + workbox-routing: 6.6.0 + workbox-strategies: 6.6.0 + + workbox-routing@6.6.0: + dependencies: + workbox-core: 6.6.0 + + workbox-strategies@6.6.0: + dependencies: + workbox-core: 6.6.0 + + workbox-streams@6.6.0: + dependencies: + workbox-core: 6.6.0 + workbox-routing: 6.6.0 + + workbox-sw@6.6.0: {} + + workbox-webpack-plugin@6.6.0(@types/babel__core@7.20.5)(webpack@5.105.2): + dependencies: + fast-json-stable-stringify: 2.1.0 + pretty-bytes: 5.6.0 + upath: 1.2.0 + webpack: 5.105.2(webpack-cli@5.1.4) + webpack-sources: 1.4.3 + workbox-build: 6.6.0(@types/babel__core@7.20.5) + transitivePeerDependencies: + - '@types/babel__core' + - supports-color + + workbox-window@6.6.0: + dependencies: + '@types/trusted-types': 2.0.7 + workbox-core: 6.6.0 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrappy@1.0.2: {} + write-file-atomic@3.0.3: + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + ws@7.5.10: {} + ws@8.19.0: {} + + xml-name-validator@3.0.0: {} + + xml2js@0.4.23: + dependencies: + sax: 1.4.4 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + + xmlchars@2.2.0: {} + + y18n@5.0.8: {} + yallist@3.1.1: {} + yallist@4.0.0: {} + + yaml@1.10.2: {} + + yargs-parser@20.2.9: {} + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + yazl@2.5.1: + dependencies: + buffer-crc32: 0.2.13 + yn@3.1.1: {} yocto-queue@0.1.0: {} @@ -5954,9 +17202,10 @@ snapshots: zod@4.3.6: {} - zustand@5.0.11(@types/react@19.2.11)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)): + zustand@5.0.11(@types/react@19.2.11)(immer@9.0.21)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)): optionalDependencies: '@types/react': 19.2.11 + immer: 9.0.21 react: 19.2.4 use-sync-external-store: 1.6.0(react@19.2.4) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..286cf7f5 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +packages: + - apps/* + - packages/* diff --git a/src/features/editor/views/GraphView/index.tsx b/src/features/editor/views/GraphView/index.tsx deleted file mode 100644 index 2fbd05ca..00000000 --- a/src/features/editor/views/GraphView/index.tsx +++ /dev/null @@ -1,198 +0,0 @@ -import React from "react"; -import { Box, LoadingOverlay, useComputedColorScheme } from "@mantine/core"; -import { useDebouncedValue } from "@mantine/hooks"; -import styled from "styled-components"; -import debounce from "lodash.debounce"; -import { Space } from "react-zoomable-ui"; -import { Canvas } from "reaflow"; -import type { ElkRoot } from "reaflow"; -import { useLongPress } from "use-long-press"; -import useConfig from "../../../../store/useConfig"; -import { CustomEdge } from "./CustomEdge"; -import { CustomNode } from "./CustomNode"; -import { NotSupported } from "./NotSupported"; -import { OptionsMenu } from "./OptionsMenu"; -import { SecureInfo } from "./SecureInfo"; -import { ZoomControl } from "./ZoomControl"; -import useGraph from "./stores/useGraph"; - -const StyledEditorWrapper = styled.div<{ $widget: boolean; $showRulers: boolean }>` - width: 100%; - height: 100vh; - - --bg-color: ${({ theme }) => theme.GRID_BG_COLOR}; - --line-color-1: ${({ theme }) => theme.GRID_COLOR_PRIMARY}; - --line-color-2: ${({ theme }) => theme.GRID_COLOR_SECONDARY}; - - background-color: var(--bg-color); - ${({ $showRulers }) => - $showRulers && - ` - background-image: linear-gradient(var(--line-color-1) 1.5px, transparent 1.5px), - linear-gradient(90deg, var(--line-color-1) 1.5px, transparent 1.5px), - linear-gradient(var(--line-color-2) 1px, transparent 1px), - linear-gradient(90deg, var(--line-color-2) 1px, transparent 1px); - background-position: - -1.5px -1.5px, - -1.5px -1.5px, - -1px -1px, - -1px -1px; - background-size: - 100px 100px, - 100px 100px, - 20px 20px, - 20px 20px; - `}; - - .jsoncrack-space { - cursor: url("/assets/cursor.svg"), auto; - } - - :active { - cursor: move; - } - - .dragging, - .dragging button { - pointer-events: none; - } - - text { - fill: ${({ theme }) => theme.INTERACTIVE_NORMAL} !important; - } - - rect { - fill: ${({ theme }) => theme.BACKGROUND_NODE}; - } - - @media only screen and (max-width: 320px) { - height: 100vh; - } -`; - -const layoutOptions = { - "elk.layered.compaction.postCompaction.strategy": "EDGE_LENGTH", - "elk.layered.nodePlacement.strategy": "NETWORK_SIMPLEX", - "elk.spacing.edgeLabel": "15", -}; - -interface GraphProps { - isWidget?: boolean; -} - -const GraphCanvas = ({ isWidget }: GraphProps) => { - const setLoading = useGraph(state => state.setLoading); - const centerView = useGraph(state => state.centerView); - const direction = useGraph(state => state.direction); - const nodes = useGraph(state => state.nodes); - const edges = useGraph(state => state.edges); - const colorScheme = useComputedColorScheme(); - const [paneWidth, setPaneWidth] = React.useState(2000); - const [paneHeight, setPaneHeight] = React.useState(2000); - - const onLayoutChange = React.useCallback( - (layout: ElkRoot) => { - if (layout.width && layout.height) { - const areaSize = layout.width * layout.height; - const changeRatio = Math.abs((areaSize * 100) / (paneWidth * paneHeight) - 100); - - setPaneWidth(layout.width + 50); - setPaneHeight((layout.height as number) + 50); - - setTimeout(() => { - window.requestAnimationFrame(() => { - if (changeRatio > 70 || isWidget) centerView(); - setLoading(false); - }); - }); - } - }, - [isWidget, paneHeight, paneWidth, centerView, setLoading] - ); - - return ( - } - edge={p => } - nodes={nodes} - edges={edges} - arrow={null} - maxHeight={paneHeight} - maxWidth={paneWidth} - height={paneHeight} - width={paneWidth} - direction={direction} - layoutOptions={layoutOptions} - key={[direction, colorScheme].join("-")} - pannable={false} - zoomable={false} - animated={false} - readonly={true} - dragEdge={null} - dragNode={null} - fit={true} - /> - ); -}; - -export const GraphView = ({ isWidget = false }: GraphProps) => { - const setViewPort = useGraph(state => state.setViewPort); - const viewPort = useGraph(state => state.viewPort); - const aboveSupportedLimit = useGraph(state => state.aboveSupportedLimit); - const loading = useGraph(state => state.loading); - const gesturesEnabled = useConfig(state => state.gesturesEnabled); - const rulersEnabled = useConfig(state => state.rulersEnabled); - const [debouncedLoading] = useDebouncedValue(loading, 300); - - const callback = React.useCallback(() => { - const canvas = document.querySelector(".jsoncrack-canvas") as HTMLDivElement | null; - canvas?.classList.add("dragging"); - }, []); - - const bindLongPress = useLongPress(callback, { - threshold: 150, - onFinish: () => { - const canvas = document.querySelector(".jsoncrack-canvas") as HTMLDivElement | null; - canvas?.classList.remove("dragging"); - }, - }); - - const blurOnClick = React.useCallback(() => { - if ("activeElement" in document) (document.activeElement as HTMLElement)?.blur(); - }, []); - - const debouncedOnZoomChangeHandler = debounce(() => { - setViewPort(viewPort!); - }, 300); - - return ( - - {aboveSupportedLimit && } - - {!isWidget && } - {!isWidget && } - - e.preventDefault()} - onClick={blurOnClick} - key={String(gesturesEnabled)} - $showRulers={rulersEnabled} - {...bindLongPress()} - > - debouncedOnZoomChangeHandler()} - onCreate={setViewPort} - onContextMenu={e => e.preventDefault()} - treatTwoFingerTrackPadGesturesLikeTouch={gesturesEnabled} - pollForElementResizing - className="jsoncrack-space" - > - - - - - ); -}; diff --git a/turbo.json b/turbo.json new file mode 100644 index 00000000..09db4f73 --- /dev/null +++ b/turbo.json @@ -0,0 +1,36 @@ +{ + "$schema": "https://turborepo.com/schema.json", + "tasks": { + "build": { + "dependsOn": ["^build"], + "outputs": [".next/**", "!.next/cache/**", "dist/**", "out/**", "build/**"] + }, + "dev": { + "dependsOn": ["^build"], + "cache": false, + "persistent": true + }, + "start": { + "cache": false, + "persistent": true + }, + "lint": { + "dependsOn": ["^build"], + "outputs": [] + }, + "lint:fix": { + "cache": false + }, + "analyze": { + "dependsOn": ["^build"], + "outputs": [".next/**", "!.next/cache/**", "out/**", "build/**"] + }, + "clean": { + "cache": false + }, + "watch-build": { + "cache": false, + "persistent": true + } + } +}