From 68444ce03330e4eb7047e6bb72f412e548fac970 Mon Sep 17 00:00:00 2001 From: yusing Date: Thu, 5 Feb 2026 22:25:57 +0800 Subject: [PATCH 1/8] feat(app): migrate frontend to tanstack start - Replace Next.js app with TanStack Start on Vite, add Nitro/PWA tooling, and update build/docker configs. - replace eslint and prettier with Biome for the new pipeline. - Moved components, hooks, lib to src/ - Moved app to src/routes BREAKING CHANGE: frontend now builds and runs with Vite/ TanStack Start instead of Next.js; related configs and scripts have changed. --- .dockerignore | 46 +- .gitignore | 24 +- Dockerfile | 56 +- Makefile | 27 +- app/config/layout.tsx | 5 - app/layout.tsx | 47 - app/manifest.json | 23 - biome.json | 69 + bun.lock | 1245 +++++++++++++---- components/ReactScan.tsx | 14 - compose.yml | 47 +- dev.Dockerfile | 14 - eslint.config.mjs | 23 - juststore | 2 +- juststore-shadcn | 2 +- lite-next.config.ts | 13 - lite.Dockerfile | 51 +- lite.dev.Dockerfile | 14 - lite.vite.config.ts | 83 ++ next.config.ts | 24 - nginx.conf | 16 +- package.json | 59 +- postcss.config.mjs | 6 - {app => public}/apple-icon.png | Bin {app => public}/favicon.ico | Bin {app => public}/icon0.svg | 0 {app => public}/icon1.png | Bin {components => src/components}/AppIcon.tsx | 2 +- src/components/DefaultCatchBoundary.tsx | 47 + .../components}/GoDoxyError.tsx | 2 - .../components}/IconSearchField.tsx | 0 .../components}/LoadingRing.tsx | 0 .../components}/LogoutButton.tsx | 0 src/components/NotFound.tsx | 25 + .../components}/ObjectDataList.tsx | 10 +- .../components}/SectionedForm.tsx | 0 src/components/ThemeProvider.tsx | 116 ++ .../components}/VersionText.tsx | 1 - {components => src/components}/YAMLEditor.tsx | 0 .../config_editor/AddFilePopoverButton.tsx | 0 .../config_editor/ConfigContent.tsx | 1 - .../config_editor/ConfigFilesListProvider.tsx | 2 - .../config_editor/ConfigHeaderActions.tsx | 2 - .../config_editor/ConfigReloadButton.tsx | 0 .../config_editor/ConfigSaveButton.tsx | 0 .../config_editor/ConfigStateSyncronizer.tsx | 4 +- .../config_editor/ConfigValidationError.tsx | 1 - .../config_editor/ConfigYAMLEditor.tsx | 1 - .../components}/config_editor/Sidebar.tsx | 4 +- .../general_config/AccessControl.tsx | 0 .../general_config/AutocertConfigContent.tsx | 2 - .../general_config/AutocertInfo.tsx | 0 .../AutocertRenewDialogButton.tsx | 0 .../general_config/DefaultValues.tsx | 0 .../general_config/DomainMatching.tsx | 0 .../general_config/EntrypointConfig.tsx | 2 +- .../config_editor/general_config/Maxmind.tsx | 0 .../general_config/NotificationsConfig.tsx | 0 .../general_config/ProxmoxConfig.tsx | 0 .../general_config/RouteProviderConfig.tsx | 0 .../MiddlewareComposeForm.tsx | 0 .../middleware_compose/MiddlewareEditor.tsx | 2 - .../config_editor/middleware_compose/utils.ts | 0 .../config_editor/route_files/Code.tsx | 0 .../route_files/NewRouteForm.tsx | 0 .../route_files/RouteDisplay.tsx | 4 +- .../route_files/RouteEditForm.tsx | 4 +- .../route_files/RouteEditFormDialog.tsx | 2 +- .../route_files/RouteFileServerSection.tsx | 0 .../route_files/RouteGeneralSection.tsx | 0 .../route_files/RouteHTTPConfigSection.tsx | 0 .../route_files/RouteHealthcheckSection.tsx | 0 .../config_editor/route_files/RouteIcon.tsx | 0 .../route_files/RouteIdlewatcherSection.tsx | 2 +- .../config_editor/route_files/RouteList.tsx | 2 +- .../route_files/RouteMiddlewaresSection.tsx | 0 .../route_files/RouteProxmoxSection.tsx | 0 .../route_files/RouteSSLConfigSection.tsx | 4 +- .../config_editor/route_files/utils.tsx | 0 .../components}/config_editor/sections.ts | 0 .../components}/config_editor/store.ts | 0 .../components}/config_editor/types.ts | 0 .../components}/form/FieldInput.tsx | 2 - .../components}/form/FormContainer.tsx | 0 .../components}/form/ListInput.tsx | 2 - .../components}/form/MapInput.tsx | 2 - .../components}/form/NamedListInput.tsx | 2 - .../components}/form/StoreFieldInput.tsx | 2 - .../components}/form/StoreListInput.tsx | 2 - .../components}/form/StoreMapInput.tsx | 2 - .../components}/form/map-utils.ts | 0 {components => src/components}/form/utils.ts | 0 .../components}/home/AppCategory.tsx | 2 +- .../components}/home/AppCategoryEmpty.tsx | 0 .../components}/home/AppCategorySegmented.tsx | 0 .../home/AppDetailsDialogContent.tsx | 0 .../components}/home/AppEditDialog.tsx | 4 +- .../components}/home/AppItem.tsx | 34 +- .../home/AppitemContextMenuContent.tsx | 98 +- .../components}/home/AppsGrid.tsx | 2 - .../components}/home/ArrowNavigation.tsx | 0 .../components}/home/CategoryIcon.tsx | 0 .../components}/home/HealthBubble.tsx | 0 .../components}/home/Searchbox.tsx | 0 .../components}/home/SettingsPopover.tsx | 4 +- .../components}/home/SystemStatValue.tsx | 1 - .../components}/home/SystemStats.tsx | 0 .../components}/home/SystemStatsProvider.tsx | 1 - {components => src/components}/home/store.ts | 0 .../components}/layout/Titlebar.tsx | 42 +- .../components}/layout/TitlebarController.tsx | 13 +- .../playground/MockRequestForm.tsx | 2 - .../playground/MockResponseForm.tsx | 2 - .../components}/playground/PresetExamples.tsx | 2 - .../components}/playground/ResultsDisplay.tsx | 2 - .../components}/playground/RulesEditor.tsx | 2 - .../components}/playground/RunButton.tsx | 2 - .../components}/playground/examples.ts | 0 .../components}/playground/store.ts | 2 - .../components}/playground/usePlayground.ts | 2 +- .../components}/routes/PercentageText.tsx | 0 .../components}/routes/SearchBox.tsx | 0 .../components}/routes/Sidebar.tsx | 2 - .../components}/routes/UptimeBar.tsx | 2 +- .../routes/content/ContainerControls.tsx | 2 - .../components}/routes/content/Content.tsx | 0 .../routes/content/ContentDialog.tsx | 2 - .../routes/content/DockerStatsProvider.tsx | 2 - .../components}/routes/content/Header.tsx | 1 - .../components}/routes/content/Logs.tsx | 2 +- .../components}/routes/content/LogsHeader.tsx | 0 .../routes/content/ProxmoxStatsProvider.tsx | 2 - .../routes/content/ResponseTimeChart.tsx | 2 - .../routes/content/RouteDetails.tsx | 2 - .../routes/content/RoutesDetailProvider.tsx | 2 - .../components}/routes/content/StatsBar.tsx | 2 - .../components}/routes/content/logs.ts | 0 .../routes/content/proxmox_stats.ts | 2 +- .../components}/routes/content/stats_bar.css | 0 .../components}/routes/store.ts | 2 - .../components}/routes/style.css | 0 .../components}/routes/utils.ts | 0 .../servers/AllSystemInfoProvider.tsx | 2 - .../components}/servers/NewAgentButton.tsx | 2 +- .../components}/servers/Sidebar.tsx | 4 +- .../components}/servers/content/Charts.tsx | 0 .../components}/servers/content/Content.tsx | 2 - .../content/SystemInfoGraphsProvider.tsx | 2 - .../components}/servers/store.ts | 2 - {components => src/components}/svg/docker.tsx | 0 .../components}/svg/duckduckgo.tsx | 0 {components => src/components}/svg/google.tsx | 0 .../components}/svg/keyboard-return.tsx | 0 {components => src/components}/svg/linux.tsx | 0 {components => src/components}/ui/alert.tsx | 0 {components => src/components}/ui/avatar.tsx | 0 {components => src/components}/ui/badge.tsx | 0 .../components}/ui/breadcrumb.tsx | 0 .../components}/ui/button-group.tsx | 0 {components => src/components}/ui/button.tsx | 0 {components => src/components}/ui/card.tsx | 0 .../components}/ui/carousel.tsx | 2 - {components => src/components}/ui/chart.tsx | 2 - .../components}/ui/checkbox.tsx | 0 .../components}/ui/client-only.tsx | 0 {components => src/components}/ui/code.tsx | 0 .../components}/ui/collapsible.tsx | 0 .../components}/ui/combobox.tsx | 0 {components => src/components}/ui/command.tsx | 0 .../components}/ui/context-menu.tsx | 0 .../components}/ui/custom-combobox.tsx | 0 .../components}/ui/data-list.tsx | 0 {components => src/components}/ui/dialog.tsx | 0 .../components}/ui/dropdown-menu.tsx | 0 {components => src/components}/ui/field.tsx | 2 - .../components}/ui/input-group.tsx | 0 {components => src/components}/ui/input.tsx | 0 {components => src/components}/ui/kbd.tsx | 0 .../components}/ui/kibo-ui/tree/index.tsx | 2 - {components => src/components}/ui/label.tsx | 0 {components => src/components}/ui/popover.tsx | 0 .../components}/ui/progress.tsx | 0 .../components}/ui/radio-group.tsx | 0 .../components}/ui/scroll-area.tsx | 0 {components => src/components}/ui/select.tsx | 0 .../components}/ui/separator.tsx | 0 {components => src/components}/ui/sheet.tsx | 0 {components => src/components}/ui/sidebar.tsx | 2 - .../components}/ui/skeleton.tsx | 0 src/components/ui/sonner.tsx | 45 + .../components}/ui/store/CodeMirror.tsx | 2 - {components => src/components}/ui/switch.tsx | 0 {components => src/components}/ui/table.tsx | 0 {components => src/components}/ui/tabs.tsx | 0 .../components}/ui/textarea.tsx | 0 .../components}/ui/theme-toggle.tsx | 8 +- {components => src/components}/ui/tooltip.tsx | 0 {hooks => src/hooks}/fragment.ts | 0 {hooks => src/hooks}/typing.tsx | 0 {hooks => src/hooks}/use-mobile.ts | 0 {hooks => src/hooks}/websocket.ts | 6 +- {lib => src/lib}/api-client.ts | 0 {lib => src/lib}/api.ts | 0 {lib => src/lib}/diff.ts | 0 {lib => src/lib}/format.ts | 0 {lib => src/lib}/logger.ts | 0 {lib => src/lib}/match.ts | 0 {lib => src/lib}/query.ts | 2 +- {lib => src/lib}/toast.ts | 1 - {lib => src/lib}/utils.ts | 0 src/router.tsx | 16 + src/routes/__root.tsx | 74 + app/config/page.tsx => src/routes/config.tsx | 13 +- app/page.tsx => src/routes/index.tsx | 7 +- app/login/page.tsx => src/routes/login.tsx | 21 +- .../page.tsx => src/routes/playground.tsx | 7 +- app/routes/page.tsx => src/routes/routes.tsx | 7 +- .../page.tsx => src/routes/servers.tsx | 9 +- src/routes/wiki.$.tsx | 44 + site-config.ts => src/site-config.ts | 0 app/globals.css => src/styles.css | 19 +- {types => src/types}/compose-spec.json | 0 {types => src/types}/compose-spec.ts | 0 {types => src/types}/file.ts | 0 {types => src/types}/godoxy/acl.schema.json | 0 .../types}/godoxy/autocert.schema.json | 0 .../types}/godoxy/config.schema.json | 0 .../types}/godoxy/config/access_log.ts | 0 {types => src/types}/godoxy/config/acl.ts | 0 .../types}/godoxy/config/autocert.ts | 9 +- {types => src/types}/godoxy/config/config.ts | 0 {types => src/types}/godoxy/config/docker.ts | 2 +- .../types}/godoxy/config/entrypoint.ts | 0 .../types}/godoxy/config/homepage.ts | 0 {types => src/types}/godoxy/config/maxmind.ts | 0 .../types}/godoxy/config/notification.ts | 0 .../types}/godoxy/config/providers.ts | 0 {types => src/types}/godoxy/config/rules.ts | 0 {types => src/types}/godoxy/deref.ts | 0 {types => src/types}/godoxy/docker.ts | 0 .../types}/godoxy/docker_routes.schema.json | 0 {types => src/types}/godoxy/index.ts | 9 +- .../types}/godoxy/maxmind.schema.json | 0 .../godoxy/middleware_compose.schema.json | 0 .../godoxy/middlewares/middleware_compose.ts | 0 .../types}/godoxy/middlewares/middlewares.ts | 2 +- .../types}/godoxy/providers/healthcheck.ts | 0 .../types}/godoxy/providers/homepage.ts | 0 .../types}/godoxy/providers/idlewatcher.ts | 0 .../types}/godoxy/providers/loadbalance.ts | 0 .../types}/godoxy/providers/proxmox.ts | 0 .../types}/godoxy/providers/routes.ts | 0 .../types}/godoxy/routes.schema.json | 0 {types => src/types}/godoxy/types.ts | 0 {types => src/types}/health.ts | 0 {types => src/types}/schema.ts | 0 test-run.compose.yml | 24 +- tsconfig.json | 17 +- vite.config.ts | 86 ++ 259 files changed, 1923 insertions(+), 941 deletions(-) delete mode 100644 app/config/layout.tsx delete mode 100644 app/layout.tsx delete mode 100644 app/manifest.json create mode 100644 biome.json delete mode 100644 components/ReactScan.tsx delete mode 100644 dev.Dockerfile delete mode 100644 eslint.config.mjs delete mode 100644 lite-next.config.ts delete mode 100644 lite.dev.Dockerfile create mode 100644 lite.vite.config.ts delete mode 100644 next.config.ts delete mode 100644 postcss.config.mjs rename {app => public}/apple-icon.png (100%) rename {app => public}/favicon.ico (100%) rename {app => public}/icon0.svg (100%) rename {app => public}/icon1.png (100%) rename {components => src/components}/AppIcon.tsx (96%) create mode 100644 src/components/DefaultCatchBoundary.tsx rename {components => src/components}/GoDoxyError.tsx (99%) rename {components => src/components}/IconSearchField.tsx (100%) rename {components => src/components}/LoadingRing.tsx (100%) rename {components => src/components}/LogoutButton.tsx (100%) create mode 100644 src/components/NotFound.tsx rename {components => src/components}/ObjectDataList.tsx (96%) rename {components => src/components}/SectionedForm.tsx (100%) create mode 100644 src/components/ThemeProvider.tsx rename {components => src/components}/VersionText.tsx (97%) rename {components => src/components}/YAMLEditor.tsx (100%) rename {components => src/components}/config_editor/AddFilePopoverButton.tsx (100%) rename {components => src/components}/config_editor/ConfigContent.tsx (99%) rename {components => src/components}/config_editor/ConfigFilesListProvider.tsx (97%) rename {components => src/components}/config_editor/ConfigHeaderActions.tsx (99%) rename {components => src/components}/config_editor/ConfigReloadButton.tsx (100%) rename {components => src/components}/config_editor/ConfigSaveButton.tsx (100%) rename {components => src/components}/config_editor/ConfigStateSyncronizer.tsx (98%) rename {components => src/components}/config_editor/ConfigValidationError.tsx (98%) rename {components => src/components}/config_editor/ConfigYAMLEditor.tsx (98%) rename {components => src/components}/config_editor/Sidebar.tsx (98%) rename {components => src/components}/config_editor/general_config/AccessControl.tsx (100%) rename {components => src/components}/config_editor/general_config/AutocertConfigContent.tsx (99%) rename {components => src/components}/config_editor/general_config/AutocertInfo.tsx (100%) rename {components => src/components}/config_editor/general_config/AutocertRenewDialogButton.tsx (100%) rename {components => src/components}/config_editor/general_config/DefaultValues.tsx (100%) rename {components => src/components}/config_editor/general_config/DomainMatching.tsx (100%) rename {components => src/components}/config_editor/general_config/EntrypointConfig.tsx (95%) rename {components => src/components}/config_editor/general_config/Maxmind.tsx (100%) rename {components => src/components}/config_editor/general_config/NotificationsConfig.tsx (100%) rename {components => src/components}/config_editor/general_config/ProxmoxConfig.tsx (100%) rename {components => src/components}/config_editor/general_config/RouteProviderConfig.tsx (100%) rename {components => src/components}/config_editor/middleware_compose/MiddlewareComposeForm.tsx (100%) rename {components => src/components}/config_editor/middleware_compose/MiddlewareEditor.tsx (99%) rename {components => src/components}/config_editor/middleware_compose/utils.ts (100%) rename {components => src/components}/config_editor/route_files/Code.tsx (100%) rename {components => src/components}/config_editor/route_files/NewRouteForm.tsx (100%) rename {components => src/components}/config_editor/route_files/RouteDisplay.tsx (97%) rename {components => src/components}/config_editor/route_files/RouteEditForm.tsx (98%) rename {components => src/components}/config_editor/route_files/RouteEditFormDialog.tsx (98%) rename {components => src/components}/config_editor/route_files/RouteFileServerSection.tsx (100%) rename {components => src/components}/config_editor/route_files/RouteGeneralSection.tsx (100%) rename {components => src/components}/config_editor/route_files/RouteHTTPConfigSection.tsx (100%) rename {components => src/components}/config_editor/route_files/RouteHealthcheckSection.tsx (100%) rename {components => src/components}/config_editor/route_files/RouteIcon.tsx (100%) rename {components => src/components}/config_editor/route_files/RouteIdlewatcherSection.tsx (96%) rename {components => src/components}/config_editor/route_files/RouteList.tsx (98%) rename {components => src/components}/config_editor/route_files/RouteMiddlewaresSection.tsx (100%) rename {components => src/components}/config_editor/route_files/RouteProxmoxSection.tsx (100%) rename {components => src/components}/config_editor/route_files/RouteSSLConfigSection.tsx (90%) rename {components => src/components}/config_editor/route_files/utils.tsx (100%) rename {components => src/components}/config_editor/sections.ts (100%) rename {components => src/components}/config_editor/store.ts (100%) rename {components => src/components}/config_editor/types.ts (100%) rename {components => src/components}/form/FieldInput.tsx (99%) rename {components => src/components}/form/FormContainer.tsx (100%) rename {components => src/components}/form/ListInput.tsx (99%) rename {components => src/components}/form/MapInput.tsx (99%) rename {components => src/components}/form/NamedListInput.tsx (99%) rename {components => src/components}/form/StoreFieldInput.tsx (99%) rename {components => src/components}/form/StoreListInput.tsx (99%) rename {components => src/components}/form/StoreMapInput.tsx (99%) rename {components => src/components}/form/map-utils.ts (100%) rename {components => src/components}/form/utils.ts (100%) rename {components => src/components}/home/AppCategory.tsx (98%) rename {components => src/components}/home/AppCategoryEmpty.tsx (100%) rename {components => src/components}/home/AppCategorySegmented.tsx (100%) rename {components => src/components}/home/AppDetailsDialogContent.tsx (100%) rename {components => src/components}/home/AppEditDialog.tsx (98%) rename {components => src/components}/home/AppItem.tsx (87%) rename {components => src/components}/home/AppitemContextMenuContent.tsx (64%) rename {components => src/components}/home/AppsGrid.tsx (99%) rename {components => src/components}/home/ArrowNavigation.tsx (100%) rename {components => src/components}/home/CategoryIcon.tsx (100%) rename {components => src/components}/home/HealthBubble.tsx (100%) rename {components => src/components}/home/Searchbox.tsx (100%) rename {components => src/components}/home/SettingsPopover.tsx (97%) rename {components => src/components}/home/SystemStatValue.tsx (98%) rename {components => src/components}/home/SystemStats.tsx (100%) rename {components => src/components}/home/SystemStatsProvider.tsx (98%) rename {components => src/components}/home/store.ts (100%) rename {components => src/components}/layout/Titlebar.tsx (69%) rename {components => src/components}/layout/TitlebarController.tsx (71%) rename {components => src/components}/playground/MockRequestForm.tsx (99%) rename {components => src/components}/playground/MockResponseForm.tsx (99%) rename {components => src/components}/playground/PresetExamples.tsx (99%) rename {components => src/components}/playground/ResultsDisplay.tsx (99%) rename {components => src/components}/playground/RulesEditor.tsx (97%) rename {components => src/components}/playground/RunButton.tsx (98%) rename {components => src/components}/playground/examples.ts (100%) rename {components => src/components}/playground/store.ts (98%) rename {components => src/components}/playground/usePlayground.ts (100%) rename {components => src/components}/routes/PercentageText.tsx (100%) rename {components => src/components}/routes/SearchBox.tsx (100%) rename {components => src/components}/routes/Sidebar.tsx (99%) rename {components => src/components}/routes/UptimeBar.tsx (98%) rename {components => src/components}/routes/content/ContainerControls.tsx (99%) rename {components => src/components}/routes/content/Content.tsx (100%) rename {components => src/components}/routes/content/ContentDialog.tsx (97%) rename {components => src/components}/routes/content/DockerStatsProvider.tsx (99%) rename {components => src/components}/routes/content/Header.tsx (98%) rename {components => src/components}/routes/content/Logs.tsx (99%) rename {components => src/components}/routes/content/LogsHeader.tsx (100%) rename {components => src/components}/routes/content/ProxmoxStatsProvider.tsx (98%) rename {components => src/components}/routes/content/ResponseTimeChart.tsx (99%) rename {components => src/components}/routes/content/RouteDetails.tsx (99%) rename {components => src/components}/routes/content/RoutesDetailProvider.tsx (97%) rename {components => src/components}/routes/content/StatsBar.tsx (99%) rename {components => src/components}/routes/content/logs.ts (100%) rename {components => src/components}/routes/content/proxmox_stats.ts (99%) rename {components => src/components}/routes/content/stats_bar.css (100%) rename {components => src/components}/routes/store.ts (99%) rename {components => src/components}/routes/style.css (100%) rename {components => src/components}/routes/utils.ts (100%) rename {components => src/components}/servers/AllSystemInfoProvider.tsx (98%) rename {components => src/components}/servers/NewAgentButton.tsx (99%) rename {components => src/components}/servers/Sidebar.tsx (99%) rename {components => src/components}/servers/content/Charts.tsx (100%) rename {components => src/components}/servers/content/Content.tsx (99%) rename {components => src/components}/servers/content/SystemInfoGraphsProvider.tsx (99%) rename {components => src/components}/servers/store.ts (99%) rename {components => src/components}/svg/docker.tsx (100%) rename {components => src/components}/svg/duckduckgo.tsx (100%) rename {components => src/components}/svg/google.tsx (100%) rename {components => src/components}/svg/keyboard-return.tsx (100%) rename {components => src/components}/svg/linux.tsx (100%) rename {components => src/components}/ui/alert.tsx (100%) rename {components => src/components}/ui/avatar.tsx (100%) rename {components => src/components}/ui/badge.tsx (100%) rename {components => src/components}/ui/breadcrumb.tsx (100%) rename {components => src/components}/ui/button-group.tsx (100%) rename {components => src/components}/ui/button.tsx (100%) rename {components => src/components}/ui/card.tsx (100%) rename {components => src/components}/ui/carousel.tsx (99%) rename {components => src/components}/ui/chart.tsx (99%) rename {components => src/components}/ui/checkbox.tsx (100%) rename {components => src/components}/ui/client-only.tsx (100%) rename {components => src/components}/ui/code.tsx (100%) rename {components => src/components}/ui/collapsible.tsx (100%) rename {components => src/components}/ui/combobox.tsx (100%) rename {components => src/components}/ui/command.tsx (100%) rename {components => src/components}/ui/context-menu.tsx (100%) rename {components => src/components}/ui/custom-combobox.tsx (100%) rename {components => src/components}/ui/data-list.tsx (100%) rename {components => src/components}/ui/dialog.tsx (100%) rename {components => src/components}/ui/dropdown-menu.tsx (100%) rename {components => src/components}/ui/field.tsx (99%) rename {components => src/components}/ui/input-group.tsx (100%) rename {components => src/components}/ui/input.tsx (100%) rename {components => src/components}/ui/kbd.tsx (100%) rename {components => src/components}/ui/kibo-ui/tree/index.tsx (99%) rename {components => src/components}/ui/label.tsx (100%) rename {components => src/components}/ui/popover.tsx (100%) rename {components => src/components}/ui/progress.tsx (100%) rename {components => src/components}/ui/radio-group.tsx (100%) rename {components => src/components}/ui/scroll-area.tsx (100%) rename {components => src/components}/ui/select.tsx (100%) rename {components => src/components}/ui/separator.tsx (100%) rename {components => src/components}/ui/sheet.tsx (100%) rename {components => src/components}/ui/sidebar.tsx (99%) rename {components => src/components}/ui/skeleton.tsx (100%) create mode 100644 src/components/ui/sonner.tsx rename {components => src/components}/ui/store/CodeMirror.tsx (98%) rename {components => src/components}/ui/switch.tsx (100%) rename {components => src/components}/ui/table.tsx (100%) rename {components => src/components}/ui/tabs.tsx (100%) rename {components => src/components}/ui/textarea.tsx (100%) rename {components => src/components}/ui/theme-toggle.tsx (75%) rename {components => src/components}/ui/tooltip.tsx (100%) rename {hooks => src/hooks}/fragment.ts (100%) rename {hooks => src/hooks}/typing.tsx (100%) rename {hooks => src/hooks}/use-mobile.ts (100%) rename {hooks => src/hooks}/websocket.ts (98%) rename {lib => src/lib}/api-client.ts (100%) rename {lib => src/lib}/api.ts (100%) rename {lib => src/lib}/diff.ts (100%) rename {lib => src/lib}/format.ts (100%) rename {lib => src/lib}/logger.ts (100%) rename {lib => src/lib}/match.ts (100%) rename {lib => src/lib}/query.ts (99%) rename {lib => src/lib}/toast.ts (97%) rename {lib => src/lib}/utils.ts (100%) create mode 100644 src/router.tsx create mode 100644 src/routes/__root.tsx rename app/config/page.tsx => src/routes/config.tsx (84%) rename app/page.tsx => src/routes/index.tsx (69%) rename app/login/page.tsx => src/routes/login.tsx (82%) rename app/playground/page.tsx => src/routes/playground.tsx (91%) rename app/routes/page.tsx => src/routes/routes.tsx (80%) rename app/servers/page.tsx => src/routes/servers.tsx (71%) create mode 100644 src/routes/wiki.$.tsx rename site-config.ts => src/site-config.ts (100%) rename app/globals.css => src/styles.css (92%) rename {types => src/types}/compose-spec.json (100%) rename {types => src/types}/compose-spec.ts (100%) rename {types => src/types}/file.ts (100%) rename {types => src/types}/godoxy/acl.schema.json (100%) rename {types => src/types}/godoxy/autocert.schema.json (100%) rename {types => src/types}/godoxy/config.schema.json (100%) rename {types => src/types}/godoxy/config/access_log.ts (100%) rename {types => src/types}/godoxy/config/acl.ts (100%) rename {types => src/types}/godoxy/config/autocert.ts (95%) rename {types => src/types}/godoxy/config/config.ts (100%) rename {types => src/types}/godoxy/config/docker.ts (92%) rename {types => src/types}/godoxy/config/entrypoint.ts (100%) rename {types => src/types}/godoxy/config/homepage.ts (100%) rename {types => src/types}/godoxy/config/maxmind.ts (100%) rename {types => src/types}/godoxy/config/notification.ts (100%) rename {types => src/types}/godoxy/config/providers.ts (100%) rename {types => src/types}/godoxy/config/rules.ts (100%) rename {types => src/types}/godoxy/deref.ts (100%) rename {types => src/types}/godoxy/docker.ts (100%) rename {types => src/types}/godoxy/docker_routes.schema.json (100%) rename {types => src/types}/godoxy/index.ts (93%) rename {types => src/types}/godoxy/maxmind.schema.json (100%) rename {types => src/types}/godoxy/middleware_compose.schema.json (100%) rename {types => src/types}/godoxy/middlewares/middleware_compose.ts (100%) rename {types => src/types}/godoxy/middlewares/middlewares.ts (99%) rename {types => src/types}/godoxy/providers/healthcheck.ts (100%) rename {types => src/types}/godoxy/providers/homepage.ts (100%) rename {types => src/types}/godoxy/providers/idlewatcher.ts (100%) rename {types => src/types}/godoxy/providers/loadbalance.ts (100%) rename {types => src/types}/godoxy/providers/proxmox.ts (100%) rename {types => src/types}/godoxy/providers/routes.ts (100%) rename {types => src/types}/godoxy/routes.schema.json (100%) rename {types => src/types}/godoxy/types.ts (100%) rename {types => src/types}/health.ts (100%) rename {types => src/types}/schema.ts (100%) create mode 100644 vite.config.ts diff --git a/.dockerignore b/.dockerignore index 031fd06e..672206f9 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,7 +1,7 @@ # Docker stuff Dockerfile *.Dockerfile -*.compose.yml +*.yml .dockerignore .git @@ -10,42 +10,26 @@ Dockerfile .vscode .github .trunk +.claude +.kilocode +.tanstack -README.md - -# from .gitignore -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. +*.md # dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# database -/prisma/db.sqlite -/prisma/db.sqlite-journal -db.sqlite +**/node_modules -# next.js -/.next/ -/out/ -next-env.d.ts - -# production -/build +# build output +**/.output +**/dist +/public/wiki # misc .DS_Store *.pem # debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* -.pnpm-debug.log* +*.log* # local env files # do not commit any .env files to git, except for the .env.example file. https://create.t3.gg/en/usage/env-variables#using-environment-variables @@ -58,10 +42,8 @@ yarn-error.log* # typescript *.tsbuildinfo -# idea files -.idea - # schema -types/godoxy/*.json # will be generated by `make gen-schema` +# will be generated by `make gen-schema` +src/types/godoxy/*.deref.json -app/docker-compose \ No newline at end of file +src/app/docker-compose \ No newline at end of file diff --git a/.gitignore b/.gitignore index 78a9dd11..e5087b90 100644 --- a/.gitignore +++ b/.gitignore @@ -13,13 +13,11 @@ /prisma/db.sqlite-journal db.sqlite -# next.js -/.next/ -/out/ -next-env.d.ts - -# production -/build +# build output +/.output +/.tanstack +/dist +public/wiki # misc .DS_Store @@ -45,7 +43,15 @@ yarn-error.log* # idea files .idea +# TanStack Start + +src/routeTree.gen.ts + # schema -types/godoxy/*.deref.json +src/types/godoxy/*.deref.json + +src/app/docker-compose -app/docker-compose \ No newline at end of file +CLAUDE.md +.kilocode/ +.claude/ diff --git a/Dockerfile b/Dockerfile index fe958aad..405c810f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,58 +2,66 @@ FROM oven/bun:1.3.8-alpine AS base HEALTHCHECK NONE +# utils stage for git and make FROM base AS utils-deps WORKDIR /src # git is for building wiki (vitepress deps) RUN apk add --no-cache git=2.49.1-r0 make=4.4.1-r3 -# Install dependencies based on the preferred package manager +# wiki stage for vitepress deps +FROM utils-deps AS wiki-deps + COPY wiki/package.json wiki/bun.lock ./ RUN bun i -D --frozen-lockfile -# install dependencies into temp directory -# this will cache them and speed up future builds -FROM base AS install +# install stage for webui deps +FROM utils-deps AS install RUN mkdir -p /temp/dev COPY package.json bun.lock /temp/dev/ COPY juststore/package.json juststore/bun.lock /temp/dev/juststore/ +COPY juststore-shadcn/package.json juststore-shadcn/bun.lock /temp/dev/juststore-shadcn/ WORKDIR /temp/dev RUN bun install --frozen-lockfile -# copy node_modules from temp directory -# then copy all (non-ignored) project files into the image -FROM utils-deps AS prerelease -WORKDIR /app -COPY --from=install /temp/dev/node_modules node_modules -COPY . . -ENV NEXT_TELEMETRY_DISABLED=1 -ENV NODE_ENV=production -RUN make gen-schema && bun --bun run build - -# Rebuild the source code only when needed -FROM utils-deps AS wiki-builder +# build wiki +FROM wiki-deps AS wiki-builder WORKDIR /src COPY wiki . RUN sed -i "s|srcDir: 'src',|srcDir: 'src', base: '/wiki',|" .vitepress/config.mts # redirect back to GoDoxy WebUI on the same tab when pressing "Home" +ENV NODE_ENV=production RUN sed -i "s|link: '/'|link: '/../', rel: 'noopener noreferrer', target: '_self'|" .vitepress/config.mts && \ bun --bun run docs:build -# Production image, copy all the files and run next -FROM oven/bun:1.3.8-distroless AS release +# schema-gen stage for generating schema +FROM install AS schema-gen +COPY src/types/godoxy/ ./src/types/godoxy/ +COPY Makefile ./Makefile +COPY tsconfig.json ./tsconfig.json +RUN make gen-schema +# copy node_modules from temp directory +# then copy all (non-ignored) project files into the image +FROM base AS prerelease +WORKDIR /app +COPY --from=install /temp/dev/node_modules node_modules +COPY . . +COPY --from=schema-gen /temp/dev/src/types/godoxy/*.json ./src/types/godoxy/ + +ENV NODE_ENV=production +RUN bun --bun vite build + +# Production image, copy all the files and run bun +FROM oven/bun:1.3.8-distroless AS release ENV NODE_ENV=production -ENV NEXT_TELEMETRY_DISABLED=1 USER 1001:1001 WORKDIR /app -COPY --from=prerelease --chown=1001:1001 /app/.next/standalone ./ -COPY --from=prerelease --chown=1001:1001 /app/.next/static ./.next/static -COPY --from=prerelease --chown=1001:1001 /app/public ./public -COPY --from=wiki-builder --chown=1001:1001 /src/.vitepress/dist ./public/wiki +COPY --from=prerelease --chown=1001:1001 /app/.output ./ +COPY --from=wiki-builder /src/.vitepress/dist ./public/wiki EXPOSE 3000 @@ -61,4 +69,4 @@ ENV PORT=3000 LABEL "proxy.*.rule_file"="embed://webui.yml" -CMD ["--bun", "run", "server.js"] +CMD ["--bun", "server/index.mjs"] \ No newline at end of file diff --git a/Makefile b/Makefile index 18db081a..95a08f4d 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,14 @@ VERSION ?= $(shell git describe --tags --abbrev=0) -BUILD_DATE ?= $(shell date -u +'%Y%m%d-%H%M') - -SCHEMA_DIR := types/godoxy +BUILD_DATE ?= $(shell date -u +'%Y%m%d-%H%M%S') +PWD := $(shell pwd) +SRC_DIR := src +SCHEMA_DIR := ${SRC_DIR}/types/godoxy .PHONY: dev +export PWD +export BUILDKIT_PROGRESS=plain + dev: docker compose up --build --pull=never @@ -20,6 +24,19 @@ commit-push: update-wiki: cd public/wiki && git pull +# emulates docker build process for wiki using git worktree (submodule) +build-wiki: + [ -d ${PWD}/public/wiki ] && rm -r ${PWD}/public/wiki || true + git -C wiki worktree add /tmp/wiki-$(BUILD_DATE) HEAD + @trap 'cd ${PWD} && git -C wiki worktree remove /tmp/wiki-$(BUILD_DATE) --force' EXIT; \ + cd /tmp/wiki-$(BUILD_DATE) && \ + bun i -D --frozen-lockfile && \ + sed -i "s|srcDir: 'src',|srcDir: 'src', base: '/wiki',|" .vitepress/config.mts && \ + sed -i "s|link: '/'|link: '/../', rel: 'noopener noreferrer', target: '_self'|" .vitepress/config.mts && \ + head -n 10 .vitepress/config.mts && \ + bun --bun run docs:build && \ + cp -r .vitepress/dist ${PWD}/public/wiki + test-run: docker compose -f test-run.compose.yml up --build --pull=never @@ -62,5 +79,5 @@ gen-schema: gen-schema-single gen-docker-compose-types: - [ -f types/compose-spec.json ] || curl -o types/compose-spec.json https://raw.githubusercontent.com/compose-spec/compose-spec/main/schema/compose-spec.json - [ -f types/compose-spec.ts ] || bunx json-schema-to-typescript types/compose-spec.json types/compose-spec.ts \ No newline at end of file + [ -f ${SCHEMA_DIR}/types/compose-spec.json ] || curl -o ${SCHEMA_DIR}/types/compose-spec.json https://raw.githubusercontent.com/compose-spec/compose-spec/main/schema/compose-spec.json + [ -f ${SCHEMA_DIR}/types/compose-spec.ts ] || bunx json-schema-to-typescript ${SCHEMA_DIR}/types/compose-spec.json ${SCHEMA_DIR}/types/compose-spec.ts \ No newline at end of file diff --git a/app/config/layout.tsx b/app/config/layout.tsx deleted file mode 100644 index 177f11d3..00000000 --- a/app/config/layout.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { SidebarProvider } from '@/components/ui/sidebar' - -export default function ConfigLayout({ children }: { children: React.ReactNode }) { - return {children} -} diff --git a/app/layout.tsx b/app/layout.tsx deleted file mode 100644 index cabe5558..00000000 --- a/app/layout.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import ReactScan from '@/components/ReactScan' - -import Titlebar from '@/components/layout/Titlebar' -import TitlebarController from '@/components/layout/TitlebarController' -import { siteConfig } from '@/site-config' -import { ThemeProvider } from 'next-themes' -import { Geist, Geist_Mono } from 'next/font/google' -import type { ReactNode } from 'react' -import { Toaster } from 'sonner' -import './globals.css' - -export const metadata = siteConfig.metadata - -const geistSans = Geist({ - variable: '--font-geist-sans', - subsets: ['latin'], -}) - -const geistMono = Geist_Mono({ - variable: '--font-geist-mono', - subsets: ['latin'], -}) - -export default function RootLayout({ - children, -}: Readonly<{ - children: ReactNode -}>) { - return ( - - - - - - - - - -
- {children} - -
-
- - - ) -} diff --git a/app/manifest.json b/app/manifest.json deleted file mode 100644 index 3123081c..00000000 --- a/app/manifest.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "GoDoxy", - "short_name": "GoDoxy", - "description": "Beyond a reverse proxy", - "start_url": "/", - "icons": [ - { - "src": "/web-app-manifest-192x192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "maskable" - }, - { - "src": "/web-app-manifest-512x512.png", - "sizes": "512x512", - "type": "image/png", - "purpose": "maskable" - } - ], - "theme_color": "#fffbfb", - "background_color": "#000000", - "display": "standalone" -} \ No newline at end of file diff --git a/biome.json b/biome.json new file mode 100644 index 00000000..3e59d205 --- /dev/null +++ b/biome.json @@ -0,0 +1,69 @@ +{ + "$schema": "https://biomejs.dev/schemas/2.3.14/schema.json", + "vcs": { + "enabled": true, + "clientKind": "git", + "useIgnoreFile": true + }, + "files": { + "ignoreUnknown": false, + "includes": [ + "**/src/**/*", + "**/.vscode/**/*", + "**/index.html", + "**/vite.config.ts", + "!src/routeTree.gen.ts", + "!src/types/**/*.json", + "!src/lib/api.ts", + "!juststore/dist", + "!juststore/tests", + "!wiki" + ] + }, + "formatter": { + "enabled": true, + "formatWithErrors": false, + "indentStyle": "space", + "indentWidth": 2, + "lineEnding": "lf", + "lineWidth": 100, + "attributePosition": "auto", + "bracketSameLine": false, + "bracketSpacing": true, + "expand": "auto", + "useEditorconfig": true + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true + } + }, + "javascript": { + "formatter": { + "jsxQuoteStyle": "double", + "quoteProperties": "asNeeded", + "trailingCommas": "es5", + "semicolons": "asNeeded", + "arrowParentheses": "asNeeded", + "bracketSameLine": false, + "quoteStyle": "single", + "attributePosition": "auto", + "bracketSpacing": true + } + }, + "html": { + "formatter": { + "indentScriptAndStyle": false, + "selfCloseVoidElements": "always" + } + }, + "assist": { + "enabled": null, + "actions": { + "source": { + "organizeImports": "on" + } + } + } +} diff --git a/bun.lock b/bun.lock index 0a2cecdd..1e92803b 100644 --- a/bun.lock +++ b/bun.lock @@ -1,6 +1,6 @@ { "lockfileVersion": 1, - "configVersion": 1, + "configVersion": 0, "workspaces": { "": { "name": "godoxy-frontend", @@ -12,8 +12,11 @@ "@codemirror/lang-yaml": "^6.1.2", "@codemirror/lint": "^6.9.3", "@fontsource/cascadia-code": "^5.2.3", + "@fontsource/geist": "^5.2.8", + "@fontsource/geist-mono": "^5.2.7", "@tabler/icons-react": "^3.36.1", - "@tailwindcss/postcss": "^4.1.18", + "@tanstack/react-router": "^1.158.0", + "@tanstack/react-start": "^1.158.0", "@uiw/react-codemirror": "^4.25.4", "@xterm/addon-fit": "^0.11.0", "@xterm/addon-web-fonts": "^0.1.0", @@ -29,10 +32,7 @@ "embla-carousel-react": "^8.6.0", "juststore": "./juststore", "lucide-react": "^0.563.0", - "motion": "^12.29.2", - "next": "^16.1.6", - "next-themes": "^0.4.6", - "postcss": "^8.5.6", + "motion": "^12.31.0", "react": "^19.2.4", "react-dom": "^19.2.4", "react-fast-compare": "^3.2.2", @@ -48,37 +48,25 @@ "yaml": "^2.8.2", }, "devDependencies": { - "@eslint/compat": "^2.0.1", - "@eslint/eslintrc": "^3.3.3", - "@eslint/js": "^9.39.2", - "@next/eslint-plugin-next": "^16.1.6", - "@react-types/shared": "^3.32.1", + "@biomejs/biome": "^2.3.14", + "@react-types/shared": "^3.33.0", + "@tailwindcss/vite": "^4.1.18", + "@tanstack/devtools-vite": "^0.5.0", "@types/bun": "^1.3.8", - "@types/eslint": "^9.6.1", - "@types/node": "^25.1.0", + "@types/node": "^25.2.0", "@types/react": "^19.2.10", "@types/react-dom": "^19.2.3", - "@typescript-eslint/eslint-plugin": "^8.54.0", - "@typescript-eslint/parser": "^8.54.0", + "@vitejs/plugin-react": "^5.1.3", "babel-plugin-react-compiler": "^1.0.0", - "eslint": "^9.39.2", - "eslint-config-next": "^16.1.6", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-import": "^2.32.0", - "eslint-plugin-prettier": "^5.5.5", - "eslint-plugin-react": "^7.37.5", - "eslint-plugin-react-hooks": "^7.0.1", - "eslint-plugin-react-refresh": "^0.4.26", - "prettier": "^3.8.1", + "nitro": "^3.0.1-alpha.2", "ts-json-schema-generator": "^2.4.0", "typescript": "^5.9.3", - "typescript-eslint": "^8.54.0", + "vite": "^7.3.1", + "vite-plugin-pwa": "^1.2.0", + "vite-tsconfig-paths": "^6.0.5", }, }, }, - "trustedDependencies": [ - "unrs-resolver", - ], "overrides": { "@shikijs/core": "^3", "@shikijs/markdown-it": "^3", @@ -88,30 +76,49 @@ "change-case": "^5.4.4", "js-yaml": "^4.1.1", "mdast-util-to-hast": ">=13.2.1", - "next": ">=16.0.10", "preact": "^10.28.2", "shiki": "^3", }, "packages": { - "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], + "@apideck/better-ajv-errors": ["@apideck/better-ajv-errors@0.3.6", "", { "dependencies": { "json-schema": "^0.4.0", "jsonpointer": "^5.0.0", "leven": "^3.1.0" }, "peerDependencies": { "ajv": ">=8" } }, "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA=="], "@apidevtools/json-schema-ref-parser": ["@apidevtools/json-schema-ref-parser@15.2.2", "", { "dependencies": { "js-yaml": "^4.1.1" }, "peerDependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-54fvjSwWiBTdVviiUItOCeyxtPSBmCrSEjlOl8XFEDuYD3lXY1lOBWKim/WJ3i1EYzdGx6rSOjK5KRDMppLI4Q=="], - "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + "@babel/code-frame": ["@babel/code-frame@7.29.0", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw=="], - "@babel/compat-data": ["@babel/compat-data@7.28.5", "", {}, "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA=="], + "@babel/compat-data": ["@babel/compat-data@7.29.0", "", {}, "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg=="], - "@babel/core": ["@babel/core@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", "@babel/helpers": "^7.28.4", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw=="], + "@babel/core": ["@babel/core@7.29.0", "", { "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-module-transforms": "^7.28.6", "@babel/helpers": "^7.28.6", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/traverse": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA=="], - "@babel/generator": ["@babel/generator@7.28.5", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ=="], + "@babel/generator": ["@babel/generator@7.29.0", "", { "dependencies": { "@babel/parser": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ=="], - "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.27.2", "", { "dependencies": { "@babel/compat-data": "^7.27.2", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ=="], + "@babel/helper-annotate-as-pure": ["@babel/helper-annotate-as-pure@7.27.3", "", { "dependencies": { "@babel/types": "^7.27.3" } }, "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg=="], + + "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.28.6", "", { "dependencies": { "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA=="], + + "@babel/helper-create-class-features-plugin": ["@babel/helper-create-class-features-plugin@7.28.6", "", { "dependencies": { "@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/helper-skip-transparent-expression-wrappers": "^7.27.1", "@babel/traverse": "^7.28.6", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow=="], + + "@babel/helper-create-regexp-features-plugin": ["@babel/helper-create-regexp-features-plugin@7.28.5", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "regexpu-core": "^6.3.1", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw=="], + + "@babel/helper-define-polyfill-provider": ["@babel/helper-define-polyfill-provider@0.6.6", "", { "dependencies": { "@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" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA=="], "@babel/helper-globals": ["@babel/helper-globals@7.28.0", "", {}, "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="], - "@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="], + "@babel/helper-member-expression-to-functions": ["@babel/helper-member-expression-to-functions@7.28.5", "", { "dependencies": { "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5" } }, "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg=="], + + "@babel/helper-module-imports": ["@babel/helper-module-imports@7.28.6", "", { "dependencies": { "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw=="], + + "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.6", "", { "dependencies": { "@babel/helper-module-imports": "^7.28.6", "@babel/helper-validator-identifier": "^7.28.5", "@babel/traverse": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA=="], + + "@babel/helper-optimise-call-expression": ["@babel/helper-optimise-call-expression@7.27.1", "", { "dependencies": { "@babel/types": "^7.27.1" } }, "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw=="], + + "@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.28.6", "", {}, "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug=="], - "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.3", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", "@babel/traverse": "^7.28.3" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw=="], + "@babel/helper-remap-async-to-generator": ["@babel/helper-remap-async-to-generator@7.27.1", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "@babel/helper-wrap-function": "^7.27.1", "@babel/traverse": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA=="], + + "@babel/helper-replace-supers": ["@babel/helper-replace-supers@7.28.6", "", { "dependencies": { "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/traverse": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg=="], + + "@babel/helper-skip-transparent-expression-wrappers": ["@babel/helper-skip-transparent-expression-wrappers@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg=="], "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], @@ -119,22 +126,174 @@ "@babel/helper-validator-option": ["@babel/helper-validator-option@7.27.1", "", {}, "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="], - "@babel/helpers": ["@babel/helpers@7.28.4", "", { "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.28.4" } }, "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w=="], + "@babel/helper-wrap-function": ["@babel/helper-wrap-function@7.28.6", "", { "dependencies": { "@babel/template": "^7.28.6", "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ=="], + + "@babel/helpers": ["@babel/helpers@7.28.6", "", { "dependencies": { "@babel/template": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw=="], + + "@babel/parser": ["@babel/parser@7.29.0", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww=="], + + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": ["@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/traverse": "^7.28.5" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q=="], + + "@babel/plugin-bugfix-safari-class-field-initializer-scope": ["@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA=="], + + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ["@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA=="], + + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ["@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", "@babel/plugin-transform-optional-chaining": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.13.0" } }, "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw=="], + + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ["@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/traverse": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g=="], + + "@babel/plugin-proposal-private-property-in-object": ["@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w=="], + + "@babel/plugin-syntax-import-assertions": ["@babel/plugin-syntax-import-assertions@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw=="], + + "@babel/plugin-syntax-import-attributes": ["@babel/plugin-syntax-import-attributes@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw=="], + + "@babel/plugin-syntax-jsx": ["@babel/plugin-syntax-jsx@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w=="], + + "@babel/plugin-syntax-typescript": ["@babel/plugin-syntax-typescript@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A=="], + + "@babel/plugin-syntax-unicode-sets-regex": ["@babel/plugin-syntax-unicode-sets-regex@7.18.6", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg=="], + + "@babel/plugin-transform-arrow-functions": ["@babel/plugin-transform-arrow-functions@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA=="], + + "@babel/plugin-transform-async-generator-functions": ["@babel/plugin-transform-async-generator-functions@7.29.0", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-remap-async-to-generator": "^7.27.1", "@babel/traverse": "^7.29.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w=="], + + "@babel/plugin-transform-async-to-generator": ["@babel/plugin-transform-async-to-generator@7.28.6", "", { "dependencies": { "@babel/helper-module-imports": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-remap-async-to-generator": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g=="], + + "@babel/plugin-transform-block-scoped-functions": ["@babel/plugin-transform-block-scoped-functions@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg=="], + + "@babel/plugin-transform-block-scoping": ["@babel/plugin-transform-block-scoping@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw=="], + + "@babel/plugin-transform-class-properties": ["@babel/plugin-transform-class-properties@7.28.6", "", { "dependencies": { "@babel/helper-create-class-features-plugin": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw=="], + + "@babel/plugin-transform-class-static-block": ["@babel/plugin-transform-class-static-block@7.28.6", "", { "dependencies": { "@babel/helper-create-class-features-plugin": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.12.0" } }, "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ=="], + + "@babel/plugin-transform-classes": ["@babel/plugin-transform-classes@7.28.6", "", { "dependencies": { "@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/traverse": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q=="], + + "@babel/plugin-transform-computed-properties": ["@babel/plugin-transform-computed-properties@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/template": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ=="], + + "@babel/plugin-transform-destructuring": ["@babel/plugin-transform-destructuring@7.28.5", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/traverse": "^7.28.5" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw=="], + + "@babel/plugin-transform-dotall-regex": ["@babel/plugin-transform-dotall-regex@7.28.6", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg=="], + + "@babel/plugin-transform-duplicate-keys": ["@babel/plugin-transform-duplicate-keys@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q=="], + + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": ["@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw=="], + + "@babel/plugin-transform-dynamic-import": ["@babel/plugin-transform-dynamic-import@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A=="], + + "@babel/plugin-transform-explicit-resource-management": ["@babel/plugin-transform-explicit-resource-management@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/plugin-transform-destructuring": "^7.28.5" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg=="], + + "@babel/plugin-transform-exponentiation-operator": ["@babel/plugin-transform-exponentiation-operator@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw=="], + + "@babel/plugin-transform-export-namespace-from": ["@babel/plugin-transform-export-namespace-from@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ=="], + + "@babel/plugin-transform-for-of": ["@babel/plugin-transform-for-of@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw=="], + + "@babel/plugin-transform-function-name": ["@babel/plugin-transform-function-name@7.27.1", "", { "dependencies": { "@babel/helper-compilation-targets": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", "@babel/traverse": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ=="], + + "@babel/plugin-transform-json-strings": ["@babel/plugin-transform-json-strings@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw=="], + + "@babel/plugin-transform-literals": ["@babel/plugin-transform-literals@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA=="], + + "@babel/plugin-transform-logical-assignment-operators": ["@babel/plugin-transform-logical-assignment-operators@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A=="], + + "@babel/plugin-transform-member-expression-literals": ["@babel/plugin-transform-member-expression-literals@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ=="], + + "@babel/plugin-transform-modules-amd": ["@babel/plugin-transform-modules-amd@7.27.1", "", { "dependencies": { "@babel/helper-module-transforms": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA=="], + + "@babel/plugin-transform-modules-commonjs": ["@babel/plugin-transform-modules-commonjs@7.28.6", "", { "dependencies": { "@babel/helper-module-transforms": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA=="], + + "@babel/plugin-transform-modules-systemjs": ["@babel/plugin-transform-modules-systemjs@7.29.0", "", { "dependencies": { "@babel/helper-module-transforms": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-validator-identifier": "^7.28.5", "@babel/traverse": "^7.29.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ=="], + + "@babel/plugin-transform-modules-umd": ["@babel/plugin-transform-modules-umd@7.27.1", "", { "dependencies": { "@babel/helper-module-transforms": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w=="], + + "@babel/plugin-transform-named-capturing-groups-regex": ["@babel/plugin-transform-named-capturing-groups-regex@7.29.0", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ=="], + + "@babel/plugin-transform-new-target": ["@babel/plugin-transform-new-target@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ=="], + + "@babel/plugin-transform-nullish-coalescing-operator": ["@babel/plugin-transform-nullish-coalescing-operator@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg=="], + + "@babel/plugin-transform-numeric-separator": ["@babel/plugin-transform-numeric-separator@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w=="], + + "@babel/plugin-transform-object-rest-spread": ["@babel/plugin-transform-object-rest-spread@7.28.6", "", { "dependencies": { "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", "@babel/plugin-transform-destructuring": "^7.28.5", "@babel/plugin-transform-parameters": "^7.27.7", "@babel/traverse": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA=="], + + "@babel/plugin-transform-object-super": ["@babel/plugin-transform-object-super@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng=="], + + "@babel/plugin-transform-optional-catch-binding": ["@babel/plugin-transform-optional-catch-binding@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ=="], + + "@babel/plugin-transform-optional-chaining": ["@babel/plugin-transform-optional-chaining@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w=="], - "@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], + "@babel/plugin-transform-parameters": ["@babel/plugin-transform-parameters@7.27.7", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg=="], + + "@babel/plugin-transform-private-methods": ["@babel/plugin-transform-private-methods@7.28.6", "", { "dependencies": { "@babel/helper-create-class-features-plugin": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg=="], + + "@babel/plugin-transform-private-property-in-object": ["@babel/plugin-transform-private-property-in-object@7.28.6", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-create-class-features-plugin": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA=="], + + "@babel/plugin-transform-property-literals": ["@babel/plugin-transform-property-literals@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ=="], + + "@babel/plugin-transform-react-jsx-self": ["@babel/plugin-transform-react-jsx-self@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw=="], + + "@babel/plugin-transform-react-jsx-source": ["@babel/plugin-transform-react-jsx-source@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw=="], + + "@babel/plugin-transform-regenerator": ["@babel/plugin-transform-regenerator@7.29.0", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog=="], + + "@babel/plugin-transform-regexp-modifiers": ["@babel/plugin-transform-regexp-modifiers@7.28.6", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg=="], + + "@babel/plugin-transform-reserved-words": ["@babel/plugin-transform-reserved-words@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw=="], + + "@babel/plugin-transform-shorthand-properties": ["@babel/plugin-transform-shorthand-properties@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ=="], + + "@babel/plugin-transform-spread": ["@babel/plugin-transform-spread@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA=="], + + "@babel/plugin-transform-sticky-regex": ["@babel/plugin-transform-sticky-regex@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g=="], + + "@babel/plugin-transform-template-literals": ["@babel/plugin-transform-template-literals@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg=="], + + "@babel/plugin-transform-typeof-symbol": ["@babel/plugin-transform-typeof-symbol@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw=="], + + "@babel/plugin-transform-unicode-escapes": ["@babel/plugin-transform-unicode-escapes@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg=="], + + "@babel/plugin-transform-unicode-property-regex": ["@babel/plugin-transform-unicode-property-regex@7.28.6", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A=="], + + "@babel/plugin-transform-unicode-regex": ["@babel/plugin-transform-unicode-regex@7.27.1", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw=="], + + "@babel/plugin-transform-unicode-sets-regex": ["@babel/plugin-transform-unicode-sets-regex@7.28.6", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q=="], + + "@babel/preset-env": ["@babel/preset-env@7.29.0", "", { "dependencies": { "@babel/compat-data": "^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/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-import-assertions": "^7.28.6", "@babel/plugin-syntax-import-attributes": "^7.28.6", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.27.1", "@babel/plugin-transform-async-generator-functions": "^7.29.0", "@babel/plugin-transform-async-to-generator": "^7.28.6", "@babel/plugin-transform-block-scoped-functions": "^7.27.1", "@babel/plugin-transform-block-scoping": "^7.28.6", "@babel/plugin-transform-class-properties": "^7.28.6", "@babel/plugin-transform-class-static-block": "^7.28.6", "@babel/plugin-transform-classes": "^7.28.6", "@babel/plugin-transform-computed-properties": "^7.28.6", "@babel/plugin-transform-destructuring": "^7.28.5", "@babel/plugin-transform-dotall-regex": "^7.28.6", "@babel/plugin-transform-duplicate-keys": "^7.27.1", "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", "@babel/plugin-transform-dynamic-import": "^7.27.1", "@babel/plugin-transform-explicit-resource-management": "^7.28.6", "@babel/plugin-transform-exponentiation-operator": "^7.28.6", "@babel/plugin-transform-export-namespace-from": "^7.27.1", "@babel/plugin-transform-for-of": "^7.27.1", "@babel/plugin-transform-function-name": "^7.27.1", "@babel/plugin-transform-json-strings": "^7.28.6", "@babel/plugin-transform-literals": "^7.27.1", "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", "@babel/plugin-transform-member-expression-literals": "^7.27.1", "@babel/plugin-transform-modules-amd": "^7.27.1", "@babel/plugin-transform-modules-commonjs": "^7.28.6", "@babel/plugin-transform-modules-systemjs": "^7.29.0", "@babel/plugin-transform-modules-umd": "^7.27.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", "@babel/plugin-transform-new-target": "^7.27.1", "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", "@babel/plugin-transform-numeric-separator": "^7.28.6", "@babel/plugin-transform-object-rest-spread": "^7.28.6", "@babel/plugin-transform-object-super": "^7.27.1", "@babel/plugin-transform-optional-catch-binding": "^7.28.6", "@babel/plugin-transform-optional-chaining": "^7.28.6", "@babel/plugin-transform-parameters": "^7.27.7", "@babel/plugin-transform-private-methods": "^7.28.6", "@babel/plugin-transform-private-property-in-object": "^7.28.6", "@babel/plugin-transform-property-literals": "^7.27.1", "@babel/plugin-transform-regenerator": "^7.29.0", "@babel/plugin-transform-regexp-modifiers": "^7.28.6", "@babel/plugin-transform-reserved-words": "^7.27.1", "@babel/plugin-transform-shorthand-properties": "^7.27.1", "@babel/plugin-transform-spread": "^7.28.6", "@babel/plugin-transform-sticky-regex": "^7.27.1", "@babel/plugin-transform-template-literals": "^7.27.1", "@babel/plugin-transform-typeof-symbol": "^7.27.1", "@babel/plugin-transform-unicode-escapes": "^7.27.1", "@babel/plugin-transform-unicode-property-regex": "^7.28.6", "@babel/plugin-transform-unicode-regex": "^7.27.1", "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.15", "babel-plugin-polyfill-corejs3": "^0.14.0", "babel-plugin-polyfill-regenerator": "^0.6.6", "core-js-compat": "^3.48.0", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w=="], + + "@babel/preset-modules": ["@babel/preset-modules@0.1.6-no-external-plugins", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", "esutils": "^2.0.2" }, "peerDependencies": { "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA=="], "@babel/runtime": ["@babel/runtime@7.28.4", "", {}, "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ=="], - "@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="], + "@babel/template": ["@babel/template@7.28.6", "", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/parser": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ=="], - "@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], + "@babel/traverse": ["@babel/traverse@7.29.0", "", { "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/types": "^7.29.0", "debug": "^4.3.1" } }, "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA=="], - "@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + "@babel/types": ["@babel/types@7.29.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A=="], "@base-ui/react": ["@base-ui/react@1.1.0", "", { "dependencies": { "@babel/runtime": "^7.28.4", "@base-ui/utils": "0.2.4", "@floating-ui/react-dom": "^2.1.6", "@floating-ui/utils": "^0.2.10", "reselect": "^5.1.1", "tabbable": "^6.4.0", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "@types/react": "^17 || ^18 || ^19", "react": "^17 || ^18 || ^19", "react-dom": "^17 || ^18 || ^19" }, "optionalPeers": ["@types/react"] }, "sha512-ikcJRNj1mOiF2HZ5jQHrXoVoHcNHdBU5ejJljcBl+VTLoYXR6FidjTN86GjO6hyshi6TZFuNvv0dEOgaOFv6Lw=="], "@base-ui/utils": ["@base-ui/utils@0.2.4", "", { "dependencies": { "@babel/runtime": "^7.28.4", "@floating-ui/utils": "^0.2.10", "reselect": "^5.1.1", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "@types/react": "^17 || ^18 || ^19", "react": "^17 || ^18 || ^19", "react-dom": "^17 || ^18 || ^19" }, "optionalPeers": ["@types/react"] }, "sha512-smZwpMhjO29v+jrZusBSc5T+IJ3vBb9cjIiBjtKcvWmRj9Z4DWGVR3efr1eHR56/bqY5a4qyY9ElkOY5ljo3ng=="], + "@biomejs/biome": ["@biomejs/biome@2.3.14", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.3.14", "@biomejs/cli-darwin-x64": "2.3.14", "@biomejs/cli-linux-arm64": "2.3.14", "@biomejs/cli-linux-arm64-musl": "2.3.14", "@biomejs/cli-linux-x64": "2.3.14", "@biomejs/cli-linux-x64-musl": "2.3.14", "@biomejs/cli-win32-arm64": "2.3.14", "@biomejs/cli-win32-x64": "2.3.14" }, "bin": { "biome": "bin/biome" } }, "sha512-QMT6QviX0WqXJCaiqVMiBUCr5WRQ1iFSjvOLoTk6auKukJMvnMzWucXpwZB0e8F00/1/BsS9DzcKgWH+CLqVuA=="], + + "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.3.14", "", { "os": "darwin", "cpu": "arm64" }, "sha512-UJGPpvWJMkLxSRtpCAKfKh41Q4JJXisvxZL8ChN1eNW3m/WlPFJ6EFDCE7YfUb4XS8ZFi3C1dFpxUJ0Ety5n+A=="], + + "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.3.14", "", { "os": "darwin", "cpu": "x64" }, "sha512-PNkLNQG6RLo8lG7QoWe/hhnMxJIt1tEimoXpGQjwS/dkdNiKBLPv4RpeQl8o3s1OKI3ZOR5XPiYtmbGGHAOnLA=="], + + "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.3.14", "", { "os": "linux", "cpu": "arm64" }, "sha512-KT67FKfzIw6DNnUNdYlBg+eU24Go3n75GWK6NwU4+yJmDYFe9i/MjiI+U/iEzKvo0g7G7MZqoyrhIYuND2w8QQ=="], + + "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.3.14", "", { "os": "linux", "cpu": "arm64" }, "sha512-LInRbXhYujtL3sH2TMCH/UBwJZsoGwfQjBrMfl84CD4hL/41C/EU5mldqf1yoFpsI0iPWuU83U+nB2TUUypWeg=="], + + "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.3.14", "", { "os": "linux", "cpu": "x64" }, "sha512-ZsZzQsl9U+wxFrGGS4f6UxREUlgHwmEfu1IrXlgNFrNnd5Th6lIJr8KmSzu/+meSa9f4rzFrbEW9LBBA6ScoMA=="], + + "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.3.14", "", { "os": "linux", "cpu": "x64" }, "sha512-KQU7EkbBBuHPW3/rAcoiVmhlPtDSGOGRPv9js7qJVpYTzjQmVR+C9Rfcz+ti8YCH+zT1J52tuBybtP4IodjxZQ=="], + + "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.3.14", "", { "os": "win32", "cpu": "arm64" }, "sha512-+IKYkj/pUBbnRf1G1+RlyA3LWiDgra1xpS7H2g4BuOzzRbRB+hmlw0yFsLprHhbbt7jUzbzAbAjK/Pn0FDnh1A=="], + + "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.3.14", "", { "os": "win32", "cpu": "x64" }, "sha512-oizCjdyQ3WJEswpb3Chdngeat56rIdSYK12JI3iI11Mt5T5EXcZ7WLuowzEaFPNJ3zmOQFliMN8QY1Pi+qsfdQ=="], + "@clack/core": ["@clack/core@0.3.5", "", { "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ=="], "@clack/prompts": ["@clack/prompts@0.8.2", "", { "dependencies": { "@clack/core": "0.3.5", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-6b9Ab2UiZwJYA9iMyboYyW9yJvAO9V753ZhS+DHKEjZRKAxPPOb7MXXu84lsPFG+vZt6FRFniZ8rXi+zCIw4yQ=="], @@ -171,69 +330,67 @@ "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], - "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw=="], - "@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], + "@esbuild/android-arm": ["@esbuild/android-arm@0.27.2", "", { "os": "android", "cpu": "arm" }, "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA=="], - "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="], + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.2", "", { "os": "android", "cpu": "arm64" }, "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA=="], - "@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="], + "@esbuild/android-x64": ["@esbuild/android-x64@0.27.2", "", { "os": "android", "cpu": "x64" }, "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A=="], - "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="], + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg=="], - "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="], + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA=="], - "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="], + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g=="], - "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="], + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA=="], - "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="], + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.2", "", { "os": "linux", "cpu": "arm" }, "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw=="], - "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="], + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw=="], - "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="], + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.2", "", { "os": "linux", "cpu": "ia32" }, "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w=="], - "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="], + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.2", "", { "os": "linux", "cpu": "none" }, "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg=="], - "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="], + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.2", "", { "os": "linux", "cpu": "none" }, "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw=="], - "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="], + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ=="], - "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="], + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.2", "", { "os": "linux", "cpu": "none" }, "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA=="], - "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="], + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w=="], - "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="], + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.2", "", { "os": "linux", "cpu": "x64" }, "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA=="], - "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg=="], + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.2", "", { "os": "none", "cpu": "arm64" }, "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw=="], - "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="], + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.2", "", { "os": "none", "cpu": "x64" }, "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA=="], - "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.12", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A=="], + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA=="], - "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="], + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg=="], - "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg=="], + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.2", "", { "os": "none", "cpu": "arm64" }, "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag=="], - "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="], + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg=="], - "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="], + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg=="], - "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="], + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ=="], - "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.2", "", { "os": "win32", "cpu": "x64" }, "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ=="], - "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.0", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g=="], + "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ=="], "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="], - "@eslint/compat": ["@eslint/compat@2.0.1", "", { "dependencies": { "@eslint/core": "^1.0.1" }, "peerDependencies": { "eslint": "^8.40 || 9" }, "optionalPeers": ["eslint"] }, "sha512-yl/JsgplclzuvGFNqwNYV4XNPhP3l62ZOP9w/47atNAdmDtIFCx6X7CSk/SlWUuBGkT4Et/5+UD+WyvX2iiIWA=="], - "@eslint/config-array": ["@eslint/config-array@0.21.1", "", { "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA=="], "@eslint/config-helpers": ["@eslint/config-helpers@0.4.2", "", { "dependencies": { "@eslint/core": "^0.17.0" } }, "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw=="], - "@eslint/core": ["@eslint/core@1.0.1", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-r18fEAj9uCk+VjzGt2thsbOmychS+4kxI14spVNibUO2vqKX7obOG+ymZljAwuPZl+S3clPGwCwTDtrdqTiY6Q=="], + "@eslint/core": ["@eslint/core@0.17.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ=="], "@eslint/eslintrc": ["@eslint/eslintrc@3.3.3", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ=="], @@ -253,6 +410,10 @@ "@fontsource/cascadia-code": ["@fontsource/cascadia-code@5.2.3", "", {}, "sha512-jnKfdZ+0UL25XUqYV7iq9gDlaUMWXxZNA7KnYzO4v8De6jBJmTkLHxDXs+1iZwl/8w7eKlDrTJWcyalOHdE2eg=="], + "@fontsource/geist": ["@fontsource/geist@5.2.8", "", {}, "sha512-pI54klK6vz8fVpAVyV+iODGLEzw73cs1XJqV9PIXgW8MYMmBcwK6lKKaWqJrNHwEx8ppz9cuhussb6arXQ/PVQ=="], + + "@fontsource/geist-mono": ["@fontsource/geist-mono@5.2.7", "", {}, "sha512-xVPVFISJg/K0VVd+aQN0Y7X/sw9hUcJPyDWFJ5GpyU3bHELhoRsJkPSRSHXW32mOi0xZCUQDOaPj1sqIFJ1FGg=="], + "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], "@humanfs/node": ["@humanfs/node@0.16.7", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.4.0" } }, "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ=="], @@ -261,119 +422,131 @@ "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="], - "@img/colour": ["@img/colour@1.0.0", "", {}, "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw=="], + "@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="], - "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="], + "@isaacs/brace-expansion": ["@isaacs/brace-expansion@5.0.0", "", { "dependencies": { "@isaacs/balanced-match": "^4.0.1" } }, "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA=="], - "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="], + "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], - "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="], + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], - "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="], + "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], - "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="], + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], - "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="], + "@jridgewell/source-map": ["@jridgewell/source-map@0.3.11", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" } }, "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA=="], - "@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="], + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], - "@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="], + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], - "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="], + "@lezer/common": ["@lezer/common@1.4.0", "", {}, "sha512-DVeMRoGrgn/k45oQNu189BoW4SZwgZFzJ1+1TV5j2NJ/KFC83oa/enRqZSGshyeMk5cPWMhsKs9nx+8o0unwGg=="], - "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="], + "@lezer/css": ["@lezer/css@1.3.0", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.0" } }, "sha512-pBL7hup88KbI7hXnZV3PQsn43DHy6TWyzuyk2AO9UyoXcDltvIdqWKE1dLL/45JVZ+YZkHe1WVHqO6wugZZWcw=="], - "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="], + "@lezer/highlight": ["@lezer/highlight@1.2.3", "", { "dependencies": { "@lezer/common": "^1.3.0" } }, "sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g=="], - "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="], + "@lezer/html": ["@lezer/html@1.3.12", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-RJ7eRWdaJe3bsiiLLHjCFT1JMk8m1YP9kaUbvu2rMLEoOnke9mcTVDyfOslsln0LtujdWespjJ39w6zo+RsQYw=="], - "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="], + "@lezer/javascript": ["@lezer/javascript@1.5.4", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.1.3", "@lezer/lr": "^1.3.0" } }, "sha512-vvYx3MhWqeZtGPwDStM2dwgljd5smolYD2lR2UyFcHfxbBQebqx8yjmFmxtJ/E6nN6u1D9srOiVWm3Rb4tmcUA=="], - "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="], + "@lezer/json": ["@lezer/json@1.0.3", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ=="], - "@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="], + "@lezer/lr": ["@lezer/lr@1.4.5", "", { "dependencies": { "@lezer/common": "^1.0.0" } }, "sha512-/YTRKP5yPPSo1xImYQk7AZZMAgap0kegzqCSYHjAL9x1AZ0ZQW+IpcEzMKagCsbTsLnVeWkxYrCNeXG8xEPrjg=="], - "@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="], + "@lezer/yaml": ["@lezer/yaml@1.0.3", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.4.0" } }, "sha512-GuBLekbw9jDBDhGur82nuwkxKQ+a3W5H0GfaAthDXcAu+XdpS43VlnxA9E9hllkpSP5ellRDKjLLj7Lu9Wr6xA=="], - "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="], + "@marijn/find-cluster-break": ["@marijn/find-cluster-break@1.0.2", "", {}, "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g=="], - "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="], + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.1", "", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" } }, "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A=="], - "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="], + "@oozcitak/dom": ["@oozcitak/dom@2.0.2", "", { "dependencies": { "@oozcitak/infra": "^2.0.2", "@oozcitak/url": "^3.0.0", "@oozcitak/util": "^10.0.0" } }, "sha512-GjpKhkSYC3Mj4+lfwEyI1dqnsKTgwGy48ytZEhm4A/xnH/8z9M3ZVXKr/YGQi3uCLs1AEBS+x5T2JPiueEDW8w=="], - "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="], + "@oozcitak/infra": ["@oozcitak/infra@2.0.2", "", { "dependencies": { "@oozcitak/util": "^10.0.0" } }, "sha512-2g+E7hoE2dgCz/APPOEK5s3rMhJvNxSMBrP+U+j1OWsIbtSpWxxlUjq1lU8RIsFJNYv7NMlnVsCuHcUzJW+8vA=="], - "@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="], + "@oozcitak/url": ["@oozcitak/url@3.0.0", "", { "dependencies": { "@oozcitak/infra": "^2.0.2", "@oozcitak/util": "^10.0.0" } }, "sha512-ZKfET8Ak1wsLAiLWNfFkZc/BraDccuTJKR6svTYc7sVjbR+Iu0vtXdiDMY4o6jaFl5TW2TlS7jbLl4VovtAJWQ=="], - "@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="], + "@oozcitak/util": ["@oozcitak/util@10.0.0", "", {}, "sha512-hAX0pT/73190NLqBPPWSdBVGtbY6VOhWYK3qqHqtXQ1gK7kS2yz4+ivsN07hpJ6I3aeMtKP6J6npsEKOAzuTLA=="], - "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="], + "@oxc-minify/binding-android-arm-eabi": ["@oxc-minify/binding-android-arm-eabi@0.110.0", "", { "os": "android", "cpu": "arm" }, "sha512-43fMTO8/5bMlqfOiNSZNKUzIqeLIYuB9Hr1Ohyf58B1wU11S2dPGibTXOGNaWsfgHy99eeZ1bSgeIHy/fEYqbw=="], - "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="], + "@oxc-minify/binding-android-arm64": ["@oxc-minify/binding-android-arm64@0.110.0", "", { "os": "android", "cpu": "arm64" }, "sha512-5oQrnn9eK/ccOp80PTrNj0Vq893NPNNRryjGpOIVsYNgWFuoGCfpnKg68oEFcN8bArizYAqw4nvgHljEnar69w=="], - "@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="], + "@oxc-minify/binding-darwin-arm64": ["@oxc-minify/binding-darwin-arm64@0.110.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-dqBDgTG9tF2z2lrZp9E8wU+Godz1i8gCGSei2eFKS2hRploBOD5dmOLp1j4IMornkPvSQmbwB3uSjPq7fjx4EA=="], - "@isaacs/brace-expansion": ["@isaacs/brace-expansion@5.0.0", "", { "dependencies": { "@isaacs/balanced-match": "^4.0.1" } }, "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA=="], + "@oxc-minify/binding-darwin-x64": ["@oxc-minify/binding-darwin-x64@0.110.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U0AqabqaooDOpYmeeOye8wClv8PSScELXgOfYqyqgrwH9J9KrpCE1jL8Rlqgz68QbL4mPw3V6sKiiHssI4CLeQ=="], - "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], + "@oxc-minify/binding-freebsd-x64": ["@oxc-minify/binding-freebsd-x64@0.110.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-H0w8o/Wo1072WSdLfhwwrpFpwZnPpjQODlHuRYkTfsSSSJbTxQtjJd4uxk7YJsRv5RQp69y0I7zvdH6f8Xueyw=="], - "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], + "@oxc-minify/binding-linux-arm-gnueabihf": ["@oxc-minify/binding-linux-arm-gnueabihf@0.110.0", "", { "os": "linux", "cpu": "arm" }, "sha512-qd6sW0AvEVYZhbVVMGtmKZw3b1zDYGIW+54Uh42moWRAj6i4Jhk/LGr6r9YNZpOINeuvZfkFuEeDD/jbu7xPUA=="], - "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], + "@oxc-minify/binding-linux-arm-musleabihf": ["@oxc-minify/binding-linux-arm-musleabihf@0.110.0", "", { "os": "linux", "cpu": "arm" }, "sha512-7WXP0aXMrWSn0ScppUBi3jf68ebfBG0eri8kxLmBOVSBj6jw1repzkHMITJMBeLr5d0tT/51qFEptiAk2EP2iA=="], - "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + "@oxc-minify/binding-linux-arm64-gnu": ["@oxc-minify/binding-linux-arm64-gnu@0.110.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-LYfADrq5x1W5gs+u9OIbMbDQNYkAECTXX0ufnAuf3oGmO51rF98kGFR5qJqC/6/csokDyT3wwTpxhE0TkcF/Og=="], - "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + "@oxc-minify/binding-linux-arm64-musl": ["@oxc-minify/binding-linux-arm64-musl@0.110.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-53GjCVY8kvymk9P6qNDh6zyblcehF5QHstq9QgCjv13ONGRnSHjeds0PxIwiihD7h295bxsWs84DN39syLPH4Q=="], - "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], + "@oxc-minify/binding-linux-ppc64-gnu": ["@oxc-minify/binding-linux-ppc64-gnu@0.110.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-li8XcN81dxbJDMBESnTgGhoiAQ+CNIdM0QGscZ4duVPjCry1RpX+5FJySFbGqG3pk4s9ZzlL/vtQtbRzZIZOzg=="], - "@lezer/common": ["@lezer/common@1.4.0", "", {}, "sha512-DVeMRoGrgn/k45oQNu189BoW4SZwgZFzJ1+1TV5j2NJ/KFC83oa/enRqZSGshyeMk5cPWMhsKs9nx+8o0unwGg=="], + "@oxc-minify/binding-linux-riscv64-gnu": ["@oxc-minify/binding-linux-riscv64-gnu@0.110.0", "", { "os": "linux", "cpu": "none" }, "sha512-SweKfsnLKShu6UFV8mwuj1d1wmlNoL/FlAxPUzwjEBgwiT2HQkY24KnjBH+TIA+//1O83kzmWKvvs4OuEhdIEQ=="], - "@lezer/css": ["@lezer/css@1.3.0", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.0" } }, "sha512-pBL7hup88KbI7hXnZV3PQsn43DHy6TWyzuyk2AO9UyoXcDltvIdqWKE1dLL/45JVZ+YZkHe1WVHqO6wugZZWcw=="], + "@oxc-minify/binding-linux-riscv64-musl": ["@oxc-minify/binding-linux-riscv64-musl@0.110.0", "", { "os": "linux", "cpu": "none" }, "sha512-oH8G4aFMP8XyTsEpdANC5PQyHgSeGlopHZuW1rpyYcaErg5YaK0vXjQ4EM5HVvPm+feBV24JjxgakTnZoF3aOQ=="], - "@lezer/highlight": ["@lezer/highlight@1.2.3", "", { "dependencies": { "@lezer/common": "^1.3.0" } }, "sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g=="], + "@oxc-minify/binding-linux-s390x-gnu": ["@oxc-minify/binding-linux-s390x-gnu@0.110.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-W9na+Vza7XVUlpf8wMt4QBfH35KeTENEmnpPUq3NSlbQHz8lSlSvhAafvo43NcKvHAXV3ckD/mUf2VkqSdbklg=="], - "@lezer/html": ["@lezer/html@1.3.12", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-RJ7eRWdaJe3bsiiLLHjCFT1JMk8m1YP9kaUbvu2rMLEoOnke9mcTVDyfOslsln0LtujdWespjJ39w6zo+RsQYw=="], + "@oxc-minify/binding-linux-x64-gnu": ["@oxc-minify/binding-linux-x64-gnu@0.110.0", "", { "os": "linux", "cpu": "x64" }, "sha512-XJdA4mmmXOjJxSRgNJXsDP7Xe8h3gQhmb56hUcCrvq5d+h5UcEi2pR8rxsdIrS8QmkLuBA3eHkGK8E27D7DTgQ=="], - "@lezer/javascript": ["@lezer/javascript@1.5.4", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.1.3", "@lezer/lr": "^1.3.0" } }, "sha512-vvYx3MhWqeZtGPwDStM2dwgljd5smolYD2lR2UyFcHfxbBQebqx8yjmFmxtJ/E6nN6u1D9srOiVWm3Rb4tmcUA=="], + "@oxc-minify/binding-linux-x64-musl": ["@oxc-minify/binding-linux-x64-musl@0.110.0", "", { "os": "linux", "cpu": "x64" }, "sha512-QqzvALuOTtSckI8x467R4GNArzYDb/yEh6aNzLoeaY1O7vfT7SPDwlOEcchaTznutpeS9Dy8gUS/AfqtUHaufw=="], - "@lezer/json": ["@lezer/json@1.0.3", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ=="], + "@oxc-minify/binding-openharmony-arm64": ["@oxc-minify/binding-openharmony-arm64@0.110.0", "", { "os": "none", "cpu": "arm64" }, "sha512-gAMssLs2Q3+uhLZxanh1DF+27Kaug3cf4PXb9AB7XK81DR+LVcKySXaoGYoOs20Co0fFSphd6rRzKge2qDK3dA=="], - "@lezer/lr": ["@lezer/lr@1.4.5", "", { "dependencies": { "@lezer/common": "^1.0.0" } }, "sha512-/YTRKP5yPPSo1xImYQk7AZZMAgap0kegzqCSYHjAL9x1AZ0ZQW+IpcEzMKagCsbTsLnVeWkxYrCNeXG8xEPrjg=="], + "@oxc-minify/binding-wasm32-wasi": ["@oxc-minify/binding-wasm32-wasi@0.110.0", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.1.1" }, "cpu": "none" }, "sha512-7Wqi5Zjl022bs2zXq+ICdalDPeDuCH/Nhbi8q2isLihAonMVIT0YH2hqqnNEylRNGYck+FJ6gRZwMpGCgrNxPg=="], - "@lezer/yaml": ["@lezer/yaml@1.0.3", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.4.0" } }, "sha512-GuBLekbw9jDBDhGur82nuwkxKQ+a3W5H0GfaAthDXcAu+XdpS43VlnxA9E9hllkpSP5ellRDKjLLj7Lu9Wr6xA=="], + "@oxc-minify/binding-win32-arm64-msvc": ["@oxc-minify/binding-win32-arm64-msvc@0.110.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-ZPx+0Tj4dqn41ecyoGotlvekQKy6JxJCixn9Rw7h/dafZ3eDuBcEVh3c2ZoldXXsyMIt5ywI8IWzFZsjNedd5Q=="], - "@marijn/find-cluster-break": ["@marijn/find-cluster-break@1.0.2", "", {}, "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g=="], + "@oxc-minify/binding-win32-ia32-msvc": ["@oxc-minify/binding-win32-ia32-msvc@0.110.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-H0Oyd3RWBfpEyvJIrFK94RYiY7KKSQl11Ym7LMDwLEagelIAfRCkt1amHZhFa/S3ZRoaOJFXzEw4YKeSsjVFsg=="], - "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.12", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.10.0" } }, "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ=="], + "@oxc-minify/binding-win32-x64-msvc": ["@oxc-minify/binding-win32-x64-msvc@0.110.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Hr3nK90+qXKJ2kepXwFIcNfQQIOBecB4FFCyaMMypthoEEhVP08heRynj4eSXZ8NL9hLjs3fQzH8PJXfpznRnQ=="], - "@next/env": ["@next/env@16.1.6", "", {}, "sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ=="], + "@oxc-transform/binding-android-arm-eabi": ["@oxc-transform/binding-android-arm-eabi@0.110.0", "", { "os": "android", "cpu": "arm" }, "sha512-sE9dxvqqAax1YYJ3t7j+h5ZSI9jl6dYuDfngl6ieZUrIy5P89/8JKVgAzgp8o3wQSo7ndpJvYsi1K4ZqrmbP7w=="], - "@next/eslint-plugin-next": ["@next/eslint-plugin-next@16.1.6", "", { "dependencies": { "fast-glob": "3.3.1" } }, "sha512-/Qq3PTagA6+nYVfryAtQ7/9FEr/6YVyvOtl6rZnGsbReGLf0jZU6gkpr1FuChAQpvV46a78p4cmHOVP8mbfSMQ=="], + "@oxc-transform/binding-android-arm64": ["@oxc-transform/binding-android-arm64@0.110.0", "", { "os": "android", "cpu": "arm64" }, "sha512-nqtbP4aMCtsCZ6qpHlHaQoWVHSBtlKzwaAgwEOvR+9DWqHjk31BHvpGiDXlMeed6CVNpl3lCbWgygb3RcSjcfw=="], - "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.1.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw=="], + "@oxc-transform/binding-darwin-arm64": ["@oxc-transform/binding-darwin-arm64@0.110.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-oeSeHnL4Z4cMXtc8V0/rwoVn0dgwlS9q0j6LcHn9dIhtFEdp3W0iSBF8YmMQA+E7sILeLDjsHmHE4Kp0sOScXw=="], - "@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.1.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-BLFPYPDO+MNJsiDWbeVzqvYd4NyuRrEYVB5k2N3JfWncuHAy2IVwMAOlVQDFjj+krkWzhY2apvmekMkfQR0CUQ=="], + "@oxc-transform/binding-darwin-x64": ["@oxc-transform/binding-darwin-x64@0.110.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-nL9K5x7OuZydobAGPylsEW9d4APs2qEkIBLMgQPA+kY8dtVD3IR87QsTbs4l4DBQYyun/+ay6qVCDlxqxdX2Jg=="], - "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.1.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-OJYkCd5pj/QloBvoEcJ2XiMnlJkRv9idWA/j0ugSuA34gMT6f5b7vOiCQHVRpvStoZUknhl6/UxOXL4OwtdaBw=="], + "@oxc-transform/binding-freebsd-x64": ["@oxc-transform/binding-freebsd-x64@0.110.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-GS29zXXirDQhZEUq8xKJ1azAWMuUy3Ih3W5Bc5ddk12LRthO5wRLFcKIyeHpAXCoXymQ+LmxbMtbPf84GPxouw=="], - "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.1.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ=="], + "@oxc-transform/binding-linux-arm-gnueabihf": ["@oxc-transform/binding-linux-arm-gnueabihf@0.110.0", "", { "os": "linux", "cpu": "arm" }, "sha512-glzDHak8ISyZJemCUi7RCvzNSl+MQ1ly9RceT2qRufhUsvNZ4C/2QLJ1HJwd2N6E88bO4laYn+RofdRzNnGGEA=="], - "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.1.6", "", { "os": "linux", "cpu": "x64" }, "sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ=="], + "@oxc-transform/binding-linux-arm-musleabihf": ["@oxc-transform/binding-linux-arm-musleabihf@0.110.0", "", { "os": "linux", "cpu": "arm" }, "sha512-8JThvgJ2FRoTVfbp7e4wqeZqCZbtudM06SfZmNzND9kPNu/LVYygIR+72RWs+xm4bWkuYHg/islo/boNPtMT5Q=="], - "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.1.6", "", { "os": "linux", "cpu": "x64" }, "sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg=="], + "@oxc-transform/binding-linux-arm64-gnu": ["@oxc-transform/binding-linux-arm64-gnu@0.110.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-IRh21Ub/g4bkHoErZ0AUWMlWfoZaS0A6EaOVtbcY70RSYIMlrsbjiFwJCzM+b/1DD1rXbH5tsGcH7GweTbfRqg=="], - "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.1.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-gQmm8izDTPgs+DCWH22kcDmuUp7NyiJgEl18bcr8irXA5N2m2O+JQIr6f3ct42GOs9c0h8QF3L5SzIxcYAAXXw=="], + "@oxc-transform/binding-linux-arm64-musl": ["@oxc-transform/binding-linux-arm64-musl@0.110.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-e5JN94/oy+wevk76q+LMr+2klTTcO60uXa+Wkq558Ms7mdF2TvkKFI++d/JeiuIwJLTi/BxQ4qdT5FWcsHM/ug=="], - "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.1.6", "", { "os": "win32", "cpu": "x64" }, "sha512-NRfO39AIrzBnixKbjuo2YiYhB6o9d8v/ymU9m/Xk8cyVk+k7XylniXkHwjs4s70wedVffc6bQNbufk5v0xEm0A=="], + "@oxc-transform/binding-linux-ppc64-gnu": ["@oxc-transform/binding-linux-ppc64-gnu@0.110.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-Y3/Tnnz1GvDpmv8FXBIKtdZPsdZklOEPdrL6NHrN5i2u54BOkybFaDSptgWF53wOrJlTrcmAVSE6fRKK9XCM2Q=="], - "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], + "@oxc-transform/binding-linux-riscv64-gnu": ["@oxc-transform/binding-linux-riscv64-gnu@0.110.0", "", { "os": "linux", "cpu": "none" }, "sha512-Y0E35iA9/v9jlkNcP6tMJ+ZFOS0rLsWDqG6rU9z+X2R3fBFJBO9UARIK6ngx8upxk81y1TFR2CmBFhupfYdH6Q=="], - "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], + "@oxc-transform/binding-linux-riscv64-musl": ["@oxc-transform/binding-linux-riscv64-musl@0.110.0", "", { "os": "linux", "cpu": "none" }, "sha512-JOUSYFfHjBUs7xp2FHmZHb8eTYD/oEu0NklS6JgUauqnoXZHiTLPLVW2o2uVCqldnabYHcomuwI2iqVFYJNhTw=="], - "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + "@oxc-transform/binding-linux-s390x-gnu": ["@oxc-transform/binding-linux-s390x-gnu@0.110.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-7blgoXF9D3Ngzb7eun23pNrHJpoV/TtE6LObwlZ3Nmb4oZ6Z+yMvBVaoW68NarbmvNGfZ95zrOjgm6cVETLYBA=="], - "@nolyfill/is-core-module": ["@nolyfill/is-core-module@1.0.39", "", {}, "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA=="], + "@oxc-transform/binding-linux-x64-gnu": ["@oxc-transform/binding-linux-x64-gnu@0.110.0", "", { "os": "linux", "cpu": "x64" }, "sha512-YQ2joGWCVDZVEU2cD/r/w49hVjDm/Qu1BvC/7zs8LvprzdLS/HyMXGF2oA0puw0b+AqgYaz3bhwKB2xexHyITQ=="], + + "@oxc-transform/binding-linux-x64-musl": ["@oxc-transform/binding-linux-x64-musl@0.110.0", "", { "os": "linux", "cpu": "x64" }, "sha512-fkjr5qE632ULmNgvFXWDR/8668WxERz3tU7TQFp6JebPBneColitjSkdx6VKNVXEoMmQnOvBIGeP5tUNT384oA=="], + + "@oxc-transform/binding-openharmony-arm64": ["@oxc-transform/binding-openharmony-arm64@0.110.0", "", { "os": "none", "cpu": "arm64" }, "sha512-HWH9Zj+lMrdSTqFRCZsvDWMz7OnMjbdGsm3xURXWfRZpuaz0bVvyuZNDQXc4FyyhRDsemICaJbU1bgeIpUJDGw=="], + + "@oxc-transform/binding-wasm32-wasi": ["@oxc-transform/binding-wasm32-wasi@0.110.0", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.1.1" }, "cpu": "none" }, "sha512-ejdxHmYfIcHDPhZUe3WklViLt9mDEJE5BzcW7+R1vc5i/5JFA8D0l7NUSsHBJ7FB8Bu9gF+5iMDm6cXGAgaghw=="], + + "@oxc-transform/binding-win32-arm64-msvc": ["@oxc-transform/binding-win32-arm64-msvc@0.110.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-9VTwpXCZs7xkV+mKhQ62dVk7KLnLXtEUxNS2T4nLz3iMl1IJbA4h5oltK0JoobtiUAnbkV53QmMVGW8+Nh3bDQ=="], + + "@oxc-transform/binding-win32-ia32-msvc": ["@oxc-transform/binding-win32-ia32-msvc@0.110.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-5y0fzuNON7/F2hh2P94vANFaRPJ/3DI1hVl5rseCT8VUVqOGIjWaza0YS/D1g6t1WwycW2LWDMi2raOKoWU5GQ=="], + + "@oxc-transform/binding-win32-x64-msvc": ["@oxc-transform/binding-win32-x64-msvc@0.110.0", "", { "os": "win32", "cpu": "x64" }, "sha512-QROrowwlrApI1fEScMknGWKM6GTM/Z2xwMnDqvSaEmzNazBsDUlE08Jasw610hFEsYAVU2K5sp/YaCa9ORdP4A=="], "@pivanov/utils": ["@pivanov/utils@0.0.2", "", { "peerDependencies": { "react": ">=18", "react-dom": ">=18" } }, "sha512-q9CN0bFWxWgMY5hVVYyBgez1jGiLBa6I+LkG37ycylPhFvEGOOeaADGtUSu46CaZasPnlY8fCdVJZmrgKb1EPA=="], @@ -417,13 +590,71 @@ "@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ=="], - "@react-types/shared": ["@react-types/shared@3.32.1", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-famxyD5emrGGpFuUlgOP6fVW2h/ZaF405G5KDi3zPHzyjAWys/8W6NAVJtNbkCkhedmvL0xOhvt8feGXyXaw5w=="], + "@react-types/shared": ["@react-types/shared@3.33.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-xuUpP6MyuPmJtzNOqF5pzFUIHH2YogyOQfUQHag54PRmWB7AbjuGWBUv0l1UDmz6+AbzAYGmDVAzcRDOu2PFpw=="], "@reduxjs/toolkit": ["@reduxjs/toolkit@2.11.2", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "@standard-schema/utils": "^0.3.0", "immer": "^11.0.0", "redux": "^5.0.1", "redux-thunk": "^3.1.0", "reselect": "^5.1.0" }, "peerDependencies": { "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" }, "optionalPeers": ["react", "react-redux"] }, "sha512-Kd6kAHTA6/nUpp8mySPqj3en3dm0tdMIgbttnQ1xFMVpufoj+ADi8pXLBsd4xzTRHQa7t/Jv8W5UnCuW4kuWMQ=="], + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.2", "", {}, "sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw=="], + + "@rollup/plugin-babel": ["@rollup/plugin-babel@5.3.1", "", { "dependencies": { "@babel/helper-module-imports": "^7.10.4", "@rollup/pluginutils": "^3.1.0" }, "peerDependencies": { "@babel/core": "^7.0.0", "@types/babel__core": "^7.1.9", "rollup": "^1.20.0||^2.0.0" }, "optionalPeers": ["@types/babel__core"] }, "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q=="], + + "@rollup/plugin-node-resolve": ["@rollup/plugin-node-resolve@15.3.1", "", { "dependencies": { "@rollup/pluginutils": "^5.0.1", "@types/resolve": "1.20.2", "deepmerge": "^4.2.2", "is-module": "^1.0.0", "resolve": "^1.22.1" }, "peerDependencies": { "rollup": "^2.78.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA=="], + + "@rollup/plugin-replace": ["@rollup/plugin-replace@2.4.2", "", { "dependencies": { "@rollup/pluginutils": "^3.1.0", "magic-string": "^0.25.7" }, "peerDependencies": { "rollup": "^1.20.0 || ^2.0.0" } }, "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg=="], + + "@rollup/plugin-terser": ["@rollup/plugin-terser@0.4.4", "", { "dependencies": { "serialize-javascript": "^6.0.1", "smob": "^1.0.0", "terser": "^5.17.4" }, "peerDependencies": { "rollup": "^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A=="], + "@rollup/pluginutils": ["@rollup/pluginutils@5.3.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q=="], - "@rtsao/scc": ["@rtsao/scc@1.1.0", "", {}, "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g=="], + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.57.1", "", { "os": "android", "cpu": "arm" }, "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg=="], + + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.57.1", "", { "os": "android", "cpu": "arm64" }, "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w=="], + + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.57.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg=="], + + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.57.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w=="], + + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.57.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug=="], + + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.57.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q=="], + + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.57.1", "", { "os": "linux", "cpu": "arm" }, "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw=="], + + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.57.1", "", { "os": "linux", "cpu": "arm" }, "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw=="], + + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.57.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g=="], + + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.57.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q=="], + + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.57.1", "", { "os": "linux", "cpu": "none" }, "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA=="], + + "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.57.1", "", { "os": "linux", "cpu": "none" }, "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw=="], + + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.57.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w=="], + + "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.57.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw=="], + + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.57.1", "", { "os": "linux", "cpu": "none" }, "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A=="], + + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.57.1", "", { "os": "linux", "cpu": "none" }, "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw=="], + + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.57.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg=="], + + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.57.1", "", { "os": "linux", "cpu": "x64" }, "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg=="], + + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.57.1", "", { "os": "linux", "cpu": "x64" }, "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw=="], + + "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.57.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw=="], + + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.57.1", "", { "os": "none", "cpu": "arm64" }, "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ=="], + + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.57.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ=="], + + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.57.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew=="], + + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.57.1", "", { "os": "win32", "cpu": "x64" }, "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ=="], + + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.57.1", "", { "os": "win32", "cpu": "x64" }, "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA=="], "@sagold/json-pointer": ["@sagold/json-pointer@7.2.0", "", {}, "sha512-RZpwGl1yhNuzQVKOADJx65TrWL7T6HTGs2Rpv7KlbFY0CfbFWNAKsisvC/uGfchknCGJEnoxz9uPAdmgoAE3IA=="], @@ -449,7 +680,7 @@ "@standard-schema/utils": ["@standard-schema/utils@0.3.0", "", {}, "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g=="], - "@swc/helpers": ["@swc/helpers@0.5.15", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="], + "@surma/rollup-plugin-off-main-thread": ["@surma/rollup-plugin-off-main-thread@2.2.3", "", { "dependencies": { "ejs": "^3.1.6", "json5": "^2.2.0", "magic-string": "^0.25.0", "string.prototype.matchall": "^4.0.6" } }, "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ=="], "@tabler/icons": ["@tabler/icons@3.36.1", "", {}, "sha512-f4Jg3Fof/Vru5ioix/UO4GX+sdDsF9wQo47FbtvG+utIYYVQ/QVAC0QYgcBbAjQGfbdOh2CCf0BgiFOF9Ixtjw=="], @@ -483,10 +714,60 @@ "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.1.18", "", { "os": "win32", "cpu": "x64" }, "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q=="], - "@tailwindcss/postcss": ["@tailwindcss/postcss@4.1.18", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.1.18", "@tailwindcss/oxide": "4.1.18", "postcss": "^8.4.41", "tailwindcss": "4.1.18" } }, "sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g=="], + "@tailwindcss/vite": ["@tailwindcss/vite@4.1.18", "", { "dependencies": { "@tailwindcss/node": "4.1.18", "@tailwindcss/oxide": "4.1.18", "tailwindcss": "4.1.18" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7" } }, "sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA=="], + + "@tanstack/devtools-client": ["@tanstack/devtools-client@0.0.5", "", { "dependencies": { "@tanstack/devtools-event-client": "^0.4.0" } }, "sha512-hsNDE3iu4frt9cC2ppn1mNRnLKo2uc1/1hXAyY9z4UYb+o40M2clFAhiFoo4HngjfGJDV3x18KVVIq7W4Un+zA=="], + + "@tanstack/devtools-event-bus": ["@tanstack/devtools-event-bus@0.4.0", "", { "dependencies": { "ws": "^8.18.3" } }, "sha512-1t+/csFuDzi+miDxAOh6Xv7VDE80gJEItkTcAZLjV5MRulbO/W8ocjHLI2Do/p2r2/FBU0eKCRTpdqvXaYoHpQ=="], + + "@tanstack/devtools-event-client": ["@tanstack/devtools-event-client@0.4.0", "", {}, "sha512-RPfGuk2bDZgcu9bAJodvO2lnZeHuz4/71HjZ0bGb/SPg8+lyTA+RLSKQvo7fSmPSi8/vcH3aKQ8EM9ywf1olaw=="], + + "@tanstack/devtools-vite": ["@tanstack/devtools-vite@0.5.0", "", { "dependencies": { "@babel/core": "^7.28.4", "@babel/generator": "^7.28.3", "@babel/parser": "^7.28.4", "@babel/traverse": "^7.28.4", "@babel/types": "^7.28.4", "@tanstack/devtools-client": "0.0.5", "@tanstack/devtools-event-bus": "0.4.0", "chalk": "^5.6.2", "launch-editor": "^2.11.1", "picomatch": "^4.0.3" }, "peerDependencies": { "vite": "^6.0.0 || ^7.0.0" } }, "sha512-Ew+ZdTnmTlVjm4q+/XY/dolx/E1BWMYpiRDyU/MXqHf5epri4MLl5C4UZJaO+ZuUCsKPpsW+ufoM99E2Z4rhug=="], + + "@tanstack/history": ["@tanstack/history@1.154.14", "", {}, "sha512-xyIfof8eHBuub1CkBnbKNKQXeRZC4dClhmzePHVOEel4G7lk/dW+TQ16da7CFdeNLv6u6Owf5VoBQxoo6DFTSA=="], + + "@tanstack/react-router": ["@tanstack/react-router@1.158.0", "", { "dependencies": { "@tanstack/history": "1.154.14", "@tanstack/react-store": "^0.8.0", "@tanstack/router-core": "1.158.0", "isbot": "^5.1.22", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" }, "peerDependencies": { "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0" } }, "sha512-kvTaO6zjq9WWPyo1wwSZx95AjJ9KOvu23cOMgKeDdDQWKF3Z9q3fwhToKMKJoC11T2Vuivz+o/anrxCcOvdRzw=="], + + "@tanstack/react-start": ["@tanstack/react-start@1.158.0", "", { "dependencies": { "@tanstack/react-router": "1.158.0", "@tanstack/react-start-client": "1.158.0", "@tanstack/react-start-server": "1.158.0", "@tanstack/router-utils": "^1.158.0", "@tanstack/start-client-core": "1.158.0", "@tanstack/start-plugin-core": "1.158.0", "@tanstack/start-server-core": "1.158.0", "pathe": "^2.0.3" }, "peerDependencies": { "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0", "vite": ">=7.0.0" } }, "sha512-CwfX2XGDVSwim24LWwM24ZxyposE+5Psj2e2PW4YN+AGgfdwm0+1xk9DEmDQp/Vke2OIdhnIXD/IDe7zTGpzcg=="], + + "@tanstack/react-start-client": ["@tanstack/react-start-client@1.158.0", "", { "dependencies": { "@tanstack/react-router": "1.158.0", "@tanstack/router-core": "1.158.0", "@tanstack/start-client-core": "1.158.0", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" }, "peerDependencies": { "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0" } }, "sha512-oxo9+nFzsdiOkMFPs3HuVXola34FD2/kDfzO8wMu+KSsCwSRRhXpS7DGq/myw6AtjqiiFkNHeZqvvrlcH523Aw=="], + + "@tanstack/react-start-server": ["@tanstack/react-start-server@1.158.0", "", { "dependencies": { "@tanstack/history": "1.154.14", "@tanstack/react-router": "1.158.0", "@tanstack/router-core": "1.158.0", "@tanstack/start-client-core": "1.158.0", "@tanstack/start-server-core": "1.158.0" }, "peerDependencies": { "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0" } }, "sha512-J1v8mckJIf2DHOg38XMq7X7CCOqiyLCPqKQDP8GXJ2WgjpBk6l+lemBmyhF1+76LxYWHfsQYwAg5W3cJ8+QqrQ=="], + + "@tanstack/react-store": ["@tanstack/react-store@0.8.0", "", { "dependencies": { "@tanstack/store": "0.8.0", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "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" } }, "sha512-1vG9beLIuB7q69skxK9r5xiLN3ztzIPfSQSs0GfeqWGO2tGIyInZx0x1COhpx97RKaONSoAb8C3dxacWksm1ow=="], + + "@tanstack/router-core": ["@tanstack/router-core@1.158.0", "", { "dependencies": { "@tanstack/history": "1.154.14", "@tanstack/store": "^0.8.0", "cookie-es": "^2.0.0", "seroval": "^1.4.2", "seroval-plugins": "^1.4.2", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" } }, "sha512-dRMcWY0UB/6OZqSCx/7iUvom0ol18rHSQladygVT8mlth7uxYx3n5BNse8C03efIE8y1Bx+VDOBAKpAZ9BgKog=="], + + "@tanstack/router-generator": ["@tanstack/router-generator@1.158.0", "", { "dependencies": { "@tanstack/router-core": "1.158.0", "@tanstack/router-utils": "1.158.0", "@tanstack/virtual-file-routes": "1.154.7", "prettier": "^3.5.0", "recast": "^0.23.11", "source-map": "^0.7.4", "tsx": "^4.19.2", "zod": "^3.24.2" } }, "sha512-hVkXQSN/fMD9q3Zn3wNa4PV0Y9VNwQB2bLaecA5i4vc43GX75vmgyiKoMr44BJheUssfVoL/po9a/7sv+N6lKA=="], + + "@tanstack/router-plugin": ["@tanstack/router-plugin@1.158.0", "", { "dependencies": { "@babel/core": "^7.28.5", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/plugin-syntax-typescript": "^7.27.1", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5", "@tanstack/router-core": "1.158.0", "@tanstack/router-generator": "1.158.0", "@tanstack/router-utils": "1.158.0", "@tanstack/virtual-file-routes": "1.154.7", "chokidar": "^3.6.0", "unplugin": "^2.1.2", "zod": "^3.24.2" }, "peerDependencies": { "@rsbuild/core": ">=1.0.2", "@tanstack/react-router": "^1.158.0", "vite": ">=5.0.0 || >=6.0.0 || >=7.0.0", "vite-plugin-solid": "^2.11.10", "webpack": ">=5.92.0" }, "optionalPeers": ["@rsbuild/core", "@tanstack/react-router", "vite", "vite-plugin-solid", "webpack"] }, "sha512-FxTOo/icU373jlOu9nlzR0B1vqc47tKZLw3HwOQwCBL4P4EihOBz+L7dcGyKR8bRBL0rCRWvHQTSHNMOr+fGYQ=="], + + "@tanstack/router-utils": ["@tanstack/router-utils@1.158.0", "", { "dependencies": { "@babel/core": "^7.28.5", "@babel/generator": "^7.28.5", "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "ansis": "^4.1.0", "babel-dead-code-elimination": "^1.0.12", "diff": "^8.0.2", "pathe": "^2.0.3", "tinyglobby": "^0.2.15" } }, "sha512-qZ76eaLKU6Ae9iI/mc5zizBX149DXXZkBVVO3/QRIll79uKLJZHQlMKR++2ba7JsciBWz1pgpIBcCJPE9S0LVg=="], + + "@tanstack/start-client-core": ["@tanstack/start-client-core@1.158.0", "", { "dependencies": { "@tanstack/router-core": "1.158.0", "@tanstack/start-fn-stubs": "1.154.7", "@tanstack/start-storage-context": "1.158.0", "seroval": "^1.4.2", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" } }, "sha512-nGuzFEuC+yEMd7inPP185K+tcPlHk8rcg8x/t2dAhytM+r4PxyRkvXrHoKMbQKGYR2CArml96UNEKXWxsAtmow=="], + + "@tanstack/start-fn-stubs": ["@tanstack/start-fn-stubs@1.154.7", "", {}, "sha512-D69B78L6pcFN5X5PHaydv7CScQcKLzJeEYqs7jpuyyqGQHSUIZUjS955j+Sir8cHhuDIovCe2LmsYHeZfWf3dQ=="], + + "@tanstack/start-plugin-core": ["@tanstack/start-plugin-core@1.158.0", "", { "dependencies": { "@babel/code-frame": "7.27.1", "@babel/core": "^7.28.5", "@babel/types": "^7.28.5", "@rolldown/pluginutils": "1.0.0-beta.40", "@tanstack/router-core": "1.158.0", "@tanstack/router-generator": "1.158.0", "@tanstack/router-plugin": "1.158.0", "@tanstack/router-utils": "1.158.0", "@tanstack/start-client-core": "1.158.0", "@tanstack/start-server-core": "1.158.0", "cheerio": "^1.0.0", "exsolve": "^1.0.7", "pathe": "^2.0.3", "srvx": "^0.10.1", "tinyglobby": "^0.2.15", "ufo": "^1.5.4", "vitefu": "^1.1.1", "xmlbuilder2": "^4.0.3", "zod": "^3.24.2" }, "peerDependencies": { "vite": ">=7.0.0" } }, "sha512-KiG4ofL1I3A2p3BJ7qhyfugyKh5KMOIURvftmVc33IWLQaSYvCzCHoyaWfvcHIELbkyFpMwd4EauZH3I80BE8A=="], + + "@tanstack/start-server-core": ["@tanstack/start-server-core@1.158.0", "", { "dependencies": { "@tanstack/history": "1.154.14", "@tanstack/router-core": "1.158.0", "@tanstack/start-client-core": "1.158.0", "@tanstack/start-storage-context": "1.158.0", "h3-v2": "npm:h3@2.0.1-rc.11", "seroval": "^1.4.2", "tiny-invariant": "^1.3.3" } }, "sha512-C5Hgxl79fV8e0sGsFB4akFhmU3zO0FpriyBof7pSKROCEOt8hXq2QstYhb3QVR9KdzKAPR+JHg3BbEOBNUVn7Q=="], + + "@tanstack/start-storage-context": ["@tanstack/start-storage-context@1.158.0", "", { "dependencies": { "@tanstack/router-core": "1.158.0" } }, "sha512-9wkbgZoMlVIFJGmCrSWeOF9sPveVOw8LwSk1YwKj4tQOXurxdOBoQMvkYy+sxcGkhK6CmGGJqsedKVHK3EZQng=="], + + "@tanstack/store": ["@tanstack/store@0.8.0", "", {}, "sha512-Om+BO0YfMZe//X2z0uLF2j+75nQga6TpTJgLJQBiq85aOyZNIhkCgleNcud2KQg4k4v9Y9l+Uhru3qWMPGTOzQ=="], + + "@tanstack/virtual-file-routes": ["@tanstack/virtual-file-routes@1.154.7", "", {}, "sha512-cHHDnewHozgjpI+MIVp9tcib6lYEQK5MyUr0ChHpHFGBl8Xei55rohFK0I0ve/GKoHeioaK42Smd8OixPp6CTg=="], "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], + "@types/babel__core": ["@types/babel__core@7.20.5", "", { "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA=="], + + "@types/babel__generator": ["@types/babel__generator@7.27.0", "", { "dependencies": { "@babel/types": "^7.0.0" } }, "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg=="], + + "@types/babel__template": ["@types/babel__template@7.4.4", "", { "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A=="], + + "@types/babel__traverse": ["@types/babel__traverse@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.2" } }, "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q=="], + "@types/bun": ["@types/bun@1.3.8", "", { "dependencies": { "bun-types": "1.3.8" } }, "sha512-3LvWJ2q5GerAXYxO2mffLTqOzEu5qnhEAlh48Vnu8WQfnmSwbgagjGZV6BoHKJztENYEDn6QmVd949W4uESRJA=="], "@types/d3-array": ["@types/d3-array@3.2.2", "", {}, "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw=="], @@ -507,8 +788,6 @@ "@types/d3-timer": ["@types/d3-timer@3.0.2", "", {}, "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw=="], - "@types/eslint": ["@types/eslint@9.6.1", "", { "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag=="], - "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], "@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], @@ -517,11 +796,9 @@ "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], - "@types/json5": ["@types/json5@0.0.29", "", {}, "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="], - "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], - "@types/node": ["@types/node@25.1.0", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-t7frlewr6+cbx+9Ohpl0NOTKXZNV9xHRmNOvql47BFJKcEG1CxtxlPEEe+gR9uhVWM4DwhnvTF110mIL4yP9RA=="], + "@types/node": ["@types/node@25.2.0", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w=="], "@types/react": ["@types/react@19.2.10", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw=="], @@ -529,6 +806,10 @@ "@types/react-reconciler": ["@types/react-reconciler@0.28.9", "", { "peerDependencies": { "@types/react": "*" } }, "sha512-HHM3nxyUZ3zAylX8ZEyrDNd2XZOnQ0D5XfunJF5FLQnZbHHYq4UWvW1QfelQNXv1ICNkwYhfxjwfnqivYB6bFg=="], + "@types/resolve": ["@types/resolve@1.20.2", "", {}, "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q=="], + + "@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="], + "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], "@types/use-sync-external-store": ["@types/use-sync-external-store@0.0.6", "", {}, "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg=="], @@ -559,43 +840,7 @@ "@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="], - "@unrs/resolver-binding-android-arm-eabi": ["@unrs/resolver-binding-android-arm-eabi@1.11.1", "", { "os": "android", "cpu": "arm" }, "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw=="], - - "@unrs/resolver-binding-android-arm64": ["@unrs/resolver-binding-android-arm64@1.11.1", "", { "os": "android", "cpu": "arm64" }, "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g=="], - - "@unrs/resolver-binding-darwin-arm64": ["@unrs/resolver-binding-darwin-arm64@1.11.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g=="], - - "@unrs/resolver-binding-darwin-x64": ["@unrs/resolver-binding-darwin-x64@1.11.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ=="], - - "@unrs/resolver-binding-freebsd-x64": ["@unrs/resolver-binding-freebsd-x64@1.11.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw=="], - - "@unrs/resolver-binding-linux-arm-gnueabihf": ["@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1", "", { "os": "linux", "cpu": "arm" }, "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw=="], - - "@unrs/resolver-binding-linux-arm-musleabihf": ["@unrs/resolver-binding-linux-arm-musleabihf@1.11.1", "", { "os": "linux", "cpu": "arm" }, "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw=="], - - "@unrs/resolver-binding-linux-arm64-gnu": ["@unrs/resolver-binding-linux-arm64-gnu@1.11.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ=="], - - "@unrs/resolver-binding-linux-arm64-musl": ["@unrs/resolver-binding-linux-arm64-musl@1.11.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w=="], - - "@unrs/resolver-binding-linux-ppc64-gnu": ["@unrs/resolver-binding-linux-ppc64-gnu@1.11.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA=="], - - "@unrs/resolver-binding-linux-riscv64-gnu": ["@unrs/resolver-binding-linux-riscv64-gnu@1.11.1", "", { "os": "linux", "cpu": "none" }, "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ=="], - - "@unrs/resolver-binding-linux-riscv64-musl": ["@unrs/resolver-binding-linux-riscv64-musl@1.11.1", "", { "os": "linux", "cpu": "none" }, "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew=="], - - "@unrs/resolver-binding-linux-s390x-gnu": ["@unrs/resolver-binding-linux-s390x-gnu@1.11.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg=="], - - "@unrs/resolver-binding-linux-x64-gnu": ["@unrs/resolver-binding-linux-x64-gnu@1.11.1", "", { "os": "linux", "cpu": "x64" }, "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w=="], - - "@unrs/resolver-binding-linux-x64-musl": ["@unrs/resolver-binding-linux-x64-musl@1.11.1", "", { "os": "linux", "cpu": "x64" }, "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA=="], - - "@unrs/resolver-binding-wasm32-wasi": ["@unrs/resolver-binding-wasm32-wasi@1.11.1", "", { "dependencies": { "@napi-rs/wasm-runtime": "^0.2.11" }, "cpu": "none" }, "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ=="], - - "@unrs/resolver-binding-win32-arm64-msvc": ["@unrs/resolver-binding-win32-arm64-msvc@1.11.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw=="], - - "@unrs/resolver-binding-win32-ia32-msvc": ["@unrs/resolver-binding-win32-ia32-msvc@1.11.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ=="], - - "@unrs/resolver-binding-win32-x64-msvc": ["@unrs/resolver-binding-win32-x64-msvc@1.11.1", "", { "os": "win32", "cpu": "x64" }, "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g=="], + "@vitejs/plugin-react": ["@vitejs/plugin-react@5.1.3", "", { "dependencies": { "@babel/core": "^7.29.0", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-rc.2", "@types/babel__core": "^7.20.5", "react-refresh": "^0.18.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-NVUnA6gQCl8jfoYqKqQU5Clv0aPw14KkZYCsX6T9Lfu9slI0LOU10OTwFHS/WmptsMMpshNd/1tuWsHQ2Uk+cg=="], "@xobotyi/scrollbar-width": ["@xobotyi/scrollbar-width@1.9.5", "", {}, "sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ=="], @@ -611,7 +856,7 @@ "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], - "ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], + "ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], @@ -619,20 +864,20 @@ "ansi-to-html": ["ansi-to-html@0.7.2", "", { "dependencies": { "entities": "^2.2.0" }, "bin": { "ansi-to-html": "bin/ansi-to-html" } }, "sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g=="], + "ansis": ["ansis@4.2.0", "", {}, "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig=="], + + "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="], + "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], "aria-hidden": ["aria-hidden@1.2.6", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA=="], - "aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="], - "array-buffer-byte-length": ["array-buffer-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" } }, "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw=="], "array-includes": ["array-includes@3.1.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.24.0", "es-object-atoms": "^1.1.1", "get-intrinsic": "^1.3.0", "is-string": "^1.1.1", "math-intrinsics": "^1.1.0" } }, "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ=="], "array.prototype.findlast": ["array.prototype.findlast@1.2.5", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "es-shim-unscopables": "^1.0.2" } }, "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ=="], - "array.prototype.findlastindex": ["array.prototype.findlastindex@1.2.6", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-shim-unscopables": "^1.1.0" } }, "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ=="], - "array.prototype.flat": ["array.prototype.flat@1.3.3", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" } }, "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg=="], "array.prototype.flatmap": ["array.prototype.flatmap@1.3.3", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" } }, "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg=="], @@ -641,19 +886,27 @@ "arraybuffer.prototype.slice": ["arraybuffer.prototype.slice@1.0.4", "", { "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "is-array-buffer": "^3.0.4" } }, "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ=="], - "ast-types-flow": ["ast-types-flow@0.0.8", "", {}, "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ=="], + "ast-types": ["ast-types@0.16.1", "", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg=="], + + "async": ["async@3.2.6", "", {}, "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="], "async-function": ["async-function@1.0.0", "", {}, "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA=="], "asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="], - "available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="], + "at-least-node": ["at-least-node@1.0.0", "", {}, "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg=="], - "axe-core": ["axe-core@4.11.0", "", {}, "sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ=="], + "available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="], "axios": ["axios@1.13.4", "", { "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, "sha512-1wVkUaAO6WyaYtCkcYCOx12ZgpGf9Zif+qXa4n+oYzK558YryKqiL6UWwd5DqiH3VRW0GYhTZQ/vlgJrCoNQlg=="], - "axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="], + "babel-dead-code-elimination": ["babel-dead-code-elimination@1.0.12", "", { "dependencies": { "@babel/core": "^7.23.7", "@babel/parser": "^7.23.6", "@babel/traverse": "^7.23.7", "@babel/types": "^7.23.6" } }, "sha512-GERT7L2TiYcYDtYk1IpD+ASAYXjKbLTDPhBtYj7X1NuRMDTMtAx9kyBenub1Ev41lo91OHCKdmP+egTDmfQ7Ig=="], + + "babel-plugin-polyfill-corejs2": ["babel-plugin-polyfill-corejs2@0.4.15", "", { "dependencies": { "@babel/compat-data": "^7.28.6", "@babel/helper-define-polyfill-provider": "^0.6.6", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw=="], + + "babel-plugin-polyfill-corejs3": ["babel-plugin-polyfill-corejs3@0.14.0", "", { "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.6", "core-js-compat": "^3.48.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ=="], + + "babel-plugin-polyfill-regenerator": ["babel-plugin-polyfill-regenerator@0.6.6", "", { "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.6" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A=="], "babel-plugin-react-compiler": ["babel-plugin-react-compiler@1.0.0", "", { "dependencies": { "@babel/types": "^7.26.0" } }, "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw=="], @@ -663,14 +916,20 @@ "best-effort-json-parser": ["best-effort-json-parser@1.2.1", "", {}, "sha512-UICSLibQdzS1f+PBsi3u2YE3SsdXcWicHUg3IMvfuaePS2AYnZJdJeKhGv5OM8/mqJwPt79aDrEJ1oa84tELvw=="], + "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], + "bippy": ["bippy@0.3.34", "", { "dependencies": { "@types/react-reconciler": "^0.28.9" }, "peerDependencies": { "react": ">=17.0.1" } }, "sha512-vmptmU/20UdIWHHhq7qCSHhHzK7Ro3YJ1utU0fBG7ujUc58LEfTtilKxcF0IOgSjT5XLcm7CBzDjbv4lcKApGQ=="], + "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], + "brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], "browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], + "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], + "bun-types": ["bun-types@1.3.8", "", { "dependencies": { "@types/node": "*" } }, "sha512-fL99nxdOWvV4LqjmC+8Q9kW3M4QTtTR1eePs94v5ctGqU8OeceWrSUaRw3JYb7tU3FkMIAjkueehrHPPPGKi5Q=="], "call-bind": ["call-bind@1.0.8", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", "get-intrinsic": "^1.2.4", "set-function-length": "^1.2.2" } }, "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww=="], @@ -685,7 +944,7 @@ "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], - "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + "chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], "change-case": ["change-case@5.4.4", "", {}, "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w=="], @@ -693,9 +952,13 @@ "character-entities-legacy": ["character-entities-legacy@3.0.0", "", {}, "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="], - "class-variance-authority": ["class-variance-authority@0.7.1", "", { "dependencies": { "clsx": "^2.1.1" } }, "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg=="], + "cheerio": ["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.19.0", "whatwg-mimetype": "^4.0.0" } }, "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg=="], - "client-only": ["client-only@0.0.1", "", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="], + "cheerio-select": ["cheerio-select@2.1.0", "", { "dependencies": { "boolbase": "^1.0.0", "css-select": "^5.1.0", "css-what": "^6.1.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.0.1" } }, "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g=="], + + "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], + + "class-variance-authority": ["class-variance-authority@0.7.1", "", { "dependencies": { "clsx": "^2.1.1" } }, "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg=="], "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], @@ -717,20 +980,36 @@ "commander": ["commander@13.1.0", "", {}, "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw=="], + "common-tags": ["common-tags@1.8.2", "", {}, "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA=="], + "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], + "consola": ["consola@3.4.2", "", {}, "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA=="], + "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + "cookie-es": ["cookie-es@2.0.0", "", {}, "sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg=="], + "copy-to-clipboard": ["copy-to-clipboard@3.3.3", "", { "dependencies": { "toggle-selection": "^1.0.6" } }, "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA=="], + "core-js-compat": ["core-js-compat@3.48.0", "", { "dependencies": { "browserslist": "^4.28.1" } }, "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q=="], + "crelt": ["crelt@1.0.6", "", {}, "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g=="], "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], + "crossws": ["crossws@0.4.4", "", { "peerDependencies": { "srvx": ">=0.7.1" }, "optionalPeers": ["srvx"] }, "sha512-w6c4OdpRNnudVmcgr7brb/+/HmYjMQvYToO/oTrprTwxRUiom3LYWU1PMWuD006okbUWpII1Ea9/+kwpUfmyRg=="], + + "crypto-random-string": ["crypto-random-string@2.0.0", "", {}, "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA=="], + "css-in-js-utils": ["css-in-js-utils@3.1.0", "", { "dependencies": { "hyphenate-style-name": "^1.0.3" } }, "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A=="], + "css-select": ["css-select@5.2.2", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw=="], + "css-tree": ["css-tree@1.1.3", "", { "dependencies": { "mdn-data": "2.0.14", "source-map": "^0.6.1" } }, "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q=="], + "css-what": ["css-what@6.2.2", "", {}, "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA=="], + "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], "d3-array": ["d3-array@3.2.4", "", { "dependencies": { "internmap": "1 - 2" } }, "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg=="], @@ -755,14 +1034,14 @@ "d3-timer": ["d3-timer@3.0.1", "", {}, "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA=="], - "damerau-levenshtein": ["damerau-levenshtein@1.0.8", "", {}, "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA=="], - "data-view-buffer": ["data-view-buffer@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ=="], "data-view-byte-length": ["data-view-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ=="], "data-view-byte-offset": ["data-view-byte-offset@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" } }, "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ=="], + "db0": ["db0@0.3.4", "", { "peerDependencies": { "@electric-sql/pglite": "*", "@libsql/client": "*", "better-sqlite3": "*", "drizzle-orm": "*", "mysql2": "*", "sqlite3": "*" }, "optionalPeers": ["@electric-sql/pglite", "@libsql/client", "better-sqlite3", "drizzle-orm", "mysql2", "sqlite3"] }, "sha512-RiXXi4WaNzPTHEOu8UPQKMooIbqOEyqA1t7Z6MsdxSCeb8iUC9ko3LcmsLmeUt2SM5bctfArZKkRQggKZz7JNw=="], + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], "decimal.js-light": ["decimal.js-light@2.5.1", "", {}, "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg=="], @@ -785,16 +1064,28 @@ "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], + "diff": ["diff@8.0.3", "", {}, "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ=="], + "discontinuous-range": ["discontinuous-range@1.0.0", "", {}, "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ=="], "doctrine": ["doctrine@2.1.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="], + "dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="], + + "domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="], + + "domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="], + + "domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="], + "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="], "ebnf": ["ebnf@1.9.1", "", { "bin": { "ebnf": "dist/bin.js" } }, "sha512-uW2UKSsuty9ANJ3YByIQE4ANkD8nqUPO7r6Fwcc1ADKPe9FRdcPpMl3VEput4JSvKBJ4J86npIC2MLP0pYkCuw=="], + "ejs": ["ejs@3.1.10", "", { "dependencies": { "jake": "^10.8.5" }, "bin": { "ejs": "bin/cli.js" } }, "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA=="], + "electron-to-chromium": ["electron-to-chromium@1.5.267", "", {}, "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw=="], "embla-carousel": ["embla-carousel@8.6.0", "", {}, "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA=="], @@ -807,6 +1098,8 @@ "emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], + "encoding-sniffer": ["encoding-sniffer@0.2.1", "", { "dependencies": { "iconv-lite": "^0.6.3", "whatwg-encoding": "^3.1.1" } }, "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw=="], + "enhanced-resolve": ["enhanced-resolve@5.18.4", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q=="], "entities": ["entities@2.2.0", "", {}, "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="], @@ -829,9 +1122,9 @@ "es-to-primitive": ["es-to-primitive@1.3.0", "", { "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", "is-symbol": "^1.0.4" } }, "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g=="], - "es-toolkit": ["es-toolkit@1.43.0", "", {}, "sha512-SKCT8AsWvYzBBuUqMk4NPwFlSdqLpJwmy6AP322ERn8W2YLIB6JBXnwMI2Qsh2gfphT3q7EKAxKb23cvFHFwKA=="], + "es-toolkit": ["es-toolkit@1.44.0", "", {}, "sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg=="], - "esbuild": ["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" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="], + "esbuild": ["esbuild@0.27.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.2", "@esbuild/android-arm": "0.27.2", "@esbuild/android-arm64": "0.27.2", "@esbuild/android-x64": "0.27.2", "@esbuild/darwin-arm64": "0.27.2", "@esbuild/darwin-x64": "0.27.2", "@esbuild/freebsd-arm64": "0.27.2", "@esbuild/freebsd-x64": "0.27.2", "@esbuild/linux-arm": "0.27.2", "@esbuild/linux-arm64": "0.27.2", "@esbuild/linux-ia32": "0.27.2", "@esbuild/linux-loong64": "0.27.2", "@esbuild/linux-mips64el": "0.27.2", "@esbuild/linux-ppc64": "0.27.2", "@esbuild/linux-riscv64": "0.27.2", "@esbuild/linux-s390x": "0.27.2", "@esbuild/linux-x64": "0.27.2", "@esbuild/netbsd-arm64": "0.27.2", "@esbuild/netbsd-x64": "0.27.2", "@esbuild/openbsd-arm64": "0.27.2", "@esbuild/openbsd-x64": "0.27.2", "@esbuild/openharmony-arm64": "0.27.2", "@esbuild/sunos-x64": "0.27.2", "@esbuild/win32-arm64": "0.27.2", "@esbuild/win32-ia32": "0.27.2", "@esbuild/win32-x64": "0.27.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw=="], "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], @@ -839,20 +1132,6 @@ "eslint": ["eslint@9.39.2", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.1", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.39.2", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw=="], - "eslint-config-next": ["eslint-config-next@16.1.6", "", { "dependencies": { "@next/eslint-plugin-next": "16.1.6", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-react": "^7.37.0", "eslint-plugin-react-hooks": "^7.0.0", "globals": "16.4.0", "typescript-eslint": "^8.46.0" }, "peerDependencies": { "eslint": ">=9.0.0", "typescript": ">=3.3.1" }, "optionalPeers": ["typescript"] }, "sha512-vKq40io2B0XtkkNDYyleATwblNt8xuh3FWp8SpSz3pt7P01OkBFlKsJZ2mWt5WsCySlDQLckb1zMY9yE9Qy0LA=="], - - "eslint-config-prettier": ["eslint-config-prettier@10.1.8", "", { "peerDependencies": { "eslint": ">=7.0.0" }, "bin": { "eslint-config-prettier": "bin/cli.js" } }, "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w=="], - - "eslint-import-resolver-node": ["eslint-import-resolver-node@0.3.9", "", { "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", "resolve": "^1.22.4" } }, "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g=="], - - "eslint-import-resolver-typescript": ["eslint-import-resolver-typescript@3.10.1", "", { "dependencies": { "@nolyfill/is-core-module": "1.0.39", "debug": "^4.4.0", "get-tsconfig": "^4.10.0", "is-bun-module": "^2.0.0", "stable-hash": "^0.0.5", "tinyglobby": "^0.2.13", "unrs-resolver": "^1.6.2" }, "peerDependencies": { "eslint": "*", "eslint-plugin-import": "*", "eslint-plugin-import-x": "*" }, "optionalPeers": ["eslint-plugin-import", "eslint-plugin-import-x"] }, "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ=="], - - "eslint-module-utils": ["eslint-module-utils@2.12.1", "", { "dependencies": { "debug": "^3.2.7" } }, "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw=="], - - "eslint-plugin-import": ["eslint-plugin-import@2.32.0", "", { "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", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.12.1", "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" }, "peerDependencies": { "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA=="], - - "eslint-plugin-jsx-a11y": ["eslint-plugin-jsx-a11y@6.10.2", "", { "dependencies": { "aria-query": "^5.3.2", "array-includes": "^3.1.8", "array.prototype.flatmap": "^1.3.2", "ast-types-flow": "^0.0.8", "axe-core": "^4.10.0", "axobject-query": "^4.1.0", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", "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.0.3", "string.prototype.includes": "^2.0.1" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q=="], - "eslint-plugin-prettier": ["eslint-plugin-prettier@5.5.5", "", { "dependencies": { "prettier-linter-helpers": "^1.0.1", "synckit": "^0.11.12" }, "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", "prettier": ">=3.0.0" }, "optionalPeers": ["@types/eslint", "eslint-config-prettier"] }, "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw=="], "eslint-plugin-react": ["eslint-plugin-react@7.37.5", "", { "dependencies": { "array-includes": "^3.1.8", "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.1", "estraverse": "^5.3.0", "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "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" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA=="], @@ -867,7 +1146,9 @@ "espree": ["espree@10.4.0", "", { "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.1" } }, "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ=="], - "esquery": ["esquery@1.6.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg=="], + "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], + + "esquery": ["esquery@1.7.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g=="], "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], @@ -877,7 +1158,9 @@ "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], - "eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="], + "eventemitter3": ["eventemitter3@5.0.4", "", {}, "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw=="], + + "exsolve": ["exsolve@1.0.8", "", {}, "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA=="], "fast-copy": ["fast-copy@3.0.2", "", {}, "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ=="], @@ -885,22 +1168,22 @@ "fast-diff": ["fast-diff@1.3.0", "", {}, "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw=="], - "fast-glob": ["fast-glob@3.3.1", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.4" } }, "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg=="], - "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], "fast-shallow-equal": ["fast-shallow-equal@1.0.0", "", {}, "sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw=="], - "fastest-stable-stringify": ["fastest-stable-stringify@2.0.2", "", {}, "sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q=="], + "fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="], - "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="], + "fastest-stable-stringify": ["fastest-stable-stringify@2.0.2", "", {}, "sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q=="], "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], + "filelist": ["filelist@1.0.4", "", { "dependencies": { "minimatch": "^5.0.1" } }, "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q=="], + "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], @@ -917,9 +1200,11 @@ "form-data": ["form-data@4.0.5", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w=="], - "framer-motion": ["framer-motion@12.29.2", "", { "dependencies": { "motion-dom": "^12.29.2", "motion-utils": "^12.29.2", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-lSNRzBJk4wuIy0emYQ/nfZ7eWhqud2umPKw2QAQki6uKhZPKm2hRQHeQoHTG9MIvfobb+A/LbEWPJU794ZUKrg=="], + "framer-motion": ["framer-motion@12.31.0", "", { "dependencies": { "motion-dom": "^12.30.1", "motion-utils": "^12.29.2", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-Tnd0FU05zGRFI3JJmBegXonF1rfuzYeuXd1QSdQ99Ysnppk0yWBWSW2wUsqzRpS5nv0zPNx+y0wtDj4kf0q5RQ=="], + + "fs-extra": ["fs-extra@9.1.0", "", { "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ=="], - "fsevents": ["fsevents@2.3.2", "", { "os": "darwin" }, "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="], + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], @@ -935,6 +1220,8 @@ "get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], + "get-own-enumerable-property-symbols": ["get-own-enumerable-property-symbols@3.0.2", "", {}, "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g=="], + "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], "get-symbol-description": ["get-symbol-description@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6" } }, "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg=="], @@ -949,10 +1236,16 @@ "globalthis": ["globalthis@1.0.4", "", { "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" } }, "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ=="], + "globrex": ["globrex@0.1.2", "", {}, "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg=="], + "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + "h3": ["h3@2.0.1-rc.11", "", { "dependencies": { "rou3": "^0.7.12", "srvx": "^0.10.1" }, "peerDependencies": { "crossws": "^0.4.1" }, "optionalPeers": ["crossws"] }, "sha512-2myzjCqy32c1As9TjZW9fNZXtLqNedjFSrdFy2AjFBQQ3LzrnGoDdFDYfC0tV2e4vcyfJ2Sfo/F6NQhO2Ly/Mw=="], + + "h3-v2": ["h3@2.0.1-rc.11", "", { "dependencies": { "rou3": "^0.7.12", "srvx": "^0.10.1" }, "peerDependencies": { "crossws": "^0.4.1" }, "optionalPeers": ["crossws"] }, "sha512-2myzjCqy32c1As9TjZW9fNZXtLqNedjFSrdFy2AjFBQQ3LzrnGoDdFDYfC0tV2e4vcyfJ2Sfo/F6NQhO2Ly/Mw=="], + "has-bigints": ["has-bigints@1.1.0", "", {}, "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg=="], "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], @@ -977,11 +1270,17 @@ "html-void-elements": ["html-void-elements@3.0.0", "", {}, "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="], + "htmlparser2": ["htmlparser2@10.1.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.2.2", "entities": "^7.0.1" } }, "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ=="], + "husky": ["husky@9.1.7", "", { "bin": { "husky": "bin.js" } }, "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA=="], "hyphenate-style-name": ["hyphenate-style-name@1.1.0", "", {}, "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw=="], - "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], + "iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], + + "idb": ["idb@7.1.1", "", {}, "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ=="], + + "ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], "immer": ["immer@10.2.0", "", {}, "sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw=="], @@ -1001,9 +1300,9 @@ "is-bigint": ["is-bigint@1.1.0", "", { "dependencies": { "has-bigints": "^1.0.2" } }, "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ=="], - "is-boolean-object": ["is-boolean-object@1.2.2", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A=="], + "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="], - "is-bun-module": ["is-bun-module@2.0.0", "", { "dependencies": { "semver": "^7.7.1" } }, "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ=="], + "is-boolean-object": ["is-boolean-object@1.2.2", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A=="], "is-callable": ["is-callable@1.2.7", "", {}, "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="], @@ -1025,18 +1324,26 @@ "is-map": ["is-map@2.0.3", "", {}, "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw=="], + "is-module": ["is-module@1.0.0", "", {}, "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g=="], + "is-negative-zero": ["is-negative-zero@2.0.3", "", {}, "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw=="], "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], "is-number-object": ["is-number-object@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw=="], + "is-obj": ["is-obj@1.0.1", "", {}, "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg=="], + "is-regex": ["is-regex@1.2.1", "", { "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g=="], + "is-regexp": ["is-regexp@1.0.0", "", {}, "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA=="], + "is-set": ["is-set@2.0.3", "", {}, "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg=="], "is-shared-array-buffer": ["is-shared-array-buffer@1.0.4", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A=="], + "is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], + "is-string": ["is-string@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA=="], "is-symbol": ["is-symbol@1.1.1", "", { "dependencies": { "call-bound": "^1.0.2", "has-symbols": "^1.1.0", "safe-regex-test": "^1.1.0" } }, "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w=="], @@ -1051,12 +1358,16 @@ "isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="], + "isbot": ["isbot@5.1.34", "", {}, "sha512-aCMIBSKd/XPRYdiCQTLC8QHH4YT8B3JUADu+7COgYIZPvkeoMcUHMRjZLM9/7V8fCj+l7FSREc1lOPNjzogo/A=="], + "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], "iterator.prototype": ["iterator.prototype@1.1.5", "", { "dependencies": { "define-data-property": "^1.1.4", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "get-proto": "^1.0.0", "has-symbols": "^1.1.0", "set-function-name": "^2.0.2" } }, "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g=="], "jackspeak": ["jackspeak@4.1.1", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" } }, "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ=="], + "jake": ["jake@10.9.4", "", { "dependencies": { "async": "^3.2.6", "filelist": "^1.0.4", "picocolors": "^1.1.1" }, "bin": { "jake": "bin/cli.js" } }, "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA=="], + "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], "js-cookie": ["js-cookie@2.2.1", "", {}, "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ=="], @@ -1073,12 +1384,16 @@ "json-schema-library": ["json-schema-library@10.5.2", "", { "dependencies": { "@sagold/json-pointer": "^7.2.0", "@sagold/json-query": "^6.2.0", "deepmerge": "^4.3.1", "fast-copy": "^3.0.2", "fast-deep-equal": "^3.1.3", "smtp-address-parser": "1.0.10", "uri-js": "^4.4.1", "valid-url": "^1.0.9" } }, "sha512-dXFWnglpSz1lf0omz3wf6oq9+bwVRcAEqId9vTRSfDDqu/mwdmq9m057B+NP7Hw1dkGWfYELLvehTWtLs4tITQ=="], - "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], + "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], + "jsonfile": ["jsonfile@6.2.0", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg=="], + + "jsonpointer": ["jsonpointer@5.0.1", "", {}, "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ=="], + "jsx-ast-utils": ["jsx-ast-utils@3.3.5", "", { "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", "object.assign": "^4.1.4", "object.values": "^1.1.6" } }, "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ=="], "juststore": ["juststore@file:juststore", { "dependencies": { "change-case": "^5.4.4", "react-fast-compare": "^3.2.2" }, "devDependencies": { "@eslint/js": "^9.39.2", "@types/node": "^24.10.4", "@types/react": "^19.2.7", "@typescript-eslint/eslint-plugin": "^8.50.1", "@typescript-eslint/parser": "^8.50.1", "eslint": "^9.39.2", "eslint-plugin-prettier": "^5.5.4", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-react-refresh": "^0.4.26", "husky": "^9.1.7", "prettier": "^3.7.4", "react": "^19.2.3", "typescript": "^5.9.3" }, "peerDependencies": { "react": ">=18.0.0" } }], @@ -1087,9 +1402,9 @@ "kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="], - "language-subtag-registry": ["language-subtag-registry@0.3.23", "", {}, "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ=="], + "launch-editor": ["launch-editor@2.12.0", "", { "dependencies": { "picocolors": "^1.1.1", "shell-quote": "^1.8.3" } }, "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg=="], - "language-tags": ["language-tags@1.0.9", "", { "dependencies": { "language-subtag-registry": "^0.3.20" } }, "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA=="], + "leven": ["leven@3.1.0", "", {}, "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="], "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], @@ -1123,8 +1438,14 @@ "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], + "lodash": ["lodash@4.17.23", "", {}, "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w=="], + + "lodash.debounce": ["lodash.debounce@4.0.8", "", {}, "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="], + "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], + "lodash.sortby": ["lodash.sortby@4.7.0", "", {}, "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA=="], + "loglevel": ["loglevel@1.9.2", "", {}, "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg=="], "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], @@ -1145,8 +1466,6 @@ "mdurl": ["mdurl@2.0.0", "", {}, "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w=="], - "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], - "micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], "micromark-util-encode": ["micromark-util-encode@2.0.1", "", {}, "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="], @@ -1157,23 +1476,19 @@ "micromark-util-types": ["micromark-util-types@2.0.2", "", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="], - "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], - "mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], "mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], - "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - - "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], + "minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], "moo": ["moo@0.5.2", "", {}, "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q=="], - "motion": ["motion@12.29.2", "", { "dependencies": { "framer-motion": "^12.29.2", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-jMpHdAzEDF1QQ055cB+1lOBLdJ6ialVWl6QQzpJI2OvmHequ7zFVHM2mx0HNAy+Tu4omUlApfC+4vnkX0geEOg=="], + "motion": ["motion@12.31.0", "", { "dependencies": { "framer-motion": "^12.31.0", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-KpZQik3LLFdsiaLdFXQGnty84KcDvvdvBCHSvA9aH+RjQTP6jkJGyngRPSngau13ARUI6TbPphf/Vv/QxwxRJQ=="], - "motion-dom": ["motion-dom@12.29.2", "", { "dependencies": { "motion-utils": "^12.29.2" } }, "sha512-/k+NuycVV8pykxyiTCoFzIVLA95Nb1BFIVvfSu9L50/6K6qNeAYtkxXILy/LRutt7AzaYDc2myj0wkCVVYAPPA=="], + "motion-dom": ["motion-dom@12.30.1", "", { "dependencies": { "motion-utils": "^12.29.2" } }, "sha512-QXB+iFJRzZTqL+Am4a1CRoHdH+0Nq12wLdqQQZZsfHlp9AMt6PA098L/61oVZsDA+Ep3QSGudzpViyRrhYhGcQ=="], "motion-utils": ["motion-utils@12.29.2", "", {}, "sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A=="], @@ -1185,20 +1500,20 @@ "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], - "napi-postinstall": ["napi-postinstall@0.3.4", "", { "bin": { "napi-postinstall": "lib/cli.js" } }, "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ=="], - "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], "nearley": ["nearley@2.20.1", "", { "dependencies": { "commander": "^2.19.0", "moo": "^0.5.0", "railroad-diagrams": "^1.0.0", "randexp": "0.4.6" }, "bin": { "nearleyc": "bin/nearleyc.js", "nearley-test": "bin/nearley-test.js", "nearley-unparse": "bin/nearley-unparse.js", "nearley-railroad": "bin/nearley-railroad.js" } }, "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ=="], - "next": ["next@16.1.6", "", { "dependencies": { "@next/env": "16.1.6", "@swc/helpers": "0.5.15", "baseline-browser-mapping": "^2.8.3", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.1.6", "@next/swc-darwin-x64": "16.1.6", "@next/swc-linux-arm64-gnu": "16.1.6", "@next/swc-linux-arm64-musl": "16.1.6", "@next/swc-linux-x64-gnu": "16.1.6", "@next/swc-linux-x64-musl": "16.1.6", "@next/swc-win32-arm64-msvc": "16.1.6", "@next/swc-win32-x64-msvc": "16.1.6", "sharp": "^0.34.4" }, "peerDependencies": { "@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", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw=="], + "nf3": ["nf3@0.3.7", "", {}, "sha512-wL73kyZbBoeTWlvQWQ0gQDZnqp+aNlUN5YIqsc3fv5V/06LAlwrwt+G7TpugFLJIai0AhrmnKJ2kgW0xprj+yQ=="], - "next-themes": ["next-themes@0.4.6", "", { "peerDependencies": { "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" } }, "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA=="], + "nitro": ["nitro@3.0.1-alpha.2", "", { "dependencies": { "consola": "^3.4.2", "crossws": "^0.4.3", "db0": "^0.3.4", "h3": "^2.0.1-rc.11", "jiti": "^2.6.1", "nf3": "^0.3.5", "ofetch": "^2.0.0-alpha.3", "ohash": "^2.0.11", "oxc-minify": "^0.110.0", "oxc-transform": "^0.110.0", "srvx": "^0.10.1", "undici": "^7.18.2", "unenv": "^2.0.0-rc.24", "unstorage": "^2.0.0-alpha.5" }, "peerDependencies": { "rolldown": ">=1.0.0-beta.0", "rollup": "^4", "vite": "^7 || ^8 || >=8.0.0-0", "xml2js": "^0.6.2" }, "optionalPeers": ["rolldown", "rollup", "vite", "xml2js"], "bin": { "nitro": "dist/cli/index.mjs" } }, "sha512-YviDY5J/trS821qQ1fpJtpXWIdPYiOizC/meHavlm1Hfuhx//H+Egd1+4C5SegJRgtWMnRPW9n//6Woaw81cTQ=="], "node-releases": ["node-releases@2.0.27", "", {}, "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="], "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], + "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="], + "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], @@ -1211,10 +1526,12 @@ "object.fromentries": ["object.fromentries@2.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-object-atoms": "^1.0.0" } }, "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ=="], - "object.groupby": ["object.groupby@1.0.3", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2" } }, "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ=="], - "object.values": ["object.values@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA=="], + "ofetch": ["ofetch@2.0.0-alpha.3", "", {}, "sha512-zpYTCs2byOuft65vI3z43Dd6iSdFbOZZLb9/d21aCpx2rGastVU9dOCv0lu4ykc1Ur1anAYjDi3SUvR0vq50JA=="], + + "ohash": ["ohash@2.0.11", "", {}, "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="], + "oniguruma-parser": ["oniguruma-parser@0.12.1", "", {}, "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w=="], "oniguruma-to-es": ["oniguruma-to-es@4.3.4", "", { "dependencies": { "oniguruma-parser": "^0.12.1", "regex": "^6.0.1", "regex-recursion": "^6.0.2" } }, "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA=="], @@ -1223,6 +1540,10 @@ "own-keys": ["own-keys@1.0.1", "", { "dependencies": { "get-intrinsic": "^1.2.6", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" } }, "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg=="], + "oxc-minify": ["oxc-minify@0.110.0", "", { "optionalDependencies": { "@oxc-minify/binding-android-arm-eabi": "0.110.0", "@oxc-minify/binding-android-arm64": "0.110.0", "@oxc-minify/binding-darwin-arm64": "0.110.0", "@oxc-minify/binding-darwin-x64": "0.110.0", "@oxc-minify/binding-freebsd-x64": "0.110.0", "@oxc-minify/binding-linux-arm-gnueabihf": "0.110.0", "@oxc-minify/binding-linux-arm-musleabihf": "0.110.0", "@oxc-minify/binding-linux-arm64-gnu": "0.110.0", "@oxc-minify/binding-linux-arm64-musl": "0.110.0", "@oxc-minify/binding-linux-ppc64-gnu": "0.110.0", "@oxc-minify/binding-linux-riscv64-gnu": "0.110.0", "@oxc-minify/binding-linux-riscv64-musl": "0.110.0", "@oxc-minify/binding-linux-s390x-gnu": "0.110.0", "@oxc-minify/binding-linux-x64-gnu": "0.110.0", "@oxc-minify/binding-linux-x64-musl": "0.110.0", "@oxc-minify/binding-openharmony-arm64": "0.110.0", "@oxc-minify/binding-wasm32-wasi": "0.110.0", "@oxc-minify/binding-win32-arm64-msvc": "0.110.0", "@oxc-minify/binding-win32-ia32-msvc": "0.110.0", "@oxc-minify/binding-win32-x64-msvc": "0.110.0" } }, "sha512-KWGTzPo83QmGrXC4ml83PM9HDwUPtZFfasiclUvTV4i3/0j7xRRqINVkrL77CbQnoWura3CMxkRofjQKVDuhBw=="], + + "oxc-transform": ["oxc-transform@0.110.0", "", { "optionalDependencies": { "@oxc-transform/binding-android-arm-eabi": "0.110.0", "@oxc-transform/binding-android-arm64": "0.110.0", "@oxc-transform/binding-darwin-arm64": "0.110.0", "@oxc-transform/binding-darwin-x64": "0.110.0", "@oxc-transform/binding-freebsd-x64": "0.110.0", "@oxc-transform/binding-linux-arm-gnueabihf": "0.110.0", "@oxc-transform/binding-linux-arm-musleabihf": "0.110.0", "@oxc-transform/binding-linux-arm64-gnu": "0.110.0", "@oxc-transform/binding-linux-arm64-musl": "0.110.0", "@oxc-transform/binding-linux-ppc64-gnu": "0.110.0", "@oxc-transform/binding-linux-riscv64-gnu": "0.110.0", "@oxc-transform/binding-linux-riscv64-musl": "0.110.0", "@oxc-transform/binding-linux-s390x-gnu": "0.110.0", "@oxc-transform/binding-linux-x64-gnu": "0.110.0", "@oxc-transform/binding-linux-x64-musl": "0.110.0", "@oxc-transform/binding-openharmony-arm64": "0.110.0", "@oxc-transform/binding-wasm32-wasi": "0.110.0", "@oxc-transform/binding-win32-arm64-msvc": "0.110.0", "@oxc-transform/binding-win32-ia32-msvc": "0.110.0", "@oxc-transform/binding-win32-x64-msvc": "0.110.0" } }, "sha512-/fymQNzzUoKZweH0nC5yvbI2eR0yWYusT9TEKDYVgOgYrf9Qmdez9lUFyvxKR9ycx+PTHi/reIOzqf3wkShQsw=="], + "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], @@ -1231,6 +1552,12 @@ "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], + "parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="], + + "parse5-htmlparser2-tree-adapter": ["parse5-htmlparser2-tree-adapter@7.1.0", "", { "dependencies": { "domhandler": "^5.0.3", "parse5": "^7.0.0" } }, "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g=="], + + "parse5-parser-stream": ["parse5-parser-stream@7.1.2", "", { "dependencies": { "parse5": "^7.0.0" } }, "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow=="], + "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], @@ -1239,6 +1566,8 @@ "path-scurry": ["path-scurry@2.0.1", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA=="], + "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], @@ -1259,6 +1588,8 @@ "prettier-linter-helpers": ["prettier-linter-helpers@1.0.1", "", { "dependencies": { "fast-diff": "^1.1.2" } }, "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg=="], + "pretty-bytes": ["pretty-bytes@6.1.1", "", {}, "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ=="], + "prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="], "property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="], @@ -1269,22 +1600,24 @@ "punycode.js": ["punycode.js@2.3.1", "", {}, "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA=="], - "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], - "railroad-diagrams": ["railroad-diagrams@1.0.0", "", {}, "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A=="], "randexp": ["randexp@0.4.6", "", { "dependencies": { "discontinuous-range": "1.0.0", "ret": "~0.1.10" } }, "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ=="], + "randombytes": ["randombytes@2.1.0", "", { "dependencies": { "safe-buffer": "^5.1.0" } }, "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ=="], + "react": ["react@19.2.4", "", {}, "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ=="], "react-dom": ["react-dom@19.2.4", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.4" } }, "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ=="], "react-fast-compare": ["react-fast-compare@3.2.2", "", {}, "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ=="], - "react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], + "react-is": ["react-is@18.3.1", "", {}, "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="], "react-redux": ["react-redux@9.2.0", "", { "dependencies": { "@types/use-sync-external-store": "^0.0.6", "use-sync-external-store": "^1.4.0" }, "peerDependencies": { "@types/react": "^18.2.25 || ^19", "react": "^18.0 || ^19", "redux": "^5.0.0" }, "optionalPeers": ["@types/react", "redux"] }, "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g=="], + "react-refresh": ["react-refresh@0.18.0", "", {}, "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw=="], + "react-remove-scroll": ["react-remove-scroll@2.7.2", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q=="], "react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="], @@ -1299,6 +1632,10 @@ "react-use-websocket": ["react-use-websocket@4.13.0", "", {}, "sha512-anMuVoV//g2N76Wxqvqjjo1X48r9Np3y1/gMl7arX84tAPXdy5R7sB5lO5hvCzQRYjqXwV8XMAiEBOUbyrZFrw=="], + "readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + + "recast": ["recast@0.23.11", "", { "dependencies": { "ast-types": "^0.16.1", "esprima": "~4.0.0", "source-map": "~0.6.1", "tiny-invariant": "^1.3.3", "tslib": "^2.0.1" } }, "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA=="], + "recharts": ["recharts@3.7.0", "", { "dependencies": { "@reduxjs/toolkit": "1.x.x || 2.x.x", "clsx": "^2.1.1", "decimal.js-light": "^2.5.1", "es-toolkit": "^1.39.3", "eventemitter3": "^5.0.1", "immer": "^10.1.1", "react-redux": "8.x.x || 9.x.x", "reselect": "5.1.1", "tiny-invariant": "^1.3.3", "use-sync-external-store": "^1.2.2", "victory-vendor": "^37.0.2" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-is": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-l2VCsy3XXeraxIID9fx23eCb6iCBsxUQDnE8tWm6DFdszVAO7WVY/ChAD9wVit01y6B2PMupYiMmQwhgPHc9Ew=="], "redux": ["redux@5.0.1", "", {}, "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w=="], @@ -1307,6 +1644,10 @@ "reflect.getprototypeof": ["reflect.getprototypeof@1.0.10", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="], + "regenerate": ["regenerate@1.4.2", "", {}, "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="], + + "regenerate-unicode-properties": ["regenerate-unicode-properties@10.2.2", "", { "dependencies": { "regenerate": "^1.4.2" } }, "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g=="], + "regex": ["regex@6.1.0", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg=="], "regex-recursion": ["regex-recursion@6.0.2", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg=="], @@ -1315,6 +1656,14 @@ "regexp.prototype.flags": ["regexp.prototype.flags@1.5.4", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", "get-proto": "^1.0.1", "gopd": "^1.2.0", "set-function-name": "^2.0.2" } }, "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA=="], + "regexpu-core": ["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" } }, "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA=="], + + "regjsgen": ["regjsgen@0.8.0", "", {}, "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q=="], + + "regjsparser": ["regjsparser@0.13.0", "", { "dependencies": { "jsesc": "~3.1.0" }, "bin": { "regjsparser": "bin/parser" } }, "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q=="], + + "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], + "reselect": ["reselect@5.1.1", "", {}, "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w=="], "resize-observer-polyfill": ["resize-observer-polyfill@1.5.1", "", {}, "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="], @@ -1327,26 +1676,36 @@ "ret": ["ret@0.1.15", "", {}, "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="], - "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], + "rollup": ["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.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A=="], - "rtl-css-js": ["rtl-css-js@1.16.1", "", { "dependencies": { "@babel/runtime": "^7.1.2" } }, "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg=="], + "rou3": ["rou3@0.7.12", "", {}, "sha512-iFE4hLDuloSWcD7mjdCDhx2bKcIsYbtOTpfH5MHHLSKMOUyjqQXTeZVa289uuwEGEKFoE/BAPbhaU4B774nceg=="], - "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], + "rtl-css-js": ["rtl-css-js@1.16.1", "", { "dependencies": { "@babel/runtime": "^7.1.2" } }, "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg=="], "safe-array-concat": ["safe-array-concat@1.1.3", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "has-symbols": "^1.1.0", "isarray": "^2.0.5" } }, "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q=="], + "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], + "safe-push-apply": ["safe-push-apply@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "isarray": "^2.0.5" } }, "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA=="], "safe-regex-test": ["safe-regex-test@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-regex": "^1.2.1" } }, "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw=="], "safe-stable-stringify": ["safe-stable-stringify@2.5.0", "", {}, "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA=="], + "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], + "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], "screenfull": ["screenfull@5.2.0", "", {}, "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA=="], "semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "serialize-javascript": ["serialize-javascript@6.0.2", "", { "dependencies": { "randombytes": "^2.1.0" } }, "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g=="], + + "seroval": ["seroval@1.5.0", "", {}, "sha512-OE4cvmJ1uSPrKorFIH9/w/Qwuvi/IMcGbv5RKgcJ/zjA/IohDLU6SVaxFN9FwajbP7nsX0dQqMDes1whk3y+yw=="], + + "seroval-plugins": ["seroval-plugins@1.5.0", "", { "peerDependencies": { "seroval": "^1.0" } }, "sha512-EAHqADIQondwRZIdeW2I636zgsODzoBDwb3PT/+7TLDWyw1Dy/Xv7iGUIEXXav7usHDE9HVhOU61irI3EnyyHA=="], + "set-function-length": ["set-function-length@1.2.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2" } }, "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg=="], "set-function-name": ["set-function-name@2.0.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", "has-property-descriptors": "^1.0.2" } }, "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ=="], @@ -1355,12 +1714,12 @@ "set-proto": ["set-proto@1.0.0", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0" } }, "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw=="], - "sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="], - "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], + "shell-quote": ["shell-quote@1.8.3", "", {}, "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw=="], + "shiki": ["shiki@3.20.0", "", { "dependencies": { "@shikijs/core": "3.20.0", "@shikijs/engine-javascript": "3.20.0", "@shikijs/engine-oniguruma": "3.20.0", "@shikijs/langs": "3.20.0", "@shikijs/themes": "3.20.0", "@shikijs/types": "3.20.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-kgCOlsnyWb+p0WU+01RjkCH+eBVsjL1jOwUYWv0YDWkM2/A46+LDKVs5yZCUXjJG6bj4ndFoAg5iLIIue6dulg=="], "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], @@ -1375,17 +1734,23 @@ "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], + "smob": ["smob@1.5.0", "", {}, "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig=="], + "smtp-address-parser": ["smtp-address-parser@1.0.10", "", { "dependencies": { "nearley": "^2.20.1" } }, "sha512-Osg9LmvGeAG/hyao4mldbflLOkkr3a+h4m1lwKCK5U8M6ZAr7tdXEz/+/vr752TSGE4MNUlUl9cIK2cB8cgzXg=="], "sonner": ["sonner@2.0.7", "", { "peerDependencies": { "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w=="], - "source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + "source-map": ["source-map@0.8.0-beta.0", "", { "dependencies": { "whatwg-url": "^7.0.0" } }, "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA=="], "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + "source-map-support": ["source-map-support@0.5.21", "", { "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="], + + "sourcemap-codec": ["sourcemap-codec@1.4.8", "", {}, "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="], + "space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], - "stable-hash": ["stable-hash@0.0.5", "", {}, "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA=="], + "srvx": ["srvx@0.10.1", "", { "bin": { "srvx": "bin/srvx.mjs" } }, "sha512-A//xtfak4eESMWWydSRFUVvCTQbSwivnGCEf8YGPe2eHU0+Z6znfUTCPF0a7oV3sObSOcrXHlL6Bs9vVctfXdg=="], "stack-generator": ["stack-generator@2.0.10", "", { "dependencies": { "stackframe": "^1.3.4" } }, "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ=="], @@ -1401,8 +1766,6 @@ "string-width-cjs": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - "string.prototype.includes": ["string.prototype.includes@2.0.1", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.3" } }, "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg=="], - "string.prototype.matchall": ["string.prototype.matchall@4.0.12", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "regexp.prototype.flags": "^1.5.3", "set-function-name": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA=="], "string.prototype.repeat": ["string.prototype.repeat@1.0.0", "", { "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" } }, "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w=="], @@ -1415,18 +1778,18 @@ "stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], + "stringify-object": ["stringify-object@3.3.0", "", { "dependencies": { "get-own-enumerable-property-symbols": "^3.0.0", "is-obj": "^1.0.1", "is-regexp": "^1.0.0" } }, "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw=="], + "strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], "strip-ansi-cjs": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "strip-bom": ["strip-bom@3.0.0", "", {}, "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="], + "strip-comments": ["strip-comments@2.0.1", "", {}, "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw=="], "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], "style-mod": ["style-mod@4.1.3", "", {}, "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ=="], - "styled-jsx": ["styled-jsx@5.1.6", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" } }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="], - "stylis": ["stylis@4.3.6", "", {}, "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ=="], "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], @@ -1443,18 +1806,28 @@ "tapable": ["tapable@2.3.0", "", {}, "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg=="], + "temp-dir": ["temp-dir@2.0.0", "", {}, "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg=="], + + "tempy": ["tempy@0.6.0", "", { "dependencies": { "is-stream": "^2.0.0", "temp-dir": "^2.0.0", "type-fest": "^0.16.0", "unique-string": "^2.0.0" } }, "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw=="], + + "terser": ["terser@5.46.0", "", { "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" } }, "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg=="], + "thememirror": ["thememirror@2.0.1", "", { "peerDependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0" } }, "sha512-d5i6FVvWWPkwrm4cHLI3t9AT1OrkAt7Ig8dtdYSofgF7C/eiyNuq6zQzSTusWTde3jpW9WLvA9J/fzNKMUsd0w=="], "throttle-debounce": ["throttle-debounce@3.0.1", "", {}, "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg=="], "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], + "tiny-warning": ["tiny-warning@1.0.3", "", {}, "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="], + "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], "toggle-selection": ["toggle-selection@1.0.6", "", {}, "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="], + "tr46": ["tr46@1.0.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA=="], + "trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], "ts-api-utils": ["ts-api-utils@2.4.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA=="], @@ -1463,7 +1836,7 @@ "ts-json-schema-generator": ["ts-json-schema-generator@2.4.0", "", { "dependencies": { "@types/json-schema": "^7.0.15", "commander": "^13.1.0", "glob": "^11.0.1", "json5": "^2.2.3", "normalize-path": "^3.0.0", "safe-stable-stringify": "^2.5.0", "tslib": "^2.8.1", "typescript": "^5.8.2" }, "bin": { "ts-json-schema-generator": "bin/ts-json-schema-generator.js" } }, "sha512-HbmNsgs58CfdJq0gpteRTxPXG26zumezOs+SB9tgky6MpqiFgQwieCn2MW70+sxpHouZ/w9LW0V6L4ZQO4y1Ug=="], - "tsconfig-paths": ["tsconfig-paths@3.15.0", "", { "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg=="], + "tsconfck": ["tsconfck@3.1.6", "", { "peerDependencies": { "typescript": "^5.0.0" }, "optionalPeers": ["typescript"], "bin": { "tsconfck": "bin/tsconfck.js" } }, "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w=="], "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], @@ -1473,6 +1846,8 @@ "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], + "type-fest": ["type-fest@0.16.0", "", {}, "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg=="], + "typed-array-buffer": ["typed-array-buffer@1.0.3", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-typed-array": "^1.1.14" } }, "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw=="], "typed-array-byte-length": ["typed-array-byte-length@1.0.3", "", { "dependencies": { "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.14" } }, "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg=="], @@ -1483,14 +1858,28 @@ "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], - "typescript-eslint": ["typescript-eslint@8.54.0", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.54.0", "@typescript-eslint/parser": "8.54.0", "@typescript-eslint/typescript-estree": "8.54.0", "@typescript-eslint/utils": "8.54.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ=="], - "uc.micro": ["uc.micro@2.1.0", "", {}, "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A=="], + "ufo": ["ufo@1.6.3", "", {}, "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q=="], + "unbox-primitive": ["unbox-primitive@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", "has-symbols": "^1.1.0", "which-boxed-primitive": "^1.1.1" } }, "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw=="], + "undici": ["undici@7.19.2", "", {}, "sha512-4VQSpGEGsWzk0VYxyB/wVX/Q7qf9t5znLRgs0dzszr9w9Fej/8RVNQ+S20vdXSAyra/bJ7ZQfGv6ZMj7UEbzSg=="], + "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], + "unenv": ["unenv@2.0.0-rc.24", "", { "dependencies": { "pathe": "^2.0.3" } }, "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw=="], + + "unicode-canonical-property-names-ecmascript": ["unicode-canonical-property-names-ecmascript@2.0.1", "", {}, "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg=="], + + "unicode-match-property-ecmascript": ["unicode-match-property-ecmascript@2.0.0", "", { "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" } }, "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q=="], + + "unicode-match-property-value-ecmascript": ["unicode-match-property-value-ecmascript@2.2.1", "", {}, "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg=="], + + "unicode-property-aliases-ecmascript": ["unicode-property-aliases-ecmascript@2.2.0", "", {}, "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ=="], + + "unique-string": ["unique-string@2.0.0", "", { "dependencies": { "crypto-random-string": "^2.0.0" } }, "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg=="], + "unist-util-is": ["unist-util-is@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g=="], "unist-util-position": ["unist-util-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="], @@ -1501,9 +1890,13 @@ "unist-util-visit-parents": ["unist-util-visit-parents@6.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="], + "universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], + "unplugin": ["unplugin@2.1.0", "", { "dependencies": { "acorn": "^8.14.0", "webpack-virtual-modules": "^0.6.2" } }, "sha512-us4j03/499KhbGP8BU7Hrzrgseo+KdfJYWcbcajCOqsAyb8Gk0Yn2kiUIcZISYCb1JFaZfIuG3b42HmguVOKCQ=="], - "unrs-resolver": ["unrs-resolver@1.11.1", "", { "dependencies": { "napi-postinstall": "^0.3.0" }, "optionalDependencies": { "@unrs/resolver-binding-android-arm-eabi": "1.11.1", "@unrs/resolver-binding-android-arm64": "1.11.1", "@unrs/resolver-binding-darwin-arm64": "1.11.1", "@unrs/resolver-binding-darwin-x64": "1.11.1", "@unrs/resolver-binding-freebsd-x64": "1.11.1", "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", "@unrs/resolver-binding-linux-x64-musl": "1.11.1", "@unrs/resolver-binding-wasm32-wasi": "1.11.1", "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" } }, "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg=="], + "unstorage": ["unstorage@2.0.0-alpha.5", "", { "peerDependencies": { "@azure/app-configuration": "^1.9.0", "@azure/cosmos": "^4.7.0", "@azure/data-tables": "^13.3.1", "@azure/identity": "^4.13.0", "@azure/keyvault-secrets": "^4.10.0", "@azure/storage-blob": "^12.29.1", "@capacitor/preferences": "^6.0.3 || ^7.0.0", "@deno/kv": ">=0.12.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.35.6", "@vercel/blob": ">=0.27.3", "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "chokidar": "^4 || ^5", "db0": ">=0.3.4", "idb-keyval": "^6.2.2", "ioredis": "^5.8.2", "lru-cache": "^11.2.2", "mongodb": "^6 || ^7", "ofetch": "*", "uploadthing": "^7.7.4" }, "optionalPeers": ["@azure/app-configuration", "@azure/cosmos", "@azure/data-tables", "@azure/identity", "@azure/keyvault-secrets", "@azure/storage-blob", "@capacitor/preferences", "@deno/kv", "@netlify/blobs", "@planetscale/database", "@upstash/redis", "@vercel/blob", "@vercel/functions", "@vercel/kv", "aws4fetch", "chokidar", "db0", "idb-keyval", "ioredis", "lru-cache", "mongodb", "ofetch", "uploadthing"] }, "sha512-Sj8btci21Twnd6M+N+MHhjg3fVn6lAPElPmvFTe0Y/wR0WImErUdA1PzlAaUavHylJ7uDiFwlZDQKm0elG4b7g=="], + + "upath": ["upath@1.2.0", "", {}, "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg=="], "update-browserslist-db": ["update-browserslist-db@1.2.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="], @@ -1523,10 +1916,26 @@ "victory-vendor": ["victory-vendor@37.3.6", "", { "dependencies": { "@types/d3-array": "^3.0.3", "@types/d3-ease": "^3.0.0", "@types/d3-interpolate": "^3.0.1", "@types/d3-scale": "^4.0.2", "@types/d3-shape": "^3.1.0", "@types/d3-time": "^3.0.0", "@types/d3-timer": "^3.0.0", "d3-array": "^3.1.6", "d3-ease": "^3.0.1", "d3-interpolate": "^3.0.1", "d3-scale": "^4.0.2", "d3-shape": "^3.1.0", "d3-time": "^3.0.0", "d3-timer": "^3.0.1" } }, "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ=="], + "vite": ["vite@7.3.1", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA=="], + + "vite-plugin-pwa": ["vite-plugin-pwa@1.2.0", "", { "dependencies": { "debug": "^4.3.6", "pretty-bytes": "^6.1.1", "tinyglobby": "^0.2.10", "workbox-build": "^7.4.0", "workbox-window": "^7.4.0" }, "peerDependencies": { "@vite-pwa/assets-generator": "^1.0.0", "vite": "^3.1.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["@vite-pwa/assets-generator"] }, "sha512-a2xld+SJshT9Lgcv8Ji4+srFJL4k/1bVbd1x06JIkvecpQkwkvCncD1+gSzcdm3s+owWLpMJerG3aN5jupJEVw=="], + + "vite-tsconfig-paths": ["vite-tsconfig-paths@6.0.5", "", { "dependencies": { "debug": "^4.1.1", "globrex": "^0.1.2", "tsconfck": "^3.0.3" }, "peerDependencies": { "vite": "*" } }, "sha512-f/WvY6ekHykUF1rWJUAbCU7iS/5QYDIugwpqJA+ttwKbxSbzNlqlE8vZSrsnxNQciUW+z6lvhlXMaEyZn9MSig=="], + + "vitefu": ["vitefu@1.1.1", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" }, "optionalPeers": ["vite"] }, "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ=="], + "w3c-keyname": ["w3c-keyname@2.2.8", "", {}, "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="], + "webidl-conversions": ["webidl-conversions@4.0.2", "", {}, "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="], + "webpack-virtual-modules": ["webpack-virtual-modules@0.6.2", "", {}, "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="], + "whatwg-encoding": ["whatwg-encoding@3.1.1", "", { "dependencies": { "iconv-lite": "0.6.3" } }, "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ=="], + + "whatwg-mimetype": ["whatwg-mimetype@4.0.0", "", {}, "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg=="], + + "whatwg-url": ["whatwg-url@7.1.0", "", { "dependencies": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", "webidl-conversions": "^4.0.2" } }, "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg=="], + "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], "which-boxed-primitive": ["which-boxed-primitive@1.1.1", "", { "dependencies": { "is-bigint": "^1.1.0", "is-boolean-object": "^1.2.1", "is-number-object": "^1.1.1", "is-string": "^1.1.1", "is-symbol": "^1.1.1" } }, "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA=="], @@ -1539,29 +1948,81 @@ "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], + "workbox-background-sync": ["workbox-background-sync@7.4.0", "", { "dependencies": { "idb": "^7.0.1", "workbox-core": "7.4.0" } }, "sha512-8CB9OxKAgKZKyNMwfGZ1XESx89GryWTfI+V5yEj8sHjFH8MFelUwYXEyldEK6M6oKMmn807GoJFUEA1sC4XS9w=="], + + "workbox-broadcast-update": ["workbox-broadcast-update@7.4.0", "", { "dependencies": { "workbox-core": "7.4.0" } }, "sha512-+eZQwoktlvo62cI0b+QBr40v5XjighxPq3Fzo9AWMiAosmpG5gxRHgTbGGhaJv/q/MFVxwFNGh/UwHZ/8K88lA=="], + + "workbox-build": ["workbox-build@7.4.0", "", { "dependencies": { "@apideck/better-ajv-errors": "^0.3.1", "@babel/core": "^7.24.4", "@babel/preset-env": "^7.11.0", "@babel/runtime": "^7.11.2", "@rollup/plugin-babel": "^5.2.0", "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-replace": "^2.4.1", "@rollup/plugin-terser": "^0.4.3", "@surma/rollup-plugin-off-main-thread": "^2.2.3", "ajv": "^8.6.0", "common-tags": "^1.8.0", "fast-json-stable-stringify": "^2.1.0", "fs-extra": "^9.0.1", "glob": "^11.0.1", "lodash": "^4.17.20", "pretty-bytes": "^5.3.0", "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": "7.4.0", "workbox-broadcast-update": "7.4.0", "workbox-cacheable-response": "7.4.0", "workbox-core": "7.4.0", "workbox-expiration": "7.4.0", "workbox-google-analytics": "7.4.0", "workbox-navigation-preload": "7.4.0", "workbox-precaching": "7.4.0", "workbox-range-requests": "7.4.0", "workbox-recipes": "7.4.0", "workbox-routing": "7.4.0", "workbox-strategies": "7.4.0", "workbox-streams": "7.4.0", "workbox-sw": "7.4.0", "workbox-window": "7.4.0" } }, "sha512-Ntk1pWb0caOFIvwz/hfgrov/OJ45wPEhI5PbTywQcYjyZiVhT3UrwwUPl6TRYbTm4moaFYithYnl1lvZ8UjxcA=="], + + "workbox-cacheable-response": ["workbox-cacheable-response@7.4.0", "", { "dependencies": { "workbox-core": "7.4.0" } }, "sha512-0Fb8795zg/x23ISFkAc7lbWes6vbw34DGFIMw31cwuHPgDEC/5EYm6m/ZkylLX0EnEbbOyOCLjKgFS/Z5g0HeQ=="], + + "workbox-core": ["workbox-core@7.4.0", "", {}, "sha512-6BMfd8tYEnN4baG4emG9U0hdXM4gGuDU3ectXuVHnj71vwxTFI7WOpQJC4siTOlVtGqCUtj0ZQNsrvi6kZZTAQ=="], + + "workbox-expiration": ["workbox-expiration@7.4.0", "", { "dependencies": { "idb": "^7.0.1", "workbox-core": "7.4.0" } }, "sha512-V50p4BxYhtA80eOvulu8xVfPBgZbkxJ1Jr8UUn0rvqjGhLDqKNtfrDfjJKnLz2U8fO2xGQJTx/SKXNTzHOjnHw=="], + + "workbox-google-analytics": ["workbox-google-analytics@7.4.0", "", { "dependencies": { "workbox-background-sync": "7.4.0", "workbox-core": "7.4.0", "workbox-routing": "7.4.0", "workbox-strategies": "7.4.0" } }, "sha512-MVPXQslRF6YHkzGoFw1A4GIB8GrKym/A5+jYDUSL+AeJw4ytQGrozYdiZqUW1TPQHW8isBCBtyFJergUXyNoWQ=="], + + "workbox-navigation-preload": ["workbox-navigation-preload@7.4.0", "", { "dependencies": { "workbox-core": "7.4.0" } }, "sha512-etzftSgdQfjMcfPgbfaZCfM2QuR1P+4o8uCA2s4rf3chtKTq/Om7g/qvEOcZkG6v7JZOSOxVYQiOu6PbAZgU6w=="], + + "workbox-precaching": ["workbox-precaching@7.4.0", "", { "dependencies": { "workbox-core": "7.4.0", "workbox-routing": "7.4.0", "workbox-strategies": "7.4.0" } }, "sha512-VQs37T6jDqf1rTxUJZXRl3yjZMf5JX/vDPhmx2CPgDDKXATzEoqyRqhYnRoxl6Kr0rqaQlp32i9rtG5zTzIlNg=="], + + "workbox-range-requests": ["workbox-range-requests@7.4.0", "", { "dependencies": { "workbox-core": "7.4.0" } }, "sha512-3Vq854ZNuP6Y0KZOQWLaLC9FfM7ZaE+iuQl4VhADXybwzr4z/sMmnLgTeUZLq5PaDlcJBxYXQ3U91V7dwAIfvw=="], + + "workbox-recipes": ["workbox-recipes@7.4.0", "", { "dependencies": { "workbox-cacheable-response": "7.4.0", "workbox-core": "7.4.0", "workbox-expiration": "7.4.0", "workbox-precaching": "7.4.0", "workbox-routing": "7.4.0", "workbox-strategies": "7.4.0" } }, "sha512-kOkWvsAn4H8GvAkwfJTbwINdv4voFoiE9hbezgB1sb/0NLyTG4rE7l6LvS8lLk5QIRIto+DjXLuAuG3Vmt3cxQ=="], + + "workbox-routing": ["workbox-routing@7.4.0", "", { "dependencies": { "workbox-core": "7.4.0" } }, "sha512-C/ooj5uBWYAhAqwmU8HYQJdOjjDKBp9MzTQ+otpMmd+q0eF59K+NuXUek34wbL0RFrIXe/KKT+tUWcZcBqxbHQ=="], + + "workbox-strategies": ["workbox-strategies@7.4.0", "", { "dependencies": { "workbox-core": "7.4.0" } }, "sha512-T4hVqIi5A4mHi92+5EppMX3cLaVywDp8nsyUgJhOZxcfSV/eQofcOA6/EMo5rnTNmNTpw0rUgjAI6LaVullPpg=="], + + "workbox-streams": ["workbox-streams@7.4.0", "", { "dependencies": { "workbox-core": "7.4.0", "workbox-routing": "7.4.0" } }, "sha512-QHPBQrey7hQbnTs5GrEVoWz7RhHJXnPT+12qqWM378orDMo5VMJLCkCM1cnCk+8Eq92lccx/VgRZ7WAzZWbSLg=="], + + "workbox-sw": ["workbox-sw@7.4.0", "", {}, "sha512-ltU+Kr3qWR6BtbdlMnCjobZKzeV1hN+S6UvDywBrwM19TTyqA03X66dzw1tEIdJvQ4lYKkBFox6IAEhoSEZ8Xw=="], + + "workbox-window": ["workbox-window@7.4.0", "", { "dependencies": { "@types/trusted-types": "^2.0.2", "workbox-core": "7.4.0" } }, "sha512-/bIYdBLAVsNR3v7gYGaV4pQW3M3kEPx5E8vDxGvxo6khTrGtSSCS7QiFKv9ogzBgZiy0OXLP9zO28U/1nF1mfw=="], + "wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], "wrap-ansi-cjs": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], + "ws": ["ws@8.19.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg=="], + + "xmlbuilder2": ["xmlbuilder2@4.0.3", "", { "dependencies": { "@oozcitak/dom": "^2.0.2", "@oozcitak/infra": "^2.0.2", "@oozcitak/util": "^10.0.0", "js-yaml": "^4.1.1" } }, "sha512-bx8Q1STctnNaaDymWnkfQLKofs0mGNN7rLLapJlGuV3VlvegD7Ls4ggMjE3aUSWItCCzU0PEv45lI87iSigiCA=="], + "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], "yaml": ["yaml@2.8.2", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A=="], "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], - "zod": ["zod@4.2.1", "", {}, "sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw=="], + "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], "zod-validation-error": ["zod-validation-error@4.0.2", "", { "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ=="], "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], + "@babel/helper-annotate-as-pure/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@babel/helper-define-polyfill-provider/resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="], + + "@babel/helper-member-expression-to-functions/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@babel/helper-optimise-call-expression/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@babel/helper-skip-transparent-expression-wrappers/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@babel/plugin-transform-modules-amd/@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.3", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", "@babel/traverse": "^7.28.3" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw=="], + "@codemirror/lang-javascript/@codemirror/lint": ["@codemirror/lint@6.9.2", "", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.35.0", "crelt": "^1.0.5" } }, "sha512-sv3DylBiIyi+xKwRCJAAsBZZZWo82shJ/RTMymLabAdtbkV5cSKwWDeCgtUq3v8flTaXS2y1kKkICuRYtUswyQ=="], "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], - "@eslint/config-helpers/@eslint/core": ["@eslint/core@0.17.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ=="], + "@eslint/config-array/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], + + "@eslint/eslintrc/ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], + + "@eslint/eslintrc/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - "@eslint/plugin-kit/@eslint/core": ["@eslint/core@0.17.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ=="], + "@eslint/eslintrc/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], "@radix-ui/react-dialog/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], @@ -1573,69 +2034,131 @@ "@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.4", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA=="], - "@reduxjs/toolkit/immer": ["immer@11.0.1", "", {}, "sha512-naDCyggtcBWANtIrjQEajhhBEuL9b0Zg4zmlWK2CzS6xCWSE39/vvf4LqnMjUAWHBhot4m9MHCM/Z+mfWhUkiA=="], + "@reduxjs/toolkit/immer": ["immer@11.1.3", "", {}, "sha512-6jQTc5z0KJFtr1UgFpIL3N9XSC3saRaI9PwWtzM2pSqkNGtiNkYY2OSwkOGDK2XcTRcLb1pi/aNkKZz0nxVH4Q=="], + + "@rollup/plugin-babel/@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="], + + "@rollup/plugin-babel/@rollup/pluginutils": ["@rollup/pluginutils@3.1.0", "", { "dependencies": { "@types/estree": "0.0.39", "estree-walker": "^1.0.1", "picomatch": "^2.2.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0" } }, "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg=="], + + "@rollup/plugin-babel/rollup": ["rollup@2.79.2", "", { "optionalDependencies": { "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ=="], + + "@rollup/plugin-node-resolve/resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="], + + "@rollup/plugin-replace/@rollup/pluginutils": ["@rollup/pluginutils@3.1.0", "", { "dependencies": { "@types/estree": "0.0.39", "estree-walker": "^1.0.1", "picomatch": "^2.2.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0" } }, "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg=="], + + "@rollup/plugin-replace/magic-string": ["magic-string@0.25.9", "", { "dependencies": { "sourcemap-codec": "^1.4.8" } }, "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ=="], + + "@rollup/plugin-replace/rollup": ["rollup@2.79.2", "", { "optionalDependencies": { "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ=="], "@rollup/pluginutils/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], "@sagold/json-query/@sagold/json-pointer": ["@sagold/json-pointer@5.1.2", "", {}, "sha512-+wAhJZBXa6MNxRScg6tkqEbChEHMgVZAhTHVJ60Y7sbtXtu9XA49KfUkdWlS2x78D6H9nryiKePiYozumauPfA=="], + "@surma/rollup-plugin-off-main-thread/magic-string": ["magic-string@0.25.9", "", { "dependencies": { "sourcemap-codec": "^1.4.8" } }, "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.7.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.7.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.0", "", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" }, "bundled": true }, "sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA=="], + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.1", "", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" }, "bundled": true }, "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A=="], "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + "@tanstack/router-generator/source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], + + "@tanstack/router-plugin/unplugin": ["unplugin@2.3.11", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "acorn": "^8.15.0", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww=="], + + "@tanstack/start-plugin-core/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + + "@tanstack/start-plugin-core/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.40", "", {}, "sha512-s3GeJKSQOwBlzdUrj4ISjJj5SfSh+aqn0wjOar4Bx95iV1ETI7F6S/5hLcfAxZ9kXDcyrAkxPlqmd1ZITttf+w=="], + + "@types/babel__core/@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], + + "@types/babel__core/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@types/babel__generator/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@types/babel__template/@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], + + "@types/babel__template/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@types/babel__traverse/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], "@typescript-eslint/typescript-estree/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - "@typescript-eslint/utils/@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ=="], - "@uiw/codemirror-extensions-basic-setup/@codemirror/lint": ["@codemirror/lint@6.9.2", "", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.35.0", "crelt": "^1.0.5" } }, "sha512-sv3DylBiIyi+xKwRCJAAsBZZZWo82shJ/RTMymLabAdtbkV5cSKwWDeCgtUq3v8flTaXS2y1kKkICuRYtUswyQ=="], + "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "babel-dead-code-elimination/@babel/core": ["@babel/core@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", "@babel/helpers": "^7.28.4", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw=="], + + "babel-dead-code-elimination/@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], + + "babel-dead-code-elimination/@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], + + "babel-dead-code-elimination/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "babel-plugin-react-compiler/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "bun-types/@types/node": ["@types/node@25.1.0", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-t7frlewr6+cbx+9Ohpl0NOTKXZNV9xHRmNOvql47BFJKcEG1CxtxlPEEe+gR9uhVWM4DwhnvTF110mIL4yP9RA=="], + + "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + "codemirror/@codemirror/lint": ["@codemirror/lint@6.9.2", "", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.35.0", "crelt": "^1.0.5" } }, "sha512-sv3DylBiIyi+xKwRCJAAsBZZZWo82shJ/RTMymLabAdtbkV5cSKwWDeCgtUq3v8flTaXS2y1kKkICuRYtUswyQ=="], - "eslint/@eslint/core": ["@eslint/core@0.17.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ=="], + "css-tree/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], - "eslint-config-next/globals": ["globals@16.4.0", "", {}, "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw=="], + "dom-serializer/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], - "eslint-import-resolver-node/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], + "eslint/ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], - "eslint-import-resolver-node/resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="], + "eslint/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "eslint-module-utils/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], + "eslint/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - "eslint-plugin-import/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], + "eslint/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + "eslint-plugin-react/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - "glob/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], + "filelist/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="], - "is-bun-module/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "htmlparser2/entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="], - "juststore/@types/node": ["@types/node@24.10.4", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg=="], + "juststore/@types/node": ["@types/node@24.10.10", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-+0/4J266CBGPUq/ELg7QUHhN25WYjE0wYTPSQJn1xeu8DOlIOPxXxrNGiLmfAWl7HMMgWFWXpt9IDjMWrF5Iow=="], "markdown-it/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], - "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], - "nearley/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], - "next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], + "parse5/entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], "path-scurry/lru-cache": ["lru-cache@11.2.4", "", {}, "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg=="], + "playwright/fsevents": ["fsevents@2.3.2", "", { "os": "darwin" }, "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="], + + "prop-types/react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], + + "react-scan/@babel/core": ["@babel/core@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", "@babel/helpers": "^7.28.4", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw=="], + + "react-scan/@babel/generator": ["@babel/generator@7.28.5", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ=="], + + "react-scan/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + "react-scan/@types/node": ["@types/node@20.19.27", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug=="], - "sharp/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "react-scan/esbuild": ["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" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="], + + "readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "recast/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + + "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], "stacktrace-gps/source-map": ["source-map@0.5.6", "", {}, "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA=="], @@ -1645,11 +2168,13 @@ "strip-ansi-cjs/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - "tsconfig-paths/json5": ["json5@1.0.2", "", { "dependencies": { "minimist": "^1.2.0" }, "bin": { "json5": "lib/cli.js" } }, "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA=="], + "terser/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], - "tsx/esbuild": ["esbuild@0.27.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.2", "@esbuild/android-arm": "0.27.2", "@esbuild/android-arm64": "0.27.2", "@esbuild/android-x64": "0.27.2", "@esbuild/darwin-arm64": "0.27.2", "@esbuild/darwin-x64": "0.27.2", "@esbuild/freebsd-arm64": "0.27.2", "@esbuild/freebsd-x64": "0.27.2", "@esbuild/linux-arm": "0.27.2", "@esbuild/linux-arm64": "0.27.2", "@esbuild/linux-ia32": "0.27.2", "@esbuild/linux-loong64": "0.27.2", "@esbuild/linux-mips64el": "0.27.2", "@esbuild/linux-ppc64": "0.27.2", "@esbuild/linux-riscv64": "0.27.2", "@esbuild/linux-s390x": "0.27.2", "@esbuild/linux-x64": "0.27.2", "@esbuild/netbsd-arm64": "0.27.2", "@esbuild/netbsd-x64": "0.27.2", "@esbuild/openbsd-arm64": "0.27.2", "@esbuild/openbsd-x64": "0.27.2", "@esbuild/openharmony-arm64": "0.27.2", "@esbuild/sunos-x64": "0.27.2", "@esbuild/win32-arm64": "0.27.2", "@esbuild/win32-ia32": "0.27.2", "@esbuild/win32-x64": "0.27.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw=="], + "workbox-build/@babel/core": ["@babel/core@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", "@babel/helpers": "^7.28.4", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw=="], - "tsx/fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + "workbox-build/pretty-bytes": ["pretty-bytes@5.6.0", "", {}, "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg=="], + + "workbox-build/rollup": ["rollup@2.79.2", "", { "optionalDependencies": { "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ=="], "wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], @@ -1657,68 +2182,176 @@ "wrap-ansi-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "@babel/plugin-transform-modules-amd/@babel/helper-module-transforms/@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="], + + "@babel/plugin-transform-modules-amd/@babel/helper-module-transforms/@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], + + "@eslint/eslintrc/ajv/json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], + + "@rollup/plugin-babel/@babel/helper-module-imports/@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], + + "@rollup/plugin-babel/@babel/helper-module-imports/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@rollup/plugin-babel/@rollup/pluginutils/@types/estree": ["@types/estree@0.0.39", "", {}, "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw=="], + + "@rollup/plugin-babel/@rollup/pluginutils/estree-walker": ["estree-walker@1.0.1", "", {}, "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg=="], + + "@rollup/plugin-babel/@rollup/pluginutils/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "@rollup/plugin-replace/@rollup/pluginutils/@types/estree": ["@types/estree@0.0.39", "", {}, "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw=="], + + "@rollup/plugin-replace/@rollup/pluginutils/estree-walker": ["estree-walker@1.0.1", "", {}, "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg=="], + + "@rollup/plugin-replace/@rollup/pluginutils/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], - "@typescript-eslint/utils/@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], + "babel-dead-code-elimination/@babel/core/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + + "babel-dead-code-elimination/@babel/core/@babel/generator": ["@babel/generator@7.28.5", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ=="], + + "babel-dead-code-elimination/@babel/core/@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.27.2", "", { "dependencies": { "@babel/compat-data": "^7.27.2", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ=="], + + "babel-dead-code-elimination/@babel/core/@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.3", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", "@babel/traverse": "^7.28.3" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw=="], + + "babel-dead-code-elimination/@babel/core/@babel/helpers": ["@babel/helpers@7.28.4", "", { "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.28.4" } }, "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w=="], + + "babel-dead-code-elimination/@babel/core/@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="], + + "babel-dead-code-elimination/@babel/traverse/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + + "babel-dead-code-elimination/@babel/traverse/@babel/generator": ["@babel/generator@7.28.5", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ=="], + + "babel-dead-code-elimination/@babel/traverse/@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="], + + "eslint/ajv/json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], + + "filelist/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], + + "react-scan/@babel/core/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + + "react-scan/@babel/core/@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.27.2", "", { "dependencies": { "@babel/compat-data": "^7.27.2", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ=="], + + "react-scan/@babel/core/@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.3", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", "@babel/traverse": "^7.28.3" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw=="], + + "react-scan/@babel/core/@babel/helpers": ["@babel/helpers@7.28.4", "", { "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.28.4" } }, "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w=="], + + "react-scan/@babel/core/@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], + + "react-scan/@babel/core/@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="], + + "react-scan/@babel/core/@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], + + "react-scan/@babel/generator/@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], "react-scan/@types/node/undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], - "string-width-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "react-scan/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], + + "react-scan/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], + + "react-scan/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="], + + "react-scan/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="], + + "react-scan/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="], + + "react-scan/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="], - "tsx/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw=="], + "react-scan/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="], - "tsx/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.27.2", "", { "os": "android", "cpu": "arm" }, "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA=="], + "react-scan/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="], - "tsx/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.2", "", { "os": "android", "cpu": "arm64" }, "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA=="], + "react-scan/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="], - "tsx/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.27.2", "", { "os": "android", "cpu": "x64" }, "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A=="], + "react-scan/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="], - "tsx/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg=="], + "react-scan/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="], - "tsx/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA=="], + "react-scan/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="], - "tsx/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g=="], + "react-scan/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="], - "tsx/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA=="], + "react-scan/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="], - "tsx/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.2", "", { "os": "linux", "cpu": "arm" }, "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw=="], + "react-scan/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="], - "tsx/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw=="], + "react-scan/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="], - "tsx/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.2", "", { "os": "linux", "cpu": "ia32" }, "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w=="], + "react-scan/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="], - "tsx/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.2", "", { "os": "linux", "cpu": "none" }, "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg=="], + "react-scan/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg=="], - "tsx/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.2", "", { "os": "linux", "cpu": "none" }, "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw=="], + "react-scan/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="], - "tsx/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ=="], + "react-scan/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.12", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A=="], - "tsx/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.2", "", { "os": "linux", "cpu": "none" }, "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA=="], + "react-scan/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="], - "tsx/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w=="], + "react-scan/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg=="], - "tsx/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.2", "", { "os": "linux", "cpu": "x64" }, "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA=="], + "react-scan/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="], - "tsx/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.2", "", { "os": "none", "cpu": "arm64" }, "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw=="], + "react-scan/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="], - "tsx/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.2", "", { "os": "none", "cpu": "x64" }, "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA=="], + "react-scan/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="], - "tsx/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA=="], + "react-scan/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], - "tsx/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg=="], + "string-width-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "workbox-build/@babel/core/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + + "workbox-build/@babel/core/@babel/generator": ["@babel/generator@7.28.5", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ=="], + + "workbox-build/@babel/core/@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.27.2", "", { "dependencies": { "@babel/compat-data": "^7.27.2", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ=="], - "tsx/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.2", "", { "os": "none", "cpu": "arm64" }, "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag=="], + "workbox-build/@babel/core/@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.3", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", "@babel/traverse": "^7.28.3" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw=="], - "tsx/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg=="], + "workbox-build/@babel/core/@babel/helpers": ["@babel/helpers@7.28.4", "", { "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.28.4" } }, "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w=="], - "tsx/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg=="], + "workbox-build/@babel/core/@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], - "tsx/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ=="], + "workbox-build/@babel/core/@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="], - "tsx/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.2", "", { "os": "win32", "cpu": "x64" }, "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ=="], + "workbox-build/@babel/core/@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], + + "workbox-build/@babel/core/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], "wrap-ansi-cjs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], "wrap-ansi-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "@babel/plugin-transform-modules-amd/@babel/helper-module-transforms/@babel/helper-module-imports/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@babel/plugin-transform-modules-amd/@babel/helper-module-transforms/@babel/traverse/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + + "@babel/plugin-transform-modules-amd/@babel/helper-module-transforms/@babel/traverse/@babel/generator": ["@babel/generator@7.28.5", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ=="], + + "@babel/plugin-transform-modules-amd/@babel/helper-module-transforms/@babel/traverse/@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], + + "@babel/plugin-transform-modules-amd/@babel/helper-module-transforms/@babel/traverse/@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="], + + "@babel/plugin-transform-modules-amd/@babel/helper-module-transforms/@babel/traverse/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@rollup/plugin-babel/@babel/helper-module-imports/@babel/traverse/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + + "@rollup/plugin-babel/@babel/helper-module-imports/@babel/traverse/@babel/generator": ["@babel/generator@7.28.5", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ=="], + + "@rollup/plugin-babel/@babel/helper-module-imports/@babel/traverse/@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], + + "@rollup/plugin-babel/@babel/helper-module-imports/@babel/traverse/@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="], + + "babel-dead-code-elimination/@babel/core/@babel/helper-compilation-targets/@babel/compat-data": ["@babel/compat-data@7.28.5", "", {}, "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA=="], + + "babel-dead-code-elimination/@babel/core/@babel/helper-module-transforms/@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="], + + "react-scan/@babel/core/@babel/helper-compilation-targets/@babel/compat-data": ["@babel/compat-data@7.28.5", "", {}, "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA=="], + + "react-scan/@babel/core/@babel/helper-module-transforms/@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="], + + "workbox-build/@babel/core/@babel/helper-compilation-targets/@babel/compat-data": ["@babel/compat-data@7.28.5", "", {}, "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA=="], + + "workbox-build/@babel/core/@babel/helper-module-transforms/@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="], } } diff --git a/components/ReactScan.tsx b/components/ReactScan.tsx deleted file mode 100644 index 754ae267..00000000 --- a/components/ReactScan.tsx +++ /dev/null @@ -1,14 +0,0 @@ -'use client' - -import { type JSX, useEffect } from 'react' -import { scan } from 'react-scan' - -export default function ReactScan(): JSX.Element { - useEffect(() => { - scan({ - enabled: process.env.NODE_ENV === 'development', - }) - }, []) - - return <> -} diff --git a/compose.yml b/compose.yml index b3be1e0e..abac5cc1 100644 --- a/compose.yml +++ b/compose.yml @@ -3,36 +3,31 @@ services: frontend: container_name: godoxy-frontend-next-dev restart: no - image: godoxy-frontend + image: oven/bun:1.3.8-alpine env_file: .env user: 1000:1000 - build: - context: . - dockerfile: ${DOCKERFILE:-dev.Dockerfile} + working_dir: ${PWD:?PWD is not set, please run from make dev} + command: bun --bun vite dev --host 0.0.0.0 --port 3000 + expose: + - 3000 + environment: + - NODE_ENV=development volumes: - - ./node_modules:/app/node_modules:ro - - ./package.json:/app/package.json:ro - - ./bun.lock:/app/bun.lock:ro - - ./app:/app/app:ro - - ./components:/app/components:ro - - ./hooks:/app/hooks:ro - - ./lib:/app/lib:ro - - ./public:/app/public:ro - - ./types:/app/types:ro - - ./next.config.ts:/app/next.config.ts:ro - - ./tsconfig.json:/app/tsconfig.json:ro - - ./eslint.config.ts:/app/eslint.config.ts:ro - - ./site-config.ts:/app/site-config.ts:ro - - ./postcss.config.mjs:/app/postcss.config.mjs:ro - - ./juststore:/app/juststore:ro - - ./juststore-shadcn:/app/juststore-shadcn:ro + - ./node_modules:${PWD}/node_modules:rw + - ./package.json:${PWD}/package.json:rw + - ./bun.lock:${PWD}/bun.lock:rw + - ./src:${PWD}/src:rw + - ./public:${PWD}/public:rw + - ./vite.config.ts:${PWD}/vite.config.ts:rw + - ./tsconfig.json:${PWD}/tsconfig.json:rw + - ./juststore:${PWD}/juststore:rw + - ./juststore-shadcn:${PWD}/juststore-shadcn:rw + - ./wiki:${PWD}/wiki:rw tmpfs: - /var/cache/nginx:uid=1000,gid=1000 - - /app:rw,uid=1000,gid=1000 + - ${PWD}/dist:rw,uid=1000,gid=1000 + - ${PWD}/.tanstack:rw,uid=1000,gid=1000 labels: proxy.aliases: godoxy-dev - proxy.*: | - healthcheck: - disabled: true - homepage: - show: false + proxy.#1.rule_file: embed://webui.yml + proxy.#1.healthcheck.disable: true diff --git a/dev.Dockerfile b/dev.Dockerfile deleted file mode 100644 index 539f990b..00000000 --- a/dev.Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM oven/bun:1.3.8-alpine AS base - -HEALTHCHECK NONE - -ENV NEXT_TELEMETRY_DISABLED=1 -ENV NODE_ENV=development - -WORKDIR /app - -EXPOSE 3000 - -LABEL "proxy.#1.rule_file"="embed://webui.yml" - -CMD ["bun", "--bun", "next", "dev"] diff --git a/eslint.config.mjs b/eslint.config.mjs deleted file mode 100644 index 2571bdb5..00000000 --- a/eslint.config.mjs +++ /dev/null @@ -1,23 +0,0 @@ -import nextVitals from 'eslint-config-next/core-web-vitals' -import nextTs from 'eslint-config-next/typescript' -import prettier from 'eslint-config-prettier/flat' -import reactRefresh from 'eslint-plugin-react-refresh' -import { defineConfig, globalIgnores } from 'eslint/config' - -export default defineConfig([ - ...nextVitals, - ...nextTs, - prettier, - reactRefresh.configs.recommended, - reactRefresh.configs.next, - globalIgnores([ - 'components/ui/**', - 'wiki/**', - '.next/**', - 'postcss.config.mjs', - 'eslint.config.mjs', - 'next-env.d.ts', - '.trunk/**', - 'juststore/dist/**', - ]), -]) diff --git a/juststore b/juststore index 5e8187da..f8361a8a 160000 --- a/juststore +++ b/juststore @@ -1 +1 @@ -Subproject commit 5e8187da8c70acce156900af5079fc127acd05c6 +Subproject commit f8361a8a1cd45bac916cc1e28191c9b309899b53 diff --git a/juststore-shadcn b/juststore-shadcn index fa474923..22fd85a9 160000 --- a/juststore-shadcn +++ b/juststore-shadcn @@ -1 +1 @@ -Subproject commit fa474923f1425818819eda8cc8a73e3e422e1ef0 +Subproject commit 22fd85a92faeb25805e7f3a6e6550f83711a88a2 diff --git a/lite-next.config.ts b/lite-next.config.ts deleted file mode 100644 index eb8ad2d7..00000000 --- a/lite-next.config.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { NextConfig } from 'next' - -const config: NextConfig = { - output: 'export', - images: { - unoptimized: true, - }, - reactCompiler: { - compilationMode: 'annotation', - }, -} - -export default config diff --git a/lite.Dockerfile b/lite.Dockerfile index 1204b17a..9a49a6e7 100644 --- a/lite.Dockerfile +++ b/lite.Dockerfile @@ -8,45 +8,54 @@ WORKDIR /src # git is for building wiki (vitepress deps) RUN apk add --no-cache git=2.49.1-r0 make=4.4.1-r3 -# Install dependencies based on the preferred package manager +# wiki stage for vitepress deps +FROM utils-deps AS wiki-deps + COPY wiki/package.json wiki/bun.lock ./ RUN bun i -D --frozen-lockfile -# install dependencies into temp directory -# this will cache them and speed up future builds -FROM base AS install +# install stage for webui deps +FROM utils-deps AS install RUN mkdir -p /temp/dev COPY package.json bun.lock /temp/dev/ COPY juststore/package.json juststore/bun.lock /temp/dev/juststore/ +COPY juststore-shadcn/package.json juststore-shadcn/bun.lock /temp/dev/juststore-shadcn/ WORKDIR /temp/dev RUN bun install --frozen-lockfile -# copy node_modules from temp directory -# then copy all (non-ignored) project files into the image -FROM utils-deps AS prerelease -WORKDIR /app -COPY --from=install /temp/dev/node_modules node_modules -COPY . . -ENV NEXT_TELEMETRY_DISABLED=1 -ENV NODE_ENV=production -# for lite image, we need to export the build -RUN cp lite-next.config.ts next.config.ts && \ - make gen-schema && bun --bun run build - -# Rebuild the source code only when needed -FROM utils-deps AS wiki-builder +# build wiki +FROM wiki-deps AS wiki-builder WORKDIR /src COPY wiki . RUN sed -i "s|srcDir: 'src',|srcDir: 'src', base: '/wiki',|" .vitepress/config.mts # redirect back to GoDoxy WebUI on the same tab when pressing "Home" +ENV NODE_ENV=production RUN sed -i "s|link: '/'|link: '/../', rel: 'noopener noreferrer', target: '_self'|" .vitepress/config.mts && \ bun --bun run docs:build +# schema-gen stage for generating schema +FROM install AS schema-gen +COPY src/types/godoxy/ ./src/types/godoxy/ +COPY Makefile ./Makefile +COPY tsconfig.json ./tsconfig.json +RUN make gen-schema + +# copy node_modules from temp directory +# then copy all (non-ignored) project files into the image +FROM base AS prerelease +WORKDIR /app +COPY --from=install /temp/dev/node_modules node_modules +COPY . . +COPY --from=schema-gen /temp/dev/src/types/godoxy/*.json ./src/types/godoxy/ + +# for lite image, we want a fully static output +ENV NODE_ENV=production +RUN bun --bun vite build --config lite.vite.config.ts + # Production image, copy all the files and run nginx FROM nginx:1-alpine ENV NODE_ENV=production -ENV NEXT_TELEMETRY_DISABLED=1 COPY nginx.conf /etc/nginx/conf.d/default.conf @@ -54,13 +63,11 @@ USER nginx WORKDIR /app -COPY --from=prerelease --chown=nginx:nginx /app/out ./out +COPY --from=prerelease --chown=nginx:nginx /app/.output/public ./out COPY --from=wiki-builder --chown=nginx:nginx /src/.vitepress/dist ./out/wiki EXPOSE 80 -ENV NODE_ENV=production - LABEL "proxy.*.rule_file"="embed://webui.yml" CMD ["nginx", "-g", "daemon off;"] diff --git a/lite.dev.Dockerfile b/lite.dev.Dockerfile deleted file mode 100644 index a8fc3ce8..00000000 --- a/lite.dev.Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM oven/bun:1.3.8-alpine AS base - -HEALTHCHECK NONE - -ENV NEXT_TELEMETRY_DISABLED=1 -ENV NODE_ENV=development - -USER 1000:1000 - -WORKDIR /app - -EXPOSE 3000 - -CMD ["bun", "--bun", "run", "dev"] diff --git a/lite.vite.config.ts b/lite.vite.config.ts new file mode 100644 index 00000000..abdb6e61 --- /dev/null +++ b/lite.vite.config.ts @@ -0,0 +1,83 @@ +/// +import tailwindcss from '@tailwindcss/vite' +import { tanstackStart } from '@tanstack/react-start/plugin/vite' +import viteReact from '@vitejs/plugin-react' +import { defineConfig } from 'vite' +import tsconfigPaths from 'vite-tsconfig-paths' +import { nitro } from 'nitro/vite' +import { siteConfig } from '@/site-config' +import { VitePWA } from 'vite-plugin-pwa' + +export default defineConfig({ + server: { + port: 3000, + allowedHosts: true, + }, + optimizeDeps: { + include: ['juststore'], + }, + plugins: [ + tailwindcss(), + tsconfigPaths(), + nitro({ + minify: true, + sourcemap: false, + serverDir: false, + }), + tanstackStart({ + prerender: { + enabled: true, + autoSubfolderIndex: true, + autoStaticPathsDiscovery: true, + crawlLinks: false, + }, + }), + viteReact({ + babel: { + plugins: [ + [ + 'babel-plugin-react-compiler', + { + compilationMode: 'annotation', + }, + ], + ], + }, + }), + pwaConfig('.output/public'), + pwaConfig('.output/server'), + ], +}) + +function pwaConfig(outdir: string) { + return VitePWA({ + registerType: 'autoUpdate', + includeAssets: ['favicon.ico', 'apple-icon.png'], + outDir: outdir, + workbox: { + navigateFallback: null, + }, + manifest: { + name: siteConfig.metadata.title, + short_name: siteConfig.metadata.title, + description: siteConfig.metadata.description, + start_url: '/', + icons: [ + { + src: '/web-app-manifest-192x192.png', + sizes: '192x192', + type: 'image/png', + purpose: 'maskable', + }, + { + src: '/web-app-manifest-512x512.png', + sizes: '512x512', + type: 'image/png', + purpose: 'maskable', + }, + ], + theme_color: '#fffbfb', + background_color: '#000000', + display: 'standalone', + }}) +} \ No newline at end of file diff --git a/next.config.ts b/next.config.ts deleted file mode 100644 index d9a4644f..00000000 --- a/next.config.ts +++ /dev/null @@ -1,24 +0,0 @@ -import type { NextConfig } from 'next' - -const config: NextConfig = { - output: 'standalone', - - // does not work with GoDoxy when modifying html body - // cacheComponents: process.env.NODE_ENV !== 'development', // Partial Pre-Rendering (Next.js 16) - enablePrerenderSourceMaps: true, - experimental: { - turbopackFileSystemCacheForDev: true, - }, - transpilePackages: ['juststore', 'juststore-shadcn'], - rewrites: async () => [ - { - source: '/wiki/:path*', - destination: '/wiki/:path*.html', - }, - ], - reactCompiler: { - compilationMode: 'annotation', - }, -} - -export default config diff --git a/nginx.conf b/nginx.conf index 7acd0ef2..6ba9050d 100644 --- a/nginx.conf +++ b/nginx.conf @@ -6,17 +6,19 @@ server { server_name _; root /app/out; + index index.html; - # Handler: if /{path} is requested, try /{path}, then /{path}.html, then /index.html for SPA routing + # Avoid automatic 301 redirects for directories to prevent loops with SPA routers + absolute_redirect off; + + # Handler: try exact file, then index.html in directory, then .html file, then fallback to SPA shell location / { - try_files $uri $uri.html $uri/ /index.html; + try_files $uri $uri/index.html $uri.html /_shell.html; } - # Serve Next.js static assets (CSS/JS/etc) - location ^~ /_next/static/ { - alias /app/out/_next/static/; - add_header Cache-Control "public, max-age=31536000, immutable"; - access_log off; + # Wiki: try exact file, then .html file, then index.html in directory + location /wiki/ { + try_files $uri $uri.html $uri/index.html =404; } # Serve static assets diff --git a/package.json b/package.json index 3feef5da..6a6e5c62 100644 --- a/package.json +++ b/package.json @@ -2,17 +2,16 @@ "name": "godoxy-frontend", "version": "0.18.0", "private": true, + "type": "module", "scripts": { - "dev": "bun --bun next dev", - "build": "bun --bun next build", - "check": "eslint lint && tsc --noEmit", - "lint": "eslint", - "lint:fix": "eslint --fix", - "preview": "bun --bun next build && bun --bun next start", - "start": "bun --bun next start", + "dev": "vite dev", + "build": "vite build", + "start": "bun --bun .output/server/index.mjs", + "check": "biome check", + "lint": "biome lint", + "lint:fix": "biome lint --fix", "typecheck": "tsc --noEmit", - "format:write": "prettier --write \"**/*.{ts,tsx,js,jsx,mdx}\" --cache", - "format:check": "prettier --check \"**/*.{ts,tsx,js,jsx,mdx}\" --cache" + "format": "biome format" }, "packageManager": "bun@1.3.8", "dependencies": { @@ -23,8 +22,11 @@ "@codemirror/lang-yaml": "^6.1.2", "@codemirror/lint": "^6.9.3", "@fontsource/cascadia-code": "^5.2.3", + "@fontsource/geist": "^5.2.8", + "@fontsource/geist-mono": "^5.2.7", "@tabler/icons-react": "^3.36.1", - "@tailwindcss/postcss": "^4.1.18", + "@tanstack/react-router": "^1.158.0", + "@tanstack/react-start": "^1.158.0", "@uiw/react-codemirror": "^4.25.4", "@xterm/addon-fit": "^0.11.0", "@xterm/addon-web-fonts": "^0.1.0", @@ -40,10 +42,7 @@ "embla-carousel-react": "^8.6.0", "juststore": "./juststore", "lucide-react": "^0.563.0", - "motion": "^12.29.2", - "next": "^16.1.6", - "next-themes": "^0.4.6", - "postcss": "^8.5.6", + "motion": "^12.31.0", "react": "^19.2.4", "react-dom": "^19.2.4", "react-fast-compare": "^3.2.2", @@ -59,31 +58,22 @@ "yaml": "^2.8.2" }, "devDependencies": { - "@eslint/compat": "^2.0.1", - "@eslint/eslintrc": "^3.3.3", - "@eslint/js": "^9.39.2", - "@next/eslint-plugin-next": "^16.1.6", - "@react-types/shared": "^3.32.1", + "@biomejs/biome": "^2.3.14", + "@react-types/shared": "^3.33.0", + "@tailwindcss/vite": "^4.1.18", + "@tanstack/devtools-vite": "^0.5.0", "@types/bun": "^1.3.8", - "@types/eslint": "^9.6.1", - "@types/node": "^25.1.0", + "@types/node": "^25.2.0", "@types/react": "^19.2.10", "@types/react-dom": "^19.2.3", - "@typescript-eslint/eslint-plugin": "^8.54.0", - "@typescript-eslint/parser": "^8.54.0", + "@vitejs/plugin-react": "^5.1.3", "babel-plugin-react-compiler": "^1.0.0", - "eslint": "^9.39.2", - "eslint-config-next": "^16.1.6", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-import": "^2.32.0", - "eslint-plugin-prettier": "^5.5.5", - "eslint-plugin-react": "^7.37.5", - "eslint-plugin-react-hooks": "^7.0.1", - "eslint-plugin-react-refresh": "^0.4.26", - "prettier": "^3.8.1", + "nitro": "^3.0.1-alpha.2", "ts-json-schema-generator": "^2.4.0", "typescript": "^5.9.3", - "typescript-eslint": "^8.54.0" + "vite": "^7.3.1", + "vite-plugin-pwa": "^1.2.0", + "vite-tsconfig-paths": "^6.0.5" }, "resolutions": { "shiki": "^3", @@ -93,7 +83,6 @@ "@shikijs/markdown-it": "^3", "@shikijs/rehype": "^3", "js-yaml": "^4.1.1", - "next": ">=16.0.10", "mdast-util-to-hast": ">=13.2.1", "change-case": "^5.4.4", "preact": "^10.28.2" @@ -101,4 +90,4 @@ "trustedDependencies": [ "unrs-resolver" ] -} \ No newline at end of file +} diff --git a/postcss.config.mjs b/postcss.config.mjs deleted file mode 100644 index 54e87396..00000000 --- a/postcss.config.mjs +++ /dev/null @@ -1,6 +0,0 @@ -const config = { - plugins: { - "@tailwindcss/postcss": {}, - }, -}; -export default config; \ No newline at end of file diff --git a/app/apple-icon.png b/public/apple-icon.png similarity index 100% rename from app/apple-icon.png rename to public/apple-icon.png diff --git a/app/favicon.ico b/public/favicon.ico similarity index 100% rename from app/favicon.ico rename to public/favicon.ico diff --git a/app/icon0.svg b/public/icon0.svg similarity index 100% rename from app/icon0.svg rename to public/icon0.svg diff --git a/app/icon1.png b/public/icon1.png similarity index 100% rename from app/icon1.png rename to public/icon1.png diff --git a/components/AppIcon.tsx b/src/components/AppIcon.tsx similarity index 96% rename from components/AppIcon.tsx rename to src/components/AppIcon.tsx index 9c347483..a920d432 100644 --- a/components/AppIcon.tsx +++ b/src/components/AppIcon.tsx @@ -1,5 +1,5 @@ +import { useTheme } from '@/components/ThemeProvider' import { cn } from '@/lib/utils' -import { useTheme } from 'next-themes' import { useMemo } from 'react' import { Avatar, AvatarFallback, AvatarImage } from './ui/avatar' diff --git a/src/components/DefaultCatchBoundary.tsx b/src/components/DefaultCatchBoundary.tsx new file mode 100644 index 00000000..16dcd090 --- /dev/null +++ b/src/components/DefaultCatchBoundary.tsx @@ -0,0 +1,47 @@ +import type { ErrorComponentProps } from '@tanstack/react-router' +import { ErrorComponent, Link, rootRouteId, useMatch, useRouter } from '@tanstack/react-router' + +export function DefaultCatchBoundary({ error }: ErrorComponentProps) { + const router = useRouter() + const isRoot = useMatch({ + strict: false, + select: state => state.id === rootRouteId, + }) + + console.error('DefaultCatchBoundary Error:', error) + + return ( +
+ +
+ + {isRoot ? ( + + Home + + ) : ( + { + e.preventDefault() + window.history.back() + }} + > + Go Back + + )} +
+
+ ) +} diff --git a/components/GoDoxyError.tsx b/src/components/GoDoxyError.tsx similarity index 99% rename from components/GoDoxyError.tsx rename to src/components/GoDoxyError.tsx index dc791ff8..bbac4e32 100644 --- a/components/GoDoxyError.tsx +++ b/src/components/GoDoxyError.tsx @@ -1,5 +1,3 @@ -'use client' - import type { ReactNode } from 'react' import { useMemo } from 'react' diff --git a/components/IconSearchField.tsx b/src/components/IconSearchField.tsx similarity index 100% rename from components/IconSearchField.tsx rename to src/components/IconSearchField.tsx diff --git a/components/LoadingRing.tsx b/src/components/LoadingRing.tsx similarity index 100% rename from components/LoadingRing.tsx rename to src/components/LoadingRing.tsx diff --git a/components/LogoutButton.tsx b/src/components/LogoutButton.tsx similarity index 100% rename from components/LogoutButton.tsx rename to src/components/LogoutButton.tsx diff --git a/src/components/NotFound.tsx b/src/components/NotFound.tsx new file mode 100644 index 00000000..22348fa9 --- /dev/null +++ b/src/components/NotFound.tsx @@ -0,0 +1,25 @@ +import { Link } from '@tanstack/react-router' + +export function NotFound({ children }: { children?: React.ReactNode }) { + return ( +
+
+ {children ||

The page you are looking for does not exist.

} +
+

+ + + Start Over + +

+
+ ) +} diff --git a/components/ObjectDataList.tsx b/src/components/ObjectDataList.tsx similarity index 96% rename from components/ObjectDataList.tsx rename to src/components/ObjectDataList.tsx index 4c2a6a2e..184d9d01 100644 --- a/components/ObjectDataList.tsx +++ b/src/components/ObjectDataList.tsx @@ -1,3 +1,4 @@ +import { useTheme } from '@/components/ThemeProvider' import { cn } from '@/lib/utils' import { html } from '@codemirror/lang-html' import { json } from '@codemirror/lang-json' @@ -7,7 +8,6 @@ import ReactCodeMirror, { type Extension, type ReactCodeMirrorProps, } from '@uiw/react-codemirror' -import { useTheme } from 'next-themes' import { memo, useCallback, type ReactNode } from 'react' import { toast } from 'sonner' import { coolGlow, noctisLilac } from 'thememirror' @@ -113,7 +113,7 @@ const ObjectDataList = memo(function ObjectDataList({ ) }) -const Value = memo(function Value({ v }: { v: unknown }) { +function Value({ v }: { v: unknown }) { let stringify = true let processedValue: string | ReactNode = '' @@ -139,9 +139,9 @@ const Value = memo(function Value({ v }: { v: unknown }) { } return processedValue -}) +} -export const CodeMirror = memo(function ({ +export const CodeMirror = memo(({ className, value, setValue, @@ -156,7 +156,7 @@ export const CodeMirror = memo(function ({ readOnly?: boolean extensions?: Extension[] language?: string -} & Omit) { +} & Omit) => { const { resolvedTheme } = useTheme() const handleCopy = useCallback(async () => { diff --git a/components/SectionedForm.tsx b/src/components/SectionedForm.tsx similarity index 100% rename from components/SectionedForm.tsx rename to src/components/SectionedForm.tsx diff --git a/src/components/ThemeProvider.tsx b/src/components/ThemeProvider.tsx new file mode 100644 index 00000000..a822f52e --- /dev/null +++ b/src/components/ThemeProvider.tsx @@ -0,0 +1,116 @@ +import { ScriptOnce } from '@tanstack/react-router' +import { createClientOnlyFn, createIsomorphicFn } from '@tanstack/react-start' +import { createContext, type ReactNode, use, useEffect, useState } from 'react' + +const UserThemeSchema = ['light', 'dark', 'system'] as const + +export type UserTheme = (typeof UserThemeSchema)[number] +export type AppTheme = 'light' | 'dark' + +const themeStorageKey = 'ui-theme' + +const getStoredUserTheme = createIsomorphicFn() + .server((): UserTheme => 'system') + .client((): UserTheme => { + const stored = localStorage.getItem(themeStorageKey) as UserTheme | null + return stored && UserThemeSchema.includes(stored) ? stored : 'system' + }) + +const setStoredTheme = createClientOnlyFn((theme: UserTheme) => { + const validatedTheme = UserThemeSchema.includes(theme) ? theme : 'system' + localStorage.setItem(themeStorageKey, validatedTheme) +}) + +const getSystemTheme = createIsomorphicFn() + .server((): AppTheme => 'light') + .client((): AppTheme => { + return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' + }) + +const handleThemeChange = createClientOnlyFn((userTheme: UserTheme) => { + const validatedTheme = UserThemeSchema.includes(userTheme) ? userTheme : 'system' + + const root = document.documentElement + root.classList.remove('light', 'dark', 'system') + + if (validatedTheme === 'system') { + const systemTheme = getSystemTheme() + root.classList.add(systemTheme, 'system') + } else { + root.classList.add(validatedTheme) + } +}) + +const setupPreferredListener = createClientOnlyFn(() => { + const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)') + const handler = () => handleThemeChange('system') + mediaQuery.addEventListener('change', handler) + return () => mediaQuery.removeEventListener('change', handler) +}) + +const themeScript = (() => { + function themeFn() { + try { + const storedTheme = localStorage.getItem('ui-theme') || 'system' + const validTheme = ['light', 'dark', 'system'].includes(storedTheme) ? storedTheme : 'system' + + if (validTheme === 'system') { + const systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches + ? 'dark' + : 'light' + document.documentElement.classList.add(systemTheme, 'system') + } else { + document.documentElement.classList.add(validTheme) + } + } catch { + const systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches + ? 'dark' + : 'light' + document.documentElement.classList.add(systemTheme, 'system') + } + } + return `(${themeFn.toString()})();` +})() + +type ThemeContextProps = { + userTheme: UserTheme + resolvedTheme: AppTheme + setTheme: (theme: UserTheme) => void +} +const ThemeContext = createContext(undefined) + +type ThemeProviderProps = { + children: ReactNode +} +export function ThemeProvider({ children }: ThemeProviderProps) { + const [userTheme, setUserTheme] = useState(getStoredUserTheme) + + useEffect(() => { + if (userTheme !== 'system') return + return setupPreferredListener() + }, [userTheme]) + + const resolvedTheme = userTheme === 'system' ? getSystemTheme() : userTheme + + const setTheme = (newUserTheme: UserTheme) => { + const validatedTheme = UserThemeSchema.includes(newUserTheme) ? newUserTheme : 'system' + setUserTheme(validatedTheme) + setStoredTheme(validatedTheme) + handleThemeChange(validatedTheme) + } + + return ( + + {themeScript} + {children} + + ) +} + +export const useTheme = () => { + const context = use(ThemeContext) + if (!context) { + throw new Error('useTheme must be used within a ThemeProvider') + } + return context +} diff --git a/components/VersionText.tsx b/src/components/VersionText.tsx similarity index 97% rename from components/VersionText.tsx rename to src/components/VersionText.tsx index 68c8655e..e64980a7 100644 --- a/components/VersionText.tsx +++ b/src/components/VersionText.tsx @@ -1,4 +1,3 @@ -'use client' import { api } from '@/lib/api-client' import { toastError } from '@/lib/toast' import { cn } from '@/lib/utils' diff --git a/components/YAMLEditor.tsx b/src/components/YAMLEditor.tsx similarity index 100% rename from components/YAMLEditor.tsx rename to src/components/YAMLEditor.tsx diff --git a/components/config_editor/AddFilePopoverButton.tsx b/src/components/config_editor/AddFilePopoverButton.tsx similarity index 100% rename from components/config_editor/AddFilePopoverButton.tsx rename to src/components/config_editor/AddFilePopoverButton.tsx diff --git a/components/config_editor/ConfigContent.tsx b/src/components/config_editor/ConfigContent.tsx similarity index 99% rename from components/config_editor/ConfigContent.tsx rename to src/components/config_editor/ConfigContent.tsx index 4d3ee897..3f2ddb21 100644 --- a/components/config_editor/ConfigContent.tsx +++ b/src/components/config_editor/ConfigContent.tsx @@ -1,4 +1,3 @@ -'use client' import { cn } from '@/lib/utils' import { AnimatePresence, motion } from 'motion/react' import { useState } from 'react' diff --git a/components/config_editor/ConfigFilesListProvider.tsx b/src/components/config_editor/ConfigFilesListProvider.tsx similarity index 97% rename from components/config_editor/ConfigFilesListProvider.tsx rename to src/components/config_editor/ConfigFilesListProvider.tsx index 3c67c365..e9177813 100644 --- a/components/config_editor/ConfigFilesListProvider.tsx +++ b/src/components/config_editor/ConfigFilesListProvider.tsx @@ -1,5 +1,3 @@ -'use client' - import type { FileType } from '@/lib/api' import { api } from '@/lib/api-client' import type { ConfigFiles } from '@/types/file' diff --git a/components/config_editor/ConfigHeaderActions.tsx b/src/components/config_editor/ConfigHeaderActions.tsx similarity index 99% rename from components/config_editor/ConfigHeaderActions.tsx rename to src/components/config_editor/ConfigHeaderActions.tsx index eb6a2ce4..711ad7a0 100644 --- a/components/config_editor/ConfigHeaderActions.tsx +++ b/src/components/config_editor/ConfigHeaderActions.tsx @@ -1,5 +1,3 @@ -'use client' - import { createContext, useContext, useEffect, type ReactNode } from 'react' import { createPortal } from 'react-dom' diff --git a/components/config_editor/ConfigReloadButton.tsx b/src/components/config_editor/ConfigReloadButton.tsx similarity index 100% rename from components/config_editor/ConfigReloadButton.tsx rename to src/components/config_editor/ConfigReloadButton.tsx diff --git a/components/config_editor/ConfigSaveButton.tsx b/src/components/config_editor/ConfigSaveButton.tsx similarity index 100% rename from components/config_editor/ConfigSaveButton.tsx rename to src/components/config_editor/ConfigSaveButton.tsx diff --git a/components/config_editor/ConfigStateSyncronizer.tsx b/src/components/config_editor/ConfigStateSyncronizer.tsx similarity index 98% rename from components/config_editor/ConfigStateSyncronizer.tsx rename to src/components/config_editor/ConfigStateSyncronizer.tsx index 0889a91e..12234b26 100644 --- a/components/config_editor/ConfigStateSyncronizer.tsx +++ b/src/components/config_editor/ConfigStateSyncronizer.tsx @@ -1,11 +1,9 @@ -'use client' - import { api, formatErrorString } from '@/lib/api-client' import type { ConfigFile } from '@/types/file' import type { Config } from '@/types/godoxy' import { AxiosError } from 'axios' +import { isEqual } from 'juststore' import { useEffect } from 'react' -import isEqual from 'react-fast-compare' import { useMount } from 'react-use' import { parse as parseYAML, stringify as stringifyYAML } from 'yaml' import type { GoDoxyError } from '../GoDoxyError' diff --git a/components/config_editor/ConfigValidationError.tsx b/src/components/config_editor/ConfigValidationError.tsx similarity index 98% rename from components/config_editor/ConfigValidationError.tsx rename to src/components/config_editor/ConfigValidationError.tsx index ccaac64f..f86de9e6 100644 --- a/components/config_editor/ConfigValidationError.tsx +++ b/src/components/config_editor/ConfigValidationError.tsx @@ -1,4 +1,3 @@ -'use client' import { IconCircleCheck } from '@tabler/icons-react' import { GoDoxyErrorAlert } from '../GoDoxyError' import { Alert, AlertDescription, AlertTitle } from '../ui/alert' diff --git a/components/config_editor/ConfigYAMLEditor.tsx b/src/components/config_editor/ConfigYAMLEditor.tsx similarity index 98% rename from components/config_editor/ConfigYAMLEditor.tsx rename to src/components/config_editor/ConfigYAMLEditor.tsx index b7ce0139..d39769f0 100644 --- a/components/config_editor/ConfigYAMLEditor.tsx +++ b/src/components/config_editor/ConfigYAMLEditor.tsx @@ -1,4 +1,3 @@ -'use client' import { ConfigSchema, MiddlewareComposeSchema, RoutesSchema } from '@/types/godoxy' import type { JSONSchema } from '@/types/schema' import type { ReactCodeMirrorProps } from '@uiw/react-codemirror' diff --git a/components/config_editor/Sidebar.tsx b/src/components/config_editor/Sidebar.tsx similarity index 98% rename from components/config_editor/Sidebar.tsx rename to src/components/config_editor/Sidebar.tsx index 91ea9f55..c3ef6fe2 100644 --- a/components/config_editor/Sidebar.tsx +++ b/src/components/config_editor/Sidebar.tsx @@ -1,5 +1,3 @@ -'use client' - import type { FileType } from '@/lib/api' import { cn } from '@/lib/utils' import { IconChevronRight, IconFile } from '@tabler/icons-react' @@ -132,7 +130,7 @@ function Sections() { {label} - {sections.map(function (section) { + {sections.map((section) => { const Icon = section.icon const isActive = activeSection === section.id diff --git a/components/config_editor/general_config/AccessControl.tsx b/src/components/config_editor/general_config/AccessControl.tsx similarity index 100% rename from components/config_editor/general_config/AccessControl.tsx rename to src/components/config_editor/general_config/AccessControl.tsx diff --git a/components/config_editor/general_config/AutocertConfigContent.tsx b/src/components/config_editor/general_config/AutocertConfigContent.tsx similarity index 99% rename from components/config_editor/general_config/AutocertConfigContent.tsx rename to src/components/config_editor/general_config/AutocertConfigContent.tsx index dbbcf4b7..b48c7da2 100644 --- a/components/config_editor/general_config/AutocertConfigContent.tsx +++ b/src/components/config_editor/general_config/AutocertConfigContent.tsx @@ -1,5 +1,3 @@ -'use client' - import { Suspense, useEffect, useRef } from 'react' import { FormContainer } from '@/components/form/FormContainer' diff --git a/components/config_editor/general_config/AutocertInfo.tsx b/src/components/config_editor/general_config/AutocertInfo.tsx similarity index 100% rename from components/config_editor/general_config/AutocertInfo.tsx rename to src/components/config_editor/general_config/AutocertInfo.tsx diff --git a/components/config_editor/general_config/AutocertRenewDialogButton.tsx b/src/components/config_editor/general_config/AutocertRenewDialogButton.tsx similarity index 100% rename from components/config_editor/general_config/AutocertRenewDialogButton.tsx rename to src/components/config_editor/general_config/AutocertRenewDialogButton.tsx diff --git a/components/config_editor/general_config/DefaultValues.tsx b/src/components/config_editor/general_config/DefaultValues.tsx similarity index 100% rename from components/config_editor/general_config/DefaultValues.tsx rename to src/components/config_editor/general_config/DefaultValues.tsx diff --git a/components/config_editor/general_config/DomainMatching.tsx b/src/components/config_editor/general_config/DomainMatching.tsx similarity index 100% rename from components/config_editor/general_config/DomainMatching.tsx rename to src/components/config_editor/general_config/DomainMatching.tsx diff --git a/components/config_editor/general_config/EntrypointConfig.tsx b/src/components/config_editor/general_config/EntrypointConfig.tsx similarity index 95% rename from components/config_editor/general_config/EntrypointConfig.tsx rename to src/components/config_editor/general_config/EntrypointConfig.tsx index 5e524015..e7058705 100644 --- a/components/config_editor/general_config/EntrypointConfig.tsx +++ b/src/components/config_editor/general_config/EntrypointConfig.tsx @@ -1,7 +1,7 @@ import { NamedListInput } from '@/components/form/NamedListInput' import { StoreMapInput } from '@/components/form/StoreMapInput' import { Card, CardContent } from '@/components/ui/card' -import { StoreSwitchField } from '@/juststore-shadcn/src/components/store/Switch' +import { StoreSwitchField } from '@/components/store/Switch' import { ConfigSchema, MiddlewareComposeSchema } from '@/types/godoxy' import type { MiddlewareFileRef } from '@/types/godoxy/middlewares/middlewares' import { useMemo } from 'react' diff --git a/components/config_editor/general_config/Maxmind.tsx b/src/components/config_editor/general_config/Maxmind.tsx similarity index 100% rename from components/config_editor/general_config/Maxmind.tsx rename to src/components/config_editor/general_config/Maxmind.tsx diff --git a/components/config_editor/general_config/NotificationsConfig.tsx b/src/components/config_editor/general_config/NotificationsConfig.tsx similarity index 100% rename from components/config_editor/general_config/NotificationsConfig.tsx rename to src/components/config_editor/general_config/NotificationsConfig.tsx diff --git a/components/config_editor/general_config/ProxmoxConfig.tsx b/src/components/config_editor/general_config/ProxmoxConfig.tsx similarity index 100% rename from components/config_editor/general_config/ProxmoxConfig.tsx rename to src/components/config_editor/general_config/ProxmoxConfig.tsx diff --git a/components/config_editor/general_config/RouteProviderConfig.tsx b/src/components/config_editor/general_config/RouteProviderConfig.tsx similarity index 100% rename from components/config_editor/general_config/RouteProviderConfig.tsx rename to src/components/config_editor/general_config/RouteProviderConfig.tsx diff --git a/components/config_editor/middleware_compose/MiddlewareComposeForm.tsx b/src/components/config_editor/middleware_compose/MiddlewareComposeForm.tsx similarity index 100% rename from components/config_editor/middleware_compose/MiddlewareComposeForm.tsx rename to src/components/config_editor/middleware_compose/MiddlewareComposeForm.tsx diff --git a/components/config_editor/middleware_compose/MiddlewareEditor.tsx b/src/components/config_editor/middleware_compose/MiddlewareEditor.tsx similarity index 99% rename from components/config_editor/middleware_compose/MiddlewareEditor.tsx rename to src/components/config_editor/middleware_compose/MiddlewareEditor.tsx index ae2bba52..7ab75be8 100644 --- a/components/config_editor/middleware_compose/MiddlewareEditor.tsx +++ b/src/components/config_editor/middleware_compose/MiddlewareEditor.tsx @@ -1,5 +1,3 @@ -'use client' - import { NamedListInput } from '@/components/form/NamedListInput' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' diff --git a/components/config_editor/middleware_compose/utils.ts b/src/components/config_editor/middleware_compose/utils.ts similarity index 100% rename from components/config_editor/middleware_compose/utils.ts rename to src/components/config_editor/middleware_compose/utils.ts diff --git a/components/config_editor/route_files/Code.tsx b/src/components/config_editor/route_files/Code.tsx similarity index 100% rename from components/config_editor/route_files/Code.tsx rename to src/components/config_editor/route_files/Code.tsx diff --git a/components/config_editor/route_files/NewRouteForm.tsx b/src/components/config_editor/route_files/NewRouteForm.tsx similarity index 100% rename from components/config_editor/route_files/NewRouteForm.tsx rename to src/components/config_editor/route_files/NewRouteForm.tsx diff --git a/components/config_editor/route_files/RouteDisplay.tsx b/src/components/config_editor/route_files/RouteDisplay.tsx similarity index 97% rename from components/config_editor/route_files/RouteDisplay.tsx rename to src/components/config_editor/route_files/RouteDisplay.tsx index 1a847e1a..7907166f 100644 --- a/components/config_editor/route_files/RouteDisplay.tsx +++ b/src/components/config_editor/route_files/RouteDisplay.tsx @@ -3,13 +3,13 @@ import { Button } from '@/components/ui/button' import { Checkbox } from '@/components/ui/checkbox' import { Field, FieldLabel } from '@/components/ui/field' import { Separator } from '@/components/ui/separator' -import { StoreCheckboxField } from '@/juststore-shadcn/src/components/store/Checkbox' +import { StoreCheckboxField } from '@/components/store/Checkbox' import type { Route as RouteResponse } from '@/lib/api' import { cn } from '@/lib/utils' import type { Routes } from '@/types/godoxy' import type { CIDR } from '@/types/godoxy/types' import { IconArrowRight, IconCopy, IconEdit, IconTrash } from '@tabler/icons-react' -import isEqual from 'react-fast-compare' +import { isEqual } from 'juststore' import { routesConfigStore as store } from '../store' import RouteIcon from './RouteIcon' import * as utils from './utils' diff --git a/components/config_editor/route_files/RouteEditForm.tsx b/src/components/config_editor/route_files/RouteEditForm.tsx similarity index 98% rename from components/config_editor/route_files/RouteEditForm.tsx rename to src/components/config_editor/route_files/RouteEditForm.tsx index 8de80a86..78bf7185 100644 --- a/components/config_editor/route_files/RouteEditForm.tsx +++ b/src/components/config_editor/route_files/RouteEditForm.tsx @@ -20,7 +20,7 @@ import { import type { VariantProps } from 'class-variance-authority' import type { FormState } from 'juststore' import { useForm, type FormStore } from 'juststore' -import React, { useEffect, useMemo } from 'react' +import { useEffect, useMemo } from 'react' import { configStore } from '../store' import { RouteFileServerSection } from './RouteFileServerSection' import { RouteGeneralSection } from './RouteGeneralSection' @@ -139,7 +139,7 @@ export default function RouteEditForm({ show: showMiddlewares, }, ] as const, - [showFileServer, showHTTPConfig, showSSLConfig, showProxmox, showIdlewatcher, showMiddlewares] + [showFileServer, showHTTPConfig, showSSLConfig, showIdlewatcher, showMiddlewares] ) const SaveButtonIcon = saveButtonIcon diff --git a/components/config_editor/route_files/RouteEditFormDialog.tsx b/src/components/config_editor/route_files/RouteEditFormDialog.tsx similarity index 98% rename from components/config_editor/route_files/RouteEditFormDialog.tsx rename to src/components/config_editor/route_files/RouteEditFormDialog.tsx index f35b1cdb..683fddb8 100644 --- a/components/config_editor/route_files/RouteEditFormDialog.tsx +++ b/src/components/config_editor/route_files/RouteEditFormDialog.tsx @@ -11,7 +11,7 @@ import type { Routes } from '@/types/godoxy' import { IconCircleCheck } from '@tabler/icons-react' import type { Atom } from 'juststore' import { createAtom } from 'juststore' -import React, { useEffect, useId, useRef } from 'react' +import { useEffect, useId, useRef } from 'react' import { stringify as stringifyYAML } from 'yaml' import type { RouteEditFormProps } from './RouteEditForm' import RouteEditForm from './RouteEditForm' diff --git a/components/config_editor/route_files/RouteFileServerSection.tsx b/src/components/config_editor/route_files/RouteFileServerSection.tsx similarity index 100% rename from components/config_editor/route_files/RouteFileServerSection.tsx rename to src/components/config_editor/route_files/RouteFileServerSection.tsx diff --git a/components/config_editor/route_files/RouteGeneralSection.tsx b/src/components/config_editor/route_files/RouteGeneralSection.tsx similarity index 100% rename from components/config_editor/route_files/RouteGeneralSection.tsx rename to src/components/config_editor/route_files/RouteGeneralSection.tsx diff --git a/components/config_editor/route_files/RouteHTTPConfigSection.tsx b/src/components/config_editor/route_files/RouteHTTPConfigSection.tsx similarity index 100% rename from components/config_editor/route_files/RouteHTTPConfigSection.tsx rename to src/components/config_editor/route_files/RouteHTTPConfigSection.tsx diff --git a/components/config_editor/route_files/RouteHealthcheckSection.tsx b/src/components/config_editor/route_files/RouteHealthcheckSection.tsx similarity index 100% rename from components/config_editor/route_files/RouteHealthcheckSection.tsx rename to src/components/config_editor/route_files/RouteHealthcheckSection.tsx diff --git a/components/config_editor/route_files/RouteIcon.tsx b/src/components/config_editor/route_files/RouteIcon.tsx similarity index 100% rename from components/config_editor/route_files/RouteIcon.tsx rename to src/components/config_editor/route_files/RouteIcon.tsx diff --git a/components/config_editor/route_files/RouteIdlewatcherSection.tsx b/src/components/config_editor/route_files/RouteIdlewatcherSection.tsx similarity index 96% rename from components/config_editor/route_files/RouteIdlewatcherSection.tsx rename to src/components/config_editor/route_files/RouteIdlewatcherSection.tsx index 54299886..a6a33a95 100644 --- a/components/config_editor/route_files/RouteIdlewatcherSection.tsx +++ b/src/components/config_editor/route_files/RouteIdlewatcherSection.tsx @@ -1,7 +1,7 @@ import { StoreFormInputField, StoreInputField } from '@/components/store/Input' import { StoreFormSelectField } from '@/components/store/Select' import { FieldGroup } from '@/components/ui/field' -import { StoreFormCheckboxField } from '@/juststore-shadcn/src/components/store/Checkbox' +import { StoreFormCheckboxField } from '@/components/store/Checkbox' import type { Routes } from '@/types/godoxy' import { STOP_METHODS, STOP_SIGNALS } from '@/types/godoxy/providers/idlewatcher' import type { FormStore } from 'juststore' diff --git a/components/config_editor/route_files/RouteList.tsx b/src/components/config_editor/route_files/RouteList.tsx similarity index 98% rename from components/config_editor/route_files/RouteList.tsx rename to src/components/config_editor/route_files/RouteList.tsx index 664a48df..500a3bb8 100644 --- a/components/config_editor/route_files/RouteList.tsx +++ b/src/components/config_editor/route_files/RouteList.tsx @@ -5,7 +5,7 @@ import { Dialog } from '@/components/ui/dialog' import { Label } from '@/components/ui/label' import { useWebSocketApi } from '@/hooks/websocket' import type { Route } from '@/lib/api' -import { type Routes } from '@/types/godoxy' +import type { Routes } from '@/types/godoxy' import { useMemo, useState } from 'react' import { configStore, routesConfigStore } from '../store' import RouteDisplay from './RouteDisplay' diff --git a/components/config_editor/route_files/RouteMiddlewaresSection.tsx b/src/components/config_editor/route_files/RouteMiddlewaresSection.tsx similarity index 100% rename from components/config_editor/route_files/RouteMiddlewaresSection.tsx rename to src/components/config_editor/route_files/RouteMiddlewaresSection.tsx diff --git a/components/config_editor/route_files/RouteProxmoxSection.tsx b/src/components/config_editor/route_files/RouteProxmoxSection.tsx similarity index 100% rename from components/config_editor/route_files/RouteProxmoxSection.tsx rename to src/components/config_editor/route_files/RouteProxmoxSection.tsx diff --git a/components/config_editor/route_files/RouteSSLConfigSection.tsx b/src/components/config_editor/route_files/RouteSSLConfigSection.tsx similarity index 90% rename from components/config_editor/route_files/RouteSSLConfigSection.tsx rename to src/components/config_editor/route_files/RouteSSLConfigSection.tsx index bee523b7..1ab77f4c 100644 --- a/components/config_editor/route_files/RouteSSLConfigSection.tsx +++ b/src/components/config_editor/route_files/RouteSSLConfigSection.tsx @@ -1,7 +1,7 @@ import { StoreFormInputField } from '@/components/store/Input' import { FieldGroup } from '@/components/ui/field' -import { StoreFormCheckboxField } from '@/juststore-shadcn/src/components/store/Checkbox' -import { StoreFormMultiSelectField } from '@/juststore-shadcn/src/components/store/MultiSelect' +import { StoreFormCheckboxField } from '@/components/store/Checkbox' +import { StoreFormMultiSelectField } from '@/components/store/MultiSelect' import type { Routes } from '@/types/godoxy' import type { FormStore } from 'juststore' diff --git a/components/config_editor/route_files/utils.tsx b/src/components/config_editor/route_files/utils.tsx similarity index 100% rename from components/config_editor/route_files/utils.tsx rename to src/components/config_editor/route_files/utils.tsx diff --git a/components/config_editor/sections.ts b/src/components/config_editor/sections.ts similarity index 100% rename from components/config_editor/sections.ts rename to src/components/config_editor/sections.ts diff --git a/components/config_editor/store.ts b/src/components/config_editor/store.ts similarity index 100% rename from components/config_editor/store.ts rename to src/components/config_editor/store.ts diff --git a/components/config_editor/types.ts b/src/components/config_editor/types.ts similarity index 100% rename from components/config_editor/types.ts rename to src/components/config_editor/types.ts diff --git a/components/form/FieldInput.tsx b/src/components/form/FieldInput.tsx similarity index 99% rename from components/form/FieldInput.tsx rename to src/components/form/FieldInput.tsx index 3032b112..c73aa856 100644 --- a/components/form/FieldInput.tsx +++ b/src/components/form/FieldInput.tsx @@ -1,5 +1,3 @@ -'use client' - import { IconRefresh, IconTrash } from '@tabler/icons-react' import { useMemo } from 'react' diff --git a/components/form/FormContainer.tsx b/src/components/form/FormContainer.tsx similarity index 100% rename from components/form/FormContainer.tsx rename to src/components/form/FormContainer.tsx diff --git a/components/form/ListInput.tsx b/src/components/form/ListInput.tsx similarity index 99% rename from components/form/ListInput.tsx rename to src/components/form/ListInput.tsx index 034c2c46..c01c141f 100644 --- a/components/form/ListInput.tsx +++ b/src/components/form/ListInput.tsx @@ -1,5 +1,3 @@ -'use client' - import { IconTrash } from '@tabler/icons-react' import { useCallback } from 'react' diff --git a/components/form/MapInput.tsx b/src/components/form/MapInput.tsx similarity index 99% rename from components/form/MapInput.tsx rename to src/components/form/MapInput.tsx index 821e31af..fd33bca2 100644 --- a/components/form/MapInput.tsx +++ b/src/components/form/MapInput.tsx @@ -1,5 +1,3 @@ -'use client' - import { IconCheck, IconPencil, IconTrash } from '@tabler/icons-react' import { useMemo, useRef, useState, type ReactNode } from 'react' diff --git a/components/form/NamedListInput.tsx b/src/components/form/NamedListInput.tsx similarity index 99% rename from components/form/NamedListInput.tsx rename to src/components/form/NamedListInput.tsx index dfeac0f6..79229bbe 100644 --- a/components/form/NamedListInput.tsx +++ b/src/components/form/NamedListInput.tsx @@ -1,5 +1,3 @@ -'use client' - import { useCallback, useMemo } from 'react' import { getDefaultValue, getPropertySchema, type JSONSchema } from '@/types/schema' diff --git a/components/form/StoreFieldInput.tsx b/src/components/form/StoreFieldInput.tsx similarity index 99% rename from components/form/StoreFieldInput.tsx rename to src/components/form/StoreFieldInput.tsx index 55de960a..a032b5c4 100644 --- a/components/form/StoreFieldInput.tsx +++ b/src/components/form/StoreFieldInput.tsx @@ -1,5 +1,3 @@ -'use client' - import { IconRefresh, IconTrash } from '@tabler/icons-react' import { useEffect, useMemo } from 'react' diff --git a/components/form/StoreListInput.tsx b/src/components/form/StoreListInput.tsx similarity index 99% rename from components/form/StoreListInput.tsx rename to src/components/form/StoreListInput.tsx index f46d4d3a..296db2dd 100644 --- a/components/form/StoreListInput.tsx +++ b/src/components/form/StoreListInput.tsx @@ -1,5 +1,3 @@ -'use client' - import { useCallback } from 'react' import type { JSONSchema } from '@/types/schema' diff --git a/components/form/StoreMapInput.tsx b/src/components/form/StoreMapInput.tsx similarity index 99% rename from components/form/StoreMapInput.tsx rename to src/components/form/StoreMapInput.tsx index adc1d3e6..f36ecdba 100644 --- a/components/form/StoreMapInput.tsx +++ b/src/components/form/StoreMapInput.tsx @@ -1,5 +1,3 @@ -'use client' - import { ComplexEntryHeader, type MapInputProps, type RecordInputProps } from './MapInput' import { getDefaultValue, getPropertySchema, type JSONSchema } from '@/types/schema' diff --git a/components/form/map-utils.ts b/src/components/form/map-utils.ts similarity index 100% rename from components/form/map-utils.ts rename to src/components/form/map-utils.ts diff --git a/components/form/utils.ts b/src/components/form/utils.ts similarity index 100% rename from components/form/utils.ts rename to src/components/form/utils.ts diff --git a/components/home/AppCategory.tsx b/src/components/home/AppCategory.tsx similarity index 98% rename from components/home/AppCategory.tsx rename to src/components/home/AppCategory.tsx index 5727a151..6233d0c8 100644 --- a/components/home/AppCategory.tsx +++ b/src/components/home/AppCategory.tsx @@ -32,7 +32,7 @@ function getItemState(items: HomepageItem[], searchQuery: string, category: stri visibleIndex++ } return acc - }, new Array()) + }, [] as ItemState[]) return [isEmpty, state] as const } diff --git a/components/home/AppCategoryEmpty.tsx b/src/components/home/AppCategoryEmpty.tsx similarity index 100% rename from components/home/AppCategoryEmpty.tsx rename to src/components/home/AppCategoryEmpty.tsx diff --git a/components/home/AppCategorySegmented.tsx b/src/components/home/AppCategorySegmented.tsx similarity index 100% rename from components/home/AppCategorySegmented.tsx rename to src/components/home/AppCategorySegmented.tsx diff --git a/components/home/AppDetailsDialogContent.tsx b/src/components/home/AppDetailsDialogContent.tsx similarity index 100% rename from components/home/AppDetailsDialogContent.tsx rename to src/components/home/AppDetailsDialogContent.tsx diff --git a/components/home/AppEditDialog.tsx b/src/components/home/AppEditDialog.tsx similarity index 98% rename from components/home/AppEditDialog.tsx rename to src/components/home/AppEditDialog.tsx index 6c7f08f4..27d6e3b6 100644 --- a/components/home/AppEditDialog.tsx +++ b/src/components/home/AppEditDialog.tsx @@ -1,7 +1,5 @@ -'use client' - import { StoreFormInputField } from '@/components/store/Input' -import { type HomepageItem } from '@/lib/api' +import type { HomepageItem } from '@/lib/api' import { api } from '@/lib/api-client' import { toastError } from '@/lib/toast' import { useForm, type ObjectState } from 'juststore' diff --git a/components/home/AppItem.tsx b/src/components/home/AppItem.tsx similarity index 87% rename from components/home/AppItem.tsx rename to src/components/home/AppItem.tsx index 4d45e366..3473c6ae 100644 --- a/components/home/AppItem.tsx +++ b/src/components/home/AppItem.tsx @@ -2,8 +2,8 @@ import { Card, CardContent } from '@/components/ui/card' import type { HomepageItem } from '@/lib/api' import { api } from '@/lib/api-client' import { cn } from '@/lib/utils' -import { type ObjectState } from 'juststore' -import Link from 'next/link' +import { Link } from '@tanstack/react-router' +import type { ObjectState } from 'juststore' import { forwardRef, useMemo } from 'react' import { AppIcon } from '../AppIcon' import { ContextMenu, ContextMenuTrigger } from '../ui/context-menu' @@ -35,24 +35,18 @@ export default function AppItem({ categoryIndex, appIndex, visibleIndex }: AppIt } return ( - <> - - - - {url => ( - - - - )} - - - - - + + + + {url => ( + + + + )} + + + + ) } diff --git a/components/home/AppitemContextMenuContent.tsx b/src/components/home/AppitemContextMenuContent.tsx similarity index 64% rename from components/home/AppitemContextMenuContent.tsx rename to src/components/home/AppitemContextMenuContent.tsx index ed6e98fb..d0a2ed0c 100644 --- a/components/home/AppitemContextMenuContent.tsx +++ b/src/components/home/AppitemContextMenuContent.tsx @@ -15,9 +15,9 @@ import { ContextMenuContent, ContextMenuItem } from '../ui/context-menu' import { store } from './store' import type { HomepageItem } from '@/lib/api' -import { type HealthStatusType } from '@/types/health' +import type { HealthStatusType } from '@/types/health' +import { Link } from '@tanstack/react-router' import type { ObjectState } from 'juststore' -import Link from 'next/link' import { useState } from 'react' import { toast } from 'sonner' import { setSelectedRoute } from '../routes/store' @@ -64,56 +64,52 @@ export default function AppItemContextMenuContent({ } return ( - <> - - - store.editingApp.set({ categoryIndex: categoryIndex, itemIndex: itemIndex }) - } - > - - Edit + + store.editingApp.set({ categoryIndex: categoryIndex, itemIndex: itemIndex })} + > + + Edit + + + {visible => ( + <> + {visible ? ( + + + Hide + + ) : ( + + + Unhide + + )} + {/* Only visible items can be favorites */} + {visible && ( + + {favorite => ( + + + {favorite ? 'Remove favorite' : 'Favorite'} + + )} + + )} + + )} + + setSelectedRoute(routeKey)}> + + + Details - - {visible => ( - <> - {visible ? ( - - - Hide - - ) : ( - - - Unhide - - )} - {/* Only visible items can be favorites */} - {visible && ( - - {favorite => ( - - - {favorite ? 'Remove favorite' : 'Favorite'} - - )} - - )} - - )} - - setSelectedRoute(routeKey)}> - - - Details - - - - - + + + ) } diff --git a/components/home/AppsGrid.tsx b/src/components/home/AppsGrid.tsx similarity index 99% rename from components/home/AppsGrid.tsx rename to src/components/home/AppsGrid.tsx index aef2e665..1df4fc8b 100644 --- a/components/home/AppsGrid.tsx +++ b/src/components/home/AppsGrid.tsx @@ -1,5 +1,3 @@ -'use client' - import { CategoryIcon } from '@/components/home/CategoryIcon' import { Button } from '@/components/ui/button' import { CustomCombobox } from '@/components/ui/custom-combobox' diff --git a/components/home/ArrowNavigation.tsx b/src/components/home/ArrowNavigation.tsx similarity index 100% rename from components/home/ArrowNavigation.tsx rename to src/components/home/ArrowNavigation.tsx diff --git a/components/home/CategoryIcon.tsx b/src/components/home/CategoryIcon.tsx similarity index 100% rename from components/home/CategoryIcon.tsx rename to src/components/home/CategoryIcon.tsx diff --git a/components/home/HealthBubble.tsx b/src/components/home/HealthBubble.tsx similarity index 100% rename from components/home/HealthBubble.tsx rename to src/components/home/HealthBubble.tsx diff --git a/components/home/Searchbox.tsx b/src/components/home/Searchbox.tsx similarity index 100% rename from components/home/Searchbox.tsx rename to src/components/home/Searchbox.tsx diff --git a/components/home/SettingsPopover.tsx b/src/components/home/SettingsPopover.tsx similarity index 97% rename from components/home/SettingsPopover.tsx rename to src/components/home/SettingsPopover.tsx index ff98835f..0e06cfb7 100644 --- a/components/home/SettingsPopover.tsx +++ b/src/components/home/SettingsPopover.tsx @@ -1,11 +1,9 @@ -'use client' - import { Button } from '@/components/ui/button' import { Label } from '@/components/ui/label' import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover' import { RadioGroup, RadioGroupField } from '@/components/ui/radio-group' import { Separator } from '@/components/ui/separator' -import { StoreSwitchField } from '@/juststore-shadcn/src/components/store/Switch' +import { StoreSwitchField } from '@/components/store/Switch' import { Moon, Settings, Sun } from 'lucide-react' import { store } from './store' diff --git a/components/home/SystemStatValue.tsx b/src/components/home/SystemStatValue.tsx similarity index 98% rename from components/home/SystemStatValue.tsx rename to src/components/home/SystemStatValue.tsx index 44fcd399..2c2cbd0b 100644 --- a/components/home/SystemStatValue.tsx +++ b/src/components/home/SystemStatValue.tsx @@ -1,4 +1,3 @@ -'use client' import { formatDuration } from '@/lib/format' import type { FieldPath } from 'juststore' import { Progress } from '../ui/progress' diff --git a/components/home/SystemStats.tsx b/src/components/home/SystemStats.tsx similarity index 100% rename from components/home/SystemStats.tsx rename to src/components/home/SystemStats.tsx diff --git a/components/home/SystemStatsProvider.tsx b/src/components/home/SystemStatsProvider.tsx similarity index 98% rename from components/home/SystemStatsProvider.tsx rename to src/components/home/SystemStatsProvider.tsx index fd31cf7c..bfa1e772 100644 --- a/components/home/SystemStatsProvider.tsx +++ b/src/components/home/SystemStatsProvider.tsx @@ -1,4 +1,3 @@ -'use client' import { useWebSocketApi } from '@/hooks/websocket' import type { DiskUsageStat, StatsResponse, SystemInfo } from '@/lib/api' import { store } from './store' diff --git a/components/home/store.ts b/src/components/home/store.ts similarity index 100% rename from components/home/store.ts rename to src/components/home/store.ts diff --git a/components/layout/Titlebar.tsx b/src/components/layout/Titlebar.tsx similarity index 69% rename from components/layout/Titlebar.tsx rename to src/components/layout/Titlebar.tsx index eab14c65..b46f1ea5 100644 --- a/components/layout/Titlebar.tsx +++ b/src/components/layout/Titlebar.tsx @@ -1,10 +1,8 @@ -import Logo from '@/app/icon0.svg' import { ModeToggle } from '@/components/ui/theme-toggle' import { cn } from '@/lib/utils' import { siteConfig } from '@/site-config' +import { Link } from '@tanstack/react-router' import { BookOpenText, Code, FlaskConical, Grid3X3, Route, Server } from 'lucide-react' -import Image from 'next/image' -import Link from 'next/link' import LogoutButton from '../LogoutButton' import VersionText from '../VersionText' @@ -13,6 +11,7 @@ type Page = { Icon: React.ElementType label: string desktopOnly?: boolean + pureLink?: boolean } const pages: Page[] = [ @@ -21,7 +20,7 @@ const pages: Page[] = [ { href: '/routes', Icon: Route, label: 'Routes' }, { href: '/playground', Icon: FlaskConical, label: 'Playground' }, { href: '/servers', Icon: Server, label: 'Servers' }, - { href: '/wiki/Home', Icon: BookOpenText, label: 'Wiki' }, + { href: '/wiki', Icon: BookOpenText, label: 'Wiki', pureLink: true }, ] as const export default function Titlebar() { @@ -31,7 +30,7 @@ export default function Titlebar() { className="titlebar hidden data-[hidden=false]:flex data-[sidebar-open=true]:ml-(--sidebar-width) fixed top-0 inset-x-0 items-center justify-between px-4 border-b surface z-40 backdrop-blur-sm" >
- GoDoxy + GoDoxy {siteConfig.metadata.title}
@@ -48,21 +47,40 @@ export default function Titlebar() { ) } -function Item({ href, Icon, label, desktopOnly }: Page) { +function Item({ href, Icon, label, desktopOnly, pureLink }: Page) { + const content = ( +
+ + {label} +
+ ) + + if (pureLink) { + return ( + + {content} + + ) + } + return ( -
- - {label} -
+ {content} ) } diff --git a/components/layout/TitlebarController.tsx b/src/components/layout/TitlebarController.tsx similarity index 71% rename from components/layout/TitlebarController.tsx rename to src/components/layout/TitlebarController.tsx index f3693056..59ba90a9 100644 --- a/components/layout/TitlebarController.tsx +++ b/src/components/layout/TitlebarController.tsx @@ -1,30 +1,29 @@ -'use client' -import { usePathname } from 'next/navigation' +import { useLocation } from '@tanstack/react-router' import { useEffect } from 'react' export default function TitlebarController() { - const pathname = usePathname() + const location = useLocation() useEffect(() => { const titlebarItems = document.querySelectorAll('.titlebar-item') titlebarItems.forEach(item => { - if (pathname === item.getAttribute('href')) { + if (location.pathname === item.getAttribute('href')) { item.setAttribute('data-active', 'true') } else { item.removeAttribute('data-active') } }) - }, [pathname]) + }, [location.pathname]) useEffect(() => { const titlebar = document.getElementById('titlebar') if (!titlebar) return // hide titlebar on login page - if (pathname === '/login') { + if (location.pathname === '/login') { titlebar.setAttribute('data-hidden', 'true') } else { titlebar.setAttribute('data-hidden', 'false') } - }, [pathname]) + }, [location.pathname]) return null } diff --git a/components/playground/MockRequestForm.tsx b/src/components/playground/MockRequestForm.tsx similarity index 99% rename from components/playground/MockRequestForm.tsx rename to src/components/playground/MockRequestForm.tsx index 79a61b68..5b4ddf81 100644 --- a/components/playground/MockRequestForm.tsx +++ b/src/components/playground/MockRequestForm.tsx @@ -1,5 +1,3 @@ -'use client' - import { MapInput } from '@/components/form/MapInput' import { StoreInputField } from '@/components/store/Input' import { StoreSelectField } from '@/components/store/Select' diff --git a/components/playground/MockResponseForm.tsx b/src/components/playground/MockResponseForm.tsx similarity index 99% rename from components/playground/MockResponseForm.tsx rename to src/components/playground/MockResponseForm.tsx index 8ec8c8c8..d4c016b6 100644 --- a/components/playground/MockResponseForm.tsx +++ b/src/components/playground/MockResponseForm.tsx @@ -1,5 +1,3 @@ -'use client' - import { MapInput } from '@/components/form/MapInput' import { StoreInputField } from '@/components/store/Input' import { json } from '@codemirror/lang-json' diff --git a/components/playground/PresetExamples.tsx b/src/components/playground/PresetExamples.tsx similarity index 99% rename from components/playground/PresetExamples.tsx rename to src/components/playground/PresetExamples.tsx index b299ed1c..57d5090b 100644 --- a/components/playground/PresetExamples.tsx +++ b/src/components/playground/PresetExamples.tsx @@ -1,5 +1,3 @@ -'use client' - import { Button } from '@/components/ui/button' import { Select, diff --git a/components/playground/ResultsDisplay.tsx b/src/components/playground/ResultsDisplay.tsx similarity index 99% rename from components/playground/ResultsDisplay.tsx rename to src/components/playground/ResultsDisplay.tsx index 507bc7ed..00ac5deb 100644 --- a/components/playground/ResultsDisplay.tsx +++ b/src/components/playground/ResultsDisplay.tsx @@ -1,5 +1,3 @@ -'use client' - import { Badge } from '@/components/ui/badge' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { ScrollArea } from '@/components/ui/scroll-area' diff --git a/components/playground/RulesEditor.tsx b/src/components/playground/RulesEditor.tsx similarity index 97% rename from components/playground/RulesEditor.tsx rename to src/components/playground/RulesEditor.tsx index e429a0da..7b67739d 100644 --- a/components/playground/RulesEditor.tsx +++ b/src/components/playground/RulesEditor.tsx @@ -1,5 +1,3 @@ -'use client' - import YAMLEditor from '@/components/YAMLEditor' import { store } from './store' diff --git a/components/playground/RunButton.tsx b/src/components/playground/RunButton.tsx similarity index 98% rename from components/playground/RunButton.tsx rename to src/components/playground/RunButton.tsx index 566edbfe..1ab24b91 100644 --- a/components/playground/RunButton.tsx +++ b/src/components/playground/RunButton.tsx @@ -1,5 +1,3 @@ -'use client' - import type { RouteApiRawRule } from '@/lib/api' import { IconPlayerPlay } from '@tabler/icons-react' import { toast } from 'sonner' diff --git a/components/playground/examples.ts b/src/components/playground/examples.ts similarity index 100% rename from components/playground/examples.ts rename to src/components/playground/examples.ts diff --git a/components/playground/store.ts b/src/components/playground/store.ts similarity index 98% rename from components/playground/store.ts rename to src/components/playground/store.ts index 1b3d6bab..b8433ff5 100644 --- a/components/playground/store.ts +++ b/src/components/playground/store.ts @@ -1,5 +1,3 @@ -'use client' - import type { MockRequest, MockResponse, PlaygroundResponse } from '@/lib/api' import { createStore } from 'juststore' diff --git a/components/playground/usePlayground.ts b/src/components/playground/usePlayground.ts similarity index 100% rename from components/playground/usePlayground.ts rename to src/components/playground/usePlayground.ts index 312b73f8..8aa0efd4 100644 --- a/components/playground/usePlayground.ts +++ b/src/components/playground/usePlayground.ts @@ -1,7 +1,7 @@ +import { useCallback, useState } from 'react' import type { PlaygroundRequest } from '@/lib/api' import { api } from '@/lib/api-client' import { toastError } from '@/lib/toast' -import { useCallback, useState } from 'react' import { store } from './store' export function usePlayground() { diff --git a/components/routes/PercentageText.tsx b/src/components/routes/PercentageText.tsx similarity index 100% rename from components/routes/PercentageText.tsx rename to src/components/routes/PercentageText.tsx diff --git a/components/routes/SearchBox.tsx b/src/components/routes/SearchBox.tsx similarity index 100% rename from components/routes/SearchBox.tsx rename to src/components/routes/SearchBox.tsx diff --git a/components/routes/Sidebar.tsx b/src/components/routes/Sidebar.tsx similarity index 99% rename from components/routes/Sidebar.tsx rename to src/components/routes/Sidebar.tsx index 5a0f605c..a442b08e 100644 --- a/components/routes/Sidebar.tsx +++ b/src/components/routes/Sidebar.tsx @@ -1,5 +1,3 @@ -'use client' - import { setSelectedRoute, store, diff --git a/components/routes/UptimeBar.tsx b/src/components/routes/UptimeBar.tsx similarity index 98% rename from components/routes/UptimeBar.tsx rename to src/components/routes/UptimeBar.tsx index 7bb5433a..503284d5 100644 --- a/components/routes/UptimeBar.tsx +++ b/src/components/routes/UptimeBar.tsx @@ -3,8 +3,8 @@ import type { RouteStatus } from '@/lib/api' import { formatTimestamp } from '@/lib/format' import { cn } from '@/lib/utils' import { healthStatusColorsFg } from '@/types/health' +import { isEqual } from 'juststore' import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import isEqual from 'react-fast-compare' export default function RouteUptimeBar({ routeKey, diff --git a/components/routes/content/ContainerControls.tsx b/src/components/routes/content/ContainerControls.tsx similarity index 99% rename from components/routes/content/ContainerControls.tsx rename to src/components/routes/content/ContainerControls.tsx index ded210db..a930dc79 100644 --- a/components/routes/content/ContainerControls.tsx +++ b/src/components/routes/content/ContainerControls.tsx @@ -1,5 +1,3 @@ -'use client' - import { store, type RouteKey } from '@/components/routes/store' import { Button } from '@/components/ui/button' import { ButtonGroup } from '@/components/ui/button-group' diff --git a/components/routes/content/Content.tsx b/src/components/routes/content/Content.tsx similarity index 100% rename from components/routes/content/Content.tsx rename to src/components/routes/content/Content.tsx diff --git a/components/routes/content/ContentDialog.tsx b/src/components/routes/content/ContentDialog.tsx similarity index 97% rename from components/routes/content/ContentDialog.tsx rename to src/components/routes/content/ContentDialog.tsx index 7c1e2bb8..aa6e4cfe 100644 --- a/components/routes/content/ContentDialog.tsx +++ b/src/components/routes/content/ContentDialog.tsx @@ -1,5 +1,3 @@ -'use client' - import { store } from '@/components/routes/store' import { Dialog, DialogContent } from '@/components/ui/dialog' import { useIsMobile } from '@/hooks/use-mobile' diff --git a/components/routes/content/DockerStatsProvider.tsx b/src/components/routes/content/DockerStatsProvider.tsx similarity index 99% rename from components/routes/content/DockerStatsProvider.tsx rename to src/components/routes/content/DockerStatsProvider.tsx index b0cf1dfa..496bc85f 100644 --- a/components/routes/content/DockerStatsProvider.tsx +++ b/src/components/routes/content/DockerStatsProvider.tsx @@ -1,5 +1,3 @@ -'use client' - import { useWebSocketApi } from '@/hooks/websocket' import type { ContainerStatsResponse } from '@/lib/api' import { useEffect } from 'react' diff --git a/components/routes/content/Header.tsx b/src/components/routes/content/Header.tsx similarity index 98% rename from components/routes/content/Header.tsx rename to src/components/routes/content/Header.tsx index 6170a10f..8a27a7c1 100644 --- a/components/routes/content/Header.tsx +++ b/src/components/routes/content/Header.tsx @@ -1,4 +1,3 @@ -'use client' import { store, useSelectedRoute } from '@/components/routes/store' import { Label } from '@/components/ui/label' import { formatPercent } from '@/lib/format' diff --git a/components/routes/content/Logs.tsx b/src/components/routes/content/Logs.tsx similarity index 99% rename from components/routes/content/Logs.tsx rename to src/components/routes/content/Logs.tsx index 80ba1ed0..41e5eb2b 100644 --- a/components/routes/content/Logs.tsx +++ b/src/components/routes/content/Logs.tsx @@ -1,6 +1,6 @@ +import { useTheme } from '@/components/ThemeProvider' import { Button } from '@/components/ui/button' import { useWebSocketApi } from '@/hooks/websocket' -import { useTheme } from 'next-themes' import { IconArrowsMaximize, diff --git a/components/routes/content/LogsHeader.tsx b/src/components/routes/content/LogsHeader.tsx similarity index 100% rename from components/routes/content/LogsHeader.tsx rename to src/components/routes/content/LogsHeader.tsx diff --git a/components/routes/content/ProxmoxStatsProvider.tsx b/src/components/routes/content/ProxmoxStatsProvider.tsx similarity index 98% rename from components/routes/content/ProxmoxStatsProvider.tsx rename to src/components/routes/content/ProxmoxStatsProvider.tsx index 70675880..ca13ccca 100644 --- a/components/routes/content/ProxmoxStatsProvider.tsx +++ b/src/components/routes/content/ProxmoxStatsProvider.tsx @@ -1,5 +1,3 @@ -'use client' - import { useWebSocketApi } from '@/hooks/websocket' import type { ProxmoxNodeStats } from '@/lib/api' import { useEffect } from 'react' diff --git a/components/routes/content/ResponseTimeChart.tsx b/src/components/routes/content/ResponseTimeChart.tsx similarity index 99% rename from components/routes/content/ResponseTimeChart.tsx rename to src/components/routes/content/ResponseTimeChart.tsx index 9b18c45f..6aa57ad6 100644 --- a/components/routes/content/ResponseTimeChart.tsx +++ b/src/components/routes/content/ResponseTimeChart.tsx @@ -1,5 +1,3 @@ -'use client' - import { store, useSelectedRoute } from '@/components/routes/store' import { ChartContainer, type ChartConfig } from '@/components/ui/chart' import type { MetricsPeriod } from '@/lib/api' diff --git a/components/routes/content/RouteDetails.tsx b/src/components/routes/content/RouteDetails.tsx similarity index 99% rename from components/routes/content/RouteDetails.tsx rename to src/components/routes/content/RouteDetails.tsx index 12ded8c3..12657cb3 100644 --- a/components/routes/content/RouteDetails.tsx +++ b/src/components/routes/content/RouteDetails.tsx @@ -1,5 +1,3 @@ -'use client' - import { CodeMirror } from '@/components/ObjectDataList' import { store, useSelectedRoute } from '@/components/routes/store' import KeyboardReturn from '@/components/svg/keyboard-return' diff --git a/components/routes/content/RoutesDetailProvider.tsx b/src/components/routes/content/RoutesDetailProvider.tsx similarity index 97% rename from components/routes/content/RoutesDetailProvider.tsx rename to src/components/routes/content/RoutesDetailProvider.tsx index 04ac9b53..ebe74f16 100644 --- a/components/routes/content/RoutesDetailProvider.tsx +++ b/src/components/routes/content/RoutesDetailProvider.tsx @@ -1,5 +1,3 @@ -'use client' - import { useWebSocketApi } from '@/hooks/websocket' import type { Route } from '@/lib/api' import { store, type RouteKey } from '../store' diff --git a/components/routes/content/StatsBar.tsx b/src/components/routes/content/StatsBar.tsx similarity index 99% rename from components/routes/content/StatsBar.tsx rename to src/components/routes/content/StatsBar.tsx index 4c2edc5b..4dee0310 100644 --- a/components/routes/content/StatsBar.tsx +++ b/src/components/routes/content/StatsBar.tsx @@ -1,5 +1,3 @@ -'use client' - import { store, type RouteKey } from '@/components/routes/store' import { formatBytes } from '@/lib/format' import { cn } from '@/lib/utils' diff --git a/components/routes/content/logs.ts b/src/components/routes/content/logs.ts similarity index 100% rename from components/routes/content/logs.ts rename to src/components/routes/content/logs.ts diff --git a/components/routes/content/proxmox_stats.ts b/src/components/routes/content/proxmox_stats.ts similarity index 99% rename from components/routes/content/proxmox_stats.ts rename to src/components/routes/content/proxmox_stats.ts index 0bb1203c..d0f94916 100644 --- a/components/routes/content/proxmox_stats.ts +++ b/src/components/routes/content/proxmox_stats.ts @@ -20,4 +20,4 @@ export function parseProxmoxStatsLine(line: string): ProxmoxStatsSummary { networkRxTx: networkRxTx ?? '—', blockReadWrite: blockReadWrite ?? '—', } -} \ No newline at end of file +} diff --git a/components/routes/content/stats_bar.css b/src/components/routes/content/stats_bar.css similarity index 100% rename from components/routes/content/stats_bar.css rename to src/components/routes/content/stats_bar.css diff --git a/components/routes/store.ts b/src/components/routes/store.ts similarity index 99% rename from components/routes/store.ts rename to src/components/routes/store.ts index 39707ab3..db79a454 100644 --- a/components/routes/store.ts +++ b/src/components/routes/store.ts @@ -1,5 +1,3 @@ -'use client' - import { useFragment } from '@/hooks/fragment' import type { ProxmoxNodeStats, Route, RouteUptimeAggregate } from '@/lib/api' import { createStore } from 'juststore' diff --git a/components/routes/style.css b/src/components/routes/style.css similarity index 100% rename from components/routes/style.css rename to src/components/routes/style.css diff --git a/components/routes/utils.ts b/src/components/routes/utils.ts similarity index 100% rename from components/routes/utils.ts rename to src/components/routes/utils.ts diff --git a/components/servers/AllSystemInfoProvider.tsx b/src/components/servers/AllSystemInfoProvider.tsx similarity index 98% rename from components/servers/AllSystemInfoProvider.tsx rename to src/components/servers/AllSystemInfoProvider.tsx index dca66f44..4ca16da8 100644 --- a/components/servers/AllSystemInfoProvider.tsx +++ b/src/components/servers/AllSystemInfoProvider.tsx @@ -1,5 +1,3 @@ -'use client' - import { useFragment } from '@/hooks/fragment' import { useWebSocketApi } from '@/hooks/websocket' import type { Agent, SystemInfo } from '@/lib/api' diff --git a/components/servers/NewAgentButton.tsx b/src/components/servers/NewAgentButton.tsx similarity index 99% rename from components/servers/NewAgentButton.tsx rename to src/components/servers/NewAgentButton.tsx index 178cf721..404c0e08 100644 --- a/components/servers/NewAgentButton.tsx +++ b/src/components/servers/NewAgentButton.tsx @@ -12,7 +12,7 @@ import { DialogTitle, DialogTrigger, } from '@/components/ui/dialog' -import { type NewAgentRequest, type NewAgentResponse } from '@/lib/api' +import type { NewAgentRequest, NewAgentResponse } from '@/lib/api' import { api } from '@/lib/api-client' import { toastError } from '@/lib/toast' import { cn } from '@/lib/utils' diff --git a/components/servers/Sidebar.tsx b/src/components/servers/Sidebar.tsx similarity index 99% rename from components/servers/Sidebar.tsx rename to src/components/servers/Sidebar.tsx index 50b2b9e2..4613b9cf 100644 --- a/components/servers/Sidebar.tsx +++ b/src/components/servers/Sidebar.tsx @@ -1,5 +1,3 @@ -'use client' - import type { DiskUsageStat, SystemInfo } from '@/lib/api' import { formatBytes, formatShortTime, formatTemperature } from '@/lib/format' import { cn } from '@/lib/utils' @@ -13,7 +11,7 @@ import { LucideCpu, LucideHardDrive, } from 'lucide-react' -import { type ElementType } from 'react' +import type { ElementType } from 'react' import { Label } from '../ui/label' import { RadioGroup, RadioGroupField } from '../ui/radio-group' import { Skeleton } from '../ui/skeleton' diff --git a/components/servers/content/Charts.tsx b/src/components/servers/content/Charts.tsx similarity index 100% rename from components/servers/content/Charts.tsx rename to src/components/servers/content/Charts.tsx diff --git a/components/servers/content/Content.tsx b/src/components/servers/content/Content.tsx similarity index 99% rename from components/servers/content/Content.tsx rename to src/components/servers/content/Content.tsx index 326fefc2..ecf554db 100644 --- a/components/servers/content/Content.tsx +++ b/src/components/servers/content/Content.tsx @@ -1,5 +1,3 @@ -'use client' - import SystemInfoGraphsProvider from '@/components/servers/content/SystemInfoGraphsProvider' import { Badge } from '@/components/ui/badge' import { Label } from '@/components/ui/label' diff --git a/components/servers/content/SystemInfoGraphsProvider.tsx b/src/components/servers/content/SystemInfoGraphsProvider.tsx similarity index 99% rename from components/servers/content/SystemInfoGraphsProvider.tsx rename to src/components/servers/content/SystemInfoGraphsProvider.tsx index 9d163538..5be34034 100644 --- a/components/servers/content/SystemInfoGraphsProvider.tsx +++ b/src/components/servers/content/SystemInfoGraphsProvider.tsx @@ -1,5 +1,3 @@ -'use client' - import { useWebSocketApi } from '@/hooks/websocket' import type { MetricsPeriod, SystemInfoAggregate, SystemInfoAggregateMode } from '@/lib/api' import { store } from '../store' diff --git a/components/servers/store.ts b/src/components/servers/store.ts similarity index 99% rename from components/servers/store.ts rename to src/components/servers/store.ts index 7a7d4bbc..b8e99f98 100644 --- a/components/servers/store.ts +++ b/src/components/servers/store.ts @@ -1,5 +1,3 @@ -'use client' - import type { Agent, MetricsPeriod, diff --git a/components/svg/docker.tsx b/src/components/svg/docker.tsx similarity index 100% rename from components/svg/docker.tsx rename to src/components/svg/docker.tsx diff --git a/components/svg/duckduckgo.tsx b/src/components/svg/duckduckgo.tsx similarity index 100% rename from components/svg/duckduckgo.tsx rename to src/components/svg/duckduckgo.tsx diff --git a/components/svg/google.tsx b/src/components/svg/google.tsx similarity index 100% rename from components/svg/google.tsx rename to src/components/svg/google.tsx diff --git a/components/svg/keyboard-return.tsx b/src/components/svg/keyboard-return.tsx similarity index 100% rename from components/svg/keyboard-return.tsx rename to src/components/svg/keyboard-return.tsx diff --git a/components/svg/linux.tsx b/src/components/svg/linux.tsx similarity index 100% rename from components/svg/linux.tsx rename to src/components/svg/linux.tsx diff --git a/components/ui/alert.tsx b/src/components/ui/alert.tsx similarity index 100% rename from components/ui/alert.tsx rename to src/components/ui/alert.tsx diff --git a/components/ui/avatar.tsx b/src/components/ui/avatar.tsx similarity index 100% rename from components/ui/avatar.tsx rename to src/components/ui/avatar.tsx diff --git a/components/ui/badge.tsx b/src/components/ui/badge.tsx similarity index 100% rename from components/ui/badge.tsx rename to src/components/ui/badge.tsx diff --git a/components/ui/breadcrumb.tsx b/src/components/ui/breadcrumb.tsx similarity index 100% rename from components/ui/breadcrumb.tsx rename to src/components/ui/breadcrumb.tsx diff --git a/components/ui/button-group.tsx b/src/components/ui/button-group.tsx similarity index 100% rename from components/ui/button-group.tsx rename to src/components/ui/button-group.tsx diff --git a/components/ui/button.tsx b/src/components/ui/button.tsx similarity index 100% rename from components/ui/button.tsx rename to src/components/ui/button.tsx diff --git a/components/ui/card.tsx b/src/components/ui/card.tsx similarity index 100% rename from components/ui/card.tsx rename to src/components/ui/card.tsx diff --git a/components/ui/carousel.tsx b/src/components/ui/carousel.tsx similarity index 99% rename from components/ui/carousel.tsx rename to src/components/ui/carousel.tsx index 6872ba88..7221f116 100644 --- a/components/ui/carousel.tsx +++ b/src/components/ui/carousel.tsx @@ -1,5 +1,3 @@ -'use client' - import useEmblaCarousel, { type UseEmblaCarouselType } from 'embla-carousel-react' import * as React from 'react' diff --git a/components/ui/chart.tsx b/src/components/ui/chart.tsx similarity index 99% rename from components/ui/chart.tsx rename to src/components/ui/chart.tsx index b6d57c82..4ae1b517 100644 --- a/components/ui/chart.tsx +++ b/src/components/ui/chart.tsx @@ -1,5 +1,3 @@ -'use client' - import * as React from 'react' import * as RechartsPrimitive from 'recharts' import type { LegendPayload } from 'recharts/types/component/DefaultLegendContent' diff --git a/components/ui/checkbox.tsx b/src/components/ui/checkbox.tsx similarity index 100% rename from components/ui/checkbox.tsx rename to src/components/ui/checkbox.tsx diff --git a/components/ui/client-only.tsx b/src/components/ui/client-only.tsx similarity index 100% rename from components/ui/client-only.tsx rename to src/components/ui/client-only.tsx diff --git a/components/ui/code.tsx b/src/components/ui/code.tsx similarity index 100% rename from components/ui/code.tsx rename to src/components/ui/code.tsx diff --git a/components/ui/collapsible.tsx b/src/components/ui/collapsible.tsx similarity index 100% rename from components/ui/collapsible.tsx rename to src/components/ui/collapsible.tsx diff --git a/components/ui/combobox.tsx b/src/components/ui/combobox.tsx similarity index 100% rename from components/ui/combobox.tsx rename to src/components/ui/combobox.tsx diff --git a/components/ui/command.tsx b/src/components/ui/command.tsx similarity index 100% rename from components/ui/command.tsx rename to src/components/ui/command.tsx diff --git a/components/ui/context-menu.tsx b/src/components/ui/context-menu.tsx similarity index 100% rename from components/ui/context-menu.tsx rename to src/components/ui/context-menu.tsx diff --git a/components/ui/custom-combobox.tsx b/src/components/ui/custom-combobox.tsx similarity index 100% rename from components/ui/custom-combobox.tsx rename to src/components/ui/custom-combobox.tsx diff --git a/components/ui/data-list.tsx b/src/components/ui/data-list.tsx similarity index 100% rename from components/ui/data-list.tsx rename to src/components/ui/data-list.tsx diff --git a/components/ui/dialog.tsx b/src/components/ui/dialog.tsx similarity index 100% rename from components/ui/dialog.tsx rename to src/components/ui/dialog.tsx diff --git a/components/ui/dropdown-menu.tsx b/src/components/ui/dropdown-menu.tsx similarity index 100% rename from components/ui/dropdown-menu.tsx rename to src/components/ui/dropdown-menu.tsx diff --git a/components/ui/field.tsx b/src/components/ui/field.tsx similarity index 99% rename from components/ui/field.tsx rename to src/components/ui/field.tsx index 0c5cdbfa..b4682d4e 100644 --- a/components/ui/field.tsx +++ b/src/components/ui/field.tsx @@ -1,5 +1,3 @@ -'use client' - import { cva, type VariantProps } from 'class-variance-authority' import { useMemo } from 'react' diff --git a/components/ui/input-group.tsx b/src/components/ui/input-group.tsx similarity index 100% rename from components/ui/input-group.tsx rename to src/components/ui/input-group.tsx diff --git a/components/ui/input.tsx b/src/components/ui/input.tsx similarity index 100% rename from components/ui/input.tsx rename to src/components/ui/input.tsx diff --git a/components/ui/kbd.tsx b/src/components/ui/kbd.tsx similarity index 100% rename from components/ui/kbd.tsx rename to src/components/ui/kbd.tsx diff --git a/components/ui/kibo-ui/tree/index.tsx b/src/components/ui/kibo-ui/tree/index.tsx similarity index 99% rename from components/ui/kibo-ui/tree/index.tsx rename to src/components/ui/kibo-ui/tree/index.tsx index d2520bbb..d8194d5d 100644 --- a/components/ui/kibo-ui/tree/index.tsx +++ b/src/components/ui/kibo-ui/tree/index.tsx @@ -1,5 +1,3 @@ -'use client' - import { cn } from '@/lib/utils' import { IconChevronRight, IconFile, IconFolder, IconFolderOpen } from '@tabler/icons-react' import { AnimatePresence, motion } from 'motion/react' diff --git a/components/ui/label.tsx b/src/components/ui/label.tsx similarity index 100% rename from components/ui/label.tsx rename to src/components/ui/label.tsx diff --git a/components/ui/popover.tsx b/src/components/ui/popover.tsx similarity index 100% rename from components/ui/popover.tsx rename to src/components/ui/popover.tsx diff --git a/components/ui/progress.tsx b/src/components/ui/progress.tsx similarity index 100% rename from components/ui/progress.tsx rename to src/components/ui/progress.tsx diff --git a/components/ui/radio-group.tsx b/src/components/ui/radio-group.tsx similarity index 100% rename from components/ui/radio-group.tsx rename to src/components/ui/radio-group.tsx diff --git a/components/ui/scroll-area.tsx b/src/components/ui/scroll-area.tsx similarity index 100% rename from components/ui/scroll-area.tsx rename to src/components/ui/scroll-area.tsx diff --git a/components/ui/select.tsx b/src/components/ui/select.tsx similarity index 100% rename from components/ui/select.tsx rename to src/components/ui/select.tsx diff --git a/components/ui/separator.tsx b/src/components/ui/separator.tsx similarity index 100% rename from components/ui/separator.tsx rename to src/components/ui/separator.tsx diff --git a/components/ui/sheet.tsx b/src/components/ui/sheet.tsx similarity index 100% rename from components/ui/sheet.tsx rename to src/components/ui/sheet.tsx diff --git a/components/ui/sidebar.tsx b/src/components/ui/sidebar.tsx similarity index 99% rename from components/ui/sidebar.tsx rename to src/components/ui/sidebar.tsx index c010f51e..530a70ef 100644 --- a/components/ui/sidebar.tsx +++ b/src/components/ui/sidebar.tsx @@ -1,5 +1,3 @@ -'use client' - import { mergeProps } from '@base-ui/react/merge-props' import { useRender } from '@base-ui/react/use-render' import { cva, type VariantProps } from 'class-variance-authority' diff --git a/components/ui/skeleton.tsx b/src/components/ui/skeleton.tsx similarity index 100% rename from components/ui/skeleton.tsx rename to src/components/ui/skeleton.tsx diff --git a/src/components/ui/sonner.tsx b/src/components/ui/sonner.tsx new file mode 100644 index 00000000..e642d6bc --- /dev/null +++ b/src/components/ui/sonner.tsx @@ -0,0 +1,45 @@ +'use client' + +import { + IconAlertOctagon, + IconAlertTriangle, + IconCircleCheck, + IconInfoCircle, + IconLoader, +} from '@tabler/icons-react' +import { Toaster as Sonner, type ToasterProps } from 'sonner' +import { useTheme } from '../ThemeProvider' + +const Toaster = ({ ...props }: ToasterProps) => { + const { userTheme } = useTheme() + + return ( + , + info: , + warning: , + error: , + loading: , + }} + style={ + { + '--normal-bg': 'var(--popover)', + '--normal-text': 'var(--popover-foreground)', + '--normal-border': 'var(--border)', + '--border-radius': 'var(--radius)', + } as React.CSSProperties + } + toastOptions={{ + classNames: { + toast: 'cn-toast', + }, + }} + {...props} + /> + ) +} + +export { Toaster } diff --git a/components/ui/store/CodeMirror.tsx b/src/components/ui/store/CodeMirror.tsx similarity index 98% rename from components/ui/store/CodeMirror.tsx rename to src/components/ui/store/CodeMirror.tsx index 57631c94..fc5b5104 100644 --- a/components/ui/store/CodeMirror.tsx +++ b/src/components/ui/store/CodeMirror.tsx @@ -1,5 +1,3 @@ -'use client' - import { CodeMirror } from '@/components/ObjectDataList' import { StoreLabel } from '@/components/store/Label' import type { FormComponentProps, Prettify, StoreFieldPropsCommon } from '@/components/store/types' diff --git a/components/ui/switch.tsx b/src/components/ui/switch.tsx similarity index 100% rename from components/ui/switch.tsx rename to src/components/ui/switch.tsx diff --git a/components/ui/table.tsx b/src/components/ui/table.tsx similarity index 100% rename from components/ui/table.tsx rename to src/components/ui/table.tsx diff --git a/components/ui/tabs.tsx b/src/components/ui/tabs.tsx similarity index 100% rename from components/ui/tabs.tsx rename to src/components/ui/tabs.tsx diff --git a/components/ui/textarea.tsx b/src/components/ui/textarea.tsx similarity index 100% rename from components/ui/textarea.tsx rename to src/components/ui/textarea.tsx diff --git a/components/ui/theme-toggle.tsx b/src/components/ui/theme-toggle.tsx similarity index 75% rename from components/ui/theme-toggle.tsx rename to src/components/ui/theme-toggle.tsx index ad7aef1c..77849594 100644 --- a/components/ui/theme-toggle.tsx +++ b/src/components/ui/theme-toggle.tsx @@ -1,18 +1,16 @@ -'use client' - +import { useTheme } from '@/components/ThemeProvider' import { IconMoon, IconSun } from '@tabler/icons-react' -import { useTheme } from 'next-themes' import { Button } from '@/components/ui/button' export function ModeToggle() { - const { theme, setTheme } = useTheme() + const { userTheme, setTheme } = useTheme() return (
- + ) } diff --git a/app/page.tsx b/src/routes/index.tsx similarity index 69% rename from app/page.tsx rename to src/routes/index.tsx index ebebef19..220b4d17 100644 --- a/app/page.tsx +++ b/src/routes/index.tsx @@ -1,8 +1,13 @@ +import { createFileRoute } from '@tanstack/react-router' import AppEditDialog from '@/components/home/AppEditDialog' import AppGrid from '@/components/home/AppsGrid' import SystemStats from '@/components/home/SystemStats' -export default function HomePage() { +export const Route = createFileRoute('/')({ + component: HomePage, +}) + +function HomePage() { return (
diff --git a/app/login/page.tsx b/src/routes/login.tsx similarity index 82% rename from app/login/page.tsx rename to src/routes/login.tsx index e44f86bf..9340ff18 100644 --- a/app/login/page.tsx +++ b/src/routes/login.tsx @@ -1,5 +1,7 @@ -'use client' - +import { createFileRoute, useNavigate } from '@tanstack/react-router' +import { useForm } from 'juststore' +import { useCallback } from 'react' +import type {CreateFormOptions} from 'juststore'; import { StoreFormInputField, StoreFormPasswordField } from '@/components/store/Input' import { Button } from '@/components/ui/button' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' @@ -7,9 +9,10 @@ import { Field, FieldGroup } from '@/components/ui/field' import { api, formatError } from '@/lib/api-client' import { siteConfig } from '@/site-config' -import { useForm, type CreateFormOptions } from 'juststore' -import { useRouter } from 'next/navigation' -import { useCallback } from 'react' + +export const Route = createFileRoute('/login')({ + component: LoginPage, +}) type FormValues = { username: string @@ -25,8 +28,8 @@ const formConfig: CreateFormOptions = { }, } -export default function LoginPage() { - const router = useRouter() +function LoginPage() { + const navigate = useNavigate() const form = useForm( { @@ -41,10 +44,10 @@ export default function LoginPage() { form.clearErrors() await api.auth .callback(value) - .then(() => router.replace('/')) + .then(() => navigate({ to: '/', replace: true })) .catch(error => form.password.setError(formatError(error).message)) }, - [router, form] + [navigate, form] ) return ( diff --git a/app/playground/page.tsx b/src/routes/playground.tsx similarity index 91% rename from app/playground/page.tsx rename to src/routes/playground.tsx index 066471d1..907d6498 100644 --- a/app/playground/page.tsx +++ b/src/routes/playground.tsx @@ -1,3 +1,4 @@ +import { createFileRoute } from '@tanstack/react-router' import MockRequestForm from '@/components/playground/MockRequestForm' import MockResponseForm from '@/components/playground/MockResponseForm' import PresetExamples from '@/components/playground/PresetExamples' @@ -8,7 +9,11 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs' const wide = 'xl' -export default function PlaygroundPage() { +export const Route = createFileRoute('/playground')({ + component: PlaygroundPage, +}) + +function PlaygroundPage() { return (
diff --git a/app/routes/page.tsx b/src/routes/routes.tsx similarity index 80% rename from app/routes/page.tsx rename to src/routes/routes.tsx index 531b6d82..d238e6f9 100644 --- a/app/routes/page.tsx +++ b/src/routes/routes.tsx @@ -1,8 +1,13 @@ +import { createFileRoute } from '@tanstack/react-router' import RoutePageContent from '@/components/routes/content/Content' import RouteContentDialog from '@/components/routes/content/ContentDialog' import RoutesSidebar from '@/components/routes/Sidebar' -export default function RoutesPage() { +export const Route = createFileRoute('/routes')({ + component: RoutesPage, +}) + +function RoutesPage() { return ( <> diff --git a/app/servers/page.tsx b/src/routes/servers.tsx similarity index 71% rename from app/servers/page.tsx rename to src/routes/servers.tsx index 5e3ab384..5faec76b 100644 --- a/app/servers/page.tsx +++ b/src/routes/servers.tsx @@ -1,9 +1,14 @@ +import { createFileRoute } from '@tanstack/react-router' +import { Suspense } from 'react' import AllSystemInfoProvider from '@/components/servers/AllSystemInfoProvider' import ServerContent from '@/components/servers/content/Content' import ServersSidebar from '@/components/servers/Sidebar' -import { Suspense } from 'react' -export default function ServersPage() { +export const Route = createFileRoute('/servers')({ + component: ServersPage, +}) + +function ServersPage() { return (
diff --git a/src/routes/wiki.$.tsx b/src/routes/wiki.$.tsx new file mode 100644 index 00000000..d2bb73bf --- /dev/null +++ b/src/routes/wiki.$.tsx @@ -0,0 +1,44 @@ +import { createFileRoute } from '@tanstack/react-router' +import { join, extname, sep } from 'node:path' + +function isSafe(pathSegs: string[]): boolean { + return !pathSegs.some(seg => seg === '..') +} + +export const Route = createFileRoute('/wiki/$')({ + server: { + handlers: { + GET: async ({ request }) => { + // decodeURLComponent to resolve %2e path traversal + let pathSegs = decodeURIComponent(new URL(request.url).pathname) + .slice('/wiki'.length) + .split(sep) + + if (!isSafe(pathSegs)) { + return new Response('Forbidden', { status: 403 }) + } + + let fileName = pathSegs.at(-1) + if (!fileName) { + pathSegs = [] + fileName = 'index.html' + } else { + pathSegs.pop() + if (!extname(fileName)) { + fileName = `${fileName}.html` + } + } + const fullPath = join('public', 'wiki', ...pathSegs, fileName) + const file = Bun.file(fullPath) + if (await file.exists()) { + return new Response(await file.bytes(), { + headers: { + 'Content-Type': file.type, + }, + }) + } + return new Response(`${fullPath} not found`, { status: 404 }) + }, + }, + }, +}) diff --git a/site-config.ts b/src/site-config.ts similarity index 100% rename from site-config.ts rename to src/site-config.ts diff --git a/app/globals.css b/src/styles.css similarity index 92% rename from app/globals.css rename to src/styles.css index bc38950b..ed168872 100644 --- a/app/globals.css +++ b/src/styles.css @@ -7,9 +7,15 @@ --color-background: var(--background); --color-foreground: var(--foreground); - --font-sans: var(--font-sans); - --font-mono: var(--font-geist-mono); - --font-serif: var(--font-serif); + --font-geist: var(--font-geist-sans); + --font-geist-mono: var(--font-geist-mono); + + --font-sans: + var(--font-geist), ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', + 'Segoe UI Symbol', 'Noto Color Emoji'; + --font-mono: + var(--font-geist-mono), ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, + 'Liberation Mono', 'Courier New', monospace; --color-sidebar-ring: var(--sidebar-ring); --color-sidebar-border: var(--sidebar-border); @@ -69,6 +75,13 @@ } :root { + --font-geist-sans: + 'Geist', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, + sans-serif; + --font-geist-mono: + 'Geist Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', + 'Courier New', monospace; + --background: oklch(0.9821 0 0); --foreground: oklch(0.2435 0 0); --card: oklch(0.9911 0 0); diff --git a/types/compose-spec.json b/src/types/compose-spec.json similarity index 100% rename from types/compose-spec.json rename to src/types/compose-spec.json diff --git a/types/compose-spec.ts b/src/types/compose-spec.ts similarity index 100% rename from types/compose-spec.ts rename to src/types/compose-spec.ts diff --git a/types/file.ts b/src/types/file.ts similarity index 100% rename from types/file.ts rename to src/types/file.ts diff --git a/types/godoxy/acl.schema.json b/src/types/godoxy/acl.schema.json similarity index 100% rename from types/godoxy/acl.schema.json rename to src/types/godoxy/acl.schema.json diff --git a/types/godoxy/autocert.schema.json b/src/types/godoxy/autocert.schema.json similarity index 100% rename from types/godoxy/autocert.schema.json rename to src/types/godoxy/autocert.schema.json diff --git a/types/godoxy/config.schema.json b/src/types/godoxy/config.schema.json similarity index 100% rename from types/godoxy/config.schema.json rename to src/types/godoxy/config.schema.json diff --git a/types/godoxy/config/access_log.ts b/src/types/godoxy/config/access_log.ts similarity index 100% rename from types/godoxy/config/access_log.ts rename to src/types/godoxy/config/access_log.ts diff --git a/types/godoxy/config/acl.ts b/src/types/godoxy/config/acl.ts similarity index 100% rename from types/godoxy/config/acl.ts rename to src/types/godoxy/config/acl.ts diff --git a/types/godoxy/config/autocert.ts b/src/types/godoxy/config/autocert.ts similarity index 95% rename from types/godoxy/config/autocert.ts rename to src/types/godoxy/config/autocert.ts index eacecc7b..659a4f93 100644 --- a/types/godoxy/config/autocert.ts +++ b/src/types/godoxy/config/autocert.ts @@ -34,11 +34,10 @@ export type AutocertConfigWithoutExtra = | PorkbunOptions | OtherOptions -export type AutocertConfig = - AutocertConfigWithoutExtra & { - /** Extra certificates */ - extra?: AutocertExtra[] - } +export type AutocertConfig = AutocertConfigWithoutExtra & { + /** Extra certificates */ + extra?: AutocertExtra[] +} export interface AutocertConfigBase { /** ACME email */ diff --git a/types/godoxy/config/config.ts b/src/types/godoxy/config/config.ts similarity index 100% rename from types/godoxy/config/config.ts rename to src/types/godoxy/config/config.ts diff --git a/types/godoxy/config/docker.ts b/src/types/godoxy/config/docker.ts similarity index 92% rename from types/godoxy/config/docker.ts rename to src/types/godoxy/config/docker.ts index 58d7f3fd..6af0cb3f 100644 --- a/types/godoxy/config/docker.ts +++ b/src/types/godoxy/config/docker.ts @@ -1,6 +1,6 @@ import type { Hostname, Port, URL } from '../types' -export { type DockerConfig, type DockerProviderMap } +export type { DockerConfig, DockerProviderMap } /** Name-value mapping of docker hosts to retrieve routes from * diff --git a/types/godoxy/config/entrypoint.ts b/src/types/godoxy/config/entrypoint.ts similarity index 100% rename from types/godoxy/config/entrypoint.ts rename to src/types/godoxy/config/entrypoint.ts diff --git a/types/godoxy/config/homepage.ts b/src/types/godoxy/config/homepage.ts similarity index 100% rename from types/godoxy/config/homepage.ts rename to src/types/godoxy/config/homepage.ts diff --git a/types/godoxy/config/maxmind.ts b/src/types/godoxy/config/maxmind.ts similarity index 100% rename from types/godoxy/config/maxmind.ts rename to src/types/godoxy/config/maxmind.ts diff --git a/types/godoxy/config/notification.ts b/src/types/godoxy/config/notification.ts similarity index 100% rename from types/godoxy/config/notification.ts rename to src/types/godoxy/config/notification.ts diff --git a/types/godoxy/config/providers.ts b/src/types/godoxy/config/providers.ts similarity index 100% rename from types/godoxy/config/providers.ts rename to src/types/godoxy/config/providers.ts diff --git a/types/godoxy/config/rules.ts b/src/types/godoxy/config/rules.ts similarity index 100% rename from types/godoxy/config/rules.ts rename to src/types/godoxy/config/rules.ts diff --git a/types/godoxy/deref.ts b/src/types/godoxy/deref.ts similarity index 100% rename from types/godoxy/deref.ts rename to src/types/godoxy/deref.ts diff --git a/types/godoxy/docker.ts b/src/types/godoxy/docker.ts similarity index 100% rename from types/godoxy/docker.ts rename to src/types/godoxy/docker.ts diff --git a/types/godoxy/docker_routes.schema.json b/src/types/godoxy/docker_routes.schema.json similarity index 100% rename from types/godoxy/docker_routes.schema.json rename to src/types/godoxy/docker_routes.schema.json diff --git a/types/godoxy/index.ts b/src/types/godoxy/index.ts similarity index 93% rename from types/godoxy/index.ts rename to src/types/godoxy/index.ts index a29073f3..8d0a0d81 100644 --- a/types/godoxy/index.ts +++ b/src/types/godoxy/index.ts @@ -37,6 +37,13 @@ import type MaxmindSchemaDeref from './maxmind.schema.deref.json' import type MiddlewareComposeSchemaDeref from './middleware_compose.schema.deref.json' import type RoutesSchemaDeref from './routes.schema.deref.json' +// fixes: ReferenceError: Buffer is not defined on client side +if (typeof window !== 'undefined') { + window.Buffer = { + isBuffer: () => false, + } as unknown as typeof Buffer +} + import $ from '@apidevtools/json-schema-ref-parser' const ACLSchema = (await $.dereference(_ACLSchema)) as typeof ACLSchemaDeref @@ -75,5 +82,5 @@ export { type Notification, type Providers, type Proxmox, - type Routes + type Routes, } diff --git a/types/godoxy/maxmind.schema.json b/src/types/godoxy/maxmind.schema.json similarity index 100% rename from types/godoxy/maxmind.schema.json rename to src/types/godoxy/maxmind.schema.json diff --git a/types/godoxy/middleware_compose.schema.json b/src/types/godoxy/middleware_compose.schema.json similarity index 100% rename from types/godoxy/middleware_compose.schema.json rename to src/types/godoxy/middleware_compose.schema.json diff --git a/types/godoxy/middlewares/middleware_compose.ts b/src/types/godoxy/middlewares/middleware_compose.ts similarity index 100% rename from types/godoxy/middlewares/middleware_compose.ts rename to src/types/godoxy/middlewares/middleware_compose.ts diff --git a/types/godoxy/middlewares/middlewares.ts b/src/types/godoxy/middlewares/middlewares.ts similarity index 99% rename from types/godoxy/middlewares/middlewares.ts rename to src/types/godoxy/middlewares/middlewares.ts index 27f23dcc..fae6d88b 100644 --- a/types/godoxy/middlewares/middlewares.ts +++ b/src/types/godoxy/middlewares/middlewares.ts @@ -263,7 +263,7 @@ export type Crowdsec = { /** Crowdsec AppSec endpoint path * * @default "/" - */ + */ endpoint?: string /** Log blocked requests * diff --git a/types/godoxy/providers/healthcheck.ts b/src/types/godoxy/providers/healthcheck.ts similarity index 100% rename from types/godoxy/providers/healthcheck.ts rename to src/types/godoxy/providers/healthcheck.ts diff --git a/types/godoxy/providers/homepage.ts b/src/types/godoxy/providers/homepage.ts similarity index 100% rename from types/godoxy/providers/homepage.ts rename to src/types/godoxy/providers/homepage.ts diff --git a/types/godoxy/providers/idlewatcher.ts b/src/types/godoxy/providers/idlewatcher.ts similarity index 100% rename from types/godoxy/providers/idlewatcher.ts rename to src/types/godoxy/providers/idlewatcher.ts diff --git a/types/godoxy/providers/loadbalance.ts b/src/types/godoxy/providers/loadbalance.ts similarity index 100% rename from types/godoxy/providers/loadbalance.ts rename to src/types/godoxy/providers/loadbalance.ts diff --git a/types/godoxy/providers/proxmox.ts b/src/types/godoxy/providers/proxmox.ts similarity index 100% rename from types/godoxy/providers/proxmox.ts rename to src/types/godoxy/providers/proxmox.ts diff --git a/types/godoxy/providers/routes.ts b/src/types/godoxy/providers/routes.ts similarity index 100% rename from types/godoxy/providers/routes.ts rename to src/types/godoxy/providers/routes.ts diff --git a/types/godoxy/routes.schema.json b/src/types/godoxy/routes.schema.json similarity index 100% rename from types/godoxy/routes.schema.json rename to src/types/godoxy/routes.schema.json diff --git a/types/godoxy/types.ts b/src/types/godoxy/types.ts similarity index 100% rename from types/godoxy/types.ts rename to src/types/godoxy/types.ts diff --git a/types/health.ts b/src/types/health.ts similarity index 100% rename from types/health.ts rename to src/types/health.ts diff --git a/types/schema.ts b/src/types/schema.ts similarity index 100% rename from types/schema.ts rename to src/types/schema.ts diff --git a/test-run.compose.yml b/test-run.compose.yml index 3a681bae..bcc36f4a 100644 --- a/test-run.compose.yml +++ b/test-run.compose.yml @@ -7,31 +7,11 @@ services: env_file: .env read_only: true tmpfs: - - /app/.next/cache + - /tmp:rw + - /app/node_modules/.cache:rw security_opt: - no-new-privileges:true cap_drop: - all labels: proxy.aliases: godoxy-next - proxy.godoxy-next.rules: | - - name: login page - on: path /login - do: pass - - name: protected - on: | - !path regex("(_next/static|_next/image|favicon.ico).*") - !path glob("/api/v1/auth/*") - !path glob("/auth/*") - !path regex("[A-Za-z0-9_-]+\.(svg|png|jpg|jpeg|gif|ico|webp|woff2?|eot|ttf|otf|txt)(\?.+)?") - !path /api/v1/version - !path /manifest.json - do: require_auth - - name: proxy to backend - on: path glob("/api/v1/*") - do: proxy http://$${API_ADDR}/ - - name: proxy to auth api - on: path glob("/auth/*") - do: | - rewrite /auth /api/v1/auth - proxy http://$${API_ADDR}/ diff --git a/tsconfig.json b/tsconfig.json index 196cc338..498d6b4c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,6 +2,7 @@ "compilerOptions": { "target": "ES2022", "lib": ["dom", "dom.iterable", "esnext"], + "types": ["vite/client","vite-plugin-pwa/client"], "allowJs": true, "skipLibCheck": true, "useDefineForClassFields": true, @@ -24,25 +25,13 @@ "isolatedModules": true, "jsx": "react-jsx", "incremental": true, - "plugins": [ - { - "name": "next" - } - ], "paths": { - "@/*": ["./*"], + "@/*": ["./src/*"], "juststore": ["./juststore/src/index.ts"], "@/components/store/*": ["./juststore-shadcn/src/components/store/*"], "@/public/*": ["./public/*"] } }, - "include": [ - "next-env.d.ts", - "**/*.ts", - "**/*.tsx", - "**/*.d.ts", - ".next/types/**/*.ts", - ".next/dev/types/**/*.ts" - ], + "include": ["**/*.ts", "**/*.tsx"], "exclude": ["node_modules", "wiki"] } diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 00000000..813f3787 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,86 @@ +/// +import { siteConfig } from '@/site-config' +import tailwindcss from '@tailwindcss/vite' +import { devtools } from '@tanstack/devtools-vite' +import { tanstackStart } from '@tanstack/react-start/plugin/vite' +import viteReact from '@vitejs/plugin-react' +import { nitro } from 'nitro/vite' +import { defineConfig } from 'vite' +import { VitePWA } from 'vite-plugin-pwa' +import tsconfigPaths from 'vite-tsconfig-paths' + +const isDemoSite = process.env.DEMO_SITE === 'true' + +export default defineConfig({ + server: { + port: 3000, + allowedHosts: true, + }, + optimizeDeps: { + include: ['juststore'], + }, + plugins: [ + devtools(), + tailwindcss(), + tsconfigPaths(), + nitro({ + preset: isDemoSite ? 'cloudflare_pages' : 'bun', + minify: true, + sourcemap: false, + cloudflare: isDemoSite + ? { + deployConfig: true, + nodeCompat: true, + } + : undefined, + }), + tanstackStart(), + viteReact({ + babel: { + plugins: [ + [ + 'babel-plugin-react-compiler', + { + compilationMode: 'annotation', + }, + ], + ], + }, + }), + pwaConfig('.output/public'), + pwaConfig('.output/server'), + ], +}) + +function pwaConfig(outdir: string) { + return VitePWA({ + registerType: 'autoUpdate', + includeAssets: ['favicon.ico', 'apple-icon.png'], + outDir: outdir, + workbox: { + navigateFallback: null, + }, + manifest: { + name: siteConfig.metadata.title, + short_name: siteConfig.metadata.title, + description: siteConfig.metadata.description, + start_url: '/', + icons: [ + { + src: '/web-app-manifest-192x192.png', + sizes: '192x192', + type: 'image/png', + purpose: 'maskable', + }, + { + src: '/web-app-manifest-512x512.png', + sizes: '512x512', + type: 'image/png', + purpose: 'maskable', + }, + ], + theme_color: '#fffbfb', + background_color: '#000000', + display: 'standalone', + }}) +} \ No newline at end of file From 25b65f03a2a7d0049420d3e3becd046fef8111bc Mon Sep 17 00:00:00 2001 From: yusing Date: Thu, 5 Feb 2026 22:26:20 +0800 Subject: [PATCH 2/8] chore(assets): optimize images --- public/apple-icon.png | Bin 19311 -> 14178 bytes public/icon0.svg | 18 +----------------- public/icon1.png | Bin 12422 -> 10445 bytes 3 files changed, 1 insertion(+), 17 deletions(-) diff --git a/public/apple-icon.png b/public/apple-icon.png index 95977cdaceefb413c75237ffdf7f19ba9ae69b37..ee2d8f23c920b4b78e5ae9acc372254812b3090a 100644 GIT binary patch literal 14178 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 G;Qs(@A#HmA literal 19311 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 o8@tp3zIiYF|K;M1& diff --git a/public/icon0.svg b/public/icon0.svg index ea6de327..7bbfacc1 100644 --- a/public/icon0.svg +++ b/public/icon0.svg @@ -1,17 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/icon1.png b/public/icon1.png index 4a3bf1feb8b17daecdcae8d089fbe3f7e6f77e66..a3fb021e6dd05f47c80390d9831d85f515ae7dec 100644 GIT binary patch literal 10445 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 D!z1jC literal 12422 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

K)`Q}Ua0NoMvln#q))RUWuj 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 Date: Thu, 5 Feb 2026 23:39:30 +0800 Subject: [PATCH 3/8] chore: update dependencies; cleanup bun.lock --- bun.lock | 287 ++++++--------------------------------------------- package.json | 15 +-- 2 files changed, 40 insertions(+), 262 deletions(-) diff --git a/bun.lock b/bun.lock index 1e92803b..93eb3ea0 100644 --- a/bun.lock +++ b/bun.lock @@ -15,8 +15,8 @@ "@fontsource/geist": "^5.2.8", "@fontsource/geist-mono": "^5.2.7", "@tabler/icons-react": "^3.36.1", - "@tanstack/react-router": "^1.158.0", - "@tanstack/react-start": "^1.158.0", + "@tanstack/react-router": "^1.158.1", + "@tanstack/react-start": "^1.158.1", "@uiw/react-codemirror": "^4.25.4", "@xterm/addon-fit": "^0.11.0", "@xterm/addon-web-fonts": "^0.1.0", @@ -32,7 +32,7 @@ "embla-carousel-react": "^8.6.0", "juststore": "./juststore", "lucide-react": "^0.563.0", - "motion": "^12.31.0", + "motion": "^12.33.0", "react": "^19.2.4", "react-dom": "^19.2.4", "react-fast-compare": "^3.2.2", @@ -53,13 +53,13 @@ "@tailwindcss/vite": "^4.1.18", "@tanstack/devtools-vite": "^0.5.0", "@types/bun": "^1.3.8", - "@types/node": "^25.2.0", - "@types/react": "^19.2.10", + "@types/node": "^25.2.1", + "@types/react": "^19.2.13", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^5.1.3", "babel-plugin-react-compiler": "^1.0.0", "nitro": "^3.0.1-alpha.2", - "ts-json-schema-generator": "^2.4.0", + "ts-json-schema-generator": "^2.5.0", "typescript": "^5.9.3", "vite": "^7.3.1", "vite-plugin-pwa": "^1.2.0", @@ -68,6 +68,7 @@ }, }, "overrides": { + "@isaacs/brace-expansion": "^5.0.1", "@shikijs/core": "^3", "@shikijs/markdown-it": "^3", "@shikijs/rehype": "^3", @@ -382,24 +383,8 @@ "@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.2", "", { "os": "win32", "cpu": "x64" }, "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ=="], - "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ=="], - - "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="], - - "@eslint/config-array": ["@eslint/config-array@0.21.1", "", { "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA=="], - - "@eslint/config-helpers": ["@eslint/config-helpers@0.4.2", "", { "dependencies": { "@eslint/core": "^0.17.0" } }, "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw=="], - - "@eslint/core": ["@eslint/core@0.17.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ=="], - - "@eslint/eslintrc": ["@eslint/eslintrc@3.3.3", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ=="], - "@eslint/js": ["@eslint/js@9.39.2", "", {}, "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA=="], - "@eslint/object-schema": ["@eslint/object-schema@2.1.7", "", {}, "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA=="], - - "@eslint/plugin-kit": ["@eslint/plugin-kit@0.4.1", "", { "dependencies": { "@eslint/core": "^0.17.0", "levn": "^0.4.1" } }, "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA=="], - "@floating-ui/core": ["@floating-ui/core@1.7.3", "", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w=="], "@floating-ui/dom": ["@floating-ui/dom@1.7.4", "", { "dependencies": { "@floating-ui/core": "^1.7.3", "@floating-ui/utils": "^0.2.10" } }, "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA=="], @@ -414,17 +399,9 @@ "@fontsource/geist-mono": ["@fontsource/geist-mono@5.2.7", "", {}, "sha512-xVPVFISJg/K0VVd+aQN0Y7X/sw9hUcJPyDWFJ5GpyU3bHELhoRsJkPSRSHXW32mOi0xZCUQDOaPj1sqIFJ1FGg=="], - "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], - - "@humanfs/node": ["@humanfs/node@0.16.7", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.4.0" } }, "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ=="], - - "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="], - - "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="], - "@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="], - "@isaacs/brace-expansion": ["@isaacs/brace-expansion@5.0.0", "", { "dependencies": { "@isaacs/balanced-match": "^4.0.1" } }, "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA=="], + "@isaacs/brace-expansion": ["@isaacs/brace-expansion@5.0.1", "", { "dependencies": { "@isaacs/balanced-match": "^4.0.1" } }, "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ=="], "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], @@ -550,8 +527,6 @@ "@pivanov/utils": ["@pivanov/utils@0.0.2", "", { "peerDependencies": { "react": ">=18", "react-dom": ">=18" } }, "sha512-q9CN0bFWxWgMY5hVVYyBgez1jGiLBa6I+LkG37ycylPhFvEGOOeaADGtUSu46CaZasPnlY8fCdVJZmrgKb1EPA=="], - "@pkgr/core": ["@pkgr/core@0.2.9", "", {}, "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA=="], - "@preact/signals": ["@preact/signals@1.3.2", "", { "dependencies": { "@preact/signals-core": "^1.7.0" }, "peerDependencies": { "preact": "10.x" } }, "sha512-naxcJgUJ6BTOROJ7C3QML7KvwKwCXQJYTc5L/b0eEsdYgPB6SxwoQ1vDGcS0Q7GVjAenVq/tXrybVdFShHYZWg=="], "@preact/signals-core": ["@preact/signals-core@1.12.1", "", {}, "sha512-BwbTXpj+9QutoZLQvbttRg5x3l5468qaV2kufh+51yha1c53ep5dY4kTuZR35+3pAZxpfQerGJiQqg34ZNZ6uA=="], @@ -726,33 +701,33 @@ "@tanstack/history": ["@tanstack/history@1.154.14", "", {}, "sha512-xyIfof8eHBuub1CkBnbKNKQXeRZC4dClhmzePHVOEel4G7lk/dW+TQ16da7CFdeNLv6u6Owf5VoBQxoo6DFTSA=="], - "@tanstack/react-router": ["@tanstack/react-router@1.158.0", "", { "dependencies": { "@tanstack/history": "1.154.14", "@tanstack/react-store": "^0.8.0", "@tanstack/router-core": "1.158.0", "isbot": "^5.1.22", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" }, "peerDependencies": { "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0" } }, "sha512-kvTaO6zjq9WWPyo1wwSZx95AjJ9KOvu23cOMgKeDdDQWKF3Z9q3fwhToKMKJoC11T2Vuivz+o/anrxCcOvdRzw=="], + "@tanstack/react-router": ["@tanstack/react-router@1.158.1", "", { "dependencies": { "@tanstack/history": "1.154.14", "@tanstack/react-store": "^0.8.0", "@tanstack/router-core": "1.158.1", "isbot": "^5.1.22", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" }, "peerDependencies": { "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0" } }, "sha512-ZRBhs0tJDPeYGVrBhXPkGs+mOKqKKMM4OfvYSNvWIYZGfs8KQcqxPaN8OnUvKsnAGtzwusVWDpBipqVZWJd0lA=="], - "@tanstack/react-start": ["@tanstack/react-start@1.158.0", "", { "dependencies": { "@tanstack/react-router": "1.158.0", "@tanstack/react-start-client": "1.158.0", "@tanstack/react-start-server": "1.158.0", "@tanstack/router-utils": "^1.158.0", "@tanstack/start-client-core": "1.158.0", "@tanstack/start-plugin-core": "1.158.0", "@tanstack/start-server-core": "1.158.0", "pathe": "^2.0.3" }, "peerDependencies": { "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0", "vite": ">=7.0.0" } }, "sha512-CwfX2XGDVSwim24LWwM24ZxyposE+5Psj2e2PW4YN+AGgfdwm0+1xk9DEmDQp/Vke2OIdhnIXD/IDe7zTGpzcg=="], + "@tanstack/react-start": ["@tanstack/react-start@1.158.1", "", { "dependencies": { "@tanstack/react-router": "1.158.1", "@tanstack/react-start-client": "1.158.1", "@tanstack/react-start-server": "1.158.1", "@tanstack/router-utils": "^1.158.0", "@tanstack/start-client-core": "1.158.1", "@tanstack/start-plugin-core": "1.158.1", "@tanstack/start-server-core": "1.158.1", "pathe": "^2.0.3" }, "peerDependencies": { "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0", "vite": ">=7.0.0" } }, "sha512-xVOhZJ0xauUq7f4lT0dxDOKwMLBYHD2Bd7typH9r9JY3+YQimter/wglT7EOf7LXUnJPVCkXdY9Cgu/5M0KPjg=="], - "@tanstack/react-start-client": ["@tanstack/react-start-client@1.158.0", "", { "dependencies": { "@tanstack/react-router": "1.158.0", "@tanstack/router-core": "1.158.0", "@tanstack/start-client-core": "1.158.0", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" }, "peerDependencies": { "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0" } }, "sha512-oxo9+nFzsdiOkMFPs3HuVXola34FD2/kDfzO8wMu+KSsCwSRRhXpS7DGq/myw6AtjqiiFkNHeZqvvrlcH523Aw=="], + "@tanstack/react-start-client": ["@tanstack/react-start-client@1.158.1", "", { "dependencies": { "@tanstack/react-router": "1.158.1", "@tanstack/router-core": "1.158.1", "@tanstack/start-client-core": "1.158.1", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" }, "peerDependencies": { "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0" } }, "sha512-BCY4bvxlMpZa/qgPLsCLk6x0fkSsmBpvYlki7TVL2eNwrJ1k5G8GXS4Eu7qPyRw7J/UrMmyQhG83nKhcWTNx2g=="], - "@tanstack/react-start-server": ["@tanstack/react-start-server@1.158.0", "", { "dependencies": { "@tanstack/history": "1.154.14", "@tanstack/react-router": "1.158.0", "@tanstack/router-core": "1.158.0", "@tanstack/start-client-core": "1.158.0", "@tanstack/start-server-core": "1.158.0" }, "peerDependencies": { "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0" } }, "sha512-J1v8mckJIf2DHOg38XMq7X7CCOqiyLCPqKQDP8GXJ2WgjpBk6l+lemBmyhF1+76LxYWHfsQYwAg5W3cJ8+QqrQ=="], + "@tanstack/react-start-server": ["@tanstack/react-start-server@1.158.1", "", { "dependencies": { "@tanstack/history": "1.154.14", "@tanstack/react-router": "1.158.1", "@tanstack/router-core": "1.158.1", "@tanstack/start-client-core": "1.158.1", "@tanstack/start-server-core": "1.158.1" }, "peerDependencies": { "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0" } }, "sha512-B/luqD1+vTj1kiBbMl0GxvspZS93YV/K5+VWLUT94jxeuupbFUV8B4gyxbEhvjHS0fJcnMhSjzl/aN59D6mYuw=="], "@tanstack/react-store": ["@tanstack/react-store@0.8.0", "", { "dependencies": { "@tanstack/store": "0.8.0", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "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" } }, "sha512-1vG9beLIuB7q69skxK9r5xiLN3ztzIPfSQSs0GfeqWGO2tGIyInZx0x1COhpx97RKaONSoAb8C3dxacWksm1ow=="], - "@tanstack/router-core": ["@tanstack/router-core@1.158.0", "", { "dependencies": { "@tanstack/history": "1.154.14", "@tanstack/store": "^0.8.0", "cookie-es": "^2.0.0", "seroval": "^1.4.2", "seroval-plugins": "^1.4.2", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" } }, "sha512-dRMcWY0UB/6OZqSCx/7iUvom0ol18rHSQladygVT8mlth7uxYx3n5BNse8C03efIE8y1Bx+VDOBAKpAZ9BgKog=="], + "@tanstack/router-core": ["@tanstack/router-core@1.158.1", "", { "dependencies": { "@tanstack/history": "1.154.14", "@tanstack/store": "^0.8.0", "cookie-es": "^2.0.0", "seroval": "^1.4.2", "seroval-plugins": "^1.4.2", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" } }, "sha512-8B9X3GzN1JWsqa+OTgg2k+LrayLQYmgtv26b96difyrRS32DaDBvEpU3xXDaLNmi/+zoqG1ffAcDT4D6tyC2hw=="], - "@tanstack/router-generator": ["@tanstack/router-generator@1.158.0", "", { "dependencies": { "@tanstack/router-core": "1.158.0", "@tanstack/router-utils": "1.158.0", "@tanstack/virtual-file-routes": "1.154.7", "prettier": "^3.5.0", "recast": "^0.23.11", "source-map": "^0.7.4", "tsx": "^4.19.2", "zod": "^3.24.2" } }, "sha512-hVkXQSN/fMD9q3Zn3wNa4PV0Y9VNwQB2bLaecA5i4vc43GX75vmgyiKoMr44BJheUssfVoL/po9a/7sv+N6lKA=="], + "@tanstack/router-generator": ["@tanstack/router-generator@1.158.1", "", { "dependencies": { "@tanstack/router-core": "1.158.1", "@tanstack/router-utils": "1.158.0", "@tanstack/virtual-file-routes": "1.154.7", "prettier": "^3.5.0", "recast": "^0.23.11", "source-map": "^0.7.4", "tsx": "^4.19.2", "zod": "^3.24.2" } }, "sha512-geBpsIxJNvdjw2kt/Ii/j68hIUvfGnra0HKlGrDZw8/Ny4AJ2nnOcszUlZRbuQyxByk05r4lneOShKy5V5MUCQ=="], - "@tanstack/router-plugin": ["@tanstack/router-plugin@1.158.0", "", { "dependencies": { "@babel/core": "^7.28.5", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/plugin-syntax-typescript": "^7.27.1", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5", "@tanstack/router-core": "1.158.0", "@tanstack/router-generator": "1.158.0", "@tanstack/router-utils": "1.158.0", "@tanstack/virtual-file-routes": "1.154.7", "chokidar": "^3.6.0", "unplugin": "^2.1.2", "zod": "^3.24.2" }, "peerDependencies": { "@rsbuild/core": ">=1.0.2", "@tanstack/react-router": "^1.158.0", "vite": ">=5.0.0 || >=6.0.0 || >=7.0.0", "vite-plugin-solid": "^2.11.10", "webpack": ">=5.92.0" }, "optionalPeers": ["@rsbuild/core", "@tanstack/react-router", "vite", "vite-plugin-solid", "webpack"] }, "sha512-FxTOo/icU373jlOu9nlzR0B1vqc47tKZLw3HwOQwCBL4P4EihOBz+L7dcGyKR8bRBL0rCRWvHQTSHNMOr+fGYQ=="], + "@tanstack/router-plugin": ["@tanstack/router-plugin@1.158.1", "", { "dependencies": { "@babel/core": "^7.28.5", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/plugin-syntax-typescript": "^7.27.1", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5", "@tanstack/router-core": "1.158.1", "@tanstack/router-generator": "1.158.1", "@tanstack/router-utils": "1.158.0", "@tanstack/virtual-file-routes": "1.154.7", "chokidar": "^3.6.0", "unplugin": "^2.1.2", "zod": "^3.24.2" }, "peerDependencies": { "@rsbuild/core": ">=1.0.2", "@tanstack/react-router": "^1.158.1", "vite": ">=5.0.0 || >=6.0.0 || >=7.0.0", "vite-plugin-solid": "^2.11.10", "webpack": ">=5.92.0" }, "optionalPeers": ["@rsbuild/core", "@tanstack/react-router", "vite", "vite-plugin-solid", "webpack"] }, "sha512-IPCnf1CBc0jnczuy65+3iBaoABv5TKhOJ1YLzwel4kb9D8Abcq0vF8ooR5FiPmaGnree/z3SvjgHe5eQtgcsSQ=="], "@tanstack/router-utils": ["@tanstack/router-utils@1.158.0", "", { "dependencies": { "@babel/core": "^7.28.5", "@babel/generator": "^7.28.5", "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "ansis": "^4.1.0", "babel-dead-code-elimination": "^1.0.12", "diff": "^8.0.2", "pathe": "^2.0.3", "tinyglobby": "^0.2.15" } }, "sha512-qZ76eaLKU6Ae9iI/mc5zizBX149DXXZkBVVO3/QRIll79uKLJZHQlMKR++2ba7JsciBWz1pgpIBcCJPE9S0LVg=="], - "@tanstack/start-client-core": ["@tanstack/start-client-core@1.158.0", "", { "dependencies": { "@tanstack/router-core": "1.158.0", "@tanstack/start-fn-stubs": "1.154.7", "@tanstack/start-storage-context": "1.158.0", "seroval": "^1.4.2", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" } }, "sha512-nGuzFEuC+yEMd7inPP185K+tcPlHk8rcg8x/t2dAhytM+r4PxyRkvXrHoKMbQKGYR2CArml96UNEKXWxsAtmow=="], + "@tanstack/start-client-core": ["@tanstack/start-client-core@1.158.1", "", { "dependencies": { "@tanstack/router-core": "1.158.1", "@tanstack/start-fn-stubs": "1.154.7", "@tanstack/start-storage-context": "1.158.1", "seroval": "^1.4.2", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" } }, "sha512-RzdTTAsolz68p459/LXaFBeki/kcl19pveVonTYDz+shNX4a+6M/9ZhLt4Zshkh6NGPSwQa9qnoRoNlAlhuPYw=="], "@tanstack/start-fn-stubs": ["@tanstack/start-fn-stubs@1.154.7", "", {}, "sha512-D69B78L6pcFN5X5PHaydv7CScQcKLzJeEYqs7jpuyyqGQHSUIZUjS955j+Sir8cHhuDIovCe2LmsYHeZfWf3dQ=="], - "@tanstack/start-plugin-core": ["@tanstack/start-plugin-core@1.158.0", "", { "dependencies": { "@babel/code-frame": "7.27.1", "@babel/core": "^7.28.5", "@babel/types": "^7.28.5", "@rolldown/pluginutils": "1.0.0-beta.40", "@tanstack/router-core": "1.158.0", "@tanstack/router-generator": "1.158.0", "@tanstack/router-plugin": "1.158.0", "@tanstack/router-utils": "1.158.0", "@tanstack/start-client-core": "1.158.0", "@tanstack/start-server-core": "1.158.0", "cheerio": "^1.0.0", "exsolve": "^1.0.7", "pathe": "^2.0.3", "srvx": "^0.10.1", "tinyglobby": "^0.2.15", "ufo": "^1.5.4", "vitefu": "^1.1.1", "xmlbuilder2": "^4.0.3", "zod": "^3.24.2" }, "peerDependencies": { "vite": ">=7.0.0" } }, "sha512-KiG4ofL1I3A2p3BJ7qhyfugyKh5KMOIURvftmVc33IWLQaSYvCzCHoyaWfvcHIELbkyFpMwd4EauZH3I80BE8A=="], + "@tanstack/start-plugin-core": ["@tanstack/start-plugin-core@1.158.1", "", { "dependencies": { "@babel/code-frame": "7.27.1", "@babel/core": "^7.28.5", "@babel/types": "^7.28.5", "@rolldown/pluginutils": "1.0.0-beta.40", "@tanstack/router-core": "1.158.1", "@tanstack/router-generator": "1.158.1", "@tanstack/router-plugin": "1.158.1", "@tanstack/router-utils": "1.158.0", "@tanstack/start-client-core": "1.158.1", "@tanstack/start-server-core": "1.158.1", "cheerio": "^1.0.0", "exsolve": "^1.0.7", "pathe": "^2.0.3", "srvx": "^0.10.1", "tinyglobby": "^0.2.15", "ufo": "^1.5.4", "vitefu": "^1.1.1", "xmlbuilder2": "^4.0.3", "zod": "^3.24.2" }, "peerDependencies": { "vite": ">=7.0.0" } }, "sha512-IhHKo+CQe2q+YgwbCb6aIVWbjKT+kffzoKnNmVBJDX2QT6/C8OXFAOgT8mUUpujbQzh2qhpSMJbgcT5iiAvNUg=="], - "@tanstack/start-server-core": ["@tanstack/start-server-core@1.158.0", "", { "dependencies": { "@tanstack/history": "1.154.14", "@tanstack/router-core": "1.158.0", "@tanstack/start-client-core": "1.158.0", "@tanstack/start-storage-context": "1.158.0", "h3-v2": "npm:h3@2.0.1-rc.11", "seroval": "^1.4.2", "tiny-invariant": "^1.3.3" } }, "sha512-C5Hgxl79fV8e0sGsFB4akFhmU3zO0FpriyBof7pSKROCEOt8hXq2QstYhb3QVR9KdzKAPR+JHg3BbEOBNUVn7Q=="], + "@tanstack/start-server-core": ["@tanstack/start-server-core@1.158.1", "", { "dependencies": { "@tanstack/history": "1.154.14", "@tanstack/router-core": "1.158.1", "@tanstack/start-client-core": "1.158.1", "@tanstack/start-storage-context": "1.158.1", "h3-v2": "npm:h3@2.0.1-rc.11", "seroval": "^1.4.2", "tiny-invariant": "^1.3.3" } }, "sha512-0AxYJYdzLjNXqvkuUum7ITWfupaOnkGZ5mdGkRvh8TNJZSeqLuWQSNuJrHRwQQ61jB6k5V7tFlQCl58YatRIeQ=="], - "@tanstack/start-storage-context": ["@tanstack/start-storage-context@1.158.0", "", { "dependencies": { "@tanstack/router-core": "1.158.0" } }, "sha512-9wkbgZoMlVIFJGmCrSWeOF9sPveVOw8LwSk1YwKj4tQOXurxdOBoQMvkYy+sxcGkhK6CmGGJqsedKVHK3EZQng=="], + "@tanstack/start-storage-context": ["@tanstack/start-storage-context@1.158.1", "", { "dependencies": { "@tanstack/router-core": "1.158.1" } }, "sha512-0VJt3lUPylglgNmquHs5M4xmfudqEPGWItlvxVEFjrIPoZLHZ098TDSHSycra4RlRbtvlvD6qt0k745ncI0OHw=="], "@tanstack/store": ["@tanstack/store@0.8.0", "", {}, "sha512-Om+BO0YfMZe//X2z0uLF2j+75nQga6TpTJgLJQBiq85aOyZNIhkCgleNcud2KQg4k4v9Y9l+Uhru3qWMPGTOzQ=="], @@ -798,9 +773,9 @@ "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], - "@types/node": ["@types/node@25.2.0", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w=="], + "@types/node": ["@types/node@25.2.1", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg=="], - "@types/react": ["@types/react@19.2.10", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw=="], + "@types/react": ["@types/react@19.2.13", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ=="], "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], @@ -814,26 +789,6 @@ "@types/use-sync-external-store": ["@types/use-sync-external-store@0.0.6", "", {}, "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg=="], - "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.54.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.54.0", "@typescript-eslint/type-utils": "8.54.0", "@typescript-eslint/utils": "8.54.0", "@typescript-eslint/visitor-keys": "8.54.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.54.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ=="], - - "@typescript-eslint/parser": ["@typescript-eslint/parser@8.54.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.54.0", "@typescript-eslint/types": "8.54.0", "@typescript-eslint/typescript-estree": "8.54.0", "@typescript-eslint/visitor-keys": "8.54.0", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA=="], - - "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.54.0", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.54.0", "@typescript-eslint/types": "^8.54.0", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g=="], - - "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.54.0", "", { "dependencies": { "@typescript-eslint/types": "8.54.0", "@typescript-eslint/visitor-keys": "8.54.0" } }, "sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg=="], - - "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.54.0", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw=="], - - "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.54.0", "", { "dependencies": { "@typescript-eslint/types": "8.54.0", "@typescript-eslint/typescript-estree": "8.54.0", "@typescript-eslint/utils": "8.54.0", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA=="], - - "@typescript-eslint/types": ["@typescript-eslint/types@8.54.0", "", {}, "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA=="], - - "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.54.0", "", { "dependencies": { "@typescript-eslint/project-service": "8.54.0", "@typescript-eslint/tsconfig-utils": "8.54.0", "@typescript-eslint/types": "8.54.0", "@typescript-eslint/visitor-keys": "8.54.0", "debug": "^4.4.3", "minimatch": "^9.0.5", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA=="], - - "@typescript-eslint/utils": ["@typescript-eslint/utils@8.54.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.54.0", "@typescript-eslint/types": "8.54.0", "@typescript-eslint/typescript-estree": "8.54.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA=="], - - "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.54.0", "", { "dependencies": { "@typescript-eslint/types": "8.54.0", "eslint-visitor-keys": "^4.2.1" } }, "sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA=="], - "@uiw/codemirror-extensions-basic-setup": ["@uiw/codemirror-extensions-basic-setup@4.25.4", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/commands": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/lint": "^6.0.0", "@codemirror/search": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0" } }, "sha512-YzNwkm0AbPv1EXhCHYR5v0nqfemG2jEB0Z3Att4rBYqKrlG7AA9Rhjc3IyBaOzsBu18wtrp9/+uhTyu7TXSRng=="], "@uiw/react-codemirror": ["@uiw/react-codemirror@4.25.4", "", { "dependencies": { "@babel/runtime": "^7.18.6", "@codemirror/commands": "^6.1.0", "@codemirror/state": "^6.1.1", "@codemirror/theme-one-dark": "^6.0.0", "@uiw/codemirror-extensions-basic-setup": "4.25.4", "codemirror": "^6.0.0" }, "peerDependencies": { "@codemirror/view": ">=6.0.0", "react": ">=17.0.0", "react-dom": ">=17.0.0" } }, "sha512-ipO067oyfUw+DVaXhQCxkB0ZD9b7RnY+ByrprSYSKCHaULvJ3sqWYC/Zen6zVQ8/XC4o5EPBfatGiX20kC7XGA=="], @@ -854,13 +809,11 @@ "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], - "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], - "ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], - "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + "ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], "ansi-to-html": ["ansi-to-html@0.7.2", "", { "dependencies": { "entities": "^2.2.0" }, "bin": { "ansi-to-html": "bin/ansi-to-html" } }, "sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g=="], @@ -874,16 +827,6 @@ "array-buffer-byte-length": ["array-buffer-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" } }, "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw=="], - "array-includes": ["array-includes@3.1.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.24.0", "es-object-atoms": "^1.1.1", "get-intrinsic": "^1.3.0", "is-string": "^1.1.1", "math-intrinsics": "^1.1.0" } }, "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ=="], - - "array.prototype.findlast": ["array.prototype.findlast@1.2.5", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "es-shim-unscopables": "^1.0.2" } }, "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ=="], - - "array.prototype.flat": ["array.prototype.flat@1.3.3", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" } }, "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg=="], - - "array.prototype.flatmap": ["array.prototype.flatmap@1.3.3", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" } }, "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg=="], - - "array.prototype.tosorted": ["array.prototype.tosorted@1.1.4", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.3", "es-errors": "^1.3.0", "es-shim-unscopables": "^1.0.2" } }, "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA=="], - "arraybuffer.prototype.slice": ["arraybuffer.prototype.slice@1.0.4", "", { "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "is-array-buffer": "^3.0.4" } }, "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ=="], "ast-types": ["ast-types@0.16.1", "", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg=="], @@ -922,7 +865,7 @@ "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], - "brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], + "brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], @@ -938,8 +881,6 @@ "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], - "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], - "caniuse-lite": ["caniuse-lite@1.0.30001761", "", {}, "sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g=="], "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], @@ -978,12 +919,10 @@ "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], - "commander": ["commander@13.1.0", "", {}, "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw=="], + "commander": ["commander@14.0.3", "", {}, "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw=="], "common-tags": ["common-tags@1.8.2", "", {}, "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA=="], - "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], - "consola": ["consola@3.4.2", "", {}, "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA=="], "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], @@ -1046,8 +985,6 @@ "decimal.js-light": ["decimal.js-light@2.5.1", "", {}, "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg=="], - "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], - "deepmerge": ["deepmerge@4.3.1", "", {}, "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A=="], "define-data-property": ["define-data-property@1.1.4", "", { "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "gopd": "^1.0.1" } }, "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A=="], @@ -1068,8 +1005,6 @@ "discontinuous-range": ["discontinuous-range@1.0.0", "", {}, "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ=="], - "doctrine": ["doctrine@2.1.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="], - "dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="], "domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="], @@ -1112,14 +1047,10 @@ "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], - "es-iterator-helpers": ["es-iterator-helpers@1.2.2", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.24.1", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.1.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.3.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "iterator.prototype": "^1.1.5", "safe-array-concat": "^1.1.3" } }, "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w=="], - "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], - "es-shim-unscopables": ["es-shim-unscopables@1.1.0", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw=="], - "es-to-primitive": ["es-to-primitive@1.3.0", "", { "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", "is-symbol": "^1.0.4" } }, "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g=="], "es-toolkit": ["es-toolkit@1.44.0", "", {}, "sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg=="], @@ -1128,32 +1059,8 @@ "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], - "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], - - "eslint": ["eslint@9.39.2", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.1", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.39.2", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw=="], - - "eslint-plugin-prettier": ["eslint-plugin-prettier@5.5.5", "", { "dependencies": { "prettier-linter-helpers": "^1.0.1", "synckit": "^0.11.12" }, "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", "prettier": ">=3.0.0" }, "optionalPeers": ["@types/eslint", "eslint-config-prettier"] }, "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw=="], - - "eslint-plugin-react": ["eslint-plugin-react@7.37.5", "", { "dependencies": { "array-includes": "^3.1.8", "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.1", "estraverse": "^5.3.0", "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "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" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA=="], - - "eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@7.0.1", "", { "dependencies": { "@babel/core": "^7.24.4", "@babel/parser": "^7.24.4", "hermes-parser": "^0.25.1", "zod": "^3.25.0 || ^4.0.0", "zod-validation-error": "^3.5.0 || ^4.0.0" }, "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA=="], - - "eslint-plugin-react-refresh": ["eslint-plugin-react-refresh@0.4.26", "", { "peerDependencies": { "eslint": ">=8.40" } }, "sha512-1RETEylht2O6FM/MvgnyvT+8K21wLqDNg4qD51Zj3guhjt433XbnnkVttHMyaVyAFD03QSV4LPS5iE3VQmO7XQ=="], - - "eslint-scope": ["eslint-scope@8.4.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg=="], - - "eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="], - - "espree": ["espree@10.4.0", "", { "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.1" } }, "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ=="], - "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], - "esquery": ["esquery@1.7.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g=="], - - "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], - - "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], - "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], @@ -1166,12 +1073,8 @@ "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], - "fast-diff": ["fast-diff@1.3.0", "", {}, "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw=="], - "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], - "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], - "fast-shallow-equal": ["fast-shallow-equal@1.0.0", "", {}, "sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw=="], "fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="], @@ -1180,18 +1083,10 @@ "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], - "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], - "filelist": ["filelist@1.0.4", "", { "dependencies": { "minimatch": "^5.0.1" } }, "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q=="], "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], - "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], - - "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], - - "flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="], - "follow-redirects": ["follow-redirects@1.15.11", "", {}, "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ=="], "for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="], @@ -1200,7 +1095,7 @@ "form-data": ["form-data@4.0.5", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w=="], - "framer-motion": ["framer-motion@12.31.0", "", { "dependencies": { "motion-dom": "^12.30.1", "motion-utils": "^12.29.2", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-Tnd0FU05zGRFI3JJmBegXonF1rfuzYeuXd1QSdQ99Ysnppk0yWBWSW2wUsqzRpS5nv0zPNx+y0wtDj4kf0q5RQ=="], + "framer-motion": ["framer-motion@12.33.0", "", { "dependencies": { "motion-dom": "^12.33.0", "motion-utils": "^12.29.2", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-ca8d+rRPcDP5iIF+MoT3WNc0KHJMjIyFAbtVLvM9eA7joGSpeqDfiNH/kCs1t4CHi04njYvWyj0jS4QlEK/rJQ=="], "fs-extra": ["fs-extra@9.1.0", "", { "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ=="], @@ -1230,9 +1125,7 @@ "glob": ["glob@11.1.0", "", { "dependencies": { "foreground-child": "^3.3.1", "jackspeak": "^4.1.1", "minimatch": "^10.1.1", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw=="], - "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], - - "globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="], + "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], "globalthis": ["globalthis@1.0.4", "", { "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" } }, "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ=="], @@ -1248,8 +1141,6 @@ "has-bigints": ["has-bigints@1.1.0", "", {}, "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg=="], - "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], - "has-property-descriptors": ["has-property-descriptors@1.0.2", "", { "dependencies": { "es-define-property": "^1.0.0" } }, "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg=="], "has-proto": ["has-proto@1.2.0", "", { "dependencies": { "dunder-proto": "^1.0.0" } }, "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ=="], @@ -1264,10 +1155,6 @@ "hast-util-whitespace": ["hast-util-whitespace@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="], - "hermes-estree": ["hermes-estree@0.25.1", "", {}, "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw=="], - - "hermes-parser": ["hermes-parser@0.25.1", "", { "dependencies": { "hermes-estree": "0.25.1" } }, "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA=="], - "html-void-elements": ["html-void-elements@3.0.0", "", {}, "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="], "htmlparser2": ["htmlparser2@10.1.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.2.2", "entities": "^7.0.1" } }, "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ=="], @@ -1280,14 +1167,8 @@ "idb": ["idb@7.1.1", "", {}, "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ=="], - "ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], - "immer": ["immer@10.2.0", "", {}, "sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw=="], - "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], - - "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], - "inline-style-prefixer": ["inline-style-prefixer@7.0.1", "", { "dependencies": { "css-in-js-utils": "^3.1.0" } }, "sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw=="], "internal-slot": ["internal-slot@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw=="], @@ -1362,8 +1243,6 @@ "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], - "iterator.prototype": ["iterator.prototype@1.1.5", "", { "dependencies": { "define-data-property": "^1.1.4", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "get-proto": "^1.0.0", "has-symbols": "^1.1.0", "set-function-name": "^2.0.2" } }, "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g=="], - "jackspeak": ["jackspeak@4.1.1", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" } }, "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ=="], "jake": ["jake@10.9.4", "", { "dependencies": { "async": "^3.2.6", "filelist": "^1.0.4", "picocolors": "^1.1.1" }, "bin": { "jake": "bin/cli.js" } }, "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA=="], @@ -1378,27 +1257,19 @@ "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], - "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], - "json-schema": ["json-schema@0.4.0", "", {}, "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="], "json-schema-library": ["json-schema-library@10.5.2", "", { "dependencies": { "@sagold/json-pointer": "^7.2.0", "@sagold/json-query": "^6.2.0", "deepmerge": "^4.3.1", "fast-copy": "^3.0.2", "fast-deep-equal": "^3.1.3", "smtp-address-parser": "1.0.10", "uri-js": "^4.4.1", "valid-url": "^1.0.9" } }, "sha512-dXFWnglpSz1lf0omz3wf6oq9+bwVRcAEqId9vTRSfDDqu/mwdmq9m057B+NP7Hw1dkGWfYELLvehTWtLs4tITQ=="], "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], - "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], - "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], "jsonfile": ["jsonfile@6.2.0", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg=="], "jsonpointer": ["jsonpointer@5.0.1", "", {}, "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ=="], - "jsx-ast-utils": ["jsx-ast-utils@3.3.5", "", { "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", "object.assign": "^4.1.4", "object.values": "^1.1.6" } }, "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ=="], - - "juststore": ["juststore@file:juststore", { "dependencies": { "change-case": "^5.4.4", "react-fast-compare": "^3.2.2" }, "devDependencies": { "@eslint/js": "^9.39.2", "@types/node": "^24.10.4", "@types/react": "^19.2.7", "@typescript-eslint/eslint-plugin": "^8.50.1", "@typescript-eslint/parser": "^8.50.1", "eslint": "^9.39.2", "eslint-plugin-prettier": "^5.5.4", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-react-refresh": "^0.4.26", "husky": "^9.1.7", "prettier": "^3.7.4", "react": "^19.2.3", "typescript": "^5.9.3" }, "peerDependencies": { "react": ">=18.0.0" } }], - - "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], + "juststore": ["juststore@file:juststore", { "dependencies": { "change-case": "^5.4.4", "react-fast-compare": "^3.2.2" }, "devDependencies": { "@biomejs/biome": "^2.3.14", "@eslint/js": "^9.39.2", "@types/node": "^24.10.4", "@types/react": "^19.2.7", "husky": "^9.1.7", "react": "^19.2.3", "typescript": "^5.9.3" }, "peerDependencies": { "react": ">=18.0.0" } }], "kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="], @@ -1406,8 +1277,6 @@ "leven": ["leven@3.1.0", "", {}, "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="], - "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], - "lezer-json5": ["lezer-json5@2.0.2", "", { "dependencies": { "@lezer/lr": "^1.0.0" } }, "sha512-NRmtBlKW/f8mA7xatKq8IUOq045t8GVHI4kZXrUtYYUdiVeGiO6zKGAV7/nUAnf5q+rYTY+SWX/gvQdFXMjNxQ=="], "lightningcss": ["lightningcss@1.30.2", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.30.2", "lightningcss-darwin-arm64": "1.30.2", "lightningcss-darwin-x64": "1.30.2", "lightningcss-freebsd-x64": "1.30.2", "lightningcss-linux-arm-gnueabihf": "1.30.2", "lightningcss-linux-arm64-gnu": "1.30.2", "lightningcss-linux-arm64-musl": "1.30.2", "lightningcss-linux-x64-gnu": "1.30.2", "lightningcss-linux-x64-musl": "1.30.2", "lightningcss-win32-arm64-msvc": "1.30.2", "lightningcss-win32-x64-msvc": "1.30.2" } }, "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ=="], @@ -1436,20 +1305,14 @@ "linkify-it": ["linkify-it@5.0.0", "", { "dependencies": { "uc.micro": "^2.0.0" } }, "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ=="], - "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], - "lodash": ["lodash@4.17.23", "", {}, "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w=="], "lodash.debounce": ["lodash.debounce@4.0.8", "", {}, "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="], - "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], - "lodash.sortby": ["lodash.sortby@4.7.0", "", {}, "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA=="], "loglevel": ["loglevel@1.9.2", "", {}, "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg=="], - "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], - "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], "lucide-react": ["lucide-react@0.563.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-8dXPB2GI4dI8jV4MgUDGBeLdGk8ekfqVZ0BdLcrRzocGgG75ltNEmWS+gE7uokKF/0oSUuczNDT+g9hFJ23FkA=="], @@ -1486,9 +1349,9 @@ "moo": ["moo@0.5.2", "", {}, "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q=="], - "motion": ["motion@12.31.0", "", { "dependencies": { "framer-motion": "^12.31.0", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-KpZQik3LLFdsiaLdFXQGnty84KcDvvdvBCHSvA9aH+RjQTP6jkJGyngRPSngau13ARUI6TbPphf/Vv/QxwxRJQ=="], + "motion": ["motion@12.33.0", "", { "dependencies": { "framer-motion": "^12.33.0", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-TcND7PijsrTeIA9SRVUB8TOJQ+6mJnJ5K4a9oAJZvyI0Zy47Gq5oofU+VkTxbLcvDoKXnHspQcII2mnk3TbFsQ=="], - "motion-dom": ["motion-dom@12.30.1", "", { "dependencies": { "motion-utils": "^12.29.2" } }, "sha512-QXB+iFJRzZTqL+Am4a1CRoHdH+0Nq12wLdqQQZZsfHlp9AMt6PA098L/61oVZsDA+Ep3QSGudzpViyRrhYhGcQ=="], + "motion-dom": ["motion-dom@12.33.0", "", { "dependencies": { "motion-utils": "^12.29.2" } }, "sha512-XRPebVypsl0UM+7v0Hr8o9UAj0S2djsQWRdHBd5iVouVpMrQqAI0C/rDAT3QaYnXnHuC5hMcwDHCboNeyYjPoQ=="], "motion-utils": ["motion-utils@12.29.2", "", {}, "sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A=="], @@ -1500,8 +1363,6 @@ "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], - "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], - "nearley": ["nearley@2.20.1", "", { "dependencies": { "commander": "^2.19.0", "moo": "^0.5.0", "railroad-diagrams": "^1.0.0", "randexp": "0.4.6" }, "bin": { "nearleyc": "bin/nearleyc.js", "nearley-test": "bin/nearley-test.js", "nearley-unparse": "bin/nearley-unparse.js", "nearley-railroad": "bin/nearley-railroad.js" } }, "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ=="], "nf3": ["nf3@0.3.7", "", {}, "sha512-wL73kyZbBoeTWlvQWQ0gQDZnqp+aNlUN5YIqsc3fv5V/06LAlwrwt+G7TpugFLJIai0AhrmnKJ2kgW0xprj+yQ=="], @@ -1514,20 +1375,12 @@ "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="], - "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], - "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], "object-keys": ["object-keys@1.1.1", "", {}, "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="], "object.assign": ["object.assign@4.1.7", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0", "has-symbols": "^1.1.0", "object-keys": "^1.1.1" } }, "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw=="], - "object.entries": ["object.entries@1.1.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-object-atoms": "^1.1.1" } }, "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw=="], - - "object.fromentries": ["object.fromentries@2.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-object-atoms": "^1.0.0" } }, "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ=="], - - "object.values": ["object.values@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA=="], - "ofetch": ["ofetch@2.0.0-alpha.3", "", {}, "sha512-zpYTCs2byOuft65vI3z43Dd6iSdFbOZZLb9/d21aCpx2rGastVU9dOCv0lu4ykc1Ur1anAYjDi3SUvR0vq50JA=="], "ohash": ["ohash@2.0.11", "", {}, "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="], @@ -1536,30 +1389,20 @@ "oniguruma-to-es": ["oniguruma-to-es@4.3.4", "", { "dependencies": { "oniguruma-parser": "^0.12.1", "regex": "^6.0.1", "regex-recursion": "^6.0.2" } }, "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA=="], - "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], - "own-keys": ["own-keys@1.0.1", "", { "dependencies": { "get-intrinsic": "^1.2.6", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" } }, "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg=="], "oxc-minify": ["oxc-minify@0.110.0", "", { "optionalDependencies": { "@oxc-minify/binding-android-arm-eabi": "0.110.0", "@oxc-minify/binding-android-arm64": "0.110.0", "@oxc-minify/binding-darwin-arm64": "0.110.0", "@oxc-minify/binding-darwin-x64": "0.110.0", "@oxc-minify/binding-freebsd-x64": "0.110.0", "@oxc-minify/binding-linux-arm-gnueabihf": "0.110.0", "@oxc-minify/binding-linux-arm-musleabihf": "0.110.0", "@oxc-minify/binding-linux-arm64-gnu": "0.110.0", "@oxc-minify/binding-linux-arm64-musl": "0.110.0", "@oxc-minify/binding-linux-ppc64-gnu": "0.110.0", "@oxc-minify/binding-linux-riscv64-gnu": "0.110.0", "@oxc-minify/binding-linux-riscv64-musl": "0.110.0", "@oxc-minify/binding-linux-s390x-gnu": "0.110.0", "@oxc-minify/binding-linux-x64-gnu": "0.110.0", "@oxc-minify/binding-linux-x64-musl": "0.110.0", "@oxc-minify/binding-openharmony-arm64": "0.110.0", "@oxc-minify/binding-wasm32-wasi": "0.110.0", "@oxc-minify/binding-win32-arm64-msvc": "0.110.0", "@oxc-minify/binding-win32-ia32-msvc": "0.110.0", "@oxc-minify/binding-win32-x64-msvc": "0.110.0" } }, "sha512-KWGTzPo83QmGrXC4ml83PM9HDwUPtZFfasiclUvTV4i3/0j7xRRqINVkrL77CbQnoWura3CMxkRofjQKVDuhBw=="], "oxc-transform": ["oxc-transform@0.110.0", "", { "optionalDependencies": { "@oxc-transform/binding-android-arm-eabi": "0.110.0", "@oxc-transform/binding-android-arm64": "0.110.0", "@oxc-transform/binding-darwin-arm64": "0.110.0", "@oxc-transform/binding-darwin-x64": "0.110.0", "@oxc-transform/binding-freebsd-x64": "0.110.0", "@oxc-transform/binding-linux-arm-gnueabihf": "0.110.0", "@oxc-transform/binding-linux-arm-musleabihf": "0.110.0", "@oxc-transform/binding-linux-arm64-gnu": "0.110.0", "@oxc-transform/binding-linux-arm64-musl": "0.110.0", "@oxc-transform/binding-linux-ppc64-gnu": "0.110.0", "@oxc-transform/binding-linux-riscv64-gnu": "0.110.0", "@oxc-transform/binding-linux-riscv64-musl": "0.110.0", "@oxc-transform/binding-linux-s390x-gnu": "0.110.0", "@oxc-transform/binding-linux-x64-gnu": "0.110.0", "@oxc-transform/binding-linux-x64-musl": "0.110.0", "@oxc-transform/binding-openharmony-arm64": "0.110.0", "@oxc-transform/binding-wasm32-wasi": "0.110.0", "@oxc-transform/binding-win32-arm64-msvc": "0.110.0", "@oxc-transform/binding-win32-ia32-msvc": "0.110.0", "@oxc-transform/binding-win32-x64-msvc": "0.110.0" } }, "sha512-/fymQNzzUoKZweH0nC5yvbI2eR0yWYusT9TEKDYVgOgYrf9Qmdez9lUFyvxKR9ycx+PTHi/reIOzqf3wkShQsw=="], - "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], - - "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], - "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="], - "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], - "parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="], "parse5-htmlparser2-tree-adapter": ["parse5-htmlparser2-tree-adapter@7.1.0", "", { "dependencies": { "domhandler": "^5.0.3", "parse5": "^7.0.0" } }, "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g=="], "parse5-parser-stream": ["parse5-parser-stream@7.1.2", "", { "dependencies": { "parse5": "^7.0.0" } }, "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow=="], - "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], - "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], @@ -1582,16 +1425,10 @@ "preact": ["preact@10.28.2", "", {}, "sha512-lbteaWGzGHdlIuiJ0l2Jq454m6kcpI1zNje6d8MlGAFlYvP2GO4ibnat7P74Esfz4sPTdM6UxtTwh/d3pwM9JA=="], - "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], - "prettier": ["prettier@3.8.1", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg=="], - "prettier-linter-helpers": ["prettier-linter-helpers@1.0.1", "", { "dependencies": { "fast-diff": "^1.1.2" } }, "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg=="], - "pretty-bytes": ["pretty-bytes@6.1.1", "", {}, "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ=="], - "prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="], - "property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="], "proxy-from-env": ["proxy-from-env@1.1.0", "", {}, "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="], @@ -1668,9 +1505,7 @@ "resize-observer-polyfill": ["resize-observer-polyfill@1.5.1", "", {}, "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="], - "resolve": ["resolve@2.0.0-next.5", "", { "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA=="], - - "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], + "resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="], "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], @@ -1768,8 +1603,6 @@ "string.prototype.matchall": ["string.prototype.matchall@4.0.12", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "regexp.prototype.flags": "^1.5.3", "set-function-name": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA=="], - "string.prototype.repeat": ["string.prototype.repeat@1.0.0", "", { "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" } }, "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w=="], - "string.prototype.trim": ["string.prototype.trim@1.2.10", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-data-property": "^1.1.4", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-object-atoms": "^1.0.0", "has-property-descriptors": "^1.0.2" } }, "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA=="], "string.prototype.trimend": ["string.prototype.trimend@1.0.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ=="], @@ -1786,18 +1619,12 @@ "strip-comments": ["strip-comments@2.0.1", "", {}, "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw=="], - "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], - "style-mod": ["style-mod@4.1.3", "", {}, "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ=="], "stylis": ["stylis@4.3.6", "", {}, "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ=="], - "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], - "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], - "synckit": ["synckit@0.11.12", "", { "dependencies": { "@pkgr/core": "^0.2.9" } }, "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ=="], - "tabbable": ["tabbable@6.4.0", "", {}, "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg=="], "tailwind-merge": ["tailwind-merge@3.4.0", "", {}, "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g=="], @@ -1830,11 +1657,9 @@ "trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], - "ts-api-utils": ["ts-api-utils@2.4.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA=="], - "ts-easing": ["ts-easing@0.2.0", "", {}, "sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ=="], - "ts-json-schema-generator": ["ts-json-schema-generator@2.4.0", "", { "dependencies": { "@types/json-schema": "^7.0.15", "commander": "^13.1.0", "glob": "^11.0.1", "json5": "^2.2.3", "normalize-path": "^3.0.0", "safe-stable-stringify": "^2.5.0", "tslib": "^2.8.1", "typescript": "^5.8.2" }, "bin": { "ts-json-schema-generator": "bin/ts-json-schema-generator.js" } }, "sha512-HbmNsgs58CfdJq0gpteRTxPXG26zumezOs+SB9tgky6MpqiFgQwieCn2MW70+sxpHouZ/w9LW0V6L4ZQO4y1Ug=="], + "ts-json-schema-generator": ["ts-json-schema-generator@2.5.0", "", { "dependencies": { "@types/json-schema": "^7.0.15", "commander": "^14.0.2", "json5": "^2.2.3", "normalize-path": "^3.0.0", "safe-stable-stringify": "^2.5.0", "tslib": "^2.8.1", "typescript": "^5.9.3" }, "bin": { "ts-json-schema-generator": "bin/ts-json-schema-generator.js" } }, "sha512-sYY7AInozRbtj9OD3ynJJuMDWZ5lGxzxTevtmH3W9Hnd2J2szBC0HdPqSyuIirXnQ6g8KDJxS/HENoypUwBrlg=="], "tsconfck": ["tsconfck@3.1.6", "", { "peerDependencies": { "typescript": "^5.0.0" }, "optionalPeers": ["typescript"], "bin": { "tsconfck": "bin/tsconfck.js" } }, "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w=="], @@ -1844,8 +1669,6 @@ "tw-animate-css": ["tw-animate-css@1.4.0", "", {}, "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ=="], - "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], - "type-fest": ["type-fest@0.16.0", "", {}, "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg=="], "typed-array-buffer": ["typed-array-buffer@1.0.3", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-typed-array": "^1.1.14" } }, "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw=="], @@ -1946,8 +1769,6 @@ "which-typed-array": ["which-typed-array@1.1.19", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw=="], - "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], - "workbox-background-sync": ["workbox-background-sync@7.4.0", "", { "dependencies": { "idb": "^7.0.1", "workbox-core": "7.4.0" } }, "sha512-8CB9OxKAgKZKyNMwfGZ1XESx89GryWTfI+V5yEj8sHjFH8MFelUwYXEyldEK6M6oKMmn807GoJFUEA1sC4XS9w=="], "workbox-broadcast-update": ["workbox-broadcast-update@7.4.0", "", { "dependencies": { "workbox-core": "7.4.0" } }, "sha512-+eZQwoktlvo62cI0b+QBr40v5XjighxPq3Fzo9AWMiAosmpG5gxRHgTbGGhaJv/q/MFVxwFNGh/UwHZ/8K88lA=="], @@ -1992,18 +1813,12 @@ "yaml": ["yaml@2.8.2", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A=="], - "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], - "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], - "zod-validation-error": ["zod-validation-error@4.0.2", "", { "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ=="], - "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], "@babel/helper-annotate-as-pure/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], - "@babel/helper-define-polyfill-provider/resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="], - "@babel/helper-member-expression-to-functions/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], "@babel/helper-optimise-call-expression/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], @@ -2014,16 +1829,6 @@ "@codemirror/lang-javascript/@codemirror/lint": ["@codemirror/lint@6.9.2", "", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.35.0", "crelt": "^1.0.5" } }, "sha512-sv3DylBiIyi+xKwRCJAAsBZZZWo82shJ/RTMymLabAdtbkV5cSKwWDeCgtUq3v8flTaXS2y1kKkICuRYtUswyQ=="], - "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], - - "@eslint/config-array/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - - "@eslint/eslintrc/ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], - - "@eslint/eslintrc/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - - "@eslint/eslintrc/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - "@radix-ui/react-dialog/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], "@radix-ui/react-dismissable-layer/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], @@ -2042,8 +1847,6 @@ "@rollup/plugin-babel/rollup": ["rollup@2.79.2", "", { "optionalDependencies": { "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ=="], - "@rollup/plugin-node-resolve/resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="], - "@rollup/plugin-replace/@rollup/pluginutils": ["@rollup/pluginutils@3.1.0", "", { "dependencies": { "@types/estree": "0.0.39", "estree-walker": "^1.0.1", "picomatch": "^2.2.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0" } }, "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg=="], "@rollup/plugin-replace/magic-string": ["magic-string@0.25.9", "", { "dependencies": { "sourcemap-codec": "^1.4.8" } }, "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ=="], @@ -2088,10 +1891,6 @@ "@types/babel__traverse/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], - "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], - - "@typescript-eslint/typescript-estree/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - "@uiw/codemirror-extensions-basic-setup/@codemirror/lint": ["@codemirror/lint@6.9.2", "", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.35.0", "crelt": "^1.0.5" } }, "sha512-sv3DylBiIyi+xKwRCJAAsBZZZWo82shJ/RTMymLabAdtbkV5cSKwWDeCgtUq3v8flTaXS2y1kKkICuRYtUswyQ=="], "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], @@ -2108,24 +1907,12 @@ "bun-types/@types/node": ["@types/node@25.1.0", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-t7frlewr6+cbx+9Ohpl0NOTKXZNV9xHRmNOvql47BFJKcEG1CxtxlPEEe+gR9uhVWM4DwhnvTF110mIL4yP9RA=="], - "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], - "codemirror/@codemirror/lint": ["@codemirror/lint@6.9.2", "", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.35.0", "crelt": "^1.0.5" } }, "sha512-sv3DylBiIyi+xKwRCJAAsBZZZWo82shJ/RTMymLabAdtbkV5cSKwWDeCgtUq3v8flTaXS2y1kKkICuRYtUswyQ=="], "css-tree/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], "dom-serializer/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], - "eslint/ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], - - "eslint/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - - "eslint/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - - "eslint/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - - "eslint-plugin-react/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - "filelist/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="], "htmlparser2/entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="], @@ -2142,8 +1929,6 @@ "playwright/fsevents": ["fsevents@2.3.2", "", { "os": "darwin" }, "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="], - "prop-types/react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], - "react-scan/@babel/core": ["@babel/core@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", "@babel/helpers": "^7.28.4", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw=="], "react-scan/@babel/generator": ["@babel/generator@7.28.5", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ=="], @@ -2176,7 +1961,7 @@ "workbox-build/rollup": ["rollup@2.79.2", "", { "optionalDependencies": { "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ=="], - "wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + "wrap-ansi-cjs/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], "wrap-ansi-cjs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], @@ -2186,8 +1971,6 @@ "@babel/plugin-transform-modules-amd/@babel/helper-module-transforms/@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], - "@eslint/eslintrc/ajv/json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], - "@rollup/plugin-babel/@babel/helper-module-imports/@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], "@rollup/plugin-babel/@babel/helper-module-imports/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], @@ -2204,8 +1987,6 @@ "@rollup/plugin-replace/@rollup/pluginutils/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], - "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], - "babel-dead-code-elimination/@babel/core/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], "babel-dead-code-elimination/@babel/core/@babel/generator": ["@babel/generator@7.28.5", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ=="], @@ -2224,10 +2005,6 @@ "babel-dead-code-elimination/@babel/traverse/@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="], - "eslint/ajv/json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], - - "filelist/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], - "react-scan/@babel/core/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], "react-scan/@babel/core/@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.27.2", "", { "dependencies": { "@babel/compat-data": "^7.27.2", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ=="], diff --git a/package.json b/package.json index 6a6e5c62..8fc62470 100644 --- a/package.json +++ b/package.json @@ -25,8 +25,8 @@ "@fontsource/geist": "^5.2.8", "@fontsource/geist-mono": "^5.2.7", "@tabler/icons-react": "^3.36.1", - "@tanstack/react-router": "^1.158.0", - "@tanstack/react-start": "^1.158.0", + "@tanstack/react-router": "^1.158.1", + "@tanstack/react-start": "^1.158.1", "@uiw/react-codemirror": "^4.25.4", "@xterm/addon-fit": "^0.11.0", "@xterm/addon-web-fonts": "^0.1.0", @@ -42,7 +42,7 @@ "embla-carousel-react": "^8.6.0", "juststore": "./juststore", "lucide-react": "^0.563.0", - "motion": "^12.31.0", + "motion": "^12.33.0", "react": "^19.2.4", "react-dom": "^19.2.4", "react-fast-compare": "^3.2.2", @@ -63,13 +63,13 @@ "@tailwindcss/vite": "^4.1.18", "@tanstack/devtools-vite": "^0.5.0", "@types/bun": "^1.3.8", - "@types/node": "^25.2.0", - "@types/react": "^19.2.10", + "@types/node": "^25.2.1", + "@types/react": "^19.2.13", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^5.1.3", "babel-plugin-react-compiler": "^1.0.0", "nitro": "^3.0.1-alpha.2", - "ts-json-schema-generator": "^2.4.0", + "ts-json-schema-generator": "^2.5.0", "typescript": "^5.9.3", "vite": "^7.3.1", "vite-plugin-pwa": "^1.2.0", @@ -85,7 +85,8 @@ "js-yaml": "^4.1.1", "mdast-util-to-hast": ">=13.2.1", "change-case": "^5.4.4", - "preact": "^10.28.2" + "preact": "^10.28.2", + "@isaacs/brace-expansion": "^5.0.1" }, "trustedDependencies": [ "unrs-resolver" From 6279268b13eae2c425db804cee1fd44fefcca745 Mon Sep 17 00:00:00 2001 From: yusing Date: Thu, 5 Feb 2026 23:41:05 +0800 Subject: [PATCH 4/8] chore(docker): symlink shadcn components to juststore-shadcn --- Dockerfile | 1 + lite.Dockerfile | 1 + 2 files changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index 405c810f..1a0e3f09 100644 --- a/Dockerfile +++ b/Dockerfile @@ -47,6 +47,7 @@ FROM base AS prerelease WORKDIR /app COPY --from=install /temp/dev/node_modules node_modules COPY . . +RUN ln -s /app/components/ui /app/juststore-shadcn/src/components/ui COPY --from=schema-gen /temp/dev/src/types/godoxy/*.json ./src/types/godoxy/ ENV NODE_ENV=production diff --git a/lite.Dockerfile b/lite.Dockerfile index 9a49a6e7..9b2e2bd5 100644 --- a/lite.Dockerfile +++ b/lite.Dockerfile @@ -46,6 +46,7 @@ FROM base AS prerelease WORKDIR /app COPY --from=install /temp/dev/node_modules node_modules COPY . . +RUN ln -s /app/components/ui /app/juststore-shadcn/src/components/ui COPY --from=schema-gen /temp/dev/src/types/godoxy/*.json ./src/types/godoxy/ # for lite image, we want a fully static output From 8b7a1095c42458db7ff27e83127e5c346f8632f8 Mon Sep 17 00:00:00 2001 From: yusing Date: Thu, 5 Feb 2026 23:45:26 +0800 Subject: [PATCH 5/8] refactor: apply biome lint --fix and biome format --write --- biome.json | 1 + juststore | 2 +- src/components/AppIcon.tsx | 2 +- src/components/GoDoxyError.tsx | 5 +- src/components/IconSearchField.tsx | 6 +- src/components/ObjectDataList.tsx | 134 +++++++++--------- src/components/SectionedForm.tsx | 2 +- src/components/VersionText.tsx | 2 +- src/components/YAMLEditor.tsx | 2 +- .../config_editor/AddFilePopoverButton.tsx | 6 +- .../config_editor/ConfigContent.tsx | 2 +- .../config_editor/ConfigFilesListProvider.tsx | 2 +- .../config_editor/ConfigHeaderActions.tsx | 2 +- .../config_editor/ConfigSaveButton.tsx | 4 +- .../config_editor/ConfigStateSyncronizer.tsx | 6 +- .../config_editor/ConfigYAMLEditor.tsx | 2 +- src/components/config_editor/Sidebar.tsx | 6 +- .../general_config/AccessControl.tsx | 2 +- .../general_config/AutocertConfigContent.tsx | 7 +- .../general_config/AutocertInfo.tsx | 4 +- .../AutocertRenewDialogButton.tsx | 6 +- .../general_config/EntrypointConfig.tsx | 4 +- .../middleware_compose/MiddlewareEditor.tsx | 4 +- .../route_files/NewRouteForm.tsx | 4 +- .../route_files/RouteDisplay.tsx | 6 +- .../route_files/RouteEditForm.tsx | 18 +-- .../route_files/RouteEditFormDialog.tsx | 14 +- .../route_files/RouteFileServerSection.tsx | 2 +- .../route_files/RouteGeneralSection.tsx | 8 +- .../route_files/RouteHTTPConfigSection.tsx | 2 +- .../route_files/RouteHealthcheckSection.tsx | 2 +- .../config_editor/route_files/RouteIcon.tsx | 2 +- .../route_files/RouteIdlewatcherSection.tsx | 4 +- .../config_editor/route_files/RouteList.tsx | 2 +- .../route_files/RouteMiddlewaresSection.tsx | 4 +- .../route_files/RouteProxmoxSection.tsx | 2 +- .../route_files/RouteSSLConfigSection.tsx | 6 +- .../config_editor/route_files/utils.tsx | 2 +- src/components/config_editor/sections.ts | 2 +- src/components/config_editor/store.ts | 2 +- src/components/form/FormContainer.tsx | 4 +- src/components/form/MapInput.tsx | 6 +- src/components/form/NamedListInput.tsx | 4 +- src/components/form/StoreFieldInput.tsx | 3 +- src/components/form/StoreListInput.tsx | 3 +- src/components/form/StoreMapInput.tsx | 8 +- src/components/home/AppCategory.tsx | 4 +- src/components/home/AppCategorySegmented.tsx | 4 +- .../home/AppDetailsDialogContent.tsx | 6 +- src/components/home/AppEditDialog.tsx | 6 +- src/components/home/AppItem.tsx | 6 +- .../home/AppitemContextMenuContent.tsx | 15 +- src/components/home/AppsGrid.tsx | 6 +- src/components/home/ArrowNavigation.tsx | 2 +- src/components/home/CategoryIcon.tsx | 2 +- src/components/home/Searchbox.tsx | 2 +- src/components/home/SettingsPopover.tsx | 4 +- src/components/home/SystemStatValue.tsx | 4 +- src/components/home/SystemStats.tsx | 8 +- src/components/home/store.ts | 2 +- src/components/playground/MockRequestForm.tsx | 2 +- .../playground/MockResponseForm.tsx | 2 +- src/components/playground/PresetExamples.tsx | 2 +- src/components/playground/ResultsDisplay.tsx | 16 +-- src/components/playground/RunButton.tsx | 2 +- src/components/playground/store.ts | 2 +- src/components/routes/PercentageText.tsx | 2 +- src/components/routes/Sidebar.tsx | 21 ++- src/components/routes/UptimeBar.tsx | 6 +- .../routes/content/ContainerControls.tsx | 8 +- .../routes/content/DockerStatsProvider.tsx | 4 +- src/components/routes/content/Logs.tsx | 14 +- src/components/routes/content/LogsHeader.tsx | 2 +- .../routes/content/ProxmoxStatsProvider.tsx | 2 +- .../routes/content/ResponseTimeChart.tsx | 4 +- .../routes/content/RouteDetails.tsx | 8 +- .../routes/content/RoutesDetailProvider.tsx | 2 +- src/components/routes/content/StatsBar.tsx | 2 +- src/components/routes/content/stats_bar.css | 6 +- src/components/routes/store.ts | 2 +- src/components/routes/style.css | 7 +- .../servers/AllSystemInfoProvider.tsx | 2 +- src/components/servers/NewAgentButton.tsx | 11 +- src/components/servers/Sidebar.tsx | 6 +- src/components/servers/content/Charts.tsx | 6 +- src/components/servers/content/Content.tsx | 4 +- src/components/servers/store.ts | 2 +- src/components/svg/docker.tsx | 1 + src/components/svg/duckduckgo.tsx | 1 + src/components/svg/google.tsx | 1 + src/components/svg/linux.tsx | 1 + src/components/ui/store/CodeMirror.tsx | 2 +- src/hooks/websocket.ts | 2 +- src/lib/api-client.ts | 2 +- src/lib/utils.ts | 2 +- src/routes/__root.tsx | 5 +- src/routes/login.tsx | 4 +- src/routes/wiki.$.tsx | 2 +- src/types/godoxy/index.ts | 1 + src/types/godoxy/middlewares/middlewares.ts | 3 +- src/types/schema.ts | 6 +- vite.config.ts | 8 +- 102 files changed, 290 insertions(+), 292 deletions(-) diff --git a/biome.json b/biome.json index 3e59d205..32b228e6 100644 --- a/biome.json +++ b/biome.json @@ -14,6 +14,7 @@ "**/vite.config.ts", "!src/routeTree.gen.ts", "!src/types/**/*.json", + "!src/components/ui", "!src/lib/api.ts", "!juststore/dist", "!juststore/tests", diff --git a/juststore b/juststore index f8361a8a..0bd1a378 160000 --- a/juststore +++ b/juststore @@ -1 +1 @@ -Subproject commit f8361a8a1cd45bac916cc1e28191c9b309899b53 +Subproject commit 0bd1a378983d7dd40f63e04d0ae7b2e81883fc66 diff --git a/src/components/AppIcon.tsx b/src/components/AppIcon.tsx index a920d432..0beb4ff8 100644 --- a/src/components/AppIcon.tsx +++ b/src/components/AppIcon.tsx @@ -1,6 +1,6 @@ +import { useMemo } from 'react' import { useTheme } from '@/components/ThemeProvider' import { cn } from '@/lib/utils' -import { useMemo } from 'react' import { Avatar, AvatarFallback, AvatarImage } from './ui/avatar' export { AppIcon, type AppIconProps } diff --git a/src/components/GoDoxyError.tsx b/src/components/GoDoxyError.tsx index bbac4e32..d7eb764a 100644 --- a/src/components/GoDoxyError.tsx +++ b/src/components/GoDoxyError.tsx @@ -1,6 +1,7 @@ +import { IconAlertCircle } from '@tabler/icons-react' +import Convert from 'ansi-to-html' import type { ReactNode } from 'react' import { useMemo } from 'react' - import { TreeExpander, TreeLabel, @@ -10,8 +11,6 @@ import { TreeProvider, TreeView, } from '@/components/ui/kibo-ui/tree' -import { IconAlertCircle } from '@tabler/icons-react' -import Convert from 'ansi-to-html' import { Alert, AlertDescription, AlertTitle } from './ui/alert' const convertANSI = new Convert() diff --git a/src/components/IconSearchField.tsx b/src/components/IconSearchField.tsx index f1fb380b..8a5b9e73 100644 --- a/src/components/IconSearchField.tsx +++ b/src/components/IconSearchField.tsx @@ -1,8 +1,8 @@ -import type { IconMetaSearch } from '@/lib/api' -import { api } from '@/lib/api-client' -import { useMemoryStore, type FormState, type MemoryStore } from 'juststore' +import { type FormState, type MemoryStore, useMemoryStore } from 'juststore' import { useEffect, useMemo } from 'react' import { useAsync } from 'react-use' +import type { IconMetaSearch } from '@/lib/api' +import { api } from '@/lib/api-client' import { AppIcon } from './AppIcon' import LoadingRing from './LoadingRing' import { Command, CommandEmpty, CommandInput, CommandItem, CommandList } from './ui/command' diff --git a/src/components/ObjectDataList.tsx b/src/components/ObjectDataList.tsx index 184d9d01..dd2ee521 100644 --- a/src/components/ObjectDataList.tsx +++ b/src/components/ObjectDataList.tsx @@ -1,5 +1,3 @@ -import { useTheme } from '@/components/ThemeProvider' -import { cn } from '@/lib/utils' import { html } from '@codemirror/lang-html' import { json } from '@codemirror/lang-json' import { IconCopy } from '@tabler/icons-react' @@ -8,9 +6,11 @@ import ReactCodeMirror, { type Extension, type ReactCodeMirrorProps, } from '@uiw/react-codemirror' -import { memo, useCallback, type ReactNode } from 'react' +import { memo, type ReactNode, useCallback } from 'react' import { toast } from 'sonner' import { coolGlow, noctisLilac } from 'thememirror' +import { useTheme } from '@/components/ThemeProvider' +import { cn } from '@/lib/utils' import { Badge } from './ui/badge' import { Button } from './ui/button' import { Card, CardContent, CardHeader, CardTitle } from './ui/card' @@ -141,43 +141,44 @@ function Value({ v }: { v: unknown }) { return processedValue } -export const CodeMirror = memo(({ - className, - value, - setValue, - readOnly = true, - extensions, - language, - ...props -}: { - className?: string - value: string - setValue?: (value: string) => void - readOnly?: boolean - extensions?: Extension[] - language?: string -} & Omit) => { - const { resolvedTheme } = useTheme() - - const handleCopy = useCallback(async () => { - try { - await navigator.clipboard.writeText(value) - toast.success('Copied to clipboard') - } catch (err) { - console.error('Failed to copy:', err) - } - }, [value]) +export const CodeMirror = memo( + ({ + className, + value, + setValue, + readOnly = true, + extensions, + language, + ...props + }: { + className?: string + value: string + setValue?: (value: string) => void + readOnly?: boolean + extensions?: Extension[] + language?: string + } & Omit) => { + const { resolvedTheme } = useTheme() + + const handleCopy = useCallback(async () => { + try { + await navigator.clipboard.writeText(value) + toast.success('Copied to clipboard') + } catch (err) { + console.error('Failed to copy:', err) + } + }, [value]) - return ( -

- -
- {language && {language.toUpperCase()}} - + +
+ {language && {language.toUpperCase()}} + +
+
- -
- ) -}) + ) + } +) CodeMirror.displayName = 'CodeMirror' diff --git a/src/components/SectionedForm.tsx b/src/components/SectionedForm.tsx index 41d608ab..8ac92560 100644 --- a/src/components/SectionedForm.tsx +++ b/src/components/SectionedForm.tsx @@ -1,7 +1,7 @@ -import { cn } from '@/lib/utils' import { createAtom } from 'juststore' import type { ComponentType, ReactNode, SVGProps } from 'react' import { useCallback, useEffect, useId, useRef } from 'react' +import { cn } from '@/lib/utils' export type SectionId = string diff --git a/src/components/VersionText.tsx b/src/components/VersionText.tsx index e64980a7..477dc862 100644 --- a/src/components/VersionText.tsx +++ b/src/components/VersionText.tsx @@ -1,7 +1,7 @@ +import { useEffect, useState } from 'react' import { api } from '@/lib/api-client' import { toastError } from '@/lib/toast' import { cn } from '@/lib/utils' -import { useEffect, useState } from 'react' export default function VersionText({ className }: { className?: string }) { const [version, setVersion] = useState(null) diff --git a/src/components/YAMLEditor.tsx b/src/components/YAMLEditor.tsx index cc438839..b082fdac 100644 --- a/src/components/YAMLEditor.tsx +++ b/src/components/YAMLEditor.tsx @@ -1,10 +1,10 @@ -import type { JSONSchema } from '@/types/schema' import { yaml } from '@codemirror/lang-yaml' import { linter } from '@codemirror/lint' import { hoverTooltip, type ReactCodeMirrorProps } from '@uiw/react-codemirror' import { stateExtensions } from 'codemirror-json-schema-refined' import { yamlSchemaHover, yamlSchemaLinter } from 'codemirror-json-schema-refined/yaml' import type { JSONSchema7 } from 'json-schema' +import type { JSONSchema } from '@/types/schema' import { CodeMirror } from './ObjectDataList' export type YAMLEditorProps = { diff --git a/src/components/config_editor/AddFilePopoverButton.tsx b/src/components/config_editor/AddFilePopoverButton.tsx index c4ad6d2f..dc1704b8 100644 --- a/src/components/config_editor/AddFilePopoverButton.tsx +++ b/src/components/config_editor/AddFilePopoverButton.tsx @@ -1,9 +1,9 @@ +import { IconPlus } from '@tabler/icons-react' +import { type FormStore, useForm } from 'juststore' +import { useState } from 'react' import { StoreFormInputField } from '@/components/store/Input' import { StoreFormRadioField } from '@/components/store/Radio' import type { FileType } from '@/lib/api' -import { IconPlus } from '@tabler/icons-react' -import { useForm, type FormStore } from 'juststore' -import { useState } from 'react' import { Button } from '../ui/button' import { Popover, PopoverContent, PopoverTrigger } from '../ui/popover' import { Separator } from '../ui/separator' diff --git a/src/components/config_editor/ConfigContent.tsx b/src/components/config_editor/ConfigContent.tsx index 3f2ddb21..673ea69e 100644 --- a/src/components/config_editor/ConfigContent.tsx +++ b/src/components/config_editor/ConfigContent.tsx @@ -1,6 +1,6 @@ -import { cn } from '@/lib/utils' import { AnimatePresence, motion } from 'motion/react' import { useState } from 'react' +import { cn } from '@/lib/utils' import { SidebarTrigger } from '../ui/sidebar' import { ConfigHeaderProvider } from './ConfigHeaderActions' import { sectionsByFileType } from './sections' diff --git a/src/components/config_editor/ConfigFilesListProvider.tsx b/src/components/config_editor/ConfigFilesListProvider.tsx index e9177813..a180a98f 100644 --- a/src/components/config_editor/ConfigFilesListProvider.tsx +++ b/src/components/config_editor/ConfigFilesListProvider.tsx @@ -1,7 +1,7 @@ +import { useEffectOnce } from 'react-use' import type { FileType } from '@/lib/api' import { api } from '@/lib/api-client' import type { ConfigFiles } from '@/types/file' -import { useEffectOnce } from 'react-use' import { configStore } from './store' export default function ConfigFileListProvider() { diff --git a/src/components/config_editor/ConfigHeaderActions.tsx b/src/components/config_editor/ConfigHeaderActions.tsx index 711ad7a0..7c65f6af 100644 --- a/src/components/config_editor/ConfigHeaderActions.tsx +++ b/src/components/config_editor/ConfigHeaderActions.tsx @@ -1,4 +1,4 @@ -import { createContext, useContext, useEffect, type ReactNode } from 'react' +import { createContext, type ReactNode, useContext, useEffect } from 'react' import { createPortal } from 'react-dom' type ConfigHeaderContextValue = { diff --git a/src/components/config_editor/ConfigSaveButton.tsx b/src/components/config_editor/ConfigSaveButton.tsx index 1bc6e536..43f4383f 100644 --- a/src/components/config_editor/ConfigSaveButton.tsx +++ b/src/components/config_editor/ConfigSaveButton.tsx @@ -1,7 +1,7 @@ -import { api } from '@/lib/api-client' -import { toastError } from '@/lib/toast' import { IconCheck, IconDeviceFloppy, IconLoader2 } from '@tabler/icons-react' import { useEffect, useState } from 'react' +import { api } from '@/lib/api-client' +import { toastError } from '@/lib/toast' import { Button } from '../ui/button' import { configStore, resetDiffs } from './store' diff --git a/src/components/config_editor/ConfigStateSyncronizer.tsx b/src/components/config_editor/ConfigStateSyncronizer.tsx index 12234b26..c518c4e4 100644 --- a/src/components/config_editor/ConfigStateSyncronizer.tsx +++ b/src/components/config_editor/ConfigStateSyncronizer.tsx @@ -1,11 +1,11 @@ -import { api, formatErrorString } from '@/lib/api-client' -import type { ConfigFile } from '@/types/file' -import type { Config } from '@/types/godoxy' import { AxiosError } from 'axios' import { isEqual } from 'juststore' import { useEffect } from 'react' import { useMount } from 'react-use' import { parse as parseYAML, stringify as stringifyYAML } from 'yaml' +import { api, formatErrorString } from '@/lib/api-client' +import type { ConfigFile } from '@/types/file' +import type { Config } from '@/types/godoxy' import type { GoDoxyError } from '../GoDoxyError' import { configStore } from './store' diff --git a/src/components/config_editor/ConfigYAMLEditor.tsx b/src/components/config_editor/ConfigYAMLEditor.tsx index d39769f0..dc9dfdf4 100644 --- a/src/components/config_editor/ConfigYAMLEditor.tsx +++ b/src/components/config_editor/ConfigYAMLEditor.tsx @@ -1,6 +1,6 @@ +import type { ReactCodeMirrorProps } from '@uiw/react-codemirror' import { ConfigSchema, MiddlewareComposeSchema, RoutesSchema } from '@/types/godoxy' import type { JSONSchema } from '@/types/schema' -import type { ReactCodeMirrorProps } from '@uiw/react-codemirror' import { CodeMirror } from '../ObjectDataList' import YAMLEditor from '../YAMLEditor' import { configStore } from './store' diff --git a/src/components/config_editor/Sidebar.tsx b/src/components/config_editor/Sidebar.tsx index c3ef6fe2..2b969013 100644 --- a/src/components/config_editor/Sidebar.tsx +++ b/src/components/config_editor/Sidebar.tsx @@ -1,7 +1,7 @@ -import type { FileType } from '@/lib/api' -import { cn } from '@/lib/utils' import { IconChevronRight, IconFile } from '@tabler/icons-react' import { useEffect, useMemo } from 'react' +import type { FileType } from '@/lib/api' +import { cn } from '@/lib/utils' import { Command, CommandEmpty, @@ -130,7 +130,7 @@ function Sections() { {label} - {sections.map((section) => { + {sections.map(section => { const Icon = section.icon const isActive = activeSection === section.id diff --git a/src/components/config_editor/general_config/AccessControl.tsx b/src/components/config_editor/general_config/AccessControl.tsx index 34e2e0ae..449eda42 100644 --- a/src/components/config_editor/general_config/AccessControl.tsx +++ b/src/components/config_editor/general_config/AccessControl.tsx @@ -1,10 +1,10 @@ +import { useMemo } from 'react' import { StoreListInput } from '@/components/form/StoreListInput' import { StoreMapInput } from '@/components/form/StoreMapInput' import { StoreCheckboxField } from '@/components/store/Checkbox' import { StoreRadioField } from '@/components/store/Radio' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { ACLSchema } from '@/types/godoxy' -import { useMemo } from 'react' import { configStore } from '../store' const acl = configStore.configObject.acl diff --git a/src/components/config_editor/general_config/AutocertConfigContent.tsx b/src/components/config_editor/general_config/AutocertConfigContent.tsx index b48c7da2..fe71f090 100644 --- a/src/components/config_editor/general_config/AutocertConfigContent.tsx +++ b/src/components/config_editor/general_config/AutocertConfigContent.tsx @@ -1,5 +1,7 @@ +import { IconTrash } from '@tabler/icons-react' +import AutoHeight from 'embla-carousel-auto-height' +import type { ArrayState, ObjectState } from 'juststore' import { Suspense, useEffect, useRef } from 'react' - import { FormContainer } from '@/components/form/FormContainer' import { StoreFieldInput } from '@/components/form/StoreFieldInput' import { StoreMapInput, StoreObjectInput } from '@/components/form/StoreMapInput' @@ -15,9 +17,6 @@ import { } from '@/components/ui/select' import { type Autocert, AutocertSchema } from '@/types/godoxy' import type { JSONSchema } from '@/types/schema' -import { IconTrash } from '@tabler/icons-react' -import AutoHeight from 'embla-carousel-auto-height' -import type { ArrayState, ObjectState } from 'juststore' import { configStore } from '../store' import AutocertInfo from './AutocertInfo' import AutocertRenewDialogButton from './AutocertRenewDialogButton' diff --git a/src/components/config_editor/general_config/AutocertInfo.tsx b/src/components/config_editor/general_config/AutocertInfo.tsx index 80957ede..428caadd 100644 --- a/src/components/config_editor/general_config/AutocertInfo.tsx +++ b/src/components/config_editor/general_config/AutocertInfo.tsx @@ -1,11 +1,11 @@ +import { useEffect } from 'react' +import { useAsync } from 'react-use' import LoadingRing from '@/components/LoadingRing' import { CarouselContent, CarouselItem } from '@/components/ui/carousel' import { DataList, DataListRow } from '@/components/ui/data-list' import type { CertInfo } from '@/lib/api' import { api } from '@/lib/api-client' import { formatTimestamp } from '@/lib/format' -import { useEffect } from 'react' -import { useAsync } from 'react-use' export default function AutocertInfo({ navRef, diff --git a/src/components/config_editor/general_config/AutocertRenewDialogButton.tsx b/src/components/config_editor/general_config/AutocertRenewDialogButton.tsx index 2a4f379c..5fbaeec2 100644 --- a/src/components/config_editor/general_config/AutocertRenewDialogButton.tsx +++ b/src/components/config_editor/general_config/AutocertRenewDialogButton.tsx @@ -1,3 +1,6 @@ +import { IconRefresh } from '@tabler/icons-react' +import Convert from 'ansi-to-html' +import { useCallback, useState } from 'react' import { Button } from '@/components/ui/button' import { Dialog, @@ -8,9 +11,6 @@ import { DialogTrigger, } from '@/components/ui/dialog' import { useWebSocketApi } from '@/hooks/websocket' -import { IconRefresh } from '@tabler/icons-react' -import Convert from 'ansi-to-html' -import { useCallback, useState } from 'react' const convert = new Convert() diff --git a/src/components/config_editor/general_config/EntrypointConfig.tsx b/src/components/config_editor/general_config/EntrypointConfig.tsx index e7058705..8c516161 100644 --- a/src/components/config_editor/general_config/EntrypointConfig.tsx +++ b/src/components/config_editor/general_config/EntrypointConfig.tsx @@ -1,10 +1,10 @@ +import { useMemo } from 'react' import { NamedListInput } from '@/components/form/NamedListInput' import { StoreMapInput } from '@/components/form/StoreMapInput' -import { Card, CardContent } from '@/components/ui/card' import { StoreSwitchField } from '@/components/store/Switch' +import { Card, CardContent } from '@/components/ui/card' import { ConfigSchema, MiddlewareComposeSchema } from '@/types/godoxy' import type { MiddlewareFileRef } from '@/types/godoxy/middlewares/middlewares' -import { useMemo } from 'react' import { middlewareUseToSnakeCase } from '../middleware_compose/utils' import { configStore } from '../store' diff --git a/src/components/config_editor/middleware_compose/MiddlewareEditor.tsx b/src/components/config_editor/middleware_compose/MiddlewareEditor.tsx index 7ab75be8..07a073c7 100644 --- a/src/components/config_editor/middleware_compose/MiddlewareEditor.tsx +++ b/src/components/config_editor/middleware_compose/MiddlewareEditor.tsx @@ -1,3 +1,5 @@ +import { IconPlus, IconX } from '@tabler/icons-react' +import React, { useMemo } from 'react' import { NamedListInput } from '@/components/form/NamedListInput' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' @@ -5,8 +7,6 @@ import { Label } from '@/components/ui/label' import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs' import { type MiddlewareCompose, MiddlewareComposeSchema } from '@/types/godoxy' import type { MiddlewareFileRef } from '@/types/godoxy/middlewares/middlewares' -import { IconPlus, IconX } from '@tabler/icons-react' -import React, { useMemo } from 'react' import { middlewareUseToSnakeCase } from './utils' export function MiddlewareEditor({ diff --git a/src/components/config_editor/route_files/NewRouteForm.tsx b/src/components/config_editor/route_files/NewRouteForm.tsx index 87af12cd..5f78b966 100644 --- a/src/components/config_editor/route_files/NewRouteForm.tsx +++ b/src/components/config_editor/route_files/NewRouteForm.tsx @@ -1,8 +1,8 @@ +import { IconPlus, IconRefresh } from '@tabler/icons-react' +import { useEffect, useMemo } from 'react' import { Dialog } from '@/components/ui/dialog' import { Label } from '@/components/ui/label' import type { Routes } from '@/types/godoxy' -import { IconPlus, IconRefresh } from '@tabler/icons-react' -import { useEffect, useMemo } from 'react' import { configStore, routesConfigStore } from '../store' import RouteEditFormDialogContent from './RouteEditFormDialog' diff --git a/src/components/config_editor/route_files/RouteDisplay.tsx b/src/components/config_editor/route_files/RouteDisplay.tsx index 7907166f..658ca98c 100644 --- a/src/components/config_editor/route_files/RouteDisplay.tsx +++ b/src/components/config_editor/route_files/RouteDisplay.tsx @@ -1,15 +1,15 @@ +import { IconArrowRight, IconCopy, IconEdit, IconTrash } from '@tabler/icons-react' +import { isEqual } from 'juststore' import { AppIcon } from '@/components/AppIcon' +import { StoreCheckboxField } from '@/components/store/Checkbox' import { Button } from '@/components/ui/button' import { Checkbox } from '@/components/ui/checkbox' import { Field, FieldLabel } from '@/components/ui/field' import { Separator } from '@/components/ui/separator' -import { StoreCheckboxField } from '@/components/store/Checkbox' import type { Route as RouteResponse } from '@/lib/api' import { cn } from '@/lib/utils' import type { Routes } from '@/types/godoxy' import type { CIDR } from '@/types/godoxy/types' -import { IconArrowRight, IconCopy, IconEdit, IconTrash } from '@tabler/icons-react' -import { isEqual } from 'juststore' import { routesConfigStore as store } from '../store' import RouteIcon from './RouteIcon' import * as utils from './utils' diff --git a/src/components/config_editor/route_files/RouteEditForm.tsx b/src/components/config_editor/route_files/RouteEditForm.tsx index 78bf7185..7d1f3b47 100644 --- a/src/components/config_editor/route_files/RouteEditForm.tsx +++ b/src/components/config_editor/route_files/RouteEditForm.tsx @@ -1,10 +1,3 @@ -import { FormSection, SectionedForm, type SectionItem } from '@/components/SectionedForm' -import { encodeRouteKey } from '@/components/routes/utils' -import { Button, type buttonVariants } from '@/components/ui/button' -import { DialogHeader, DialogTitle } from '@/components/ui/dialog' -import { Separator } from '@/components/ui/separator' -import { cn } from '@/lib/utils' -import type { Routes } from '@/types/godoxy' import { IconCheck, IconFolders, @@ -19,13 +12,20 @@ import { } from '@tabler/icons-react' import type { VariantProps } from 'class-variance-authority' import type { FormState } from 'juststore' -import { useForm, type FormStore } from 'juststore' +import { type FormStore, useForm } from 'juststore' import { useEffect, useMemo } from 'react' +import { encodeRouteKey } from '@/components/routes/utils' +import { FormSection, SectionedForm, type SectionItem } from '@/components/SectionedForm' +import { Button, type buttonVariants } from '@/components/ui/button' +import { DialogHeader, DialogTitle } from '@/components/ui/dialog' +import { Separator } from '@/components/ui/separator' +import { cn } from '@/lib/utils' +import type { Routes } from '@/types/godoxy' import { configStore } from '../store' import { RouteFileServerSection } from './RouteFileServerSection' import { RouteGeneralSection } from './RouteGeneralSection' -import { RouteHTTPConfigSection } from './RouteHTTPConfigSection' import { RouteHealthcheckSection } from './RouteHealthcheckSection' +import { RouteHTTPConfigSection } from './RouteHTTPConfigSection' import { RouteIdlewatcherSection } from './RouteIdlewatcherSection' import { RouteMiddlewaresSection } from './RouteMiddlewaresSection' import { RouteProxmoxSection } from './RouteProxmoxSection' diff --git a/src/components/config_editor/route_files/RouteEditFormDialog.tsx b/src/components/config_editor/route_files/RouteEditFormDialog.tsx index 683fddb8..9348cf0f 100644 --- a/src/components/config_editor/route_files/RouteEditFormDialog.tsx +++ b/src/components/config_editor/route_files/RouteEditFormDialog.tsx @@ -1,18 +1,18 @@ -import { GoDoxyErrorAlert, type GoDoxyError } from '@/components/GoDoxyError' -import YAMLEditor from '@/components/YAMLEditor' +import { IconCircleCheck } from '@tabler/icons-react' +import type { Atom } from 'juststore' +import { createAtom } from 'juststore' +import { useEffect, useId, useRef } from 'react' +import { stringify as stringifyYAML } from 'yaml' +import { type GoDoxyError, GoDoxyErrorAlert } from '@/components/GoDoxyError' import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert' import { DialogContent } from '@/components/ui/dialog' import { Label } from '@/components/ui/label' import { ScrollArea } from '@/components/ui/scroll-area' import { Separator } from '@/components/ui/separator' +import YAMLEditor from '@/components/YAMLEditor' import { useWebSocketApi } from '@/hooks/websocket' import { cn } from '@/lib/utils' import type { Routes } from '@/types/godoxy' -import { IconCircleCheck } from '@tabler/icons-react' -import type { Atom } from 'juststore' -import { createAtom } from 'juststore' -import { useEffect, useId, useRef } from 'react' -import { stringify as stringifyYAML } from 'yaml' import type { RouteEditFormProps } from './RouteEditForm' import RouteEditForm from './RouteEditForm' diff --git a/src/components/config_editor/route_files/RouteFileServerSection.tsx b/src/components/config_editor/route_files/RouteFileServerSection.tsx index b263aaa7..01636247 100644 --- a/src/components/config_editor/route_files/RouteFileServerSection.tsx +++ b/src/components/config_editor/route_files/RouteFileServerSection.tsx @@ -1,7 +1,7 @@ +import type { FormStore } from 'juststore' import { StoreFormCheckboxField } from '@/components/store/Checkbox' import { StoreFormInputField } from '@/components/store/Input' import type { Routes } from '@/types/godoxy' -import type { FormStore } from 'juststore' type RouteFileServerSectionProps = { form: FormStore diff --git a/src/components/config_editor/route_files/RouteGeneralSection.tsx b/src/components/config_editor/route_files/RouteGeneralSection.tsx index 35c9035a..1301af34 100644 --- a/src/components/config_editor/route_files/RouteGeneralSection.tsx +++ b/src/components/config_editor/route_files/RouteGeneralSection.tsx @@ -1,3 +1,7 @@ +import { IconX } from '@tabler/icons-react' +import type { FormState, FormStore } from 'juststore' +import { useEffect } from 'react' +import { useAsync } from 'react-use' import { StoreFormInputField } from '@/components/store/Input' import { StoreFormSelectField } from '@/components/store/Select' import { Button } from '@/components/ui/button' @@ -6,10 +10,6 @@ import type { Route as RouteResponse } from '@/lib/api' import { api } from '@/lib/api-client' import type { Routes } from '@/types/godoxy' import type { StreamPort } from '@/types/godoxy/types' -import { IconX } from '@tabler/icons-react' -import type { FormState, FormStore } from 'juststore' -import { useEffect } from 'react' -import { useAsync } from 'react-use' import * as utils from './utils' type RouteGeneralSectionProps = { diff --git a/src/components/config_editor/route_files/RouteHTTPConfigSection.tsx b/src/components/config_editor/route_files/RouteHTTPConfigSection.tsx index ed2b8eba..ad7cab86 100644 --- a/src/components/config_editor/route_files/RouteHTTPConfigSection.tsx +++ b/src/components/config_editor/route_files/RouteHTTPConfigSection.tsx @@ -1,10 +1,10 @@ +import type { FormState, FormStore } from 'juststore' import { StoreCheckboxField } from '@/components/store/Checkbox' import { StoreFormInputField } from '@/components/store/Input' import { StoreFormSelectField } from '@/components/store/Select' import { FieldGroup } from '@/components/ui/field' import type { Routes } from '@/types/godoxy' import { LOAD_BALANCE_MODES, type LoadBalanceMode } from '@/types/godoxy/providers/loadbalance' -import type { FormState, FormStore } from 'juststore' type RouteHTTPConfigSectionProps = { form: FormStore diff --git a/src/components/config_editor/route_files/RouteHealthcheckSection.tsx b/src/components/config_editor/route_files/RouteHealthcheckSection.tsx index df784a41..cdaa813e 100644 --- a/src/components/config_editor/route_files/RouteHealthcheckSection.tsx +++ b/src/components/config_editor/route_files/RouteHealthcheckSection.tsx @@ -1,8 +1,8 @@ +import type { FormStore } from 'juststore' import { StoreFormCheckboxField } from '@/components/store/Checkbox' import { StoreFormInputField } from '@/components/store/Input' import { FieldGroup } from '@/components/ui/field' import type { Routes } from '@/types/godoxy' -import type { FormStore } from 'juststore' type RouteHealthcheckSectionProps = { form: FormStore diff --git a/src/components/config_editor/route_files/RouteIcon.tsx b/src/components/config_editor/route_files/RouteIcon.tsx index dc06f1ae..1bd4520b 100644 --- a/src/components/config_editor/route_files/RouteIcon.tsx +++ b/src/components/config_editor/route_files/RouteIcon.tsx @@ -1,5 +1,5 @@ +import { IconFolder, IconGlobe, type IconProps, IconWifi } from '@tabler/icons-react' import type { Routes } from '@/types/godoxy' -import { IconFolder, IconGlobe, IconWifi, type IconProps } from '@tabler/icons-react' export default function RouteIcon({ scheme, diff --git a/src/components/config_editor/route_files/RouteIdlewatcherSection.tsx b/src/components/config_editor/route_files/RouteIdlewatcherSection.tsx index a6a33a95..ce379af9 100644 --- a/src/components/config_editor/route_files/RouteIdlewatcherSection.tsx +++ b/src/components/config_editor/route_files/RouteIdlewatcherSection.tsx @@ -1,10 +1,10 @@ +import type { FormStore } from 'juststore' +import { StoreFormCheckboxField } from '@/components/store/Checkbox' import { StoreFormInputField, StoreInputField } from '@/components/store/Input' import { StoreFormSelectField } from '@/components/store/Select' import { FieldGroup } from '@/components/ui/field' -import { StoreFormCheckboxField } from '@/components/store/Checkbox' import type { Routes } from '@/types/godoxy' import { STOP_METHODS, STOP_SIGNALS } from '@/types/godoxy/providers/idlewatcher' -import type { FormStore } from 'juststore' import { commaSeparatedToArray } from './utils' type RouteIdlewatcherSectionProps = { diff --git a/src/components/config_editor/route_files/RouteList.tsx b/src/components/config_editor/route_files/RouteList.tsx index 500a3bb8..d3319563 100644 --- a/src/components/config_editor/route_files/RouteList.tsx +++ b/src/components/config_editor/route_files/RouteList.tsx @@ -1,3 +1,4 @@ +import { useMemo, useState } from 'react' import type { RouteKey } from '@/components/routes/store' import { encodeRouteKey } from '@/components/routes/utils' import { Card, CardContent } from '@/components/ui/card' @@ -6,7 +7,6 @@ import { Label } from '@/components/ui/label' import { useWebSocketApi } from '@/hooks/websocket' import type { Route } from '@/lib/api' import type { Routes } from '@/types/godoxy' -import { useMemo, useState } from 'react' import { configStore, routesConfigStore } from '../store' import RouteDisplay from './RouteDisplay' import RouteEditFormDialogContent from './RouteEditFormDialog' diff --git a/src/components/config_editor/route_files/RouteMiddlewaresSection.tsx b/src/components/config_editor/route_files/RouteMiddlewaresSection.tsx index 896fd801..8c97c14e 100644 --- a/src/components/config_editor/route_files/RouteMiddlewaresSection.tsx +++ b/src/components/config_editor/route_files/RouteMiddlewaresSection.tsx @@ -1,8 +1,8 @@ +import type { FormState } from 'juststore' +import { useCallback, useMemo } from 'react' import { NamedListInput } from '@/components/form/NamedListInput' import type { MiddlewareCompose, Middlewares } from '@/types/godoxy' import { MiddlewareComposeSchema } from '@/types/godoxy' -import type { FormState } from 'juststore' -import { useCallback, useMemo } from 'react' import { middlewareUseToSnakeCase } from '../middleware_compose/utils' type RouteMiddlewaresSectionProps = { diff --git a/src/components/config_editor/route_files/RouteProxmoxSection.tsx b/src/components/config_editor/route_files/RouteProxmoxSection.tsx index 8cde9547..0e6f1b73 100644 --- a/src/components/config_editor/route_files/RouteProxmoxSection.tsx +++ b/src/components/config_editor/route_files/RouteProxmoxSection.tsx @@ -1,9 +1,9 @@ +import type { FormStore } from 'juststore' import { StoreFormInputField } from '@/components/store/Input' import { StoreFormTextAreaField } from '@/components/store/TextArea' import { FieldGroup } from '@/components/ui/field' import type { Route as RouteResponse } from '@/lib/api' import type { Routes } from '@/types/godoxy' -import type { FormStore } from 'juststore' import { commaSeparatedToArray } from './utils' type RouteProxmoxSectionProps = { diff --git a/src/components/config_editor/route_files/RouteSSLConfigSection.tsx b/src/components/config_editor/route_files/RouteSSLConfigSection.tsx index 1ab77f4c..78ecd4fb 100644 --- a/src/components/config_editor/route_files/RouteSSLConfigSection.tsx +++ b/src/components/config_editor/route_files/RouteSSLConfigSection.tsx @@ -1,9 +1,9 @@ -import { StoreFormInputField } from '@/components/store/Input' -import { FieldGroup } from '@/components/ui/field' +import type { FormStore } from 'juststore' import { StoreFormCheckboxField } from '@/components/store/Checkbox' +import { StoreFormInputField } from '@/components/store/Input' import { StoreFormMultiSelectField } from '@/components/store/MultiSelect' +import { FieldGroup } from '@/components/ui/field' import type { Routes } from '@/types/godoxy' -import type { FormStore } from 'juststore' type RouteSSLConfigSectionProps = { form: FormStore diff --git a/src/components/config_editor/route_files/utils.tsx b/src/components/config_editor/route_files/utils.tsx index fcad5899..0927fd77 100644 --- a/src/components/config_editor/route_files/utils.tsx +++ b/src/components/config_editor/route_files/utils.tsx @@ -1,7 +1,7 @@ +import { IconFolder, IconGlobe, IconWifi } from '@tabler/icons-react' import type { Route as RouteResponse } from '@/lib/api' import type { Routes } from '@/types/godoxy' import type { Port, StreamPort } from '@/types/godoxy/types' -import { IconFolder, IconGlobe, IconWifi } from '@tabler/icons-react' import { Code } from './Code' const routeSchemes = [ diff --git a/src/components/config_editor/sections.ts b/src/components/config_editor/sections.ts index 9798aad2..46381191 100644 --- a/src/components/config_editor/sections.ts +++ b/src/components/config_editor/sections.ts @@ -4,13 +4,13 @@ import { Globe, Key, Link, + type LucideIcon, Plus, Route, Server, Settings, Shield, SlidersHorizontal, - type LucideIcon, } from 'lucide-react' import AccessControlConfigContent from './general_config/AccessControl' diff --git a/src/components/config_editor/store.ts b/src/components/config_editor/store.ts index 29dd0e37..e7fabe2d 100644 --- a/src/components/config_editor/store.ts +++ b/src/components/config_editor/store.ts @@ -1,9 +1,9 @@ +import { createMixedState, createStore, type Store } from 'juststore' import type { GoDoxyError } from '@/components/GoDoxyError' import type { Route } from '@/lib/api' import { getDiffs } from '@/lib/diff' import type { ConfigFile, ConfigFiles } from '@/types/file' import type { Config, MiddlewareCompose, Routes } from '@/types/godoxy' -import { createMixedState, createStore, type Store } from 'juststore' import type { RouteKey } from '../routes/store' type ConfigState< diff --git a/src/components/form/FormContainer.tsx b/src/components/form/FormContainer.tsx index 1cb334cc..69093cda 100644 --- a/src/components/form/FormContainer.tsx +++ b/src/components/form/FormContainer.tsx @@ -1,3 +1,5 @@ +import { IconChevronDown, IconPlus } from '@tabler/icons-react' +import { Children, type ReactNode } from 'react' import { Button } from '@/components/ui/button' import { Card, @@ -10,8 +12,6 @@ import { import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible' import { Label } from '@/components/ui/label' import { cn } from '@/lib/utils' -import { IconChevronDown, IconPlus } from '@tabler/icons-react' -import { Children, type ReactNode } from 'react' type FormContainerProps = { label?: string diff --git a/src/components/form/MapInput.tsx b/src/components/form/MapInput.tsx index fd33bca2..30bf076f 100644 --- a/src/components/form/MapInput.tsx +++ b/src/components/form/MapInput.tsx @@ -1,14 +1,12 @@ import { IconCheck, IconPencil, IconTrash } from '@tabler/icons-react' -import { useMemo, useRef, useState, type ReactNode } from 'react' - -import { getDefaultValue, getPropertySchema, type JSONSchema } from '@/types/schema' - +import { type ReactNode, useMemo, useRef, useState } from 'react' import { FieldInput } from '@/components/form/FieldInput' import { ListInput } from '@/components/form/ListInput' import { Button } from '@/components/ui/button' import { InputGroup, InputGroupButton, InputGroupInput } from '@/components/ui/input-group' import { Label } from '@/components/ui/label' import { Separator } from '@/components/ui/separator' +import { getDefaultValue, getPropertySchema, type JSONSchema } from '@/types/schema' import { Badge } from '../ui/badge' import { FormContainer } from './FormContainer' import { getEntryValueSchema, getKindAndEffectiveSchema, getMergedValuesAndKeys } from './map-utils' diff --git a/src/components/form/NamedListInput.tsx b/src/components/form/NamedListInput.tsx index 79229bbe..788aad9d 100644 --- a/src/components/form/NamedListInput.tsx +++ b/src/components/form/NamedListInput.tsx @@ -1,9 +1,7 @@ import { useCallback, useMemo } from 'react' - -import { getDefaultValue, getPropertySchema, type JSONSchema } from '@/types/schema' - import { MapInput } from '@/components/form/MapInput' import { Button } from '@/components/ui/button' +import { getDefaultValue, getPropertySchema, type JSONSchema } from '@/types/schema' import { FormContainer } from './FormContainer' import { stringify } from './utils' diff --git a/src/components/form/StoreFieldInput.tsx b/src/components/form/StoreFieldInput.tsx index a032b5c4..c2fac36d 100644 --- a/src/components/form/StoreFieldInput.tsx +++ b/src/components/form/StoreFieldInput.tsx @@ -1,6 +1,6 @@ import { IconRefresh, IconTrash } from '@tabler/icons-react' +import type { FieldPath, FieldValues, ObjectState, State } from 'juststore' import { useEffect, useMemo } from 'react' - import { Button } from '@/components/ui/button' import { Checkbox } from '@/components/ui/checkbox' import { Input } from '@/components/ui/input' @@ -22,7 +22,6 @@ import { isToggleType, type JSONSchema, } from '@/types/schema' -import type { FieldPath, FieldValues, ObjectState, State } from 'juststore' import { Label } from '../ui/label' import { stringify } from './utils' diff --git a/src/components/form/StoreListInput.tsx b/src/components/form/StoreListInput.tsx index 296db2dd..6a97af17 100644 --- a/src/components/form/StoreListInput.tsx +++ b/src/components/form/StoreListInput.tsx @@ -1,7 +1,6 @@ +import type { ArrayState } from 'juststore' import { useCallback } from 'react' - import type { JSONSchema } from '@/types/schema' -import type { ArrayState } from 'juststore' import { FormContainer } from './FormContainer' import { ListInputItem } from './ListInput' diff --git a/src/components/form/StoreMapInput.tsx b/src/components/form/StoreMapInput.tsx index f36ecdba..193ab826 100644 --- a/src/components/form/StoreMapInput.tsx +++ b/src/components/form/StoreMapInput.tsx @@ -1,15 +1,13 @@ -import { ComplexEntryHeader, type MapInputProps, type RecordInputProps } from './MapInput' - -import { getDefaultValue, getPropertySchema, type JSONSchema } from '@/types/schema' - import type { FieldPath, FieldValues, ObjectState } from 'juststore' import { Activity, useMemo } from 'react' +import { getDefaultValue, getPropertySchema, type JSONSchema } from '@/types/schema' import { Badge } from '../ui/badge' import { Separator } from '../ui/separator' import { FormContainer } from './FormContainer' +import { ComplexEntryHeader, type MapInputProps, type RecordInputProps } from './MapInput' +import { getEntryValueSchema, getKindAndEffectiveSchema, getMergedKeys } from './map-utils' import { StoreFieldInput } from './StoreFieldInput' import { StoreListInput } from './StoreListInput' -import { getEntryValueSchema, getKindAndEffectiveSchema, getMergedKeys } from './map-utils' import { canAddKey, getAdditionalPropertiesSchema, getDescription, getLabel } from './utils' export { diff --git a/src/components/home/AppCategory.tsx b/src/components/home/AppCategory.tsx index 6233d0c8..3a99f3f5 100644 --- a/src/components/home/AppCategory.tsx +++ b/src/components/home/AppCategory.tsx @@ -1,10 +1,10 @@ +import { useEffect, useMemo } from 'react' import type { HomepageItem } from '@/lib/api' import { match } from '@/lib/match' -import { useEffect, useMemo } from 'react' import AppCategoryEmpty from './AppCategoryEmpty' import AppCategorySegmented from './AppCategorySegmented' import AppItem from './AppItem' -import { store, type ItemState } from './store' +import { type ItemState, store } from './store' function getItemState(items: HomepageItem[], searchQuery: string, category: string) { let isEmpty = true diff --git a/src/components/home/AppCategorySegmented.tsx b/src/components/home/AppCategorySegmented.tsx index bac94f19..7a81b79b 100644 --- a/src/components/home/AppCategorySegmented.tsx +++ b/src/components/home/AppCategorySegmented.tsx @@ -1,7 +1,7 @@ -import type { HomepageItem } from '@/lib/api' import { useEffect, useMemo } from 'react' +import type { HomepageItem } from '@/lib/api' import AppItem from './AppItem' -import { store, type ItemState } from './store' +import { type ItemState, store } from './store' type Group = { name: string; apps: HomepageItem[] } type MergedGroup = Group | { groups: Group[] } diff --git a/src/components/home/AppDetailsDialogContent.tsx b/src/components/home/AppDetailsDialogContent.tsx index 83b9038b..d7643d78 100644 --- a/src/components/home/AppDetailsDialogContent.tsx +++ b/src/components/home/AppDetailsDialogContent.tsx @@ -1,11 +1,11 @@ +import { IconSearch } from '@tabler/icons-react' +import { useCallback, useMemo, useState } from 'react' +import { useAsync } from 'react-use' import { Badge } from '@/components/ui/badge' import { DialogDescription, DialogHeader, DialogTitle } from '@/components/ui/dialog' import { Input } from '@/components/ui/input' import { ScrollArea } from '@/components/ui/scroll-area' import { api } from '@/lib/api-client' -import { IconSearch } from '@tabler/icons-react' -import { useCallback, useMemo, useState } from 'react' -import { useAsync } from 'react-use' import ObjectDataList from '../ObjectDataList' export default function AppDetailsDialogContent({ alias }: { alias: string }) { diff --git a/src/components/home/AppEditDialog.tsx b/src/components/home/AppEditDialog.tsx index 27d6e3b6..9e1e941e 100644 --- a/src/components/home/AppEditDialog.tsx +++ b/src/components/home/AppEditDialog.tsx @@ -1,10 +1,10 @@ +import { type ObjectState, useForm } from 'juststore' +import { useCallback } from 'react' +import { toast } from 'sonner' import { StoreFormInputField } from '@/components/store/Input' import type { HomepageItem } from '@/lib/api' import { api } from '@/lib/api-client' import { toastError } from '@/lib/toast' -import { useForm, type ObjectState } from 'juststore' -import { useCallback } from 'react' -import { toast } from 'sonner' import { AppIcon } from '../AppIcon' import IconSearchField from '../IconSearchField' import { Button } from '../ui/button' diff --git a/src/components/home/AppItem.tsx b/src/components/home/AppItem.tsx index 3473c6ae..ed8a55f0 100644 --- a/src/components/home/AppItem.tsx +++ b/src/components/home/AppItem.tsx @@ -1,10 +1,10 @@ +import { Link } from '@tanstack/react-router' +import type { ObjectState } from 'juststore' +import { forwardRef, useMemo } from 'react' import { Card, CardContent } from '@/components/ui/card' import type { HomepageItem } from '@/lib/api' import { api } from '@/lib/api-client' import { cn } from '@/lib/utils' -import { Link } from '@tanstack/react-router' -import type { ObjectState } from 'juststore' -import { forwardRef, useMemo } from 'react' import { AppIcon } from '../AppIcon' import { ContextMenu, ContextMenuTrigger } from '../ui/context-menu' import AppItemContextMenuContent from './AppitemContextMenuContent' diff --git a/src/components/home/AppitemContextMenuContent.tsx b/src/components/home/AppitemContextMenuContent.tsx index d0a2ed0c..cd836644 100644 --- a/src/components/home/AppitemContextMenuContent.tsx +++ b/src/components/home/AppitemContextMenuContent.tsx @@ -1,6 +1,3 @@ -import { api } from '@/lib/api-client' -import { toastError } from '@/lib/toast' -import { cn } from '@/lib/utils' import { IconEdit, IconEye, @@ -11,18 +8,20 @@ import { IconRotate, IconSquare, } from '@tabler/icons-react' -import { ContextMenuContent, ContextMenuItem } from '../ui/context-menu' -import { store } from './store' - -import type { HomepageItem } from '@/lib/api' -import type { HealthStatusType } from '@/types/health' import { Link } from '@tanstack/react-router' import type { ObjectState } from 'juststore' import { useState } from 'react' import { toast } from 'sonner' +import type { HomepageItem } from '@/lib/api' +import { api } from '@/lib/api-client' +import { toastError } from '@/lib/toast' +import { cn } from '@/lib/utils' +import type { HealthStatusType } from '@/types/health' import { setSelectedRoute } from '../routes/store' import { encodeRouteKey } from '../routes/utils' +import { ContextMenuContent, ContextMenuItem } from '../ui/context-menu' import { Separator } from '../ui/separator' +import { store } from './store' export default function AppItemContextMenuContent({ state, diff --git a/src/components/home/AppsGrid.tsx b/src/components/home/AppsGrid.tsx index 1df4fc8b..54e29884 100644 --- a/src/components/home/AppsGrid.tsx +++ b/src/components/home/AppsGrid.tsx @@ -1,3 +1,6 @@ +import { ArrowDown, ArrowLeft, ArrowRight, ArrowUp } from 'lucide-react' +import { motion } from 'motion/react' +import { Suspense, useEffect, useMemo } from 'react' import { CategoryIcon } from '@/components/home/CategoryIcon' import { Button } from '@/components/ui/button' import { CustomCombobox } from '@/components/ui/custom-combobox' @@ -5,9 +8,6 @@ import { Kbd } from '@/components/ui/kbd' import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs' import { useWebSocketApi } from '@/hooks/websocket' import type { HealthMap, HomepageCategory } from '@/lib/api' -import { ArrowDown, ArrowLeft, ArrowRight, ArrowUp } from 'lucide-react' -import { motion } from 'motion/react' -import { Suspense, useEffect, useMemo } from 'react' import AppCategory from './AppCategory' import ArrowNavigation from './ArrowNavigation' import Searchbox from './Searchbox' diff --git a/src/components/home/ArrowNavigation.tsx b/src/components/home/ArrowNavigation.tsx index e64a92a6..7fb19416 100644 --- a/src/components/home/ArrowNavigation.tsx +++ b/src/components/home/ArrowNavigation.tsx @@ -1,5 +1,5 @@ -import { api } from '@/lib/api-client' import { useEffect } from 'react' +import { api } from '@/lib/api-client' import { store } from './store' function getGridCols() { diff --git a/src/components/home/CategoryIcon.tsx b/src/components/home/CategoryIcon.tsx index b5c0d8e6..abe1a8ac 100644 --- a/src/components/home/CategoryIcon.tsx +++ b/src/components/home/CategoryIcon.tsx @@ -22,6 +22,7 @@ import { Image, Layers, Link, + type LucideIcon, Mail, MapPin, MessageSquareTextIcon, @@ -44,7 +45,6 @@ import { Video, Wrench, Zap, - type LucideIcon, } from 'lucide-react' interface CategoryIconProps { diff --git a/src/components/home/Searchbox.tsx b/src/components/home/Searchbox.tsx index 2a29d186..6c293f1e 100644 --- a/src/components/home/Searchbox.tsx +++ b/src/components/home/Searchbox.tsx @@ -1,7 +1,7 @@ -import { cn } from '@/lib/utils' import { Search, X } from 'lucide-react' import { useEffect, useRef, useState } from 'react' import { useMount } from 'react-use' +import { cn } from '@/lib/utils' import DuckDuckGo from '../svg/duckduckgo' import Google from '../svg/google' import { diff --git a/src/components/home/SettingsPopover.tsx b/src/components/home/SettingsPopover.tsx index 0e06cfb7..d5b1efc3 100644 --- a/src/components/home/SettingsPopover.tsx +++ b/src/components/home/SettingsPopover.tsx @@ -1,10 +1,10 @@ +import { Moon, Settings, Sun } from 'lucide-react' +import { StoreSwitchField } from '@/components/store/Switch' import { Button } from '@/components/ui/button' import { Label } from '@/components/ui/label' import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover' import { RadioGroup, RadioGroupField } from '@/components/ui/radio-group' import { Separator } from '@/components/ui/separator' -import { StoreSwitchField } from '@/components/store/Switch' -import { Moon, Settings, Sun } from 'lucide-react' import { store } from './store' export default function SettingsPopover() { diff --git a/src/components/home/SystemStatValue.tsx b/src/components/home/SystemStatValue.tsx index 2c2cbd0b..6795d58f 100644 --- a/src/components/home/SystemStatValue.tsx +++ b/src/components/home/SystemStatValue.tsx @@ -1,7 +1,7 @@ -import { formatDuration } from '@/lib/format' import type { FieldPath } from 'juststore' +import { formatDuration } from '@/lib/format' import { Progress } from '../ui/progress' -import { store, type Store } from './store' +import { type Store, store } from './store' export default function SystemStatValue({ valueKey, diff --git a/src/components/home/SystemStats.tsx b/src/components/home/SystemStats.tsx index 3984eb44..fba486f7 100644 --- a/src/components/home/SystemStats.tsx +++ b/src/components/home/SystemStats.tsx @@ -1,11 +1,11 @@ -import { Card, CardContent } from '@/components/ui/card' -import { cn } from '@/lib/utils' import type { FieldPath } from 'juststore' -import { Clock, Cpu, HardDrive, MemoryStick, type LucideIcon } from 'lucide-react' +import { Clock, Cpu, HardDrive, type LucideIcon, MemoryStick } from 'lucide-react' import { Suspense } from 'react' -import type { Store } from './store' +import { Card, CardContent } from '@/components/ui/card' +import { cn } from '@/lib/utils' import SystemStatsProvider from './SystemStatsProvider' import SystemStatValue from './SystemStatValue' +import type { Store } from './store' export default function SystemStats() { // on mobile, displays as one rounded card diff --git a/src/components/home/store.ts b/src/components/home/store.ts index 09a9093d..2825f5ea 100644 --- a/src/components/home/store.ts +++ b/src/components/home/store.ts @@ -1,5 +1,5 @@ -import type { HealthMap, HomepageCategory } from '@/lib/api' import { createStore } from 'juststore' +import type { HealthMap, HomepageCategory } from '@/lib/api' export type ItemState = { alias: string diff --git a/src/components/playground/MockRequestForm.tsx b/src/components/playground/MockRequestForm.tsx index 5b4ddf81..161b52a0 100644 --- a/src/components/playground/MockRequestForm.tsx +++ b/src/components/playground/MockRequestForm.tsx @@ -1,9 +1,9 @@ +import { json } from '@codemirror/lang-json' import { MapInput } from '@/components/form/MapInput' import { StoreInputField } from '@/components/store/Input' import { StoreSelectField } from '@/components/store/Select' import type { MockCookie } from '@/lib/api' import { HTTP_METHODS } from '@/types/godoxy/types' -import { json } from '@codemirror/lang-json' import { FieldGroup, FieldLegend, FieldSet } from '../ui/field' import { StoreCodeMirrorField } from '../ui/store/CodeMirror' import { store } from './store' diff --git a/src/components/playground/MockResponseForm.tsx b/src/components/playground/MockResponseForm.tsx index d4c016b6..d837eb1a 100644 --- a/src/components/playground/MockResponseForm.tsx +++ b/src/components/playground/MockResponseForm.tsx @@ -1,6 +1,6 @@ +import { json } from '@codemirror/lang-json' import { MapInput } from '@/components/form/MapInput' import { StoreInputField } from '@/components/store/Input' -import { json } from '@codemirror/lang-json' import { FieldGroup, FieldLegend, FieldSet } from '../ui/field' import { StoreCodeMirrorField } from '../ui/store/CodeMirror' import { store } from './store' diff --git a/src/components/playground/PresetExamples.tsx b/src/components/playground/PresetExamples.tsx index 57d5090b..2bd50d44 100644 --- a/src/components/playground/PresetExamples.tsx +++ b/src/components/playground/PresetExamples.tsx @@ -1,3 +1,4 @@ +import { useState } from 'react' import { Button } from '@/components/ui/button' import { Select, @@ -6,7 +7,6 @@ import { SelectTrigger, SelectValue, } from '@/components/ui/select' -import { useState } from 'react' import { examples } from './examples' import { store } from './store' diff --git a/src/components/playground/ResultsDisplay.tsx b/src/components/playground/ResultsDisplay.tsx index 00ac5deb..3df53dd9 100644 --- a/src/components/playground/ResultsDisplay.tsx +++ b/src/components/playground/ResultsDisplay.tsx @@ -1,3 +1,10 @@ +import { json } from '@codemirror/lang-json' +import { yaml } from '@codemirror/lang-yaml' +import { IconCheck, IconX } from '@tabler/icons-react' +import { EditorView } from '@uiw/react-codemirror' +import { motion } from 'motion/react' +import { useEffect, useState } from 'react' +import { stringify as stringifyYAML } from 'yaml' import { Badge } from '@/components/ui/badge' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { ScrollArea } from '@/components/ui/scroll-area' @@ -11,14 +18,7 @@ import { TableRow, } from '@/components/ui/table' import { cn } from '@/lib/utils' -import { json } from '@codemirror/lang-json' -import { yaml } from '@codemirror/lang-yaml' -import { IconCheck, IconX } from '@tabler/icons-react' -import { EditorView } from '@uiw/react-codemirror' -import { motion } from 'motion/react' -import { useEffect, useState } from 'react' -import { stringify as stringifyYAML } from 'yaml' -import { GoDoxyErrorAlert, type GoDoxyError } from '../GoDoxyError' +import { type GoDoxyError, GoDoxyErrorAlert } from '../GoDoxyError' import { CodeMirror } from '../ObjectDataList' import { store } from './store' diff --git a/src/components/playground/RunButton.tsx b/src/components/playground/RunButton.tsx index 1ab24b91..e8719b1a 100644 --- a/src/components/playground/RunButton.tsx +++ b/src/components/playground/RunButton.tsx @@ -1,7 +1,7 @@ -import type { RouteApiRawRule } from '@/lib/api' import { IconPlayerPlay } from '@tabler/icons-react' import { toast } from 'sonner' import { parse as parseYAML } from 'yaml' +import type { RouteApiRawRule } from '@/lib/api' import { Button } from '../ui/button' import { store } from './store' import { usePlayground } from './usePlayground' diff --git a/src/components/playground/store.ts b/src/components/playground/store.ts index b8433ff5..c08cd34a 100644 --- a/src/components/playground/store.ts +++ b/src/components/playground/store.ts @@ -1,5 +1,5 @@ -import type { MockRequest, MockResponse, PlaygroundResponse } from '@/lib/api' import { createStore } from 'juststore' +import type { MockRequest, MockResponse, PlaygroundResponse } from '@/lib/api' export interface PlaygroundState { rules: string diff --git a/src/components/routes/PercentageText.tsx b/src/components/routes/PercentageText.tsx index 9aeba0c8..8e85ac1a 100644 --- a/src/components/routes/PercentageText.tsx +++ b/src/components/routes/PercentageText.tsx @@ -1,4 +1,4 @@ -import { store, type RouteKey } from '@/components/routes/store' +import { type RouteKey, store } from '@/components/routes/store' import { formatPercent } from '@/lib/format' export default function RoutePercentageText({ routeKey }: { routeKey: RouteKey }) { diff --git a/src/components/routes/Sidebar.tsx b/src/components/routes/Sidebar.tsx index a442b08e..48867468 100644 --- a/src/components/routes/Sidebar.tsx +++ b/src/components/routes/Sidebar.tsx @@ -1,28 +1,27 @@ +import { IconFilter } from '@tabler/icons-react' +import type { FieldPath } from 'juststore' +import { ArrowDown, ArrowUp } from 'lucide-react' +import { Suspense, useEffect, useRef } from 'react' import { + type RouteDisplaySettings, + type RouteKey, setSelectedRoute, store, useSelectedRoute, - type RouteDisplaySettings, - type RouteKey, } from '@/components/routes/store' import { useWebSocketApi } from '@/hooks/websocket' import type { RouteStatusesByAlias, RouteUptimeAggregate, UptimeAggregate } from '@/lib/api' import { toastError } from '@/lib/toast' import { cn } from '@/lib/utils' -import { Suspense, useEffect, useRef } from 'react' -import { Label } from '../ui/label' -import RoutePercentageText from './PercentageText' -import RoutesSidebarSearchBox from './SearchBox' -import RouteUptimeBar from './UptimeBar' - -import { IconFilter } from '@tabler/icons-react' -import type { FieldPath } from 'juststore' -import { ArrowDown, ArrowUp } from 'lucide-react' import { AppIcon } from '../AppIcon' import { Kbd } from '../ui/kbd' +import { Label } from '../ui/label' import { Popover, PopoverContent, PopoverTrigger } from '../ui/popover' import { ScrollArea } from '../ui/scroll-area' import { Switch } from '../ui/switch' +import RoutePercentageText from './PercentageText' +import RoutesSidebarSearchBox from './SearchBox' +import RouteUptimeBar from './UptimeBar' import './style.css' import { decodeRouteKey, encodeRouteKey } from './utils' diff --git a/src/components/routes/UptimeBar.tsx b/src/components/routes/UptimeBar.tsx index 503284d5..8b874f61 100644 --- a/src/components/routes/UptimeBar.tsx +++ b/src/components/routes/UptimeBar.tsx @@ -1,10 +1,10 @@ -import { store, type RouteKey } from '@/components/routes/store' +import { isEqual } from 'juststore' +import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import { type RouteKey, store } from '@/components/routes/store' import type { RouteStatus } from '@/lib/api' import { formatTimestamp } from '@/lib/format' import { cn } from '@/lib/utils' import { healthStatusColorsFg } from '@/types/health' -import { isEqual } from 'juststore' -import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' export default function RouteUptimeBar({ routeKey, diff --git a/src/components/routes/content/ContainerControls.tsx b/src/components/routes/content/ContainerControls.tsx index a930dc79..3cda25af 100644 --- a/src/components/routes/content/ContainerControls.tsx +++ b/src/components/routes/content/ContainerControls.tsx @@ -1,12 +1,12 @@ -import { store, type RouteKey } from '@/components/routes/store' +import { IconPlayerPlay, IconRotate, IconSquare } from '@tabler/icons-react' +import { useState } from 'react' +import { toast } from 'sonner' +import { type RouteKey, store } from '@/components/routes/store' import { Button } from '@/components/ui/button' import { ButtonGroup } from '@/components/ui/button-group' import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip' import { api } from '@/lib/api-client' import { toastError } from '@/lib/toast' -import { IconPlayerPlay, IconRotate, IconSquare } from '@tabler/icons-react' -import { useState } from 'react' -import { toast } from 'sonner' const containerActions = [ { diff --git a/src/components/routes/content/DockerStatsProvider.tsx b/src/components/routes/content/DockerStatsProvider.tsx index 496bc85f..7009c2b5 100644 --- a/src/components/routes/content/DockerStatsProvider.tsx +++ b/src/components/routes/content/DockerStatsProvider.tsx @@ -1,7 +1,7 @@ +import { useEffect } from 'react' import { useWebSocketApi } from '@/hooks/websocket' import type { ContainerStatsResponse } from '@/lib/api' -import { useEffect } from 'react' -import { store, useSelectedRoute, type DockerStatsSummary } from '../store' +import { type DockerStatsSummary, store, useSelectedRoute } from '../store' function summarizeStats(stats: ContainerStatsResponse): DockerStatsSummary { const cpuTotal = stats.cpu_stats.cpu_usage.total_usage ?? 0 diff --git a/src/components/routes/content/Logs.tsx b/src/components/routes/content/Logs.tsx index 41e5eb2b..ba43eeb2 100644 --- a/src/components/routes/content/Logs.tsx +++ b/src/components/routes/content/Logs.tsx @@ -1,7 +1,3 @@ -import { useTheme } from '@/components/ThemeProvider' -import { Button } from '@/components/ui/button' -import { useWebSocketApi } from '@/hooks/websocket' - import { IconArrowsMaximize, IconArrowsMinimize, @@ -12,7 +8,6 @@ import { FitAddon } from '@xterm/addon-fit' import { WebFontsAddon } from '@xterm/addon-web-fonts' import { WebLinksAddon } from '@xterm/addon-web-links' import { Terminal } from '@xterm/xterm' - import { Suspense, useCallback, @@ -23,7 +18,10 @@ import { useRef, useState, } from 'react' -import { store, type RouteKey } from '../store' +import { useTheme } from '@/components/ThemeProvider' +import { Button } from '@/components/ui/button' +import { useWebSocketApi } from '@/hooks/websocket' +import { type RouteKey, store } from '../store' import '@xterm/xterm/css/xterm.css' @@ -32,9 +30,9 @@ import '@fontsource/cascadia-code/700.css' import { Query } from '@/lib/query' import '../style.css' -import { formatLineForTerminal, resolveThemeColorsAsync } from './logs' -import { createAtom, type Atom } from 'juststore' +import { type Atom, createAtom } from 'juststore' +import { formatLineForTerminal, resolveThemeColorsAsync } from './logs' export default function Logs({ routeKey }: { routeKey: RouteKey }) { const logsRef = useRef(null) diff --git a/src/components/routes/content/LogsHeader.tsx b/src/components/routes/content/LogsHeader.tsx index d176204a..b07e01e9 100644 --- a/src/components/routes/content/LogsHeader.tsx +++ b/src/components/routes/content/LogsHeader.tsx @@ -2,7 +2,7 @@ import { Badge } from '@/components/ui/badge' import { Label } from '@/components/ui/label' import { Switch } from '@/components/ui/switch' import type { Container, ContainerImage, ProxmoxNodeConfig } from '@/lib/api' -import { store, type RouteKey } from '../store' +import { type RouteKey, store } from '../store' function formatContainerName(container?: Container, proxmox?: ProxmoxNodeConfig): string { if (container) { diff --git a/src/components/routes/content/ProxmoxStatsProvider.tsx b/src/components/routes/content/ProxmoxStatsProvider.tsx index ca13ccca..07404aa9 100644 --- a/src/components/routes/content/ProxmoxStatsProvider.tsx +++ b/src/components/routes/content/ProxmoxStatsProvider.tsx @@ -1,6 +1,6 @@ +import { useEffect } from 'react' import { useWebSocketApi } from '@/hooks/websocket' import type { ProxmoxNodeStats } from '@/lib/api' -import { useEffect } from 'react' import { store, useSelectedRoute } from '../store' export default function ProxmoxStatsProvider() { diff --git a/src/components/routes/content/ResponseTimeChart.tsx b/src/components/routes/content/ResponseTimeChart.tsx index 6aa57ad6..d9b48ce5 100644 --- a/src/components/routes/content/ResponseTimeChart.tsx +++ b/src/components/routes/content/ResponseTimeChart.tsx @@ -1,7 +1,7 @@ +import { Area, AreaChart, CartesianGrid, XAxis, YAxis } from 'recharts' import { store, useSelectedRoute } from '@/components/routes/store' -import { ChartContainer, type ChartConfig } from '@/components/ui/chart' +import { type ChartConfig, ChartContainer } from '@/components/ui/chart' import type { MetricsPeriod } from '@/lib/api' -import { Area, AreaChart, CartesianGrid, XAxis, YAxis } from 'recharts' const chartConfig = { latency: { diff --git a/src/components/routes/content/RouteDetails.tsx b/src/components/routes/content/RouteDetails.tsx index 12657cb3..899a1761 100644 --- a/src/components/routes/content/RouteDetails.tsx +++ b/src/components/routes/content/RouteDetails.tsx @@ -1,3 +1,7 @@ +import { yaml } from '@codemirror/lang-yaml' +import { IconArrowRight, IconInfoCircle } from '@tabler/icons-react' +import { useEffect } from 'react' +import { stringify as stringifyYAML } from 'yaml' import { CodeMirror } from '@/components/ObjectDataList' import { store, useSelectedRoute } from '@/components/routes/store' import KeyboardReturn from '@/components/svg/keyboard-return' @@ -11,10 +15,6 @@ import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip import type { IdlewatcherConfig } from '@/lib/api' import { formatDuration, formatGoDuration, formatRelTime } from '@/lib/format' import { cn } from '@/lib/utils' -import { yaml } from '@codemirror/lang-yaml' -import { IconArrowRight, IconInfoCircle } from '@tabler/icons-react' -import { useEffect } from 'react' -import { stringify as stringifyYAML } from 'yaml' import { decodeRouteKey } from '../utils' import Logs from './Logs' import LogsHeader from './LogsHeader' diff --git a/src/components/routes/content/RoutesDetailProvider.tsx b/src/components/routes/content/RoutesDetailProvider.tsx index ebe74f16..ff745cdd 100644 --- a/src/components/routes/content/RoutesDetailProvider.tsx +++ b/src/components/routes/content/RoutesDetailProvider.tsx @@ -1,6 +1,6 @@ import { useWebSocketApi } from '@/hooks/websocket' import type { Route } from '@/lib/api' -import { store, type RouteKey } from '../store' +import { type RouteKey, store } from '../store' import { encodeRouteKey } from '../utils' export default function RoutesDetailProvider() { diff --git a/src/components/routes/content/StatsBar.tsx b/src/components/routes/content/StatsBar.tsx index 4dee0310..9f26e60e 100644 --- a/src/components/routes/content/StatsBar.tsx +++ b/src/components/routes/content/StatsBar.tsx @@ -1,4 +1,4 @@ -import { store, type RouteKey } from '@/components/routes/store' +import { type RouteKey, store } from '@/components/routes/store' import { formatBytes } from '@/lib/format' import { cn } from '@/lib/utils' import { parseProxmoxStatsLine } from './proxmox_stats' diff --git a/src/components/routes/content/stats_bar.css b/src/components/routes/content/stats_bar.css index 91fef6a9..e6be7949 100644 --- a/src/components/routes/content/stats_bar.css +++ b/src/components/routes/content/stats_bar.css @@ -104,7 +104,7 @@ */ /* Common card styling for consistency */ -[class^='ds-'] { +[class^="ds-"] { color: var(--ds-text-default); border-radius: 0.5rem; transition: @@ -112,12 +112,12 @@ transform 0.15s ease; } -[class^='ds-']:hover { +[class^="ds-"]:hover { filter: brightness(0.95); transform: translateY(-1px); } -.dark [class^='ds-']:hover { +.dark [class^="ds-"]:hover { filter: brightness(1.1); } diff --git a/src/components/routes/store.ts b/src/components/routes/store.ts index db79a454..f101aeae 100644 --- a/src/components/routes/store.ts +++ b/src/components/routes/store.ts @@ -1,6 +1,6 @@ +import { createStore } from 'juststore' import { useFragment } from '@/hooks/fragment' import type { ProxmoxNodeStats, Route, RouteUptimeAggregate } from '@/lib/api' -import { createStore } from 'juststore' export type RouteDisplaySettings = { dockerOnly: boolean diff --git a/src/components/routes/style.css b/src/components/routes/style.css index d6cfa739..996ef2bb 100644 --- a/src/components/routes/style.css +++ b/src/components/routes/style.css @@ -18,8 +18,11 @@ .sidebar-item-list { height: calc( - 100vh - var(--titlebar-height) - var(--sidebar-search-box-height) - - var(--sidebar-header-height) - var(--sidebar-keyboard-hints-height) + 100vh - + var(--titlebar-height) - + var(--sidebar-search-box-height) - + var(--sidebar-header-height) - + var(--sidebar-keyboard-hints-height) ); } diff --git a/src/components/servers/AllSystemInfoProvider.tsx b/src/components/servers/AllSystemInfoProvider.tsx index 4ca16da8..b34dae84 100644 --- a/src/components/servers/AllSystemInfoProvider.tsx +++ b/src/components/servers/AllSystemInfoProvider.tsx @@ -1,9 +1,9 @@ +import { useEffect } from 'react' import { useFragment } from '@/hooks/fragment' import { useWebSocketApi } from '@/hooks/websocket' import type { Agent, SystemInfo } from '@/lib/api' import { api } from '@/lib/api-client' import { toastError } from '@/lib/toast' -import { useEffect } from 'react' import { store } from './store' export default function AllSystemInfoProvider() { diff --git a/src/components/servers/NewAgentButton.tsx b/src/components/servers/NewAgentButton.tsx index 404c0e08..3e372950 100644 --- a/src/components/servers/NewAgentButton.tsx +++ b/src/components/servers/NewAgentButton.tsx @@ -1,3 +1,8 @@ +import { IconCheck, IconPlus } from '@tabler/icons-react' +import { createMixedState, useForm, useMemoryStore } from 'juststore' +import { useState } from 'react' +import { toast } from 'sonner' +import { parse as parseYAML, stringify as stringifyYAML } from 'yaml' import { StoreCheckboxField, StoreFormCheckboxField } from '@/components/store/Checkbox' import { StoreFormInputField } from '@/components/store/Input' import { StoreFormRadioField } from '@/components/store/Radio' @@ -17,14 +22,10 @@ import { api } from '@/lib/api-client' import { toastError } from '@/lib/toast' import { cn } from '@/lib/utils' import type { Config } from '@/types/godoxy' -import { IconCheck, IconPlus } from '@tabler/icons-react' -import { createMixedState, useForm, useMemoryStore } from 'juststore' -import { useState } from 'react' -import { toast } from 'sonner' -import { parse as parseYAML, stringify as stringifyYAML } from 'yaml' import Docker from '../svg/docker' import Linux from '../svg/linux' import { FieldGroup } from '../ui/field' + const agentTypes = [ { type: 'docker', diff --git a/src/components/servers/Sidebar.tsx b/src/components/servers/Sidebar.tsx index 4613b9cf..3c72bec4 100644 --- a/src/components/servers/Sidebar.tsx +++ b/src/components/servers/Sidebar.tsx @@ -1,6 +1,3 @@ -import type { DiskUsageStat, SystemInfo } from '@/lib/api' -import { formatBytes, formatShortTime, formatTemperature } from '@/lib/format' -import { cn } from '@/lib/utils' import type { FieldPath, FieldPathValue } from 'juststore' import { Activity, @@ -12,6 +9,9 @@ import { LucideHardDrive, } from 'lucide-react' import type { ElementType } from 'react' +import type { DiskUsageStat, SystemInfo } from '@/lib/api' +import { formatBytes, formatShortTime, formatTemperature } from '@/lib/format' +import { cn } from '@/lib/utils' import { Label } from '../ui/label' import { RadioGroup, RadioGroupField } from '../ui/radio-group' import { Skeleton } from '../ui/skeleton' diff --git a/src/components/servers/content/Charts.tsx b/src/components/servers/content/Charts.tsx index a6a04997..d2c7a041 100644 --- a/src/components/servers/content/Charts.tsx +++ b/src/components/servers/content/Charts.tsx @@ -1,13 +1,13 @@ +import { type ReactNode, useMemo } from 'react' +import { Area, AreaChart, CartesianGrid, XAxis, YAxis } from 'recharts' import { + type ChartConfig, ChartContainer, ChartLegend, ChartTooltip, ChartTooltipContent, - type ChartConfig, } from '@/components/ui/chart' import type { MetricsPeriod, SystemInfoAggregateMode } from '@/lib/api' -import { useMemo, type ReactNode } from 'react' -import { Area, AreaChart, CartesianGrid, XAxis, YAxis } from 'recharts' import { store } from '../store' function formatTimestampAsTime(ts: number) { diff --git a/src/components/servers/content/Content.tsx b/src/components/servers/content/Content.tsx index ecf554db..cfb81993 100644 --- a/src/components/servers/content/Content.tsx +++ b/src/components/servers/content/Content.tsx @@ -1,3 +1,5 @@ +import { IconCheck, IconServer, IconX } from '@tabler/icons-react' +import { Suspense, useCallback, useMemo } from 'react' import SystemInfoGraphsProvider from '@/components/servers/content/SystemInfoGraphsProvider' import { Badge } from '@/components/ui/badge' import { Label } from '@/components/ui/label' @@ -12,8 +14,6 @@ import VersionText from '@/components/VersionText' import { useFragment } from '@/hooks/fragment' import type { MetricsPeriod } from '@/lib/api' import { formatBytes, formatTemperature } from '@/lib/format' -import { IconCheck, IconServer, IconX } from '@tabler/icons-react' -import { Suspense, useCallback, useMemo } from 'react' import { store } from '../store' import MetricChart from './Charts' diff --git a/src/components/servers/store.ts b/src/components/servers/store.ts index b8e99f98..0eb4b220 100644 --- a/src/components/servers/store.ts +++ b/src/components/servers/store.ts @@ -1,3 +1,4 @@ +import { createStore } from 'juststore' import type { Agent, MetricsPeriod, @@ -6,7 +7,6 @@ import type { SystemInfoAggregate, SystemInfoAggregateMode, } from '@/lib/api' -import { createStore } from 'juststore' type Store = { temperatureUnit: 'celsius' | 'fahrenheit' diff --git a/src/components/svg/docker.tsx b/src/components/svg/docker.tsx index 28fd6cec..06cf3694 100644 --- a/src/components/svg/docker.tsx +++ b/src/components/svg/docker.tsx @@ -1,4 +1,5 @@ import type { SVGProps } from 'react' + const Docker = ({ colored = false, ...props diff --git a/src/components/svg/duckduckgo.tsx b/src/components/svg/duckduckgo.tsx index 8cd4858c..6745348f 100644 --- a/src/components/svg/duckduckgo.tsx +++ b/src/components/svg/duckduckgo.tsx @@ -1,4 +1,5 @@ import type { SVGProps } from 'react' + const DuckDuckGo = (props: SVGProps) => ( ) => ( ) => ( diff --git a/src/components/ui/store/CodeMirror.tsx b/src/components/ui/store/CodeMirror.tsx index fc5b5104..1769d8fc 100644 --- a/src/components/ui/store/CodeMirror.tsx +++ b/src/components/ui/store/CodeMirror.tsx @@ -1,7 +1,7 @@ +import { useMemo } from 'react' import { CodeMirror } from '@/components/ObjectDataList' import { StoreLabel } from '@/components/store/Label' import type { FormComponentProps, Prettify, StoreFieldPropsCommon } from '@/components/store/types' -import { useMemo } from 'react' import { Field, FieldDescription } from '../field' type CodeMirrorFieldProps
= Prettify< diff --git a/src/hooks/websocket.ts b/src/hooks/websocket.ts index 6d42e6ce..03b337a5 100644 --- a/src/hooks/websocket.ts +++ b/src/hooks/websocket.ts @@ -1,8 +1,8 @@ -import { logger } from '@/lib/logger' import { isEqual } from 'juststore' import { useCallback, useEffect, useMemo, useRef } from 'react' import { useLocation } from 'react-use' import useWebSocket, { ReadyState } from 'react-use-websocket' +import { logger } from '@/lib/logger' // Generic WebSocket API hook export type WebSocketApiOptions = { diff --git a/src/lib/api-client.ts b/src/lib/api-client.ts index e7411dc0..7e5f7b2b 100644 --- a/src/lib/api-client.ts +++ b/src/lib/api-client.ts @@ -1,5 +1,5 @@ -import { Api, type ErrorResponse } from '@/lib/api' import { AxiosError } from 'axios' +import { Api, type ErrorResponse } from '@/lib/api' // this is for server side only, on client side we use relative path for middleware to handle const apiAddr = process.env.GODOXY_API_ADDR ? `http://${process.env.GODOXY_API_ADDR}` : '' diff --git a/src/lib/utils.ts b/src/lib/utils.ts index fed2fe91..d32b0fe6 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -1,4 +1,4 @@ -import { clsx, type ClassValue } from 'clsx' +import { type ClassValue, clsx } from 'clsx' import { twMerge } from 'tailwind-merge' export function cn(...inputs: ClassValue[]) { diff --git a/src/routes/__root.tsx b/src/routes/__root.tsx index ddb2edf6..7adb307b 100644 --- a/src/routes/__root.tsx +++ b/src/routes/__root.tsx @@ -1,11 +1,10 @@ -import { HeadContent, Outlet, Scripts, createRootRoute } from '@tanstack/react-router' - +import { registerSW } from 'virtual:pwa-register' +import { createRootRoute, HeadContent, Outlet, Scripts } from '@tanstack/react-router' import Titlebar from '@/components/layout/Titlebar' import TitlebarController from '@/components/layout/TitlebarController' import { ThemeProvider } from '@/components/ThemeProvider' import { Toaster } from '@/components/ui/sonner' import { siteConfig } from '@/site-config' -import { registerSW } from 'virtual:pwa-register' import '@fontsource/geist' import '@fontsource/geist-mono' import appCss from '../styles.css?url' diff --git a/src/routes/login.tsx b/src/routes/login.tsx index 9340ff18..270cc1c9 100644 --- a/src/routes/login.tsx +++ b/src/routes/login.tsx @@ -1,7 +1,7 @@ import { createFileRoute, useNavigate } from '@tanstack/react-router' -import { useForm } from 'juststore' +import type { CreateFormOptions } from 'juststore' +import { useForm } from 'juststore' import { useCallback } from 'react' -import type {CreateFormOptions} from 'juststore'; import { StoreFormInputField, StoreFormPasswordField } from '@/components/store/Input' import { Button } from '@/components/ui/button' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' diff --git a/src/routes/wiki.$.tsx b/src/routes/wiki.$.tsx index d2bb73bf..935f01b8 100644 --- a/src/routes/wiki.$.tsx +++ b/src/routes/wiki.$.tsx @@ -1,5 +1,5 @@ +import { extname, join, sep } from 'node:path' import { createFileRoute } from '@tanstack/react-router' -import { join, extname, sep } from 'node:path' function isSafe(pathSegs: string[]): boolean { return !pathSegs.some(seg => seg === '..') diff --git a/src/types/godoxy/index.ts b/src/types/godoxy/index.ts index 8d0a0d81..b1204a4f 100644 --- a/src/types/godoxy/index.ts +++ b/src/types/godoxy/index.ts @@ -1,3 +1,4 @@ +/** biome-ignore-all assist/source/organizeImports: */ import type * as AccessLog from './config/access_log' import type * as ACL from './config/acl' import type * as Autocert from './config/autocert' diff --git a/src/types/godoxy/middlewares/middlewares.ts b/src/types/godoxy/middlewares/middlewares.ts index fae6d88b..a5ac0462 100644 --- a/src/types/godoxy/middlewares/middlewares.ts +++ b/src/types/godoxy/middlewares/middlewares.ts @@ -77,8 +77,7 @@ type KeyOptMapping = Record, + extends KeyOptMapping, KeyOptMapping, KeyOptMapping, KeyOptMapping, diff --git a/src/types/schema.ts b/src/types/schema.ts index e58966d6..1fe2e7f8 100644 --- a/src/types/schema.ts +++ b/src/types/schema.ts @@ -289,9 +289,9 @@ function getDefaultValue( function isObjectishSchema(inner: JSONSchema): boolean { return Boolean( isSchemaType(inner, 'object') || - inner.properties || - inner.additionalProperties || - inner.patternProperties + inner.properties || + inner.additionalProperties || + inner.patternProperties ) } diff --git a/vite.config.ts b/vite.config.ts index 813f3787..8432f37c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,5 +1,5 @@ /// -import { siteConfig } from '@/site-config' + import tailwindcss from '@tailwindcss/vite' import { devtools } from '@tanstack/devtools-vite' import { tanstackStart } from '@tanstack/react-start/plugin/vite' @@ -8,6 +8,7 @@ import { nitro } from 'nitro/vite' import { defineConfig } from 'vite' import { VitePWA } from 'vite-plugin-pwa' import tsconfigPaths from 'vite-tsconfig-paths' +import { siteConfig } from '@/site-config' const isDemoSite = process.env.DEMO_SITE === 'true' @@ -82,5 +83,6 @@ function pwaConfig(outdir: string) { theme_color: '#fffbfb', background_color: '#000000', display: 'standalone', - }}) -} \ No newline at end of file + }, + }) +} From 5b0b5af4c5e7df35f98c2354684bb5380d308dc1 Mon Sep 17 00:00:00 2001 From: yusing Date: Thu, 5 Feb 2026 23:55:40 +0800 Subject: [PATCH 6/8] fix: Dockerfile --- Dockerfile | 3 +-- lite.Dockerfile | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1a0e3f09..239bec23 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,7 +20,6 @@ FROM utils-deps AS install RUN mkdir -p /temp/dev COPY package.json bun.lock /temp/dev/ COPY juststore/package.json juststore/bun.lock /temp/dev/juststore/ -COPY juststore-shadcn/package.json juststore-shadcn/bun.lock /temp/dev/juststore-shadcn/ WORKDIR /temp/dev RUN bun install --frozen-lockfile @@ -47,7 +46,7 @@ FROM base AS prerelease WORKDIR /app COPY --from=install /temp/dev/node_modules node_modules COPY . . -RUN ln -s /app/components/ui /app/juststore-shadcn/src/components/ui +RUN ln -s /app/src/components/ui /app/juststore-shadcn/src/components/ui COPY --from=schema-gen /temp/dev/src/types/godoxy/*.json ./src/types/godoxy/ ENV NODE_ENV=production diff --git a/lite.Dockerfile b/lite.Dockerfile index 9b2e2bd5..b56b72b9 100644 --- a/lite.Dockerfile +++ b/lite.Dockerfile @@ -19,7 +19,6 @@ FROM utils-deps AS install RUN mkdir -p /temp/dev COPY package.json bun.lock /temp/dev/ COPY juststore/package.json juststore/bun.lock /temp/dev/juststore/ -COPY juststore-shadcn/package.json juststore-shadcn/bun.lock /temp/dev/juststore-shadcn/ WORKDIR /temp/dev RUN bun install --frozen-lockfile @@ -46,7 +45,7 @@ FROM base AS prerelease WORKDIR /app COPY --from=install /temp/dev/node_modules node_modules COPY . . -RUN ln -s /app/components/ui /app/juststore-shadcn/src/components/ui +RUN ln -s /app/src/components/ui /app/juststore-shadcn/src/components/ui COPY --from=schema-gen /temp/dev/src/types/godoxy/*.json ./src/types/godoxy/ # for lite image, we want a fully static output From da39bb3788791047d4bb14372613ac38ae06a671 Mon Sep 17 00:00:00 2001 From: yusing Date: Fri, 6 Feb 2026 00:12:37 +0800 Subject: [PATCH 7/8] fix: use / instead of os sep for wiki path parsing --- src/routes/wiki.$.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/wiki.$.tsx b/src/routes/wiki.$.tsx index 935f01b8..d7c8a62b 100644 --- a/src/routes/wiki.$.tsx +++ b/src/routes/wiki.$.tsx @@ -1,4 +1,4 @@ -import { extname, join, sep } from 'node:path' +import { extname, join } from 'node:path' import { createFileRoute } from '@tanstack/react-router' function isSafe(pathSegs: string[]): boolean { @@ -12,7 +12,7 @@ export const Route = createFileRoute('/wiki/$')({ // decodeURLComponent to resolve %2e path traversal let pathSegs = decodeURIComponent(new URL(request.url).pathname) .slice('/wiki'.length) - .split(sep) + .split('/') if (!isSafe(pathSegs)) { return new Response('Forbidden', { status: 403 }) From a80b0c66934a8c62c89d15ef2a2debb9e6132ad0 Mon Sep 17 00:00:00 2001 From: yusing Date: Fri, 6 Feb 2026 00:28:39 +0800 Subject: [PATCH 8/8] fix(routes): register service worker only on client --- src/routes/__root.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/routes/__root.tsx b/src/routes/__root.tsx index 7adb307b..17e2b4e7 100644 --- a/src/routes/__root.tsx +++ b/src/routes/__root.tsx @@ -8,6 +8,7 @@ import { siteConfig } from '@/site-config' import '@fontsource/geist' import '@fontsource/geist-mono' import appCss from '../styles.css?url' +import { createClientOnlyFn, createIsomorphicFn } from '@tanstack/react-start' if (import.meta.env.DEV) { import('react-scan').then(({ scan }) => scan()) @@ -49,7 +50,11 @@ export const Route = createRootRoute({ component: RootLayout, }) -registerSW({ immediate: true }) +const clientRegisterSW = createIsomorphicFn() + .client(() => registerSW({ immediate: true })) + .server(() => undefined) + +clientRegisterSW() function RootLayout() { return (