From 82489064a0e8f9fb56eb36ce1fc7d4812fc366c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E9=92=BB=E9=A3=8E?= <> Date: Mon, 22 Jun 2026 14:48:39 +0800 Subject: [PATCH 01/24] Sync default frontend template and GHCR build --- .github/workflows/ghcr-build.yml | 54 + web/bun.lock | 400 +- web/default/.oxfmtrc.json | 27 - web/default/.oxlintrc.json | 207 - web/default/.prettierignore | 18 + web/default/.prettierrc | 49 + web/default/AGENTS.md | 5 +- web/default/eslint.config.js | 67 + web/default/index.html | 2 - web/default/package.json | 132 +- web/default/public/waffo-logo-dark.svg | 5 - web/default/public/waffo-logo-light.svg | 5 - web/default/rsbuild.config.ts | 2 +- .../scripts/format-with-protected-headers.mjs | 172 - web/default/scripts/sync-i18n.mjs | 110 +- .../src/components/ai-elements/code-block.tsx | 2 +- .../components/auto-open-notifications.tsx | 181 + web/default/src/components/command-menu.tsx | 7 +- web/default/src/components/config-drawer.tsx | 105 +- .../src/components/data-table/README.md | 17 - .../data-table/{toolbar => }/bulk-actions.tsx | 9 +- .../data-table/{core => }/column-header.tsx | 0 .../components/data-table/core/badge-cell.tsx | 34 - .../data-table/core/badge-list-cell.tsx | 74 - .../data-table/core/column-pinning.ts | 78 - .../data-table/core/data-table-colgroup.tsx | 44 - .../data-table/core/data-table-header.tsx | 77 - .../data-table/core/data-table-row.tsx | 126 - .../data-table/core/data-table-view.tsx | 330 -- .../data-table/core/table-sizing.ts | 34 - .../data-table/core/truncated-cell.tsx | 91 - .../src/components/data-table/core/types.ts | 71 - .../components/data-table/data-table-page.tsx | 390 ++ .../{toolbar => }/faceted-filter.tsx | 68 +- .../hooks/use-data-table-view-mode.ts | 103 - .../data-table/hooks/use-data-table.ts | 314 -- .../hooks/use-debounced-column-filter.ts | 112 - .../src/components/data-table/index.ts | 57 +- .../data-table/layout/card-cell-utils.ts | 59 - .../data-table/layout/card-grid.tsx | 178 - .../data-table/layout/card-row-content.tsx | 197 - .../data-table/layout/data-table-page.tsx | 531 -- .../data-table/layout/mobile-card-list.tsx | 159 - .../data-table/mobile-card-list.tsx | 312 ++ .../data-table/{core => }/pagination.tsx | 84 +- .../static/static-data-table-classnames.ts | 47 - .../data-table/static/static-data-table.tsx | 239 - .../data-table/{core => }/table-empty.tsx | 0 .../data-table/{core => }/table-skeleton.tsx | 0 .../data-table/{toolbar => }/toolbar.tsx | 183 +- .../data-table/toolbar/view-mode-toggle.tsx | 104 - .../data-table/{toolbar => }/view-options.tsx | 43 +- .../src/components/datetime-picker.tsx | 3 - web/default/src/components/dialog.tsx | 127 - web/default/src/components/drawer-layout.ts | 105 - web/default/src/components/group-badge.tsx | 15 +- .../src/components/json-code-editor.tsx | 284 -- .../src/components/language-switcher.tsx | 21 +- .../layout/components/app-header.tsx | 27 +- .../layout/components/app-sidebar.tsx | 78 +- .../components/authenticated-layout.tsx | 36 +- .../layout/components/chat-presets-item.tsx | 24 +- .../components/layout/components/footer.tsx | 106 +- .../components/layout/components/header.tsx | 1 + .../layout/components/nav-group.tsx | 22 +- .../layout/components/public-header.tsx | 188 +- .../layout/components/section-page-layout.tsx | 19 +- .../layout/components/sidebar-view-header.tsx | 70 - .../layout/config/system-settings.config.ts | 30 +- .../layout/context/workspace-context.tsx | 62 + web/default/src/components/layout/index.ts | 37 +- .../layout/lib/sidebar-view-registry.ts | 58 - .../layout/lib/workspace-registry.example.ts | 119 + .../layout/lib/workspace-registry.ts | 128 + web/default/src/components/layout/types.ts | 61 +- web/default/src/components/long-text.tsx | 1 + .../src/components/masked-value-display.tsx | 10 +- web/default/src/components/multi-select.tsx | 445 +- .../src/components/notification-button.tsx | 63 + ...on-popover.tsx => notification-dialog.tsx} | 164 +- web/default/src/components/provider-badge.tsx | 57 - .../src/components/react-icon-by-name.tsx | 173 - .../risk-acknowledgement-dialog.tsx | 318 -- web/default/src/components/status-badge.tsx | 130 +- web/default/src/components/truncated-text.tsx | 22 - web/default/src/components/ui/button.tsx | 5 +- web/default/src/components/ui/calendar.tsx | 2 +- web/default/src/components/ui/card.tsx | 18 +- .../src/components/ui/combobox-input.tsx | 2 +- web/default/src/components/ui/combobox.tsx | 2 +- web/default/src/components/ui/dialog.tsx | 18 +- web/default/src/components/ui/drawer.tsx | 2 +- .../src/components/ui/dropdown-menu-events.ts | 25 - .../src/components/ui/dropdown-menu.test.tsx | 50 - .../src/components/ui/dropdown-menu.tsx | 17 +- web/default/src/components/ui/form.tsx | 106 +- web/default/src/components/ui/select.tsx | 60 +- web/default/src/components/ui/sheet.tsx | 2 +- web/default/src/components/ui/sidebar.tsx | 35 +- web/default/src/components/ui/sonner.tsx | 32 +- web/default/src/components/ui/table.tsx | 13 +- web/default/src/components/ui/textarea.tsx | 2 +- web/default/src/components/ui/titled-card.tsx | 7 +- .../context/theme-customization-provider.tsx | 39 +- web/default/src/features/auth/auth-layout.tsx | 9 +- .../components/forgot-password-form.tsx | 13 +- .../features/auth/hooks/use-auth-redirect.ts | 5 +- .../auth/hooks/use-email-verification.ts | 3 - .../auth/reset-password-confirm/index.tsx | 12 +- .../components/secure-verification-dialog.tsx | 227 +- .../sign-in/components/user-auth-form.tsx | 285 +- .../src/features/auth/sign-in/index.tsx | 25 +- .../auth/sign-up/components/sign-up-form.tsx | 137 +- web/default/src/features/auth/types.ts | 4 +- web/default/src/features/channels/api.ts | 190 +- .../channels/components/channel-card.tsx | 169 - .../components/channel-row-actions-context.ts | 29 - .../channels/components/channels-columns.tsx | 1367 +++-- .../components/channels-primary-buttons.tsx | 9 +- .../channels/components/channels-provider.tsx | 57 +- .../channels/components/channels-table.tsx | 170 +- .../components/data-table-bulk-actions.tsx | 94 +- .../components/data-table-row-actions.tsx | 43 +- .../dialogs/advanced-custom-editor-dialog.tsx | 645 --- .../dialogs/balance-query-dialog.tsx | 99 +- .../dialogs/channel-test-dialog.tsx | 1265 +---- .../components/dialogs/codex-oauth-dialog.tsx | 222 + .../components/dialogs/codex-usage-dialog.tsx | 1293 ++--- .../dialogs/copy-channel-dialog.tsx | 97 +- .../components/dialogs/edit-tag-dialog.tsx | 430 +- .../dialogs/fetch-models-dialog.tsx | 299 +- .../dialogs/multi-key-manage-dialog.tsx | 418 +- .../dialogs/ollama-models-dialog.tsx | 385 +- .../dialogs/param-override-editor-dialog.tsx | 690 +-- .../dialogs/status-code-risk-dialog.tsx | 150 +- .../dialogs/tag-batch-edit-dialog.tsx | 218 +- .../dialogs/upstream-update-dialog.tsx | 308 +- .../drawers/channel-mutate-drawer.tsx | 4402 ++++++++--------- .../sections/channel-advanced-section.tsx | 78 - .../sections/channel-api-access-section.tsx | 46 - .../drawers/sections/channel-auth-section.tsx | 44 - .../sections/channel-basic-section.tsx | 44 - .../sections/channel-editor-loading-state.tsx | 44 - .../sections/channel-models-section.tsx | 44 - .../components/drawers/sections/index.ts | 24 - .../components/model-mapping-editor.tsx | 268 +- .../components/numeric-spinner-input.tsx | 5 +- .../src/features/channels/constants.ts | 37 +- .../channels/hooks/use-channel-mutate-form.ts | 106 - .../hooks/use-channel-upstream-updates.ts | 70 +- web/default/src/features/channels/index.tsx | 71 +- .../features/channels/lib/advanced-custom.ts | 597 --- .../features/channels/lib/channel-actions.ts | 142 +- .../channels/lib/channel-form-errors.ts | 67 - .../src/features/channels/lib/channel-form.ts | 360 +- .../channels/lib/channel-type-config.ts | 10 - .../features/channels/lib/channel-utils.ts | 188 +- .../src/features/channels/lib/index.ts | 2 - .../channels/lib/model-mapping-validation.ts | 6 - web/default/src/features/channels/types.ts | 37 - web/default/src/features/dashboard/api.ts | 24 +- .../dashboard/components/flow/flow-charts.tsx | 727 --- .../components/flow/flow-node-filter.tsx | 235 - .../models/consumption-distribution-chart.tsx | 10 +- .../components/models/log-stat-cards.tsx | 64 +- .../components/models/model-charts.tsx | 10 +- .../models/models-chart-preferences.tsx | 321 +- .../models/models-filter-dialog.tsx | 302 +- .../models/performance-overview.tsx | 348 +- .../overview/announcement-detail-dialog.tsx | 71 +- .../overview/overview-dashboard.tsx | 177 +- .../overview/performance-health-panel.tsx | 205 - .../components/overview/summary-cards.tsx | 175 +- .../components/overview/uptime-panel.tsx | 8 +- .../dashboard/components/ui/stat-card.tsx | 175 +- .../components/users/user-charts.tsx | 194 +- .../dashboard/hooks/use-dashboard-config.tsx | 16 +- .../dashboard/hooks/use-status-data.ts | 17 +- web/default/src/features/dashboard/index.tsx | 145 +- .../src/features/dashboard/lib/api-info.ts | 6 +- .../src/features/dashboard/lib/charts.ts | 61 +- .../dashboard/lib/flow-selection.test.ts | 115 - .../features/dashboard/lib/flow-selection.ts | 66 - .../src/features/dashboard/lib/flow.test.ts | 799 --- .../src/features/dashboard/lib/flow.ts | 1336 ----- .../src/features/dashboard/lib/index.ts | 7 - .../features/dashboard/section-registry.tsx | 8 +- web/default/src/features/dashboard/types.ts | 139 - .../home/components/hero-terminal-demo.tsx | 8 +- .../src/features/home/components/index.ts | 1 + .../home/components/sections/hero.tsx | 252 +- .../components/sections/model-pricing.tsx | 83 + web/default/src/features/home/index.tsx | 751 ++- .../src/features/home/model-pricing-config.ts | 154 + web/default/src/features/keys/api.ts | 2 +- .../keys/components/api-keys-cells.tsx | 35 +- .../keys/components/api-keys-columns.tsx | 146 +- .../keys/components/api-keys-dialogs.tsx | 15 + .../components/api-keys-mutate-drawer.tsx | 278 +- .../keys/components/api-keys-table.tsx | 137 +- .../components/data-table-row-actions.tsx | 28 +- .../components/dialogs/cc-switch-dialog.tsx | 143 +- web/default/src/features/keys/constants.ts | 6 +- web/default/src/features/keys/index.tsx | 55 +- .../src/features/keys/lib/api-key-form.ts | 56 +- web/default/src/features/keys/lib/index.ts | 2 +- .../components/data-table-bulk-actions.tsx | 37 +- .../components/data-table-row-actions.tsx | 136 +- .../models/components/deployments-columns.tsx | 47 +- .../models/components/deployments-table.tsx | 33 +- .../dialogs/create-deployment-drawer.tsx | 33 +- .../components/dialogs/description-dialog.tsx | 39 +- .../dialogs/extend-deployment-dialog.tsx | 127 +- .../dialogs/missing-models-dialog.tsx | 247 +- .../prefill-group-management-dialog.tsx | 614 +-- .../dialogs/rename-deployment-dialog.tsx | 57 +- .../components/dialogs/sync-wizard-dialog.tsx | 232 +- .../dialogs/update-config-dialog.tsx | 420 +- .../dialogs/upstream-conflict-dialog.tsx | 409 +- .../dialogs/vendor-mutate-dialog.tsx | 200 +- .../dialogs/view-details-dialog.tsx | 325 +- .../components/dialogs/view-logs-dialog.tsx | 363 +- .../drawers/model-mutate-drawer.tsx | 169 +- .../drawers/prefill-group-form-drawer.tsx | 32 +- .../models/components/models-columns.tsx | 315 +- .../models/components/models-table.tsx | 48 +- web/default/src/features/models/constants.ts | 12 +- web/default/src/features/models/index.tsx | 113 +- .../src/features/models/section-registry.tsx | 2 + .../performance-metrics/lib/format.ts | 66 +- .../src/features/performance-metrics/types.ts | 3 +- .../playground/components/message-error.tsx | 2 +- .../src/features/playground/constants.ts | 5 +- web/default/src/features/playground/index.tsx | 56 +- .../src/features/playground/lib/storage.ts | 7 +- .../components/dynamic-pricing-breakdown.tsx | 139 +- .../pricing/components/model-card-grid.tsx | 8 +- .../pricing/components/model-card.tsx | 7 +- .../pricing/components/model-details-api.tsx | 298 +- .../pricing/components/model-details-apps.tsx | 129 +- .../components/model-details-capabilities.tsx | 181 + .../components/model-details-charts.tsx | 106 +- .../components/model-details-modalities.tsx | 173 + .../components/model-details-performance.tsx | 152 +- .../components/model-details-quick-stats.tsx | 147 + .../model-details-uptime-sparkline.tsx | 25 +- .../pricing/components/model-details.tsx | 797 ++- .../pricing/components/model-perf-badge.tsx | 57 +- .../pricing/components/pricing-columns.tsx | 180 +- .../pricing/components/pricing-sidebar.tsx | 66 +- .../pricing/components/pricing-table.tsx | 102 +- .../pricing/components/pricing-toolbar.tsx | 48 +- .../src/features/pricing/hooks/use-filters.ts | 2 +- web/default/src/features/pricing/index.tsx | 9 +- web/default/src/features/pricing/lib/index.ts | 1 + .../features/pricing/lib/model-metadata.ts | 566 +++ web/default/src/features/pricing/types.ts | 7 +- .../components/checkin-calendar-card.tsx | 63 +- .../dialogs/access-token-dialog.tsx | 91 +- .../dialogs/change-password-dialog.tsx | 156 +- .../dialogs/delete-account-dialog.tsx | 94 +- .../components/dialogs/email-bind-dialog.tsx | 123 +- .../dialogs/telegram-bind-dialog.tsx | 93 +- .../dialogs/two-fa-backup-dialog.tsx | 170 +- .../dialogs/two-fa-disable-dialog.tsx | 124 +- .../dialogs/two-fa-setup-dialog.tsx | 254 +- .../components/dialogs/wechat-bind-dialog.tsx | 69 +- .../components/language-preferences-card.tsx | 35 +- .../profile/components/passkey-card.tsx | 6 +- .../profile/components/profile-header.tsx | 36 +- .../components/profile-security-card.tsx | 9 +- .../components/profile-settings-card.tsx | 5 +- .../components/sidebar-modules-card.tsx | 4 +- .../components/tabs/account-bindings-tab.tsx | 2 +- .../components/tabs/notification-tab.tsx | 67 +- .../profile/components/two-fa-card.tsx | 4 +- .../components/market-share-section.tsx | 30 +- .../rankings/components/models-section.tsx | 30 +- .../rankings/components/rankings-hero.tsx | 4 + web/default/src/features/rankings/index.tsx | 2 +- web/default/src/features/rankings/types.ts | 2 +- .../components/data-table-row-actions.tsx | 116 +- .../components/redemptions-columns.tsx | 83 +- .../components/redemptions-mutate-drawer.tsx | 252 +- .../components/redemptions-table.tsx | 49 +- .../features/redemption-codes/constants.ts | 5 +- .../src/features/redemption-codes/index.tsx | 5 +- web/default/src/features/subscriptions/api.ts | 43 - .../components/data-table-row-actions.tsx | 76 +- .../dialogs/subscription-purchase-dialog.tsx | 375 +- .../dialogs/user-subscriptions-dialog.tsx | 247 +- .../components/subscriptions-columns.tsx | 103 +- .../subscriptions-mutate-drawer.tsx | 333 +- .../subscriptions-primary-buttons.tsx | 8 +- .../components/subscriptions-provider.tsx | 17 - .../components/subscriptions-table.tsx | 25 +- .../src/features/subscriptions/index.tsx | 39 +- .../src/features/subscriptions/lib/format.ts | 7 + .../src/features/subscriptions/lib/index.ts | 7 +- .../features/subscriptions/lib/plan-form.ts | 18 +- .../src/features/subscriptions/types.ts | 13 - .../src/features/system-settings/api.ts | 9 - .../auth/basic-auth-section.tsx | 96 +- .../auth/bot-protection-section.tsx | 42 +- .../components/preset-selector.tsx | 5 +- .../components/provider-form-dialog.tsx | 689 +-- .../components/provider-table.tsx | 157 +- .../custom-oauth/custom-oauth-section.tsx | 14 +- .../features/system-settings/auth/index.tsx | 2 - .../system-settings/auth/oauth-section.tsx | 591 +-- .../system-settings/auth/passkey-section.tsx | 261 +- .../system-settings/auth/section-registry.tsx | 16 +- .../system-settings/billing/index.tsx | 16 +- .../billing/section-registry.tsx | 32 +- .../components/form-dirty-indicator.tsx | 20 +- .../components/settings-accordion.tsx | 8 +- .../components/settings-form-layout.tsx | 186 - .../components/settings-page-context.tsx | 146 - .../components/settings-page.tsx | 99 +- .../components/settings-section.tsx | 37 +- .../content/announcements-section.tsx | 517 +- .../content/api-info-section.tsx | 572 ++- .../system-settings/content/chat-dialog.tsx | 144 +- .../content/chat-settings-section.tsx | 21 +- .../content/chat-settings-visual-editor.tsx | 101 +- .../content/dashboard-section.tsx | 44 +- .../content/drawing-settings-section.tsx | 44 +- .../system-settings/content/faq-section.tsx | 316 +- .../system-settings/content/index.tsx | 119 +- .../content/json-toggle-section.tsx | 36 +- .../content/section-registry.tsx | 8 +- .../content/uptime-kuma-section.tsx | 367 +- .../channel-affinity/cache-stats-dialog.tsx | 73 +- .../general/channel-affinity/index.tsx | 452 +- .../channel-affinity/rule-editor-dialog.tsx | 450 +- .../general/channel-affinity/types.ts | 3 +- .../general/checkin-settings-section.tsx | 47 +- .../general/pricing-section.tsx | 72 +- .../general/quota-settings-section.tsx | 348 +- .../general/system-behavior-section.tsx | 88 +- .../general/system-info-section.tsx | 461 +- .../hooks/use-update-option.ts | 5 - .../src/features/system-settings/index.tsx | 9 +- .../integrations/amount-discount-dialog.tsx | 202 +- .../amount-discount-visual-editor.tsx | 144 +- .../integrations/creem-product-dialog.tsx | 251 +- .../creem-products-visual-editor.tsx | 148 +- .../integrations/email-settings-section.tsx | 53 +- .../ionet-deployment-settings-section.tsx | 46 +- .../monitoring-settings-section.tsx | 488 +- .../integrations/payment-method-dialog.tsx | 384 +- .../payment-methods-visual-editor.tsx | 321 +- .../integrations/payment-settings-section.tsx | 2229 ++++----- .../integrations/waffo-pancake-api.ts | 102 - .../waffo-pancake-settings-section.tsx | 765 +-- .../integrations/waffo-settings-section.tsx | 574 +-- .../integrations/worker-settings-section.tsx | 45 +- .../maintenance/header-navigation-section.tsx | 99 +- .../maintenance/log-settings-section.tsx | 286 +- .../maintenance/notice-section.tsx | 23 +- .../maintenance/performance-section.tsx | 641 ++- .../maintenance/sidebar-modules-section.tsx | 75 +- .../maintenance/update-checker-section.tsx | 83 +- .../models/channel-selector-dialog.tsx | 162 +- .../models/claude-settings-card.tsx | 45 +- .../models/conflict-confirm-dialog.tsx | 79 +- .../models/gemini-settings-card.tsx | 65 +- .../models/global-settings-card.tsx | 53 +- .../models/grok-settings-card.tsx | 137 +- .../models/group-ratio-form.tsx | 66 +- .../models/group-ratio-visual-editor.tsx | 679 +-- .../features/system-settings/models/index.tsx | 13 - .../models/model-pricing-core.ts | 296 -- .../models/model-pricing-inputs.tsx | 91 - .../models/model-pricing-sheet.tsx | 930 ++-- .../models/model-pricing-snapshots.ts | 296 -- .../models/model-ratio-form.tsx | 370 +- .../models/model-ratio-table-columns.tsx | 167 - .../models/model-ratio-visual-editor.tsx | 1501 +++--- .../system-settings/models/pricing-format.ts | 61 - .../models/ratio-settings-card.tsx | 284 +- .../models/routing-reliability-section.tsx | 513 -- .../models/section-registry.tsx | 32 +- .../models/tiered-pricing-editor.tsx | 67 +- .../models/tool-price-settings.tsx | 127 +- .../models/upstream-ratio-sync-columns.tsx | 16 +- .../models/upstream-ratio-sync-table.tsx | 85 +- .../features/system-settings/models/utils.ts | 51 +- .../system-settings/operations/index.tsx | 66 +- .../operations/section-registry.tsx | 38 +- .../request-limits/rate-limit-dialog.tsx | 242 +- .../request-limits/rate-limit-section.tsx | 38 +- .../rate-limit-visual-editor.tsx | 133 +- .../sensitive-words-section.tsx | 51 +- .../request-limits/ssrf-section.tsx | 61 +- .../system-settings/security/index.tsx | 2 - .../security/section-registry.tsx | 4 +- .../features/system-settings/site/index.tsx | 2 - .../system-settings/site/section-registry.tsx | 5 +- .../src/features/system-settings/types.ts | 46 +- .../system-settings/utils/numeric-field.ts | 91 - .../system-settings/utils/section-registry.ts | 8 +- web/default/src/features/usage-logs/api.ts | 2 +- .../components/columns/column-helpers.tsx | 65 +- .../columns/common-logs-columns.tsx | 303 +- .../columns/drawing-logs-columns.tsx | 49 +- .../components/columns/task-logs-columns.tsx | 45 +- .../components/common-logs-filter-bar.tsx | 444 +- .../compact-date-time-range-picker.tsx | 6 +- .../dialogs/audio-preview-dialog.tsx | 60 +- .../components/dialogs/details-dialog.tsx | 1115 ++--- .../components/dialogs/fail-reason-dialog.tsx | 77 +- .../components/dialogs/image-dialog.tsx | 99 +- .../components/dialogs/prompt-dialog.tsx | 97 +- .../components/dialogs/user-info-dialog.tsx | 183 +- .../components/logs-filter-toolbar.tsx | 267 - .../usage-logs/components/model-badge.tsx | 47 +- .../components/task-logs-filter-bar.tsx | 86 +- .../components/usage-logs-mobile-card.tsx | 382 -- .../components/usage-logs-table.tsx | 97 +- .../src/features/usage-logs/constants.ts | 37 +- .../src/features/usage-logs/data/schema.ts | 1 - web/default/src/features/usage-logs/index.tsx | 21 +- .../src/features/usage-logs/lib/columns.ts | 2 +- .../src/features/usage-logs/lib/filter.ts | 3 - .../src/features/usage-logs/lib/format.ts | 106 - .../src/features/usage-logs/lib/mappers.ts | 8 +- .../src/features/usage-logs/lib/utils.ts | 15 +- .../features/usage-logs/section-registry.tsx | 3 + web/default/src/features/usage-logs/types.ts | 27 +- web/default/src/features/users/api.ts | 20 +- .../components/data-table-row-actions.tsx | 4 +- .../dialogs/user-binding-dialog.tsx | 227 +- .../users/components/user-quota-dialog.tsx | 130 +- .../users/components/users-columns.tsx | 172 +- .../users/components/users-mutate-drawer.tsx | 42 +- .../features/users/components/users-table.tsx | 81 +- web/default/src/features/users/constants.ts | 9 +- web/default/src/features/users/index.tsx | 5 +- web/default/src/features/users/types.ts | 2 - .../components/affiliate-rewards-card.tsx | 14 +- .../components/creem-products-section.tsx | 5 +- .../dialogs/billing-history-dialog.tsx | 408 +- .../dialogs/creem-confirm-dialog.tsx | 68 +- .../components/dialogs/transfer-dialog.tsx | 103 +- .../wallet/components/recharge-form-card.tsx | 168 +- .../components/subscription-plans-card.tsx | 31 +- .../features/wallet/hooks/use-topup-info.ts | 19 +- .../wallet/hooks/use-waffo-pancake-payment.ts | 9 +- web/default/src/features/wallet/index.tsx | 8 +- .../src/features/wallet/lib/affiliate.ts | 2 +- web/default/src/features/wallet/lib/ui.tsx | 59 +- web/default/src/features/wallet/types.ts | 15 +- web/default/src/hooks/use-notifications.ts | 106 +- web/default/src/hooks/use-sidebar-data.ts | 36 +- web/default/src/hooks/use-sidebar-view.ts | 74 - web/default/src/hooks/use-system-config.ts | 4 + web/default/src/hooks/use-table-url-state.ts | 29 +- web/default/src/hooks/use-top-nav-links.ts | 85 +- web/default/src/i18n/languages.ts | 41 - .../i18n/locales/_reports/_sync-report.json | 10 +- .../locales/_reports/fr.untranslated.json | 3 + .../locales/_reports/ja.untranslated.json | 94 + .../locales/_reports/ru.untranslated.json | 109 + .../locales/_reports/vi.untranslated.json | 5 + .../locales/_reports/zh.untranslated.json | 101 + web/default/src/i18n/locales/en.json | 588 +-- web/default/src/i18n/locales/fr.json | 610 +-- web/default/src/i18n/locales/ja.json | 718 +-- web/default/src/i18n/locales/ru.json | 618 +-- web/default/src/i18n/locales/vi.json | 626 +-- web/default/src/i18n/locales/zh.json | 667 +-- web/default/src/i18n/static-keys.ts | 40 +- web/default/src/lib/api.ts | 62 +- web/default/src/lib/build-metadata.ts | 171 - web/default/src/lib/colors.ts | 35 +- web/default/src/lib/currency.ts | 48 +- web/default/src/lib/format.ts | 14 +- web/default/src/lib/frontend-cache.ts | 59 - web/default/src/lib/nav-modules.ts | 211 - .../notification-auto-open.ts} | 22 +- web/default/src/lib/notification-key.ts | 53 + web/default/src/lib/show-submitted-data.tsx | 4 +- web/default/src/lib/theme-customization.ts | 82 +- web/default/src/lib/utils.ts | 31 +- web/default/src/main.tsx | 7 +- web/default/src/routeTree.gen.ts | 42 +- web/default/src/routes/__root.tsx | 6 +- .../routes/_authenticated/channels/index.tsx | 2 +- .../src/routes/_authenticated/keys/index.tsx | 3 +- .../_authenticated/playground/index.tsx | 8 +- .../system-settings/operations/$section.tsx | 7 - .../_authenticated/usage-logs/$section.tsx | 25 +- .../src/routes/_authenticated/users/index.tsx | 4 +- .../register.tsx => console/index.tsx} | 8 +- web/default/src/routes/console/topup.tsx | 8 +- .../src/routes/pricing/$modelId/index.tsx | 19 +- web/default/src/routes/pricing/index.tsx | 19 +- web/default/src/routes/rankings/index.tsx | 21 +- web/default/src/stores/system-config-store.ts | 2 + web/default/src/styles/index.css | 131 +- web/default/src/styles/theme-presets.css | 353 +- web/default/src/styles/theme.css | 168 +- web/default/src/tanstack-table.d.ts | 11 +- web/default/tsconfig.app.json | 2 +- web/default/tsconfig.json | 1 + 506 files changed, 29608 insertions(+), 46269 deletions(-) create mode 100644 .github/workflows/ghcr-build.yml delete mode 100644 web/default/.oxfmtrc.json delete mode 100644 web/default/.oxlintrc.json create mode 100644 web/default/.prettierignore create mode 100644 web/default/.prettierrc create mode 100644 web/default/eslint.config.js delete mode 100644 web/default/public/waffo-logo-dark.svg delete mode 100644 web/default/public/waffo-logo-light.svg delete mode 100644 web/default/scripts/format-with-protected-headers.mjs create mode 100644 web/default/src/components/auto-open-notifications.tsx delete mode 100644 web/default/src/components/data-table/README.md rename web/default/src/components/data-table/{toolbar => }/bulk-actions.tsx (96%) rename web/default/src/components/data-table/{core => }/column-header.tsx (100%) delete mode 100644 web/default/src/components/data-table/core/badge-cell.tsx delete mode 100644 web/default/src/components/data-table/core/badge-list-cell.tsx delete mode 100644 web/default/src/components/data-table/core/column-pinning.ts delete mode 100644 web/default/src/components/data-table/core/data-table-colgroup.tsx delete mode 100644 web/default/src/components/data-table/core/data-table-header.tsx delete mode 100644 web/default/src/components/data-table/core/data-table-row.tsx delete mode 100644 web/default/src/components/data-table/core/data-table-view.tsx delete mode 100644 web/default/src/components/data-table/core/table-sizing.ts delete mode 100644 web/default/src/components/data-table/core/truncated-cell.tsx delete mode 100644 web/default/src/components/data-table/core/types.ts create mode 100644 web/default/src/components/data-table/data-table-page.tsx rename web/default/src/components/data-table/{toolbar => }/faceted-filter.tsx (82%) delete mode 100644 web/default/src/components/data-table/hooks/use-data-table-view-mode.ts delete mode 100644 web/default/src/components/data-table/hooks/use-data-table.ts delete mode 100644 web/default/src/components/data-table/hooks/use-debounced-column-filter.ts delete mode 100644 web/default/src/components/data-table/layout/card-cell-utils.ts delete mode 100644 web/default/src/components/data-table/layout/card-grid.tsx delete mode 100644 web/default/src/components/data-table/layout/card-row-content.tsx delete mode 100644 web/default/src/components/data-table/layout/data-table-page.tsx delete mode 100644 web/default/src/components/data-table/layout/mobile-card-list.tsx create mode 100644 web/default/src/components/data-table/mobile-card-list.tsx rename web/default/src/components/data-table/{core => }/pagination.tsx (61%) delete mode 100644 web/default/src/components/data-table/static/static-data-table-classnames.ts delete mode 100644 web/default/src/components/data-table/static/static-data-table.tsx rename web/default/src/components/data-table/{core => }/table-empty.tsx (100%) rename web/default/src/components/data-table/{core => }/table-skeleton.tsx (100%) rename web/default/src/components/data-table/{toolbar => }/toolbar.tsx (66%) delete mode 100644 web/default/src/components/data-table/toolbar/view-mode-toggle.tsx rename web/default/src/components/data-table/{toolbar => }/view-options.tsx (69%) delete mode 100644 web/default/src/components/dialog.tsx delete mode 100644 web/default/src/components/drawer-layout.ts delete mode 100644 web/default/src/components/json-code-editor.tsx delete mode 100644 web/default/src/components/layout/components/sidebar-view-header.tsx create mode 100644 web/default/src/components/layout/context/workspace-context.tsx delete mode 100644 web/default/src/components/layout/lib/sidebar-view-registry.ts create mode 100644 web/default/src/components/layout/lib/workspace-registry.example.ts create mode 100644 web/default/src/components/layout/lib/workspace-registry.ts create mode 100644 web/default/src/components/notification-button.tsx rename web/default/src/components/{notification-popover.tsx => notification-dialog.tsx} (63%) delete mode 100644 web/default/src/components/provider-badge.tsx delete mode 100644 web/default/src/components/react-icon-by-name.tsx delete mode 100644 web/default/src/components/risk-acknowledgement-dialog.tsx delete mode 100644 web/default/src/components/truncated-text.tsx delete mode 100644 web/default/src/components/ui/dropdown-menu-events.ts delete mode 100644 web/default/src/components/ui/dropdown-menu.test.tsx delete mode 100644 web/default/src/features/channels/components/channel-card.tsx delete mode 100644 web/default/src/features/channels/components/channel-row-actions-context.ts delete mode 100644 web/default/src/features/channels/components/dialogs/advanced-custom-editor-dialog.tsx create mode 100644 web/default/src/features/channels/components/dialogs/codex-oauth-dialog.tsx delete mode 100644 web/default/src/features/channels/components/drawers/sections/channel-advanced-section.tsx delete mode 100644 web/default/src/features/channels/components/drawers/sections/channel-api-access-section.tsx delete mode 100644 web/default/src/features/channels/components/drawers/sections/channel-auth-section.tsx delete mode 100644 web/default/src/features/channels/components/drawers/sections/channel-basic-section.tsx delete mode 100644 web/default/src/features/channels/components/drawers/sections/channel-editor-loading-state.tsx delete mode 100644 web/default/src/features/channels/components/drawers/sections/channel-models-section.tsx delete mode 100644 web/default/src/features/channels/components/drawers/sections/index.ts delete mode 100644 web/default/src/features/channels/hooks/use-channel-mutate-form.ts delete mode 100644 web/default/src/features/channels/lib/advanced-custom.ts delete mode 100644 web/default/src/features/channels/lib/channel-form-errors.ts delete mode 100644 web/default/src/features/dashboard/components/flow/flow-charts.tsx delete mode 100644 web/default/src/features/dashboard/components/flow/flow-node-filter.tsx delete mode 100644 web/default/src/features/dashboard/components/overview/performance-health-panel.tsx delete mode 100644 web/default/src/features/dashboard/lib/flow-selection.test.ts delete mode 100644 web/default/src/features/dashboard/lib/flow-selection.ts delete mode 100644 web/default/src/features/dashboard/lib/flow.test.ts delete mode 100644 web/default/src/features/dashboard/lib/flow.ts create mode 100644 web/default/src/features/home/components/sections/model-pricing.tsx create mode 100644 web/default/src/features/home/model-pricing-config.ts create mode 100644 web/default/src/features/pricing/components/model-details-capabilities.tsx create mode 100644 web/default/src/features/pricing/components/model-details-modalities.tsx create mode 100644 web/default/src/features/pricing/components/model-details-quick-stats.tsx create mode 100644 web/default/src/features/pricing/lib/model-metadata.ts delete mode 100644 web/default/src/features/system-settings/components/settings-form-layout.tsx delete mode 100644 web/default/src/features/system-settings/components/settings-page-context.tsx delete mode 100644 web/default/src/features/system-settings/integrations/waffo-pancake-api.ts delete mode 100644 web/default/src/features/system-settings/models/model-pricing-core.ts delete mode 100644 web/default/src/features/system-settings/models/model-pricing-inputs.tsx delete mode 100644 web/default/src/features/system-settings/models/model-pricing-snapshots.ts delete mode 100644 web/default/src/features/system-settings/models/model-ratio-table-columns.tsx delete mode 100644 web/default/src/features/system-settings/models/pricing-format.ts delete mode 100644 web/default/src/features/system-settings/models/routing-reliability-section.tsx delete mode 100644 web/default/src/features/system-settings/utils/numeric-field.ts delete mode 100644 web/default/src/features/usage-logs/components/logs-filter-toolbar.tsx delete mode 100644 web/default/src/features/usage-logs/components/usage-logs-mobile-card.tsx delete mode 100644 web/default/src/hooks/use-sidebar-view.ts delete mode 100644 web/default/src/i18n/languages.ts create mode 100644 web/default/src/i18n/locales/_reports/fr.untranslated.json create mode 100644 web/default/src/i18n/locales/_reports/ja.untranslated.json create mode 100644 web/default/src/i18n/locales/_reports/ru.untranslated.json create mode 100644 web/default/src/i18n/locales/_reports/vi.untranslated.json create mode 100644 web/default/src/i18n/locales/_reports/zh.untranslated.json delete mode 100644 web/default/src/lib/build-metadata.ts delete mode 100644 web/default/src/lib/frontend-cache.ts delete mode 100644 web/default/src/lib/nav-modules.ts rename web/default/src/{components/table-id.tsx => lib/notification-auto-open.ts} (67%) create mode 100644 web/default/src/lib/notification-key.ts rename web/default/src/routes/{(auth)/register.tsx => console/index.tsx} (83%) diff --git a/.github/workflows/ghcr-build.yml b/.github/workflows/ghcr-build.yml new file mode 100644 index 000000000000..7c1ffce8b2a2 --- /dev/null +++ b/.github/workflows/ghcr-build.yml @@ -0,0 +1,54 @@ +name: Publish GHCR image + +on: + push: + branches: + - main + workflow_dispatch: + +jobs: + build: + name: Build and push image + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + + steps: + - name: Check out + uses: actions/checkout@v4 + + - name: Normalize GHCR repository + run: echo "GHCR_REPOSITORY=${GITHUB_REPOSITORY,,}" >> "$GITHUB_ENV" + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to GHCR + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ env.GHCR_REPOSITORY }} + tags: | + type=raw,value=latest,enable={{is_default_branch}} + type=ref,event=branch + type=sha,prefix=sha- + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: . + platforms: linux/amd64 + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/web/bun.lock b/web/bun.lock index b65ce8a3c6b8..97ef7e7b68a5 100644 --- a/web/bun.lock +++ b/web/bun.lock @@ -68,77 +68,85 @@ "name": "newapi-web", "version": "1.0.0", "dependencies": { - "@base-ui/react": "^1.5.0", - "@fontsource-variable/lora": "^5.2.8", + "@base-ui/react": "^1.4.1", "@fontsource-variable/public-sans": "^5.2.7", - "@hookform/resolvers": "^5.4.0", - "@hugeicons/core-free-icons": "^4.1.4", + "@hookform/resolvers": "^5.2.2", + "@hugeicons/core-free-icons": "^4.1.1", "@hugeicons/react": "^1.1.6", - "@lobehub/icons": "catalog:", - "@tailwindcss/postcss": "^4.3.0", - "@tanstack/react-query": "^5.100.14", - "@tanstack/react-router": "^1.170.8", + "@lobehub/icons": "^4.0.3", + "@radix-ui/react-icons": "^1.3.2", + "@tailwindcss/postcss": "^4.2.2", + "@tanstack/react-query": "^5.95.2", + "@tanstack/react-router": "^1.168.23", "@tanstack/react-table": "^8.21.3", - "@tanstack/react-virtual": "^3.13.25", - "@visactor/react-vchart": "^2.0.22", - "@visactor/vchart": "^2.0.22", - "ai": "^6.0.191", + "@tanstack/react-virtual": "^3.13.18", + "@visactor/react-vchart": "^2.0.13", + "@visactor/vchart": "^2.0.13", + "ai": "^6.0.27", "auto-skeleton-react": "^1.0.5", - "axios": "catalog:", + "axios": "^1.13.6", "class-variance-authority": "^0.7.1", - "clsx": "catalog:", + "clsx": "^2.1.1", "cmdk": "^1.1.1", - "date-fns": "^4.3.0", - "dayjs": "catalog:", - "i18next": "^26.2.0", - "i18next-browser-languagedetector": "^8.2.1", + "date-fns": "^4.1.0", + "dayjs": "^1.11.19", + "i18next": "^25.7.4", + "i18next-browser-languagedetector": "^8.2.0", "input-otp": "^1.4.2", - "lucide-react": "^1.16.0", - "motion": "^12.40.0", - "nanoid": "^5.1.11", + "lucide-react": "^1.7.0", + "motion": "^12.38.0", + "nanoid": "^5.1.6", "next-themes": "^0.4.6", - "qrcode.react": "catalog:", - "react": "^19.2.6", - "react-day-picker": "^10.0.1", - "react-dom": "^19.2.6", - "react-hook-form": "^7.76.1", - "react-i18next": "^17.0.8", - "react-icons": "catalog:", - "react-markdown": "catalog:", - "react-resizable-panels": "^4.11.2", + "qrcode.react": "^4.2.0", + "react": "^19.2.4", + "react-day-picker": "^9.14.0", + "react-dom": "^19.2.4", + "react-hook-form": "^7.71.0", + "react-i18next": "^16.5.2", + "react-icons": "^5.5.0", + "react-markdown": "^10.1.0", + "react-resizable-panels": "^4.11.0", "react-top-loading-bar": "^3.0.2", - "recharts": "3.8.1", + "recharts": "3.8.0", "rehype-raw": "^7.0.0", - "remark-gfm": "catalog:", - "shiki": "^4.1.0", + "remark-gfm": "^4.0.1", + "shiki": "^4.0.2", "sonner": "^2.0.7", - "sse.js": "catalog:", - "streamdown": "^2.5.0", - "tailwind-merge": "^3.6.0", - "tailwindcss": "^4.3.0", + "sse.js": "^2.7.2", + "streamdown": "^2.0.1", + "tailwind-merge": "^3.5.0", + "tailwindcss": "^4.2.2", "tokenlens": "^1.3.1", "tw-animate-css": "^1.4.0", - "use-stick-to-bottom": "^1.1.4", + "use-stick-to-bottom": "^1.1.1", "vaul": "^1.1.2", - "zod": "^4.4.3", - "zustand": "^5.0.13", + "zod": "^4.3.6", + "zustand": "^5.0.12", }, "devDependencies": { - "@rsbuild/core": "^2.0.7", + "@eslint/js": "^10.0.1", + "@rsbuild/core": "^2.0.1", "@rsbuild/plugin-react": "^2.0.0", - "@tanstack/react-query-devtools": "^5.100.14", - "@tanstack/react-router-devtools": "^1.167.0", - "@tanstack/router-plugin": "^1.168.11", - "@types/node": "^25.9.1", - "@types/react": "^19.2.15", + "@tanstack/eslint-plugin-query": "^5.95.2", + "@tanstack/react-query-devtools": "^5.95.2", + "@tanstack/react-router-devtools": "^1.166.13", + "@tanstack/router-plugin": "^1.167.23", + "@trivago/prettier-plugin-sort-imports": "^6.0.2", + "@types/node": "^25.5.0", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@xyflow/react": "^12.10.2", "embla-carousel-react": "^8.6.0", - "knip": "^6.14.2", - "oxfmt": "catalog:", - "oxlint": "catalog:", - "shadcn": "^4.8.0", - "typescript": "~6.0.3", + "eslint": "^10.1.0", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.5.2", + "globals": "^17.4.0", + "knip": "^6.0.6", + "prettier": "^3.8.1", + "prettier-plugin-tailwindcss": "^0.7.2", + "shadcn": "^3.7.0", + "typescript": "~5.9.3", + "typescript-eslint": "^8.57.2", }, }, }, @@ -181,6 +189,8 @@ "@antfu/install-pkg": ["@antfu/install-pkg@1.1.0", "", { "dependencies": { "package-manager-detector": "^1.3.0", "tinyexec": "^1.0.1" } }, "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ=="], + "@antfu/ni": ["@antfu/ni@25.0.0", "", { "dependencies": { "ansis": "^4.0.0", "fzf": "^0.5.2", "package-manager-detector": "^1.3.0", "tinyexec": "^1.0.1" }, "bin": { "na": "bin/na.mjs", "ni": "bin/ni.mjs", "nr": "bin/nr.mjs", "nci": "bin/nci.mjs", "nlx": "bin/nlx.mjs", "nun": "bin/nun.mjs", "nup": "bin/nup.mjs" } }, "sha512-9q/yCljni37pkMr4sPrI3G4jqdIk074+iukc5aFJl7kmDCCsiJrbZ6zKxnES1Gwg+i9RcDZwvktl23puGslmvA=="], + "@astrojs/compiler": ["@astrojs/compiler@2.13.1", "", {}, "sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg=="], "@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="], @@ -373,9 +383,19 @@ "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="], + "@eslint/config-array": ["@eslint/config-array@0.23.5", "", { "dependencies": { "@eslint/object-schema": "^3.0.5", "debug": "^4.3.1", "minimatch": "^10.2.4" } }, "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA=="], + + "@eslint/config-helpers": ["@eslint/config-helpers@0.6.0", "", { "dependencies": { "@eslint/core": "^1.2.1" } }, "sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA=="], + + "@eslint/core": ["@eslint/core@1.2.1", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ=="], + "@eslint/eslintrc": ["@eslint/eslintrc@2.1.4", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ=="], - "@eslint/js": ["@eslint/js@8.57.0", "", {}, "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g=="], + "@eslint/js": ["@eslint/js@10.0.1", "", { "peerDependencies": { "eslint": "^10.0.0" }, "optionalPeers": ["eslint"] }, "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA=="], + + "@eslint/object-schema": ["@eslint/object-schema@3.0.5", "", {}, "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw=="], + + "@eslint/plugin-kit": ["@eslint/plugin-kit@0.7.2", "", { "dependencies": { "@eslint/core": "^1.2.1", "levn": "^0.4.1" } }, "sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A=="], "@floating-ui/core": ["@floating-ui/core@1.7.5", "", { "dependencies": { "@floating-ui/utils": "^0.2.11" } }, "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ=="], @@ -387,8 +407,6 @@ "@floating-ui/utils": ["@floating-ui/utils@0.2.11", "", {}, "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg=="], - "@fontsource-variable/lora": ["@fontsource-variable/lora@5.2.8", "", {}, "sha512-cxjTJ9BbOWIzusewR4UMBLVePvTSWV6dtNaNsCkF/oKoyA68fJGWfaYCILOOP1BObE4dmjfZ3xo6m9hdHhtYhg=="], - "@fontsource-variable/public-sans": ["@fontsource-variable/public-sans@5.2.7", "", {}, "sha512-4mvade2J3slKkvwRkS+p8T3szet/0vhWoSnuUJTVU81Uo2pRpSZY/Y8bSLRqpSwzIPxjVmRJ53oq6JKP/l/PSg=="], "@giscus/react": ["@giscus/react@3.1.0", "", { "dependencies": { "giscus": "^1.6.0" }, "peerDependencies": { "react": "^16 || ^17 || ^18 || ^19", "react-dom": "^16 || ^17 || ^18 || ^19" } }, "sha512-0TCO2TvL43+oOdyVVGHDItwxD1UMKP2ZYpT6gXmhFOqfAJtZxTzJ9hkn34iAF/b6YzyJ4Um89QIt9z/ajmAEeg=="], @@ -401,12 +419,20 @@ "@hugeicons/react": ["@hugeicons/react@1.1.6", "", { "peerDependencies": { "react": ">=16.0.0" } }, "sha512-c2LhXJMAW5wN1pC/smBXG0YPqUON6ceR/ZdXHCjEI9KvB+hjtqYjmzIxok5hAQOeXGz0WtORgCQMzqewFKAZwg=="], + "@humanfs/core": ["@humanfs/core@0.19.2", "", { "dependencies": { "@humanfs/types": "^0.15.0" } }, "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA=="], + + "@humanfs/node": ["@humanfs/node@0.16.8", "", { "dependencies": { "@humanfs/core": "^0.19.2", "@humanfs/types": "^0.15.0", "@humanwhocodes/retry": "^0.4.0" } }, "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ=="], + + "@humanfs/types": ["@humanfs/types@0.15.0", "", {}, "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q=="], + "@humanwhocodes/config-array": ["@humanwhocodes/config-array@0.11.14", "", { "dependencies": { "@humanwhocodes/object-schema": "^2.0.2", "debug": "^4.3.1", "minimatch": "^3.0.5" } }, "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg=="], "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="], "@humanwhocodes/object-schema": ["@humanwhocodes/object-schema@2.0.3", "", {}, "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA=="], + "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="], + "@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="], "@iconify/utils": ["@iconify/utils@3.1.3", "", { "dependencies": { "@antfu/install-pkg": "^1.1.0", "@iconify/types": "^2.0.0", "import-meta-resolve": "^4.2.0" } }, "sha512-LPKOXPn/zV+zis1oOfGWogaXVpqUybF3ZS6SCZIsz8vg0ivVp9+fVqyYB7xq0aiST/VhUQYGO1qo6uoYSiEJqw=="], @@ -461,7 +487,7 @@ "@lobehub/fluent-emoji": ["@lobehub/fluent-emoji@4.1.0", "", { "dependencies": { "@lobehub/emojilib": "^1.0.0", "antd-style": "^4.1.0", "emoji-regex": "^10.6.0", "es-toolkit": "^1.43.0", "lucide-react": "^0.562.0", "url-join": "^5.0.0" }, "peerDependencies": { "react": "^19.0.0", "react-dom": "^19.0.0" } }, "sha512-R1MB2lfUkDvB7XAQdRzY75c1dx/tB7gEvBPaEEMarzKfCJWmXm7rheS6caVzmgwAlq5sfmTbxPL+un99sp//Yw=="], - "@lobehub/icons": ["@lobehub/icons@5.10.0", "", { "dependencies": { "antd-style": "^4.1.0", "es-toolkit": "^1.45.1", "lucide-react": "^0.469.0", "polished": "^4.3.1" }, "peerDependencies": { "@lobehub/ui": "^5.0.0", "antd": "^6.1.1", "react": "^19.0.0", "react-dom": "^19.0.0" } }, "sha512-CIpjkISCLRK7haDtSugGFd0o3odaJts8ewJOkUiEFtns3xvsqbl8i24eowBnjw+yMDQVQyNONlhqTD58YC6Ljg=="], + "@lobehub/icons": ["@lobehub/icons@4.12.0", "", { "dependencies": { "antd-style": "^4.1.0", "lucide-react": "^0.469.0", "polished": "^4.3.1" }, "peerDependencies": { "@lobehub/ui": "^4.3.3", "antd": "^6.1.1", "react": "^19.0.0", "react-dom": "^19.0.0" } }, "sha512-DVH7pVzM6wEvua2LXH+Iv10/cLeBbueggMFBHa8IlfQel5u3I6JzuaNXXxj2qJu5QYjUCNL5LTpSWuh4TnuLGw=="], "@lobehub/ui": ["@lobehub/ui@5.15.6", "", { "dependencies": { "@ant-design/cssinjs": "^2.1.2", "@base-ui/react": "1.5.0", "@dnd-kit/core": "^6.3.1", "@dnd-kit/modifiers": "^9.0.0", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", "@emoji-mart/data": "^1.2.1", "@emoji-mart/react": "^1.1.1", "@emotion/is-prop-valid": "^1.4.0", "@floating-ui/react": "^0.27.19", "@giscus/react": "^3.1.0", "@mdx-js/mdx": "^3.1.1", "@mdx-js/react": "^3.1.1", "@pierre/diffs": "^1.1.19", "@radix-ui/react-slot": "^1.2.4", "@shikijs/core": "^4.0.2", "@shikijs/transformers": "^4.0.2", "@splinetool/runtime": "0.9.526", "ahooks": "^3.9.7", "antd-style": "^4.1.0", "chroma-js": "^3.2.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "dayjs": "^1.11.20", "emoji-mart": "^5.6.0", "es-toolkit": "^1.46.0", "fast-deep-equal": "^3.1.3", "immer": "^11.1.4", "katex": "^0.16.45", "leva": "^0.10.1", "lucide-react": "^1.11.0", "marked": "^17.0.6", "mermaid": "^11.14.0", "motion": "^12.38.0", "numeral": "^2.0.6", "polished": "^4.3.1", "query-string": "^9.3.1", "rc-collapse": "^4.0.0", "rc-footer": "^0.6.8", "rc-image": "^7.12.0", "rc-input-number": "^9.5.0", "rc-menu": "^9.16.1", "re-resizable": "^6.11.2", "react-avatar-editor": "^15.1.0", "react-error-boundary": "^6.1.1", "react-hotkeys-hook": "^5.2.4", "react-markdown": "^10.1.0", "react-merge-refs": "^3.0.2", "react-rnd": "^10.5.3", "react-zoom-pan-pinch": "^3.7.0", "rehype-github-alerts": "^4.2.0", "rehype-katex": "^7.0.1", "rehype-raw": "^7.0.0", "remark-breaks": "^4.0.0", "remark-cjk-friendly": "^2.0.1", "remark-gfm": "^4.0.1", "remark-github": "^12.0.0", "remark-math": "^6.0.0", "remend": "^1.3.0", "shiki": "^4.0.2", "shiki-stream": "^0.1.4", "swr": "^2.4.1", "ts-md5": "^2.0.1", "unified": "^11.0.5", "url-join": "^5.0.0", "use-merge-value": "^1.2.0", "uuid": "^13.0.0", "virtua": "^0.49.1" }, "peerDependencies": { "@lobehub/fluent-emoji": "^4.0.0", "@lobehub/icons": "^5.0.0", "antd": "^6.1.1", "react": "^19.0.0", "react-dom": "^19.0.0" } }, "sha512-sjx95F9viJWRuhFlhe+pN7y6/b+dv9U6ysMcO8F+sFUQNYTBfUl80UkBLclHQc2adpxdrkzEN+0g0AXeFsCC1g=="], @@ -577,82 +603,6 @@ "@oxc-resolver/binding-win32-x64-msvc": ["@oxc-resolver/binding-win32-x64-msvc@11.20.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Wb14jWEW8huH6It9F6sXd9vrYmIS7pMrgkU6sxpLxkP+9z+wRgs71hUEhRpcn8FOXAFa27FVWfY2tRpbfTzfLw=="], - "@oxfmt/binding-android-arm-eabi": ["@oxfmt/binding-android-arm-eabi@0.54.0", "", { "os": "android", "cpu": "arm" }, "sha512-NAtpl/SiaeU103e7/OmZw0MvUnsUUopW7hEm/ecegJg7YM0skQaA0IXEZoyTV6NUdiNPupdIUreRqUZTShbn/g=="], - - "@oxfmt/binding-android-arm64": ["@oxfmt/binding-android-arm64@0.54.0", "", { "os": "android", "cpu": "arm64" }, "sha512-B4VZfBUlKK1rmMChsssNZbkZjE8+FzG3avMjGgMDwbGxXRoXkoeXiAZ+78Oa+eyDPHvDCiUb4zH/vmCOUSafLQ=="], - - "@oxfmt/binding-darwin-arm64": ["@oxfmt/binding-darwin-arm64@0.54.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-i02vF75b+ePsQP3tHqSxVYI5S6b8X/xqdPu7/mDHXtpgXLTYXi3jJmfHU0j+dnZZDKaYTx/ioCK7QYJmtiJR2g=="], - - "@oxfmt/binding-darwin-x64": ["@oxfmt/binding-darwin-x64@0.54.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-8VMFvGvooXj7mswkbrhdVZ2/sgiDaBzWpkkbtO+qGDLV4EfJd67nQadHkQC0ZNbaWA9ajXfqI6i7PZLIeDzxEQ=="], - - "@oxfmt/binding-freebsd-x64": ["@oxfmt/binding-freebsd-x64@0.54.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-0cRHnp43WN1Jrc5s0BdbdKgR1XirdvHy7TAFi3JEsoEVQVJxTXMbpVd76sxXlgRswNMDhVFSJw+y7Eb8mEavFQ=="], - - "@oxfmt/binding-linux-arm-gnueabihf": ["@oxfmt/binding-linux-arm-gnueabihf@0.54.0", "", { "os": "linux", "cpu": "arm" }, "sha512-JyQAk3hK/OEtup7Rw6kZwfdzbKqTVD5jXXb8Xpfay29suwZyfBDMVW/bj4RqEPySYWc6zCp198pOluf8n5uYzg=="], - - "@oxfmt/binding-linux-arm-musleabihf": ["@oxfmt/binding-linux-arm-musleabihf@0.54.0", "", { "os": "linux", "cpu": "arm" }, "sha512-qnvLatTpM8vtvjOfcckBOzJjk+n6ce/wwpP8OFeUrD5aNLYcKyWAitwj+Rk3PK9jGanbZvKsJnv14JGQ6XqFdw=="], - - "@oxfmt/binding-linux-arm64-gnu": ["@oxfmt/binding-linux-arm64-gnu@0.54.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-SMkhnCzIYZYDk9vw3W/80eeYKmrMpGF0Giuxt4HruFlCH7jEtnPeb3SdQKMfgYi/dgtaf+hZAb5XWPYnxqCQ3w=="], - - "@oxfmt/binding-linux-arm64-musl": ["@oxfmt/binding-linux-arm64-musl@0.54.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-QrwJlBFFKnxOd95TAaszpMbZBLzMoYMpGaQTZF8oibacnF5rv8l12IhILhQRPmksWiBqg0YSe2Mnl7ayeJAHSA=="], - - "@oxfmt/binding-linux-ppc64-gnu": ["@oxfmt/binding-linux-ppc64-gnu@0.54.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-WILatiol/TUHTlhod7R09+7Az/XlhKwmY1MHfLZNmewltPWNN/EwxP2rQSHahibZ/cB8gmckEBjBOByD+5bYsQ=="], - - "@oxfmt/binding-linux-riscv64-gnu": ["@oxfmt/binding-linux-riscv64-gnu@0.54.0", "", { "os": "linux", "cpu": "none" }, "sha512-f05YMG4BH4G8S4ME6UM6fi1MnJ9094mrnvO5Pa4SJlMfWlUM+1/ZWMEF4NnjM7shZAvbHsHRuVYpUo0PHC4P9Q=="], - - "@oxfmt/binding-linux-riscv64-musl": ["@oxfmt/binding-linux-riscv64-musl@0.54.0", "", { "os": "linux", "cpu": "none" }, "sha512-UfL+2hj1ClNqcCRT9s8vBU4axDpjxgVxX96G+9DYAYjoc5b0u15CJtn2jgsi9iM+EbGNc5CW1HVRgwVu76UsSA=="], - - "@oxfmt/binding-linux-s390x-gnu": ["@oxfmt/binding-linux-s390x-gnu@0.54.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-3/XZe931Hka+J6NjnaqJzYpsWWxDTuRdUdwSQHnOuJEgbC+SehIMFJS8hsEjV7LBhVSL2OCnRLvbVW8O97XIyw=="], - - "@oxfmt/binding-linux-x64-gnu": ["@oxfmt/binding-linux-x64-gnu@0.54.0", "", { "os": "linux", "cpu": "x64" }, "sha512-Ik93RlObtu43GbxApafayFjwYE06L6Xr08cSwpBPYbDrLp2ReZx0Jm1DqwRyYRnukUJy+rK2WaEvUQOxdytU9Q=="], - - "@oxfmt/binding-linux-x64-musl": ["@oxfmt/binding-linux-x64-musl@0.54.0", "", { "os": "linux", "cpu": "x64" }, "sha512-yZcakmPlD86CNymknd7KfW+FH+qfbqJH+i0h69CYfV1+KMoVeM9UED+8+TDVoU4haxI0NxY7RPCvRLy3Sqd2Qg=="], - - "@oxfmt/binding-openharmony-arm64": ["@oxfmt/binding-openharmony-arm64@0.54.0", "", { "os": "none", "cpu": "arm64" }, "sha512-GiVBZNnEZnKu00f1jTg49nomv187d0GQX+O+ocykoLeiaALuEO+swoTehHn9TehTfi7V8H0i0e/yvUjCqnwk1w=="], - - "@oxfmt/binding-win32-arm64-msvc": ["@oxfmt/binding-win32-arm64-msvc@0.54.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-J0SSB8Z1Fre2sxRolYcW6Rl1RQmKdQ2hnHyq4YJrfBRiXTObLw4DXnIVraM/UyqGqwOi7yTrQA4VT7DPxlHVKA=="], - - "@oxfmt/binding-win32-ia32-msvc": ["@oxfmt/binding-win32-ia32-msvc@0.54.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-O61UDVj8zz6yXJjkHPf05VaMLOXmEF8P5kf/N0W7AQMmd6bcQogl+KJc7rMutKTL524oE9iH32JXZClBFmEQIg=="], - - "@oxfmt/binding-win32-x64-msvc": ["@oxfmt/binding-win32-x64-msvc@0.54.0", "", { "os": "win32", "cpu": "x64" }, "sha512-1MDpqJPiFqxWtIHas8vkb1VZ7f7eKyTffAwmO8isxQYMaG1OFKsH666BWLeXQLO+IWNfiMssLD55hbR1lIPTqg=="], - - "@oxlint/binding-android-arm-eabi": ["@oxlint/binding-android-arm-eabi@1.70.0", "", { "os": "android", "cpu": "arm" }, "sha512-zFh0P4cswmRvw6nkyb89dr18rRanuaCPAsEXsFDoQY8WdaquI8Pt4NWFjaMJg6L23cy5NeN8J9cBnREbWzZhaw=="], - - "@oxlint/binding-android-arm64": ["@oxlint/binding-android-arm64@1.70.0", "", { "os": "android", "cpu": "arm64" }, "sha512-qI8o4HZjeGiBrWv+pJv4lH0Yi2Gl/JSp/EumBUApezJprIKa5PS4nU0lQsQngtky8k+SplQIOjv6hwu0SSxeyg=="], - - "@oxlint/binding-darwin-arm64": ["@oxlint/binding-darwin-arm64@1.70.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-8KjgVVHI5F9nVwHCRwwA78Ty7zNKP4Wd9OeN5PSv3iu/F/u1RVXoOCgLhWqust6HmwQG6xc8c+RCyaWENy24+w=="], - - "@oxlint/binding-darwin-x64": ["@oxlint/binding-darwin-x64@1.70.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-WVydssv5PSUBXFJTdNBWlmGkbNmvPGaFt/2SUT/EZRB6bq6bEOHmMlbnupZD5jmlEvi9+mZJHi8TCw15lyfSfQ=="], - - "@oxlint/binding-freebsd-x64": ["@oxlint/binding-freebsd-x64@1.70.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-hJucmUf8OlinHNb1R7fI4Fw6WsAstOz7i8nmkWQfiHoZXtbufNm+MxiDTIMk1ggh2Ro4vLzgQ+bKvRY54MZoRA=="], - - "@oxlint/binding-linux-arm-gnueabihf": ["@oxlint/binding-linux-arm-gnueabihf@1.70.0", "", { "os": "linux", "cpu": "arm" }, "sha512-1BnS7wbCYDSXwWzJJ+mc3NURoha6m6m6RT5c6vgAY3oz7C3OVXP+S0awo2mRq97arrJkVvO3qRQfyAHL+76xtQ=="], - - "@oxlint/binding-linux-arm-musleabihf": ["@oxlint/binding-linux-arm-musleabihf@1.70.0", "", { "os": "linux", "cpu": "arm" }, "sha512-yKy/UdbR55+M2yEcuiV5DCNC/gdQAjr/GioUy50QwBzSrKm8ueWADqyRLS9Xk+qjNeCYGg6A8FvUBds56ttfqg=="], - - "@oxlint/binding-linux-arm64-gnu": ["@oxlint/binding-linux-arm64-gnu@1.70.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0A5XJ4alvmqFUFP/4oYSyaO+qLto/HrKEWTSaegiVl+HOufFngK2BjYw9x4RbwBt/du5QG6l5q1zeWiJYYG5yg=="], - - "@oxlint/binding-linux-arm64-musl": ["@oxlint/binding-linux-arm64-musl@1.70.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-JiylyurlB0CLSedNtx1gzv3FvfWPF1h/2Y3BJszPLNt5XQFlBsH5ke0Jle3iJb3uqu5m2e7A/DwzpuCAHdiU+A=="], - - "@oxlint/binding-linux-ppc64-gnu": ["@oxlint/binding-linux-ppc64-gnu@1.70.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-J8VPG7I3/HmgaU4u8pNU2kFx2+0U+vPLS1dXFxXOaR/2TQ0f8AC7DRz0SRGRI1bfphnX2hVYTTtLuhL4nYKL+Q=="], - - "@oxlint/binding-linux-riscv64-gnu": ["@oxlint/binding-linux-riscv64-gnu@1.70.0", "", { "os": "linux", "cpu": "none" }, "sha512-N2+4lV2KLN+oXTIIIwmWDhwkrnvqf5oX7Hw0zPjk+RuIVgiBQSOlJWF7uQoFx2siEYX0ZQ5cfSbEAHm+J3t7Wg=="], - - "@oxlint/binding-linux-riscv64-musl": ["@oxlint/binding-linux-riscv64-musl@1.70.0", "", { "os": "linux", "cpu": "none" }, "sha512-1e2L7cFCvx9QDzq6NPP+0tABKb5z6nWHyddWTNKprEsjO9xNrAtPowuCGpjNXxkTdsMiZ4jc8YQ5SstZd4XK6g=="], - - "@oxlint/binding-linux-s390x-gnu": ["@oxlint/binding-linux-s390x-gnu@1.70.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-Kwu/l/8GcYibCWA9m9N5pRXMIKVSsL/YbgpLzYkqDhWTiqdRfnNJ/+nqIKRKQiFbHWsdlHEhzMwruJK+qcEruA=="], - - "@oxlint/binding-linux-x64-gnu": ["@oxlint/binding-linux-x64-gnu@1.70.0", "", { "os": "linux", "cpu": "x64" }, "sha512-tap04CsHYOl0nSAQJfPNIuBxqEPB2HnhQqwaOXLg1jnp2XfRo8Fa814dA4QC4zpvTWXCjAAaCY1W5LOORkEQuQ=="], - - "@oxlint/binding-linux-x64-musl": ["@oxlint/binding-linux-x64-musl@1.70.0", "", { "os": "linux", "cpu": "x64" }, "sha512-hzJa/WgvtJpbBD9rgfy0qe+MjbxOXNUT0bfR1S6EQQzfTtBFA9xg5q8KSwRrQ2QfSS+TaP4j+4mVPQrfNc6UNg=="], - - "@oxlint/binding-openharmony-arm64": ["@oxlint/binding-openharmony-arm64@1.70.0", "", { "os": "none", "cpu": "arm64" }, "sha512-xbsaNSNzVSnaJACCUYr1HQMyY/Q/Q1LkePmHG3UvZPvGCYGNxrsZp9OmtA6ick8xH47ltRRbRrPCM1YXYcyC+A=="], - - "@oxlint/binding-win32-arm64-msvc": ["@oxlint/binding-win32-arm64-msvc@1.70.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-icAEsUI7JbW1TMRdEXV83mVAInhRVQYuuAlPpxdGwJ95chNdnCzjloRW8GglT0WvzOEZSio6fnYSk2DJ2Hv7LQ=="], - - "@oxlint/binding-win32-ia32-msvc": ["@oxlint/binding-win32-ia32-msvc@1.70.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-FHMSWbVsPVs/f+Jcl04ws4JJ2wUnauyTzlpxWRG/lSO/8GpX08Fo2gQZqdA6CrRFI+zvkxl+N/KwJGWfUwYVZA=="], - - "@oxlint/binding-win32-x64-msvc": ["@oxlint/binding-win32-x64-msvc@1.70.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ptOlKwCz7n4AKs5VweMqG6DAg677FmKOK+vBkkL9DMNgFATIQ+upqUYBTOEwRQyRAx1ncGlPlXleV2hIcm3z4g=="], - "@parcel/watcher": ["@parcel/watcher@2.5.6", "", { "dependencies": { "detect-libc": "^2.0.3", "is-glob": "^4.0.3", "node-addon-api": "^7.0.0", "picomatch": "^4.0.3" }, "optionalDependencies": { "@parcel/watcher-android-arm64": "2.5.6", "@parcel/watcher-darwin-arm64": "2.5.6", "@parcel/watcher-darwin-x64": "2.5.6", "@parcel/watcher-freebsd-x64": "2.5.6", "@parcel/watcher-linux-arm-glibc": "2.5.6", "@parcel/watcher-linux-arm-musl": "2.5.6", "@parcel/watcher-linux-arm64-glibc": "2.5.6", "@parcel/watcher-linux-arm64-musl": "2.5.6", "@parcel/watcher-linux-x64-glibc": "2.5.6", "@parcel/watcher-linux-x64-musl": "2.5.6", "@parcel/watcher-win32-arm64": "2.5.6", "@parcel/watcher-win32-ia32": "2.5.6", "@parcel/watcher-win32-x64": "2.5.6" } }, "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ=="], "@parcel/watcher-android-arm64": ["@parcel/watcher-android-arm64@2.5.6", "", { "os": "android", "cpu": "arm64" }, "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A=="], @@ -703,6 +653,8 @@ "@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.1.7", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1" }, "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-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw=="], + "@radix-ui/react-icons": ["@radix-ui/react-icons@1.3.2", "", { "peerDependencies": { "react": "^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc" } }, "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g=="], + "@radix-ui/react-id": ["@radix-ui/react-id@1.1.1", "", { "dependencies": { "@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-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg=="], "@radix-ui/react-popper": ["@radix-ui/react-popper@1.2.8", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-rect": "1.1.1", "@radix-ui/react-use-size": "1.1.1", "@radix-ui/rect": "1.1.1" }, "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-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw=="], @@ -995,6 +947,8 @@ "@swc/types": ["@swc/types@0.1.26", "", { "dependencies": { "@swc/counter": "^0.1.3" } }, "sha512-lyMwd7WGgG79RS7EERZV3T8wMdmPq3xwyg+1nmAM64kIhx5yl+juO2PYIHb7vTiPgPCj8LYjsNV2T5wiQHUEaw=="], + "@tabby_ai/hijri-converter": ["@tabby_ai/hijri-converter@1.0.5", "", {}, "sha512-r5bClKrcIusDoo049dSL8CawnHR6mRdDwhlQuIgZRNty68q0x8k3Lf1BtPAMxRf/GgnHBnIO4ujd3+GQdLWzxQ=="], + "@tailwindcss/node": ["@tailwindcss/node@4.3.0", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.21.0", "jiti": "^2.6.1", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.3.0" } }, "sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g=="], "@tailwindcss/oxide": ["@tailwindcss/oxide@4.3.0", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.3.0", "@tailwindcss/oxide-darwin-arm64": "4.3.0", "@tailwindcss/oxide-darwin-x64": "4.3.0", "@tailwindcss/oxide-freebsd-x64": "4.3.0", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.0", "@tailwindcss/oxide-linux-arm64-gnu": "4.3.0", "@tailwindcss/oxide-linux-arm64-musl": "4.3.0", "@tailwindcss/oxide-linux-x64-gnu": "4.3.0", "@tailwindcss/oxide-linux-x64-musl": "4.3.0", "@tailwindcss/oxide-wasm32-wasi": "4.3.0", "@tailwindcss/oxide-win32-arm64-msvc": "4.3.0", "@tailwindcss/oxide-win32-x64-msvc": "4.3.0" } }, "sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg=="], @@ -1025,6 +979,8 @@ "@tailwindcss/postcss": ["@tailwindcss/postcss@4.3.0", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.3.0", "@tailwindcss/oxide": "4.3.0", "postcss": "^8.5.10", "tailwindcss": "4.3.0" } }, "sha512-Jm05Tjx+9yCLGv5qw1c+84Psds8MnyrEQYCB+FFk2lgGiUjlRqdxke4mVTuYrj2xnVZqKim2Apr5ySuQRYAw/w=="], + "@tanstack/eslint-plugin-query": ["@tanstack/eslint-plugin-query@5.101.0", "", { "dependencies": { "@typescript-eslint/utils": "^8.58.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": "^5.4.0 || ^6.0.0" }, "optionalPeers": ["typescript"] }, "sha512-wsfg821y4yw21J7nKI2oM5yyGSz3vASXqgWbmWCXZpnyY9ObLrBCcXivwZKj4YHF2fUWiqoOIRX2pbE79cf6gQ=="], + "@tanstack/history": ["@tanstack/history@1.162.0", "", {}, "sha512-79pf/RkhteYZTRgcR4F9kbk84P2N8rugQJswxfIqovlbRiT3yI7eBE+5QorIrZaOKktsgzRlXh1l/du/xpl4iA=="], "@tanstack/query-core": ["@tanstack/query-core@5.100.14", "", {}, "sha512-5X41dGpxgeaHISCRW2oYwcSycZeULZzAunaudXT9ov1KOTj9xwt0CH6hbwqP1/z74ZWF7rYFnDpyYH07XFcZew=="], @@ -1137,6 +1093,8 @@ "@tokenlens/models": ["@tokenlens/models@1.3.0", "", { "dependencies": { "@tokenlens/core": "1.3.0" } }, "sha512-9mx7ZGeewW4ndXAiD7AT1bbCk4OpJeortbjHHyNkgap+pMPPn1chY6R5zqe1ggXIUzZ2l8VOAKfPqOvpcrisJw=="], + "@trivago/prettier-plugin-sort-imports": ["@trivago/prettier-plugin-sort-imports@6.0.2", "", { "dependencies": { "@babel/generator": "^7.28.0", "@babel/parser": "^7.28.0", "@babel/traverse": "^7.28.0", "@babel/types": "^7.28.0", "javascript-natural-sort": "^0.7.1", "lodash-es": "^4.17.21", "minimatch": "^9.0.0", "parse-imports-exports": "^0.2.4" }, "peerDependencies": { "@vue/compiler-sfc": "3.x", "prettier": "2.x - 3.x", "prettier-plugin-ember-template-tag": ">= 2.0.0", "prettier-plugin-svelte": "3.x", "svelte": "4.x || 5.x" }, "optionalPeers": ["@vue/compiler-sfc", "prettier-plugin-ember-template-tag", "prettier-plugin-svelte", "svelte"] }, "sha512-3DgfkukFyC/sE/VuYjaUUWoFfuVjPK55vOFDsxD56XXynFMCZDYFogH2l/hDfOsQAm1myoU/1xByJ3tWqtulXA=="], + "@ts-morph/common": ["@ts-morph/common@0.27.0", "", { "dependencies": { "fast-glob": "^3.3.3", "minimatch": "^10.0.1", "path-browserify": "^1.0.1" } }, "sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ=="], "@turf/boolean-clockwise": ["@turf/boolean-clockwise@6.5.0", "", { "dependencies": { "@turf/helpers": "^6.5.0", "@turf/invariant": "^6.5.0" } }, "sha512-45+C7LC5RMbRWrxh3Z0Eihsc8db1VGBO5d9BLTOAwU4jR6SgsunTfRWR16X7JUwIDYlCVEmnjcXJNi/kIU3VIw=="], @@ -1219,6 +1177,8 @@ "@types/debug": ["@types/debug@4.1.13", "", { "dependencies": { "@types/ms": "*" } }, "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw=="], + "@types/esrecurse": ["@types/esrecurse@4.3.1", "", {}, "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw=="], + "@types/estree": ["@types/estree@1.0.9", "", {}, "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg=="], "@types/estree-jsx": ["@types/estree-jsx@1.0.5", "", { "dependencies": { "@types/estree": "*" } }, "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg=="], @@ -1229,6 +1189,8 @@ "@types/js-cookie": ["@types/js-cookie@3.0.6", "", {}, "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ=="], + "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], + "@types/katex": ["@types/katex@0.16.8", "", {}, "sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg=="], "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], @@ -1257,6 +1219,26 @@ "@types/validate-npm-package-name": ["@types/validate-npm-package-name@4.0.2", "", {}, "sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw=="], + "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.61.1", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.61.1", "@typescript-eslint/type-utils": "8.61.1", "@typescript-eslint/utils": "8.61.1", "@typescript-eslint/visitor-keys": "8.61.1", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.61.1", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-ZPlVl3PB3et/59Ne0fv/sci6ZXz4T4Hp4nTJ56i/Y0gR89ARb+KphojTq6j+56E5PIezmOIOOWyY+aWQFd+IkQ=="], + + "@typescript-eslint/parser": ["@typescript-eslint/parser@8.61.1", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.61.1", "@typescript-eslint/types": "8.61.1", "@typescript-eslint/typescript-estree": "8.61.1", "@typescript-eslint/visitor-keys": "8.61.1", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-PJ5vePq5/ognBbrIcoC5+SHO5dfpeLPzP9FpLkzWrguoYQEeeSjlJpVwOpo1JRSTEi7dRcwNy4h4dzV70PqHcg=="], + + "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.61.1", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.61.1", "@typescript-eslint/types": "^8.61.1", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-PrC4JYGmR241lYnfhmKGTXkFqv8+ymbTFgSAY0fVXpY82/QkMw5TZPl+vGzuDDU2QYJk9fIDOBTntF+yDv9LEA=="], + + "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.61.1", "", { "dependencies": { "@typescript-eslint/types": "8.61.1", "@typescript-eslint/visitor-keys": "8.61.1" } }, "sha512-L2bdIeoQS8FlKAvONAr20w6OcLXeB+qiDKbAooS9A0Ben+iSIkBef0FxqwKWYqt5sa0i4KJtxVyVmhMylKzF5w=="], + + "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.61.1", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-UN/H4di+OO7EWx2ovME+8t31YO+KVnK0RRKEHR3kOt21/Ay8BOq3M1OMvWs5vNiqcFCYGYoxK3MXPZzmMUE+yg=="], + + "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.61.1", "", { "dependencies": { "@typescript-eslint/types": "8.61.1", "@typescript-eslint/typescript-estree": "8.61.1", "@typescript-eslint/utils": "8.61.1", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-GYRicKmVK0C4fsKgaACaknOUAq9Oa2kwsjnpFhFcS/5p4Ht5IP9OVLbgIgcK4SRk92nVHFluurg1lumD9dBcLw=="], + + "@typescript-eslint/types": ["@typescript-eslint/types@8.61.1", "", {}, "sha512-G+CRlPqLv7Bz1IZVs03x5K59F1veqL0EJUROAdGhKsEq8qOiRiZbI+HUojPq5l0fEGOKModD9br6lObhB8zkoA=="], + + "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.61.1", "", { "dependencies": { "@typescript-eslint/project-service": "8.61.1", "@typescript-eslint/tsconfig-utils": "8.61.1", "@typescript-eslint/types": "8.61.1", "@typescript-eslint/visitor-keys": "8.61.1", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-u+oQD3BqYWPc8YV9Zab4vaJElJuwOLPRc10Jm1o/qS+6Qwen14HCWwx0Seo4LnSn2wxea2Ik8DxPt2/FHmuhrg=="], + + "@typescript-eslint/utils": ["@typescript-eslint/utils@8.61.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.61.1", "@typescript-eslint/types": "8.61.1", "@typescript-eslint/typescript-estree": "8.61.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-1+P/3Dj6jvtybE1q0HQ6yBt/gq+oKJyLdEv4HdnqasaEXRSYCAsD59mXEVQnM/ULNdQxbX77tdG4jPRjIS6knA=="], + + "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.61.1", "", { "dependencies": { "@typescript-eslint/types": "8.61.1", "eslint-visitor-keys": "^5.0.0" } }, "sha512-6fJ9MHWtK14C1DSkiMlHUSOmrVebL7150xZJBlJiL62jjhIA4JmOq6flwBgDxIdBKKdoiZRel+dfPD5MLfny3w=="], + "@ungap/structured-clone": ["@ungap/structured-clone@1.3.1", "", {}, "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ=="], "@upsetjs/venn.js": ["@upsetjs/venn.js@2.0.0", "", { "optionalDependencies": { "d3-selection": "^3.0.0", "d3-transition": "^3.0.1" } }, "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw=="], @@ -1393,7 +1375,7 @@ "body-parser": ["body-parser@2.2.2", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.3", "http-errors": "^2.0.0", "iconv-lite": "^0.7.0", "on-finished": "^2.4.1", "qs": "^6.14.1", "raw-body": "^3.0.1", "type-is": "^2.0.1" } }, "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA=="], - "brace-expansion": ["brace-expansion@1.1.15", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg=="], + "brace-expansion": ["brace-expansion@2.1.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA=="], "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], @@ -1581,6 +1563,8 @@ "date-fns": ["date-fns@4.4.0", "", {}, "sha512-+1UMbeh68lH1SegH83CGWwpb6OHHbpSgr3+s5Eww5M4CAgswBpoWS0AjTOfEJ33HiYKz1hdj/KTFprzXHmq/6w=="], + "date-fns-jalali": ["date-fns-jalali@4.1.0-0", "", {}, "sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg=="], + "date-fns-tz": ["date-fns-tz@1.3.8", "", { "peerDependencies": { "date-fns": ">=2.0.0" } }, "sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ=="], "dayjs": ["dayjs@1.11.21", "", {}, "sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA=="], @@ -1683,17 +1667,19 @@ "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], - "eslint": ["eslint@8.57.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", "@eslint/js": "8.57.0", "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.2", "eslint-visitor-keys": "^3.4.3", "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3", "strip-ansi": "^6.0.1", "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" } }, "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ=="], + "eslint": ["eslint@10.5.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.2", "@eslint/config-array": "^0.23.5", "@eslint/config-helpers": "^0.6.0", "@eslint/core": "^1.2.1", "@eslint/plugin-kit": "^0.7.2", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.14.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^9.1.2", "eslint-visitor-keys": "^5.0.1", "espree": "^11.2.0", "esquery": "^1.7.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", "minimatch": "^10.2.4", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-1y+7C+vi12bUK1IpZeaV3gsH9fHLBmPvYmPx42pvT/E9yG0IC8g3PUZZgp0+JLJl7ZDK0flc2gc+Aw9dpCvIsQ=="], "eslint-plugin-header": ["eslint-plugin-header@3.1.1", "", { "peerDependencies": { "eslint": ">=7.7.0" } }, "sha512-9vlKxuJ4qf793CmeeSrZUvVClw6amtpghq3CuWcB5cUNnWHQhgcqy5eF8oVKFk1G3Y/CbchGfEaw3wiIJaNmVg=="], - "eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@5.2.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-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg=="], + "eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@7.1.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 || ^10.0.0" } }, "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g=="], - "eslint-scope": ["eslint-scope@7.2.2", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg=="], + "eslint-plugin-react-refresh": ["eslint-plugin-react-refresh@0.5.3", "", { "peerDependencies": { "eslint": "^9 || ^10" } }, "sha512-5EMmLCV98Pi4o/f/3DP/v/tNqLHMIc9I8LKClNDWhZ9JTho89/kQcitCXQBMG7sAfVRK0Ie3T2EDOzp1YXYiVA=="], - "eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], + "eslint-scope": ["eslint-scope@9.1.2", "", { "dependencies": { "@types/esrecurse": "^4.3.1", "@types/estree": "^1.0.8", "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ=="], - "espree": ["espree@9.6.1", "", { "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" } }, "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ=="], + "eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="], + + "espree": ["espree@11.2.0", "", { "dependencies": { "acorn": "^8.16.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^5.0.1" } }, "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw=="], "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], @@ -1767,7 +1753,7 @@ "figures": ["figures@6.1.0", "", { "dependencies": { "is-unicode-supported": "^2.0.0" } }, "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg=="], - "file-entry-cache": ["file-entry-cache@6.0.1", "", { "dependencies": { "flat-cache": "^3.0.4" } }, "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg=="], + "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], "file-selector": ["file-selector@2.1.2", "", { "dependencies": { "tslib": "^2.7.0" } }, "sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig=="], @@ -1783,7 +1769,7 @@ "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@3.2.0", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", "rimraf": "^3.0.2" } }, "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw=="], + "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], "flatted": ["flatted@3.4.2", "", {}, "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA=="], @@ -1815,6 +1801,8 @@ "fuzzysort": ["fuzzysort@3.1.0", "", {}, "sha512-sR9BNCjBg6LNgwvxlBd0sBABvQitkLzoVY9MYYROQVX/FvfJ4Mai9LsGhDgd8qYdds0bY77VzYd5iuB+v5rwQQ=="], + "fzf": ["fzf@0.5.2", "", {}, "sha512-Tt4kuxLXFKHy8KT40zwsUPUkg1CrsgY25FxA2U/j/0WgEDCk3ddc/zLTCCcbSHX9FcKtLuVaDGtGE/STWC+j3Q=="], + "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], "geobuf": ["geobuf@3.0.2", "", { "dependencies": { "concat-stream": "^2.0.0", "pbf": "^3.2.1", "shapefile": "~0.6.6" }, "bin": { "shp2geobuf": "bin/shp2geobuf", "geobuf2json": "bin/geobuf2json", "json2geobuf": "bin/json2geobuf" } }, "sha512-ASgKwEAQQRnyNFHNvpd5uAwstbVYmiTW0Caw3fBb509tNTqXyAAPMyFs5NNihsLZhLxU1j/kjFhkhLWA9djuVg=="], @@ -1853,7 +1841,7 @@ "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], - "globals": ["globals@13.24.0", "", { "dependencies": { "type-fest": "^0.20.2" } }, "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ=="], + "globals": ["globals@17.6.0", "", {}, "sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA=="], "goober": ["goober@2.1.19", "", { "peerDependencies": { "csstype": "^3.0.10" } }, "sha512-U7veizMqxyKlM58+Z5j2ngJBH/r9siDmxpvNxSw0PylF6WQvrASJEZrxh1hidRBJc2jqoBVSyOban5u8m+6Rxg=="], @@ -1907,6 +1895,10 @@ "headers-polyfill": ["headers-polyfill@5.0.1", "", { "dependencies": { "@types/set-cookie-parser": "^2.4.10", "set-cookie-parser": "^3.0.1" } }, "sha512-1TJ6Fih/b8h5TIcv+1+Hw0PDQWJTKDKzFZzcKOiW1wJza3XoAQlkCuXLbymPYB8+ZQyw8mHvdw560e8zVFIWyA=="], + "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=="], + "highlight.js": ["highlight.js@11.11.1", "", {}, "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w=="], "history": ["history@5.3.0", "", { "dependencies": { "@babel/runtime": "^7.7.6" } }, "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ=="], @@ -1927,7 +1919,7 @@ "human-signals": ["human-signals@8.0.1", "", {}, "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ=="], - "i18next": ["i18next@26.3.0", "", { "peerDependencies": { "typescript": "^5 || ^6" }, "optionalPeers": ["typescript"] }, "sha512-gHSgGpUXVmuqE2El1W61DmxeyeTlFfZgdJRWMo9jScAn5pu7TuTuiccb1zh3E2J9hEBVGJ23+96x0ieBhfuIHA=="], + "i18next": ["i18next@25.10.10", "", { "dependencies": { "@babel/runtime": "^7.29.2" }, "peerDependencies": { "typescript": "^5 || ^6" }, "optionalPeers": ["typescript"] }, "sha512-cqUW2Z3EkRx7NqSyywjkgCLK7KLCL6IFVFcONG7nVYIJ3ekZ1/N5jUsihHV6Bq37NfhgtczxJcxduELtjTwkuQ=="], "i18next-browser-languagedetector": ["i18next-browser-languagedetector@8.2.1", "", { "dependencies": { "@babel/runtime": "^7.23.2" } }, "sha512-bZg8+4bdmaOiApD7N7BPT9W8MLZG+nPTOFlLiJiT8uzKXFjhxw4v2ierCXOwB5sFDMtuA5G4kgYZ0AznZxQ/cw=="], @@ -2027,10 +2019,12 @@ "isbot": ["isbot@5.1.40", "", {}, "sha512-yNeeynhhtIVRBk12tBV4eHNxwB42HzR4Q3Ea7vCOiJhImGaAIdIMrbJtacQlBizGLjUPw+akkFI5Dn9T70XoVQ=="], - "isexe": ["isexe@3.1.5", "", {}, "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w=="], + "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], "isobject": ["isobject@3.0.1", "", {}, "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg=="], + "javascript-natural-sort": ["javascript-natural-sort@0.7.1", "", {}, "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw=="], + "jiti": ["jiti@2.7.0", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ=="], "jose": ["jose@6.2.3", "", {}, "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw=="], @@ -2287,7 +2281,7 @@ "mimic-function": ["mimic-function@5.0.1", "", {}, "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA=="], - "minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="], + "minimatch": ["minimatch@9.0.9", "", { "dependencies": { "brace-expansion": "^2.0.2" } }, "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg=="], "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], @@ -2367,10 +2361,6 @@ "oxc-resolver": ["oxc-resolver@11.20.0", "", { "optionalDependencies": { "@oxc-resolver/binding-android-arm-eabi": "11.20.0", "@oxc-resolver/binding-android-arm64": "11.20.0", "@oxc-resolver/binding-darwin-arm64": "11.20.0", "@oxc-resolver/binding-darwin-x64": "11.20.0", "@oxc-resolver/binding-freebsd-x64": "11.20.0", "@oxc-resolver/binding-linux-arm-gnueabihf": "11.20.0", "@oxc-resolver/binding-linux-arm-musleabihf": "11.20.0", "@oxc-resolver/binding-linux-arm64-gnu": "11.20.0", "@oxc-resolver/binding-linux-arm64-musl": "11.20.0", "@oxc-resolver/binding-linux-ppc64-gnu": "11.20.0", "@oxc-resolver/binding-linux-riscv64-gnu": "11.20.0", "@oxc-resolver/binding-linux-riscv64-musl": "11.20.0", "@oxc-resolver/binding-linux-s390x-gnu": "11.20.0", "@oxc-resolver/binding-linux-x64-gnu": "11.20.0", "@oxc-resolver/binding-linux-x64-musl": "11.20.0", "@oxc-resolver/binding-openharmony-arm64": "11.20.0", "@oxc-resolver/binding-wasm32-wasi": "11.20.0", "@oxc-resolver/binding-win32-arm64-msvc": "11.20.0", "@oxc-resolver/binding-win32-x64-msvc": "11.20.0" } }, "sha512-CblytBiV/a/ZXY34dsVU2NxhIOxMXst8CvDCtyBelVITgd7PLrKzbEbA6oKLdPjvDKDzCiW48qzmzZ+mYaqn+g=="], - "oxfmt": ["oxfmt@0.54.0", "", { "dependencies": { "tinypool": "2.1.0" }, "optionalDependencies": { "@oxfmt/binding-android-arm-eabi": "0.54.0", "@oxfmt/binding-android-arm64": "0.54.0", "@oxfmt/binding-darwin-arm64": "0.54.0", "@oxfmt/binding-darwin-x64": "0.54.0", "@oxfmt/binding-freebsd-x64": "0.54.0", "@oxfmt/binding-linux-arm-gnueabihf": "0.54.0", "@oxfmt/binding-linux-arm-musleabihf": "0.54.0", "@oxfmt/binding-linux-arm64-gnu": "0.54.0", "@oxfmt/binding-linux-arm64-musl": "0.54.0", "@oxfmt/binding-linux-ppc64-gnu": "0.54.0", "@oxfmt/binding-linux-riscv64-gnu": "0.54.0", "@oxfmt/binding-linux-riscv64-musl": "0.54.0", "@oxfmt/binding-linux-s390x-gnu": "0.54.0", "@oxfmt/binding-linux-x64-gnu": "0.54.0", "@oxfmt/binding-linux-x64-musl": "0.54.0", "@oxfmt/binding-openharmony-arm64": "0.54.0", "@oxfmt/binding-win32-arm64-msvc": "0.54.0", "@oxfmt/binding-win32-ia32-msvc": "0.54.0", "@oxfmt/binding-win32-x64-msvc": "0.54.0" }, "peerDependencies": { "svelte": "^5.0.0", "vite-plus": "*" }, "optionalPeers": ["svelte", "vite-plus"], "bin": { "oxfmt": "bin/oxfmt" } }, "sha512-DjnMwn7smSLF+Mc2+pRItnuPftm/dkUFpY/d4+33y9TfKrsHZo8GLhmUg9BrOIUEy94Rlom1Q11N6vuhE+e0oQ=="], - - "oxlint": ["oxlint@1.70.0", "", { "optionalDependencies": { "@oxlint/binding-android-arm-eabi": "1.70.0", "@oxlint/binding-android-arm64": "1.70.0", "@oxlint/binding-darwin-arm64": "1.70.0", "@oxlint/binding-darwin-x64": "1.70.0", "@oxlint/binding-freebsd-x64": "1.70.0", "@oxlint/binding-linux-arm-gnueabihf": "1.70.0", "@oxlint/binding-linux-arm-musleabihf": "1.70.0", "@oxlint/binding-linux-arm64-gnu": "1.70.0", "@oxlint/binding-linux-arm64-musl": "1.70.0", "@oxlint/binding-linux-ppc64-gnu": "1.70.0", "@oxlint/binding-linux-riscv64-gnu": "1.70.0", "@oxlint/binding-linux-riscv64-musl": "1.70.0", "@oxlint/binding-linux-s390x-gnu": "1.70.0", "@oxlint/binding-linux-x64-gnu": "1.70.0", "@oxlint/binding-linux-x64-musl": "1.70.0", "@oxlint/binding-openharmony-arm64": "1.70.0", "@oxlint/binding-win32-arm64-msvc": "1.70.0", "@oxlint/binding-win32-ia32-msvc": "1.70.0", "@oxlint/binding-win32-x64-msvc": "1.70.0" }, "peerDependencies": { "oxlint-tsgolint": ">=0.22.1", "vite-plus": "*" }, "optionalPeers": ["oxlint-tsgolint", "vite-plus"], "bin": { "oxlint": "bin/oxlint" } }, "sha512-D6JgHtzkhRwvEC+A0Nw5AEc5bk8x5i1pHzvZIEf/a0C4hOzmAACNGtkDGPyFaxxX3ZVGxCPeig3P3rMM8XU3/g=="], - "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=="], @@ -2381,10 +2371,14 @@ "parse-entities": ["parse-entities@4.0.2", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="], + "parse-imports-exports": ["parse-imports-exports@0.2.4", "", { "dependencies": { "parse-statements": "1.0.11" } }, "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ=="], + "parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="], "parse-ms": ["parse-ms@4.0.0", "", {}, "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw=="], + "parse-statements": ["parse-statements@1.0.11", "", {}, "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA=="], + "parse-svg-path": ["parse-svg-path@0.1.2", "", {}, "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ=="], "parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="], @@ -2457,6 +2451,8 @@ "prettier-plugin-jsdoc": ["prettier-plugin-jsdoc@1.8.1", "", { "dependencies": { "binary-searching": "^2.0.5", "comment-parser": "^1.4.0", "mdast-util-from-markdown": "^2.0.0" }, "peerDependencies": { "prettier": "^3.0.0" } }, "sha512-XuMqBWTc3b/8eCOe+OlZlFy9Z413a7WOmF4i5hDGtjbtIFOdvRrVtGjXR2Feye3TrLWhkkkHheNXPTyYKxw3nA=="], + "prettier-plugin-tailwindcss": ["prettier-plugin-tailwindcss@0.7.4", "", { "peerDependencies": { "@ianvs/prettier-plugin-sort-imports": "*", "@prettier/plugin-hermes": "*", "@prettier/plugin-oxc": "*", "@prettier/plugin-pug": "*", "@shopify/prettier-plugin-liquid": "*", "@trivago/prettier-plugin-sort-imports": "*", "@zackad/prettier-plugin-twig": "*", "prettier": "^3.0", "prettier-plugin-astro": "*", "prettier-plugin-css-order": "*", "prettier-plugin-jsdoc": "*", "prettier-plugin-marko": "*", "prettier-plugin-multiline-arrays": "*", "prettier-plugin-organize-attributes": "*", "prettier-plugin-organize-imports": "*", "prettier-plugin-sort-imports": "*", "prettier-plugin-svelte": "*" }, "optionalPeers": ["@ianvs/prettier-plugin-sort-imports", "@prettier/plugin-hermes", "@prettier/plugin-oxc", "@prettier/plugin-pug", "@shopify/prettier-plugin-liquid", "@trivago/prettier-plugin-sort-imports", "@zackad/prettier-plugin-twig", "prettier-plugin-astro", "prettier-plugin-css-order", "prettier-plugin-jsdoc", "prettier-plugin-marko", "prettier-plugin-multiline-arrays", "prettier-plugin-organize-attributes", "prettier-plugin-organize-imports", "prettier-plugin-sort-imports", "prettier-plugin-svelte"] }, "sha512-UKii4RjY05SNt/WQi6/NcOn/LsT0/ILLXsxygjbRg5/YZelsSu5jTqorYHPDGq4nZy5q5hpCu+XdGZ1xaJEQgw=="], + "pretty-ms": ["pretty-ms@9.3.0", "", { "dependencies": { "parse-ms": "^4.0.0" } }, "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ=="], "prismjs": ["prismjs@1.30.0", "", {}, "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw=="], @@ -2543,7 +2539,7 @@ "react-colorful": ["react-colorful@5.7.0", "", { "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-fuesYIemttah97XmsIHmz4OORDHiSFzyc9HMAIrCHJou2jaRQmL8cFJ76K4zQhhj8jzwOBlOi4BaGTjjOZCfTg=="], - "react-day-picker": ["react-day-picker@10.0.1", "", { "dependencies": { "@date-fns/tz": "^1.4.1", "date-fns": "^4.1.0" }, "peerDependencies": { "@types/react": ">=16.8.0", "react": ">=16.8.0" }, "optionalPeers": ["@types/react"] }, "sha512-eNh6BlwcYInWaJtRv18mXQ06Ys/H6rdTZAnTaSdOYJuTpwP1JMCHNd1FDRadA+gbeinq+psdULN5Xnowy9mV8w=="], + "react-day-picker": ["react-day-picker@9.14.0", "", { "dependencies": { "@date-fns/tz": "^1.4.1", "@tabby_ai/hijri-converter": "1.0.5", "date-fns": "^4.1.0", "date-fns-jalali": "4.1.0-0" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-tBaoDWjPwe0M5pGrum4H0SR6Lyk+BO9oHnp9JbKpGKW2mlraNPgP9BMfsg5pWpwrssARmeqk7YBl2oXutZTaHA=="], "react-dom": ["react-dom@19.2.6", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.6" } }, "sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g=="], @@ -2561,7 +2557,7 @@ "react-hotkeys-hook": ["react-hotkeys-hook@5.3.2", "", { "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-DDDy9xK6mbTQ6aPlQvIl0dA/a90T/AWml4Rm21JXFDLlRHalIg4/Rv3equUQYs5xPTWq+oEl6RD7mi/nBpU3Uw=="], - "react-i18next": ["react-i18next@17.0.8", "", { "dependencies": { "@babel/runtime": "^7.29.2", "html-parse-stringify": "^3.0.1", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "i18next": ">= 26.2.0", "react": ">= 16.8.0", "typescript": "^5 || ^6" }, "optionalPeers": ["typescript"] }, "sha512-0ooKbGLU8JXhe1zwpQUWIeXSgLPOfwJmgheWRIUpcoA0CpyabpGhayjdG+/eA5esC1AQ8h2jWpXjJfzQzeDOCw=="], + "react-i18next": ["react-i18next@16.6.6", "", { "dependencies": { "@babel/runtime": "^7.29.2", "html-parse-stringify": "^3.0.1", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "i18next": ">= 25.10.9", "react": ">= 16.8.0", "typescript": "^5 || ^6" }, "optionalPeers": ["typescript"] }, "sha512-ZgL2HUoW34UKUkOV7uSQFE1CDnRPD+tCR3ywSuWH7u2iapnz86U8Bi3Vrs620qNDzCf1F47NxglCEkchCTDOHw=="], "react-icons": ["react-icons@5.6.0", "", { "peerDependencies": { "react": "*" } }, "sha512-RH93p5ki6LfOiIt0UtDyNg/cee+HLVR6cHHtW3wALfo+eOHTp8RnU2kRkI6E+H19zMIs03DyxUG/GfZMOGvmiA=="], @@ -2613,7 +2609,7 @@ "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.8.1", "", { "dependencies": { "@reduxjs/toolkit": "^1.9.0 || 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-mwzmO1s9sFL0TduUpwndxCUNoXsBw3u3E/0+A+cLcrSfQitSG62L32N69GhqUrrT5qKcAE3pCGVINC6pqkBBQg=="], + "recharts": ["recharts@3.8.0", "", { "dependencies": { "@reduxjs/toolkit": "^1.9.0 || 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-Z/m38DX3L73ExO4Tpc9/iZWHmHnlzWG4njQbxsF5aSjwqmHNDDIm0rdEBArkwsBvR8U6EirlEHiQNYWCVh9sGQ=="], "recma-build-jsx": ["recma-build-jsx@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-build-jsx": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew=="], @@ -2745,7 +2741,7 @@ "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], - "shadcn": ["shadcn@4.9.0", "", { "dependencies": { "@babel/core": "^7.28.0", "@babel/parser": "^7.28.0", "@babel/plugin-transform-typescript": "^7.28.0", "@babel/preset-typescript": "^7.27.1", "@dotenvx/dotenvx": "^1.48.4", "@modelcontextprotocol/sdk": "^1.26.0", "@types/validate-npm-package-name": "^4.0.2", "browserslist": "^4.26.2", "commander": "^14.0.0", "cosmiconfig": "^9.0.0", "dedent": "^1.6.0", "deepmerge": "^4.3.1", "diff": "^8.0.2", "execa": "^9.6.0", "fast-glob": "^3.3.3", "fs-extra": "^11.3.1", "fuzzysort": "^3.1.0", "https-proxy-agent": "^7.0.6", "kleur": "^4.1.5", "msw": "^2.10.4", "node-fetch": "^3.3.2", "open": "^11.0.0", "ora": "^8.2.0", "postcss": "^8.5.6", "postcss-selector-parser": "^7.1.0", "prompts": "^2.4.2", "recast": "^0.23.11", "stringify-object": "^5.0.0", "tailwind-merge": "^3.0.1", "ts-morph": "^26.0.0", "tsconfig-paths": "^4.2.0", "validate-npm-package-name": "^7.0.1", "zod": "^3.24.1", "zod-to-json-schema": "^3.24.6" }, "bin": { "shadcn": "dist/index.js" } }, "sha512-GPrj/bFcxxykkDzHRDNzoJMAS1a6M4IcfSWpxKU7FXx7DzBU7QumZM9roovo0Blw/z6wRRl7moDB6jnreOFFGA=="], + "shadcn": ["shadcn@3.8.5", "", { "dependencies": { "@antfu/ni": "^25.0.0", "@babel/core": "^7.28.0", "@babel/parser": "^7.28.0", "@babel/plugin-transform-typescript": "^7.28.0", "@babel/preset-typescript": "^7.27.1", "@dotenvx/dotenvx": "^1.48.4", "@modelcontextprotocol/sdk": "^1.26.0", "@types/validate-npm-package-name": "^4.0.2", "browserslist": "^4.26.2", "commander": "^14.0.0", "cosmiconfig": "^9.0.0", "dedent": "^1.6.0", "deepmerge": "^4.3.1", "diff": "^8.0.2", "execa": "^9.6.0", "fast-glob": "^3.3.3", "fs-extra": "^11.3.1", "fuzzysort": "^3.1.0", "https-proxy-agent": "^7.0.6", "kleur": "^4.1.5", "msw": "^2.10.4", "node-fetch": "^3.3.2", "open": "^11.0.0", "ora": "^8.2.0", "postcss": "^8.5.6", "postcss-selector-parser": "^7.1.0", "prompts": "^2.4.2", "recast": "^0.23.11", "stringify-object": "^5.0.0", "tailwind-merge": "^3.0.1", "ts-morph": "^26.0.0", "tsconfig-paths": "^4.2.0", "validate-npm-package-name": "^7.0.1", "zod": "^3.24.1", "zod-to-json-schema": "^3.24.6" }, "bin": { "shadcn": "dist/index.js" } }, "sha512-jPRx44e+eyeV7xwY3BLJXcfrks00+M0h5BGB9l6DdcBW4BpAj4x3lVmVy0TXPEs2iHEisxejr62sZAAw6B1EVA=="], "shapefile": ["shapefile@0.6.6", "", { "dependencies": { "array-source": "0.0", "commander": "2", "path-source": "0.1", "slice-source": "0.4", "stream-source": "0.3", "text-encoding": "^0.6.4" }, "bin": { "dbf2json": "bin/dbf2json", "shp2json": "bin/shp2json" } }, "sha512-rLGSWeK2ufzCVx05wYd+xrWnOOdSV7xNUW5/XFgx3Bc02hBkpMlrd2F1dDII7/jhWzv0MSyBFh5uJIy9hLdfuw=="], @@ -2863,8 +2859,6 @@ "tinyglobby": ["tinyglobby@0.2.17", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g=="], - "tinypool": ["tinypool@2.1.0", "", {}, "sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw=="], - "tldts": ["tldts@7.4.2", "", { "dependencies": { "tldts-core": "^7.4.2" }, "bin": { "tldts": "bin/cli.js" } }, "sha512-kCwffuaH8ntKtygnWe1b4BJKWiCUH30n5KfoTr6IchcXOwR7chAOFJxFrH3vjANafUYrIA4a7SDL+nn7SiR4Sw=="], "tldts-core": ["tldts-core@7.4.2", "", {}, "sha512-nwEyF4vl4RSJjwSjBUmOSxc3BFPoIFdlRthJ6e+5v9P3bHNsoD06UjuqMUspqp7vsEZ1beaHi1km+optiE17yA=="], @@ -2887,6 +2881,8 @@ "trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], + "ts-api-utils": ["ts-api-utils@2.5.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA=="], + "ts-dedent": ["ts-dedent@2.2.0", "", {}, "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ=="], "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], @@ -2909,7 +2905,9 @@ "typedarray": ["typedarray@0.0.6", "", {}, "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="], - "typescript": ["typescript@6.0.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw=="], + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], + + "typescript-eslint": ["typescript-eslint@8.61.1", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.61.1", "@typescript-eslint/parser": "8.61.1", "@typescript-eslint/typescript-estree": "8.61.1", "@typescript-eslint/utils": "8.61.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-V7PayAfJokV3pEHgN7/v03D1SpujhRfQtYLbLIiBfDDncdg4PAiRBfoS4cnCANK4jmAPncczi59QO3afiXUlNw=="], "unbash": ["unbash@3.0.0", "", {}, "sha512-FeFPZ/WFT0mbRCuydiZzpPFlrYN8ZUpphQKoq4EeElVIYjYyGzPMxQR/simUwCOJIyVhpFk4RbtyO7RuMpMnHA=="], @@ -2999,7 +2997,7 @@ "webpack-virtual-modules": ["webpack-virtual-modules@0.6.2", "", {}, "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="], - "which": ["which@4.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="], + "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], @@ -3029,6 +3027,8 @@ "zod-to-json-schema": ["zod-to-json-schema@3.25.2", "", { "peerDependencies": { "zod": "^3.25.28 || ^4" } }, "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA=="], + "zod-validation-error": ["zod-validation-error@4.0.2", "", { "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ=="], + "zustand": ["zustand@5.0.14", "", { "peerDependencies": { "@types/react": ">=18.0.0", "immer": ">=9.0.6", "react": ">=18.0.0", "use-sync-external-store": ">=1.2.0" }, "optionalPeers": ["@types/react", "immer", "react", "use-sync-external-store"] }, "sha512-/8tAspM5LMPr28b3fwLYrtdj77ECpfZviaP75CMTnwO8ISyaE4GDIG/9rDDYq/cH9D2Xw2A2RXglLInmVBQB/g=="], "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], @@ -3037,6 +3037,8 @@ "@dotenvx/dotenvx/execa": ["execa@5.1.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="], + "@dotenvx/dotenvx/which": ["which@4.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="], + "@douyinfe/semi-foundation/date-fns": ["date-fns@2.30.0", "", { "dependencies": { "@babel/runtime": "^7.21.0" } }, "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw=="], "@douyinfe/semi-ui/date-fns": ["date-fns@2.30.0", "", { "dependencies": { "@babel/runtime": "^7.21.0" } }, "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw=="], @@ -3057,14 +3059,28 @@ "@emotion/serialize/@emotion/unitless": ["@emotion/unitless@0.10.0", "", {}, "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg=="], + "@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@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="], + + "@eslint/eslintrc/espree": ["espree@9.6.1", "", { "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" } }, "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ=="], + + "@eslint/eslintrc/globals": ["globals@13.24.0", "", { "dependencies": { "type-fest": "^0.20.2" } }, "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ=="], + + "@eslint/eslintrc/minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="], + "@eslint/eslintrc/strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], + "@humanwhocodes/config-array/minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="], + "@lobehub/fluent-emoji/lucide-react": ["lucide-react@0.562.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-82hOAu7y0dbVuFfmO4bYF1XEwYk/mEbM5E+b1jgci/udUBEE/R7LF5Ip0CCEmXe8AybRM8L+04eP+LGZeDvkiw=="], "@lobehub/icons/lucide-react": ["lucide-react@0.469.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-28vvUnnKQ/dBwiCQtwJw7QauYnE7yd2Cyp4tTTJpvglX4EMpbflcdBgrgToX2j71B3YvugK/NH3BGUk+E/p/Fw=="], "@lobehub/ui/@dnd-kit/sortable": ["@dnd-kit/sortable@10.0.0", "", { "dependencies": { "@dnd-kit/utilities": "^3.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@dnd-kit/core": "^6.3.0", "react": ">=16.8.0" } }, "sha512-+xqhmIIzvAYMGfBYYnbKuNicfSsk4RksY2XdmJhT+HAC01nix6fHCztU68jooFiMUB01Ky3F0FyOvhG/BZrWkg=="], + "@lobehub/ui/@lobehub/icons": ["@lobehub/icons@5.10.0", "", { "dependencies": { "antd-style": "^4.1.0", "es-toolkit": "^1.45.1", "lucide-react": "^0.469.0", "polished": "^4.3.1" }, "peerDependencies": { "@lobehub/ui": "^5.0.0", "antd": "^6.1.1", "react": "^19.0.0", "react-dom": "^19.0.0" } }, "sha512-CIpjkISCLRK7haDtSugGFd0o3odaJts8ewJOkUiEFtns3xvsqbl8i24eowBnjw+yMDQVQyNONlhqTD58YC6Ljg=="], + "@lobehub/ui/immer": ["immer@11.1.8", "", {}, "sha512-/tbkHMW7y10Lx6i1crLjD4/OhNkRG+Fo7byZHtah0547nIeXYcpIXaUh0IAQY6gO5459qpGGYapcEOHtFXkIuA=="], "@lobehub/ui/marked": ["marked@17.0.6", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-gB0gkNafnonOw0obSTEGZTT86IuhILt2Wfx0mWH/1Au83kybTayroZ/V6nS25mN7u8ASy+5fMhgB3XPNrOZdmA=="], @@ -3115,6 +3131,12 @@ "@ts-morph/common/minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="], + "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + + "@typescript-eslint/typescript-estree/minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="], + + "@typescript-eslint/typescript-estree/semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="], + "@visactor/vchart-semi-theme/@visactor/vchart": ["@visactor/vchart@1.8.11", "", { "dependencies": { "@visactor/vdataset": "~0.17.3", "@visactor/vgrammar-core": "0.10.11", "@visactor/vgrammar-hierarchy": "0.10.11", "@visactor/vgrammar-projection": "0.10.11", "@visactor/vgrammar-sankey": "0.10.11", "@visactor/vgrammar-util": "0.10.11", "@visactor/vgrammar-wordcloud": "0.10.11", "@visactor/vgrammar-wordcloud-shape": "0.10.11", "@visactor/vrender-components": "0.17.17", "@visactor/vrender-core": "0.17.17", "@visactor/vrender-kits": "0.17.17", "@visactor/vscale": "~0.17.3", "@visactor/vutils": "~0.17.3", "@visactor/vutils-extension": "1.8.11" } }, "sha512-RdQ822J02GgAQNXvO1LiT0T3O6FjdgPdcm9hVBFyrpBBmuI8MH02IE7Y1kGe9NiFTH4tDwP0ixRgBmqNSGSLZQ=="], "@visactor/vchart-theme-utils/@visactor/vchart": ["@visactor/vchart@1.8.11", "", { "dependencies": { "@visactor/vdataset": "~0.17.3", "@visactor/vgrammar-core": "0.10.11", "@visactor/vgrammar-hierarchy": "0.10.11", "@visactor/vgrammar-projection": "0.10.11", "@visactor/vgrammar-sankey": "0.10.11", "@visactor/vgrammar-util": "0.10.11", "@visactor/vgrammar-wordcloud": "0.10.11", "@visactor/vgrammar-wordcloud-shape": "0.10.11", "@visactor/vrender-components": "0.17.17", "@visactor/vrender-core": "0.17.17", "@visactor/vrender-kits": "0.17.17", "@visactor/vscale": "~0.17.3", "@visactor/vutils": "~0.17.3", "@visactor/vutils-extension": "1.8.11" } }, "sha512-RdQ822J02GgAQNXvO1LiT0T3O6FjdgPdcm9hVBFyrpBBmuI8MH02IE7Y1kGe9NiFTH4tDwP0ixRgBmqNSGSLZQ=="], @@ -3185,8 +3207,6 @@ "cliui/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=="], - "cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], - "cytoscape-fcose/cose-base": ["cose-base@2.2.0", "", { "dependencies": { "layout-base": "^2.0.0" } }, "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g=="], "d3/d3-dsv": ["d3-dsv@3.0.1", "", { "dependencies": { "commander": "7", "iconv-lite": "0.6", "rw": "1" }, "bin": { "csv2json": "bin/dsv2json.js", "csv2tsv": "bin/dsv2dsv.js", "dsv2dsv": "bin/dsv2dsv.js", "dsv2json": "bin/dsv2json.js", "json2csv": "bin/json2dsv.js", "json2dsv": "bin/json2dsv.js", "json2tsv": "bin/json2dsv.js", "tsv2csv": "bin/dsv2dsv.js", "tsv2json": "bin/dsv2json.js" } }, "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q=="], @@ -3205,6 +3225,8 @@ "d3-sankey/d3-shape": ["d3-shape@1.3.7", "", { "dependencies": { "d3-path": "1" } }, "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw=="], + "eslint/minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="], + "estree-util-to-js/source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], "express/cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], @@ -3221,14 +3243,14 @@ "glob/minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="], - "globals/type-fest": ["type-fest@0.20.2", "", {}, "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="], - "hoist-non-react-statics/react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], "i18next-cli/minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="], "i18next-cli/ora": ["ora@9.4.0", "", { "dependencies": { "chalk": "^5.6.2", "cli-cursor": "^5.0.0", "cli-spinners": "^3.2.0", "is-interactive": "^2.0.0", "is-unicode-supported": "^2.1.0", "log-symbols": "^7.0.1", "stdin-discarder": "^0.3.2", "string-width": "^8.1.0" } }, "sha512-84cglkRILFxdtA8hAvLNdMrtBpPNBTrQ9/ulg0FA7xLMnD6mifv+enAIeRmvtv+WgdCE+LPGOfQmtJRrVaIVhQ=="], + "i18next-cli/react-i18next": ["react-i18next@17.0.8", "", { "dependencies": { "@babel/runtime": "^7.29.2", "html-parse-stringify": "^3.0.1", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "i18next": ">= 26.2.0", "react": ">= 16.8.0", "typescript": "^5 || ^6" }, "optionalPeers": ["typescript"] }, "sha512-0ooKbGLU8JXhe1zwpQUWIeXSgLPOfwJmgheWRIUpcoA0CpyabpGhayjdG+/eA5esC1AQ8h2jWpXjJfzQzeDOCw=="], + "katex/commander": ["commander@8.3.0", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="], "leva/react-dropzone": ["react-dropzone@12.1.0", "", { "dependencies": { "attr-accept": "^2.2.2", "file-selector": "^0.5.0", "prop-types": "^15.8.1" }, "peerDependencies": { "react": ">= 16.8" } }, "sha512-iBYHA1rbopIvtzokEX4QubO6qk5IF/x3BtKGu74rF2JkQDXnwC4uO/lHKpaw4PJIV6iIAYOlwLv2FpiGyqHNog=="], @@ -3269,10 +3291,16 @@ "react-telegram-login/react": ["react@16.14.0", "", { "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2" } }, "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g=="], + "react-template/@lobehub/icons": ["@lobehub/icons@5.10.0", "", { "dependencies": { "antd-style": "^4.1.0", "es-toolkit": "^1.45.1", "lucide-react": "^0.469.0", "polished": "^4.3.1" }, "peerDependencies": { "@lobehub/ui": "^5.0.0", "antd": "^6.1.1", "react": "^19.0.0", "react-dom": "^19.0.0" } }, "sha512-CIpjkISCLRK7haDtSugGFd0o3odaJts8ewJOkUiEFtns3xvsqbl8i24eowBnjw+yMDQVQyNONlhqTD58YC6Ljg=="], + "react-template/@visactor/react-vchart": ["@visactor/react-vchart@1.8.11", "", { "dependencies": { "@visactor/vchart": "1.8.11", "@visactor/vgrammar-core": "0.10.11", "@visactor/vrender-core": "0.17.17", "@visactor/vrender-kits": "0.17.17", "@visactor/vutils": "~0.17.3", "react-is": "^18.2.0" }, "peerDependencies": { "react": ">=16.0.0", "react-dom": ">=16.0.0" } }, "sha512-wHnCex9gOpnttTtSu04ozKJhTveUk8Ln2KX/7PZyCJxqlXq+eWvW4zvM6Ja8T8kGXfXtFYVVNh9zBMQ7y2T/Sw=="], "react-template/@visactor/vchart": ["@visactor/vchart@1.8.11", "", { "dependencies": { "@visactor/vdataset": "~0.17.3", "@visactor/vgrammar-core": "0.10.11", "@visactor/vgrammar-hierarchy": "0.10.11", "@visactor/vgrammar-projection": "0.10.11", "@visactor/vgrammar-sankey": "0.10.11", "@visactor/vgrammar-util": "0.10.11", "@visactor/vgrammar-wordcloud": "0.10.11", "@visactor/vgrammar-wordcloud-shape": "0.10.11", "@visactor/vrender-components": "0.17.17", "@visactor/vrender-core": "0.17.17", "@visactor/vrender-kits": "0.17.17", "@visactor/vscale": "~0.17.3", "@visactor/vutils": "~0.17.3", "@visactor/vutils-extension": "1.8.11" } }, "sha512-RdQ822J02GgAQNXvO1LiT0T3O6FjdgPdcm9hVBFyrpBBmuI8MH02IE7Y1kGe9NiFTH4tDwP0ixRgBmqNSGSLZQ=="], + "react-template/eslint": ["eslint@8.57.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", "@eslint/js": "8.57.0", "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.2", "eslint-visitor-keys": "^3.4.3", "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3", "strip-ansi": "^6.0.1", "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" } }, "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ=="], + + "react-template/eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@5.2.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-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg=="], + "react-template/i18next": ["i18next@23.16.8", "", { "dependencies": { "@babel/runtime": "^7.23.2" } }, "sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg=="], "react-template/i18next-browser-languagedetector": ["i18next-browser-languagedetector@7.2.2", "", { "dependencies": { "@babel/runtime": "^7.23.2" } }, "sha512-6b7r75uIJDWCcCflmbof+sJ94k9UQO4X0YR62oUfqGI/GjCLVzlCwu8TFdRZIqVLzWbzNcmkmhfqKEr4TLz4HQ=="], @@ -3339,6 +3367,20 @@ "@dotenvx/dotenvx/execa/strip-final-newline": ["strip-final-newline@2.0.0", "", {}, "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="], + "@dotenvx/dotenvx/which/isexe": ["isexe@3.1.5", "", {}, "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w=="], + + "@eslint/config-array/minimatch/brace-expansion": ["brace-expansion@5.0.6", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g=="], + + "@eslint/eslintrc/espree/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], + + "@eslint/eslintrc/globals/type-fest": ["type-fest@0.20.2", "", {}, "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="], + + "@eslint/eslintrc/minimatch/brace-expansion": ["brace-expansion@1.1.15", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg=="], + + "@humanwhocodes/config-array/minimatch/brace-expansion": ["brace-expansion@1.1.15", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg=="], + + "@lobehub/ui/@lobehub/icons/lucide-react": ["lucide-react@0.469.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-28vvUnnKQ/dBwiCQtwJw7QauYnE7yd2Cyp4tTTJpvglX4EMpbflcdBgrgToX2j71B3YvugK/NH3BGUk+E/p/Fw=="], + "@modelcontextprotocol/sdk/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], "@pierre/diffs/@shikijs/transformers/@shikijs/core": ["@shikijs/core@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA=="], @@ -3359,6 +3401,8 @@ "@ts-morph/common/minimatch/brace-expansion": ["brace-expansion@5.0.6", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g=="], + "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@5.0.6", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g=="], + "@visactor/vchart-semi-theme/@visactor/vchart/@visactor/vdataset": ["@visactor/vdataset@0.17.5", "", { "dependencies": { "@turf/flatten": "^6.5.0", "@turf/helpers": "^6.5.0", "@turf/rewind": "^6.5.0", "@visactor/vutils": "0.17.5", "d3-dsv": "^2.0.0", "d3-geo": "^1.12.1", "d3-hexbin": "^0.2.2", "d3-hierarchy": "^3.1.1", "eventemitter3": "^4.0.7", "geobuf": "^3.0.1", "geojson-dissolve": "^3.1.0", "path-browserify": "^1.0.1", "pbf": "^3.2.1", "point-at-length": "^1.1.0", "simple-statistics": "^7.7.3", "simplify-geojson": "^1.0.4", "topojson-client": "^3.1.0" } }, "sha512-zVBdLWHWrhldGc8JDjSYF9lvpFT4ZEFQDB0b6yvfSiHzHKHiSco+rWmUFvA7r4ObT6j2QWF1vZAV9To8Ml4vHw=="], "@visactor/vchart-semi-theme/@visactor/vchart/@visactor/vrender-components": ["@visactor/vrender-components@0.17.17", "", { "dependencies": { "@visactor/vrender-core": "0.17.17", "@visactor/vrender-kits": "0.17.17", "@visactor/vscale": "~0.17.3", "@visactor/vutils": "~0.17.3" } }, "sha512-7gYFQrozvBkyGF7s/JHXdWDZnATzymxzug63CZd4EB7A0OXKatVDImXRePqwzlPD3QamF7QMVWn0CuIx3gQ2gA=="], @@ -3427,8 +3471,6 @@ "cliui/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - "cross-spawn/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], - "cytoscape-fcose/cose-base/layout-base": ["layout-base@2.0.1", "", {}, "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg=="], "d3-fetch/d3-dsv/commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="], @@ -3443,6 +3485,8 @@ "d3/d3-dsv/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], + "eslint/minimatch/brace-expansion": ["brace-expansion@5.0.6", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g=="], + "express/mime-types/mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], "glob/minimatch/brace-expansion": ["brace-expansion@5.0.6", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g=="], @@ -3459,10 +3503,14 @@ "i18next-cli/ora/string-width": ["string-width@8.2.1", "", { "dependencies": { "get-east-asian-width": "^1.5.0", "strip-ansi": "^7.1.2" } }, "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA=="], + "i18next-cli/react-i18next/i18next": ["i18next@26.3.0", "", { "peerDependencies": { "typescript": "^5 || ^6" }, "optionalPeers": ["typescript"] }, "sha512-gHSgGpUXVmuqE2El1W61DmxeyeTlFfZgdJRWMo9jScAn5pu7TuTuiccb1zh3E2J9hEBVGJ23+96x0ieBhfuIHA=="], + "leva/react-dropzone/file-selector": ["file-selector@0.5.0", "", { "dependencies": { "tslib": "^2.0.3" } }, "sha512-s8KNnmIDTBoD0p9uJ9uD0XY38SCeBOtj0UMXyQSLg1Ypfrfj8+dAvwsLjYQkQ2GjhVtp2HrnF5cJzMhBjfD8HA=="], "ora/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + "react-template/@lobehub/icons/lucide-react": ["lucide-react@0.469.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-28vvUnnKQ/dBwiCQtwJw7QauYnE7yd2Cyp4tTTJpvglX4EMpbflcdBgrgToX2j71B3YvugK/NH3BGUk+E/p/Fw=="], + "react-template/@visactor/react-vchart/@visactor/vrender-core": ["@visactor/vrender-core@0.17.17", "", { "dependencies": { "@visactor/vutils": "~0.17.3", "color-convert": "2.0.1" } }, "sha512-pAZGaimunDAWOBdFhzPh0auH5ryxAHr+MVoz+QdASG+6RZXy8D02l8v2QYu4+e4uorxe/s2ZkdNDm81SlNkoHQ=="], "react-template/@visactor/react-vchart/@visactor/vrender-kits": ["@visactor/vrender-kits@0.17.17", "", { "dependencies": { "@resvg/resvg-js": "2.4.1", "@visactor/vrender-core": "0.17.17", "@visactor/vutils": "~0.17.3", "roughjs": "4.5.2" } }, "sha512-noRP1hAHvPCv36nf2P6sZ930Tk+dJ8jpPWIUm1cFYmUNdcumgIS8Cug0RyeZ+saSqVt5FDTwIwifhOqupw5Zaw=="], @@ -3483,12 +3531,28 @@ "react-template/@visactor/vchart/@visactor/vutils-extension": ["@visactor/vutils-extension@1.8.11", "", { "dependencies": { "@visactor/vrender-core": "0.17.17", "@visactor/vrender-kits": "0.17.17", "@visactor/vscale": "~0.17.3", "@visactor/vutils": "~0.17.3" } }, "sha512-Hknzpy3+xh4sdL0iSn5N93BHiMJF4FdwSwhHYEibRpriZmWKG6wBxsJ0Bll4d7oS4f+svxt8Sg2vRYKzQEcIxQ=="], + "react-template/eslint/@eslint/js": ["@eslint/js@8.57.0", "", {}, "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g=="], + + "react-template/eslint/eslint-scope": ["eslint-scope@7.2.2", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg=="], + + "react-template/eslint/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], + + "react-template/eslint/espree": ["espree@9.6.1", "", { "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" } }, "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ=="], + + "react-template/eslint/file-entry-cache": ["file-entry-cache@6.0.1", "", { "dependencies": { "flat-cache": "^3.0.4" } }, "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg=="], + + "react-template/eslint/globals": ["globals@13.24.0", "", { "dependencies": { "type-fest": "^0.20.2" } }, "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ=="], + + "react-template/eslint/minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="], + "react-template/tailwindcss/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=="], "react-template/tailwindcss/jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], "react-template/tailwindcss/postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="], + "rimraf/glob/minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="], + "send/mime-types/mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], "shiki-stream/@shikijs/core/@shikijs/types": ["@shikijs/types@3.23.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ=="], @@ -3503,8 +3567,12 @@ "yargs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "@eslint/config-array/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], + "@ts-morph/common/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], + "@typescript-eslint/typescript-estree/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], + "@visactor/vchart-semi-theme/@visactor/vchart/@visactor/vdataset/eventemitter3": ["eventemitter3@4.0.7", "", {}, "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="], "@visactor/vchart-semi-theme/@visactor/vchart/@visactor/vrender-kits/roughjs": ["roughjs@4.5.2", "", { "dependencies": { "path-data-parser": "^0.1.0", "points-on-curve": "^0.2.0", "points-on-path": "^0.2.1" } }, "sha512-2xSlLDKdsWyFxrveYWk9YQ/Y9UfK38EAMRNkYkMqYBJvPX8abCa9PN0x3w02H8Oa6/0bcZICJU+U95VumPqseg=="], @@ -3517,6 +3585,8 @@ "@visactor/vchart-theme-utils/@visactor/vchart/@visactor/vutils/eventemitter3": ["eventemitter3@4.0.7", "", {}, "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="], + "eslint/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], + "glob/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], "i18next-cli/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], @@ -3533,10 +3603,18 @@ "react-template/@visactor/vchart/@visactor/vutils/eventemitter3": ["eventemitter3@4.0.7", "", {}, "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="], + "react-template/eslint/file-entry-cache/flat-cache": ["flat-cache@3.2.0", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", "rimraf": "^3.0.2" } }, "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw=="], + + "react-template/eslint/globals/type-fest": ["type-fest@0.20.2", "", {}, "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="], + + "react-template/eslint/minimatch/brace-expansion": ["brace-expansion@1.1.15", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg=="], + "react-template/tailwindcss/chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], "react-template/tailwindcss/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + "rimraf/glob/minimatch/brace-expansion": ["brace-expansion@1.1.15", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg=="], + "simplify-geojson/concat-stream/readable-stream/string_decoder": ["string_decoder@0.10.31", "", {}, "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="], "i18next-cli/ora/string-width/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], diff --git a/web/default/.oxfmtrc.json b/web/default/.oxfmtrc.json deleted file mode 100644 index efba1d664080..000000000000 --- a/web/default/.oxfmtrc.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "$schema": "./node_modules/oxfmt/configuration_schema.json", - "arrowParens": "always", - "bracketSpacing": true, - "endOfLine": "lf", - "insertFinalNewline": true, - "jsxSingleQuote": true, - "printWidth": 80, - "quoteProps": "as-needed", - "semi": false, - "singleQuote": true, - "sortImports": true, - "sortPackageJson": true, - "sortTailwindcss": true, - "tabWidth": 2, - "trailingComma": "es5", - "ignorePatterns": [ - "node_modules", - "dist", - "build", - "coverage", - ".tanstack", - ".eslintrc.cjs", - "**/routeTree.gen.ts", - "src/routeTree.gen.ts" - ] -} diff --git a/web/default/.oxlintrc.json b/web/default/.oxlintrc.json deleted file mode 100644 index 2bbca9da35be..000000000000 --- a/web/default/.oxlintrc.json +++ /dev/null @@ -1,207 +0,0 @@ -{ - "$schema": "./node_modules/oxlint/configuration_schema.json", - "plugins": ["typescript", "unicorn", "oxc", "react", "import", "promise"], - "categories": { - "correctness": "error" - }, - "env": { - "browser": true, - "builtin": true, - "es2024": true, - "node": true - }, - "ignorePatterns": [ - "node_modules", - "dist", - "build", - "coverage", - ".tanstack", - ".eslintrc.cjs", - "src/components/ui", - "src/routeTree.gen.ts" - ], - "rules": { - "curly": ["error", "multi-line"], - "eqeqeq": [ - "error", - "always", - { - "null": "ignore" - } - ], - "import/first": "warn", - "import/newline-after-import": "warn", - "import/no-cycle": "warn", - "import/no-duplicates": [ - "error", - { - "preferInline": true - } - ], - "import/no-unassigned-import": "off", - "no-array-constructor": "error", - "no-console": "warn", - "no-duplicate-imports": "error", - "no-nested-ternary": "error", - "no-new-wrappers": "error", - "no-regex-spaces": "error", - "no-unsafe-finally": "warn", - "no-unsafe-negation": "error", - "no-unused-expressions": "warn", - "no-unused-labels": "error", - "no-unused-vars": [ - "warn", - { - "args": "all", - "argsIgnorePattern": "^_", - "caughtErrors": "all", - "caughtErrorsIgnorePattern": "^_", - "destructuredArrayIgnorePattern": "^_", - "varsIgnorePattern": "^_", - "ignoreRestSiblings": true - } - ], - "no-useless-catch": "warn", - "no-useless-computed-key": "error", - "no-useless-escape": "warn", - "no-useless-rename": "warn", - "no-var": "warn", - "object-shorthand": "warn", - "oxc/const-comparisons": "error", - "prefer-const": "warn", - "prefer-object-has-own": "warn", - "prefer-object-spread": "warn", - "prefer-template": "warn", - "promise/catch-or-return": "error", - "promise/no-callback-in-promise": "error", - "promise/no-new-statics": "error", - "promise/no-return-wrap": "warn", - "promise/valid-params": "warn", - "react/button-has-type": "error", - "react/checked-requires-onchange-or-readonly": "warn", - "react/exhaustive-deps": "error", - "react/iframe-missing-sandbox": "error", - "react/jsx-boolean-value": "warn", - "react/jsx-curly-brace-presence": "warn", - "react/jsx-fragments": "warn", - "react/jsx-key": "warn", - "react/jsx-no-duplicate-props": "error", - "react/jsx-no-target-blank": "warn", - "react/jsx-no-undef": "error", - "react/jsx-no-useless-fragment": "error", - "react/jsx-props-no-spread-multi": "warn", - "react/no-array-index-key": "error", - "react/no-danger": "warn", - "react/no-unknown-property": "warn", - "react/no-unstable-nested-components": [ - "error", - { - "allowAsProps": true - } - ], - "react/only-export-components": [ - "error", - { - "allowConstantExport": true, - "allowExportNames": [ - "getAuthSectionNavItems", - "getAuthSectionContent", - "getAuthSectionMeta", - "getBillingSectionNavItems", - "getBillingSectionContent", - "getBillingSectionMeta", - "getContentSectionNavItems", - "getContentSectionContent", - "getContentSectionMeta", - "getDashboardSectionNavItems", - "getModelsSectionNavItems", - "getModelsSectionContent", - "getModelsSectionMeta", - "getOperationsSectionNavItems", - "getOperationsSectionContent", - "getOperationsSectionMeta", - "getSecuritySectionNavItems", - "getSecuritySectionContent", - "getSecuritySectionMeta", - "getSiteSectionNavItems", - "getSiteSectionContent", - "getSiteSectionMeta", - "getUsageLogsSectionNavItems", - "isUsageLogsSectionId", - "useSuppressSettingsSectionHeader" - ] - } - ], - "react/react-in-jsx-scope": "off", - "react/rules-of-hooks": "warn", - "react/self-closing-comp": "warn", - "typescript/consistent-type-imports": [ - "error", - { - "prefer": "type-imports", - "fixStyle": "inline-type-imports", - "disallowTypeAnnotations": false - } - ], - "typescript/no-duplicate-type-constituents": "error", - "typescript/no-explicit-any": "warn", - "typescript/no-extra-non-null-assertion": "error", - "typescript/no-import-type-side-effects": "error", - "typescript/no-non-null-assertion": "error", - "typescript/no-require-imports": "error", - "typescript/no-unnecessary-template-expression": "error", - "typescript/no-unnecessary-type-arguments": "error", - "typescript/no-unnecessary-type-assertion": "error", - "typescript/no-useless-empty-export": "error", - "typescript/no-wrapper-object-types": "error", - "typescript/prefer-as-const": "error", - "typescript/prefer-namespace-keyword": "error", - "unicorn/no-single-promise-in-promise-methods": "error", - "unicorn/no-unnecessary-await": "error", - "unicorn/no-useless-fallback-in-spread": "warn", - "unicorn/no-useless-length-check": "warn", - "unicorn/no-useless-promise-resolve-reject": "warn", - "unicorn/no-useless-spread": "error", - "unicorn/prefer-add-event-listener": "warn", - "unicorn/prefer-array-find": "warn", - "unicorn/prefer-array-flat": "warn", - "unicorn/prefer-array-flat-map": "warn", - "unicorn/prefer-array-index-of": "warn", - "unicorn/prefer-array-some": "warn", - "unicorn/prefer-at": "error", - "unicorn/prefer-date-now": "warn", - "unicorn/prefer-includes": "warn", - "unicorn/prefer-keyboard-event-key": "warn", - "unicorn/prefer-modern-dom-apis": "warn", - "unicorn/prefer-module": "warn", - "unicorn/prefer-node-protocol": "warn", - "unicorn/prefer-number-properties": "warn", - "unicorn/prefer-object-from-entries": "warn", - "unicorn/prefer-optional-catch-binding": "error", - "unicorn/prefer-query-selector": "warn", - "unicorn/prefer-regexp-test": "warn", - "unicorn/prefer-set-has": "warn", - "unicorn/prefer-spread": "error", - "unicorn/prefer-string-replace-all": "error", - "unicorn/prefer-string-slice": "warn", - "unicorn/prefer-string-starts-ends-with": "warn", - "unicorn/prefer-string-trim-start-end": "warn", - "unicorn/prefer-structured-clone": "warn", - "unicorn/throw-new-error": "error" - }, - "overrides": [ - { - "files": ["src/routes/**/*.{ts,tsx}"], - "rules": { - "react/only-export-components": "off" - } - }, - { - "files": ["**/scripts/**/*.{js,mjs,cjs}"], - "rules": { - "no-console": "off", - "prefer-node-protocol": "off" - } - } - ] -} diff --git a/web/default/.prettierignore b/web/default/.prettierignore new file mode 100644 index 000000000000..dc943a1cdb93 --- /dev/null +++ b/web/default/.prettierignore @@ -0,0 +1,18 @@ +# Ignore everything +/* + +# Except these files & folders +!/src +!index.html +!package.json +!tailwind.config.js +!tsconfig.json +!tsconfig.node.json +!vite.config.ts +!.prettierrc +!README.md +!eslint.config.js +!postcss.config.js + +# Ignore auto generated routeTree.gen.ts +/src/routeTree.gen.ts \ No newline at end of file diff --git a/web/default/.prettierrc b/web/default/.prettierrc new file mode 100644 index 000000000000..801392e3787f --- /dev/null +++ b/web/default/.prettierrc @@ -0,0 +1,49 @@ +{ + "arrowParens": "always", + "semi": false, + "tabWidth": 2, + "printWidth": 80, + "singleQuote": true, + "jsxSingleQuote": true, + "trailingComma": "es5", + "bracketSpacing": true, + "endOfLine": "lf", + "plugins": [ + "@trivago/prettier-plugin-sort-imports", + "prettier-plugin-tailwindcss" + ], + "importOrder": [ + "^path$", + "^vite$", + "^@vitejs/(.*)$", + "^react$", + "^react-dom/client$", + "^react/(.*)$", + "^globals$", + "^zod$", + "^axios$", + "^dayjs$", + "^react-hook-form$", + "^use-intl$", + "^@radix-ui/(.*)$", + "^@hookform/resolvers/zod$", + "^@tanstack/react-query$", + "^@tanstack/react-router$", + "^@tanstack/react-table$", + "", + "^@/assets/(.*)", + "^@/api/(.*)$", + "^@/stores/(.*)$", + "^@/lib/(.*)$", + "^@/utils/(.*)$", + "^@/constants/(.*)$", + "^@/context/(.*)$", + "^@/hooks/(.*)$", + "^@/components/layouts/(.*)$", + "^@/components/ui/(.*)$", + "^@/components/errors/(.*)$", + "^@/components/(.*)$", + "^@/features/(.*)$", + "^[./]" + ] +} diff --git a/web/default/AGENTS.md b/web/default/AGENTS.md index 194294f8e461..01a2407f89b1 100644 --- a/web/default/AGENTS.md +++ b/web/default/AGENTS.md @@ -20,7 +20,7 @@ | UI 与样式 | Base UI、Hugeicons、Tailwind CSS、clsx / class-variance-authority | | 表单 | React Hook Form、Zod | | 图表 | @visactor/vchart、@visactor/react-vchart | -| 工具 | qrcode.react、oxfmt、oxlint、vitest(可选)| +| 工具 | qrcode.react、prettier、eslint、vitest(可选)| 优先选用成熟、维护良好的开源库;仅在现有库无法满足或需特殊适配时自行实现,并评估可维护性与通用性。 @@ -145,9 +145,6 @@ - 工具函数与纯逻辑优先单元测试(Vitest),测试文件 `*.test.ts`;组件用 React Testing Library 测交互与行为,避免测实现细节。 - 关键流程补充集成与 E2E(如 MSW 模拟 API、Playwright/Cypress);核心功能目标覆盖率 80% 以上,关注业务路径与关键分支。 -- 测试必须保护真实用户行为、稳定 API 契约或明确回归路径;禁止为了覆盖率添加 smoke、sleep/timing、随机输入、日志输出或只证明代码运行的测试。 -- 新增或大幅重写测试时优先使用 Vitest 与 React Testing Library 的标准断言和查询方式,避免手写通用断言辅助函数;只有表达项目特定业务不变量时才抽取测试 helper。 -- 清理测试时先合并重复场景、删除不明不白的实现细节断言;若旧测试间接覆盖了真实契约,需替换为更小、更直接的行为测试。 ### 3.15 依赖管理 diff --git a/web/default/eslint.config.js b/web/default/eslint.config.js new file mode 100644 index 000000000000..01c3456dd12d --- /dev/null +++ b/web/default/eslint.config.js @@ -0,0 +1,67 @@ +import globals from 'globals' +import js from '@eslint/js' +import pluginQuery from '@tanstack/eslint-plugin-query' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import { defineConfig } from 'eslint/config' +import tseslint from 'typescript-eslint' + +export default defineConfig( + { ignores: ['dist', 'src/components/ui'] }, + { + extends: [ + js.configs.recommended, + ...tseslint.configs.recommended, + ...pluginQuery.configs['flat/recommended'], + ], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-hooks/incompatible-library': 'off', + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + 'no-console': 'error', + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': [ + 'error', + { + args: 'all', + argsIgnorePattern: '^_', + caughtErrors: 'all', + caughtErrorsIgnorePattern: '^_', + destructuredArrayIgnorePattern: '^_', + varsIgnorePattern: '^_', + ignoreRestSiblings: true, + }, + ], + '@typescript-eslint/consistent-type-imports': [ + 'error', + { + prefer: 'type-imports', + fixStyle: 'inline-type-imports', + disallowTypeAnnotations: false, + }, + ], + 'no-duplicate-imports': 'error', + }, + }, + { + files: ['src/routes/**/*.{ts,tsx}'], + plugins: { + 'react-refresh': reactRefresh, + }, + rules: { + 'react-refresh/only-export-components': 'off', + }, + } +) diff --git a/web/default/index.html b/web/default/index.html index d3468f191792..ed041d27f886 100644 --- a/web/default/index.html +++ b/web/default/index.html @@ -14,8 +14,6 @@ /> - - diff --git a/web/default/package.json b/web/default/package.json index d7deddac8aa6..2bc41ba8b649 100644 --- a/web/default/package.json +++ b/web/default/package.json @@ -1,107 +1,101 @@ { "name": "newapi-web", - "version": "1.0.0", "private": false, + "version": "1.0.0", "type": "module", "scripts": { "dev": "rsbuild dev", "build": "rsbuild build", "build:check": "tsc -b && rsbuild build", "typecheck": "tsc -b", - "lint": "oxlint -c .oxlintrc.json .", - "lint:fix": "oxlint -c .oxlintrc.json . --fix", + "lint": "eslint .", "preview": "rsbuild preview", - "format:check": "node scripts/format-with-protected-headers.mjs --check", - "format": "node scripts/format-with-protected-headers.mjs --write", + "format:check": "prettier --check .", + "format": "prettier --write .", "copyright:check": "node scripts/add-copyright.mjs --check", "copyright": "node scripts/add-copyright.mjs", "i18n:sync": "node scripts/sync-i18n.mjs", "knip": "knip" }, "dependencies": { - "@base-ui/react": "^1.5.0", - "@fontsource-variable/lora": "^5.2.8", + "@base-ui/react": "^1.4.1", "@fontsource-variable/public-sans": "^5.2.7", - "@hookform/resolvers": "^5.4.0", - "@hugeicons/core-free-icons": "^4.1.4", + "@hookform/resolvers": "^5.2.2", + "@hugeicons/core-free-icons": "^4.1.1", "@hugeicons/react": "^1.1.6", - "@lobehub/icons": "catalog:", - "@tailwindcss/postcss": "^4.3.0", - "@tanstack/react-query": "^5.100.14", - "@tanstack/react-router": "^1.170.8", + "@lobehub/icons": "^4.0.3", + "@radix-ui/react-icons": "^1.3.2", + "@tailwindcss/postcss": "^4.2.2", + "@tanstack/react-query": "^5.95.2", + "@tanstack/react-router": "^1.168.23", "@tanstack/react-table": "^8.21.3", - "@tanstack/react-virtual": "^3.13.25", - "@visactor/react-vchart": "^2.0.22", - "@visactor/vchart": "^2.0.22", - "ai": "^6.0.191", + "@tanstack/react-virtual": "^3.13.18", + "@visactor/react-vchart": "^2.0.13", + "@visactor/vchart": "^2.0.13", + "ai": "^6.0.27", "auto-skeleton-react": "^1.0.5", - "axios": "catalog:", + "axios": "^1.13.6", "class-variance-authority": "^0.7.1", - "clsx": "catalog:", + "clsx": "^2.1.1", "cmdk": "^1.1.1", - "date-fns": "^4.3.0", - "dayjs": "catalog:", - "i18next": "^26.2.0", - "i18next-browser-languagedetector": "^8.2.1", + "date-fns": "^4.1.0", + "dayjs": "^1.11.19", + "i18next": "^25.7.4", + "i18next-browser-languagedetector": "^8.2.0", "input-otp": "^1.4.2", - "lucide-react": "^1.16.0", - "motion": "^12.40.0", - "nanoid": "^5.1.11", + "lucide-react": "^1.7.0", + "motion": "^12.38.0", + "nanoid": "^5.1.6", "next-themes": "^0.4.6", - "qrcode.react": "catalog:", - "react": "^19.2.6", - "react-day-picker": "^10.0.1", - "react-dom": "^19.2.6", - "react-hook-form": "^7.76.1", - "react-i18next": "^17.0.8", - "react-icons": "catalog:", - "react-markdown": "catalog:", - "react-resizable-panels": "^4.11.2", + "qrcode.react": "^4.2.0", + "react": "^19.2.4", + "react-day-picker": "^9.14.0", + "react-dom": "^19.2.4", + "react-hook-form": "^7.71.0", + "react-i18next": "^16.5.2", + "react-icons": "^5.5.0", + "react-markdown": "^10.1.0", + "react-resizable-panels": "^4.11.0", "react-top-loading-bar": "^3.0.2", - "recharts": "3.8.1", + "recharts": "3.8.0", "rehype-raw": "^7.0.0", - "remark-gfm": "catalog:", - "shiki": "^4.1.0", + "remark-gfm": "^4.0.1", + "shiki": "^4.0.2", "sonner": "^2.0.7", - "sse.js": "catalog:", - "streamdown": "^2.5.0", - "tailwind-merge": "^3.6.0", - "tailwindcss": "^4.3.0", + "sse.js": "^2.7.2", + "streamdown": "^2.0.1", + "tailwind-merge": "^3.5.0", + "tailwindcss": "^4.2.2", "tokenlens": "^1.3.1", "tw-animate-css": "^1.4.0", - "use-stick-to-bottom": "^1.1.4", + "use-stick-to-bottom": "^1.1.1", "vaul": "^1.1.2", - "zod": "^4.4.3", - "zustand": "^5.0.13" + "zod": "^4.3.6", + "zustand": "^5.0.12" }, "devDependencies": { - "@rsbuild/core": "^2.0.7", + "@eslint/js": "^10.0.1", + "@rsbuild/core": "^2.0.1", "@rsbuild/plugin-react": "^2.0.0", - "@tanstack/react-query-devtools": "^5.100.14", - "@tanstack/react-router-devtools": "^1.167.0", - "@tanstack/router-plugin": "^1.168.11", - "@types/node": "^25.9.1", - "@types/react": "^19.2.15", + "@tanstack/eslint-plugin-query": "^5.95.2", + "@tanstack/react-query-devtools": "^5.95.2", + "@tanstack/react-router-devtools": "^1.166.13", + "@tanstack/router-plugin": "^1.167.23", + "@trivago/prettier-plugin-sort-imports": "^6.0.2", + "@types/node": "^25.5.0", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@xyflow/react": "^12.10.2", "embla-carousel-react": "^8.6.0", - "knip": "^6.14.2", - "oxfmt": "catalog:", - "oxlint": "catalog:", - "shadcn": "^4.8.0", - "typescript": "~6.0.3" - }, - "overrides": { - "brace-expansion": "2.1.1", - "dompurify": "3.4.5", - "fast-uri": "3.1.2", - "hono": "4.12.22", - "ip-address": "10.2.0", - "js-cookie": "3.0.7", - "mermaid": "11.15.0", - "minimist": "1.2.8", - "postcss": "8.5.15", - "qs": "6.15.2", - "uuid": "14.0.0" + "eslint": "^10.1.0", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.5.2", + "globals": "^17.4.0", + "knip": "^6.0.6", + "prettier": "^3.8.1", + "prettier-plugin-tailwindcss": "^0.7.2", + "shadcn": "^3.7.0", + "typescript": "~5.9.3", + "typescript-eslint": "^8.57.2" } } diff --git a/web/default/public/waffo-logo-dark.svg b/web/default/public/waffo-logo-dark.svg deleted file mode 100644 index 18b5df03c621..000000000000 --- a/web/default/public/waffo-logo-dark.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/web/default/public/waffo-logo-light.svg b/web/default/public/waffo-logo-light.svg deleted file mode 100644 index a7bdce05a8ed..000000000000 --- a/web/default/public/waffo-logo-light.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/web/default/rsbuild.config.ts b/web/default/rsbuild.config.ts index 4839bfce0ae7..f1a0855555ca 100644 --- a/web/default/rsbuild.config.ts +++ b/web/default/rsbuild.config.ts @@ -65,7 +65,7 @@ export default defineConfig(({ envMode }) => { }, server: { host: '0.0.0.0', - strictPort: false, + port: 3001, proxy: devProxy, }, output: { diff --git a/web/default/scripts/format-with-protected-headers.mjs b/web/default/scripts/format-with-protected-headers.mjs deleted file mode 100644 index 46a1d191980b..000000000000 --- a/web/default/scripts/format-with-protected-headers.mjs +++ /dev/null @@ -1,172 +0,0 @@ -/* -Copyright (C) 2023-2026 QuantumNous - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . - -For commercial licensing, please contact support@quantumnous.com -*/ -import { spawnSync } from 'node:child_process' -import { readdirSync, readFileSync, statSync, writeFileSync } from 'node:fs' -import { join, relative } from 'node:path' - -const mode = process.argv[2] - -if (mode !== '--check' && mode !== '--write') { - console.error( - 'Usage: node scripts/format-with-protected-headers.mjs --check|--write' - ) - process.exit(2) -} - -const root = process.cwd() -const excludedDirs = new Set([ - '.git', - '.tanstack', - 'build', - 'coverage', - 'dist', - 'node_modules', -]) -const headerExtensions = new Set([ - '.cjs', - '.cts', - '.js', - '.jsx', - '.mjs', - '.mts', - '.ts', - '.tsx', -]) -const protectedHeaderPattern = - /^\/\*\nCopyright \(C\)[\s\S]*?QuantumNous[\s\S]*?\*\/\n+/ - -function extensionOf(path) { - const index = path.lastIndexOf('.') - return index === -1 ? '' : path.slice(index) -} - -function walk(dir, files = []) { - for (const entry of readdirSync(dir, { withFileTypes: true })) { - if (entry.isDirectory()) { - if (!excludedDirs.has(entry.name)) { - walk(join(dir, entry.name), files) - } - continue - } - - if (entry.isFile()) { - files.push(join(dir, entry.name)) - } - } - - return files -} - -function snapshotFiles(files) { - const snapshot = new Map() - for (const file of files) { - snapshot.set(file, readFileSync(file)) - } - return snapshot -} - -function restoreSnapshot(snapshot) { - for (const [file, content] of snapshot) { - writeFileSync(file, content) - } -} - -function stripProtectedHeaders(files) { - const headers = new Map() - - for (const file of files) { - if (!headerExtensions.has(extensionOf(file))) { - continue - } - - const content = readFileSync(file, 'utf8') - const match = content.match(protectedHeaderPattern) - if (!match) { - continue - } - - headers.set(file, match[0]) - writeFileSync(file, content.slice(match[0].length)) - } - - return headers -} - -function restoreProtectedHeaders(headers) { - for (const [file, header] of headers) { - const content = readFileSync(file, 'utf8').replace(/^\n+/, '') - if (!content.startsWith(header)) { - writeFileSync(file, header + content) - } - } -} - -function listChangedFiles(before, files) { - const changed = [] - - for (const file of files) { - const previous = before.get(file) - const current = readFileSync(file) - if (!previous || !previous.equals(current)) { - changed.push(relative(root, file)) - } - } - - return changed -} - -const files = walk(root).filter( - (file) => statSync(file).size < 10 * 1024 * 1024 -) -const before = mode === '--check' ? snapshotFiles(files) : null -let headers = new Map() -let exitCode = 0 - -try { - headers = stripProtectedHeaders(files) - const result = spawnSync( - 'oxfmt', - ['-c', '.oxfmtrc.json', '--ignore-path', '.gitignore', '--write', '.'], - { - cwd: root, - stdio: 'inherit', - } - ) - exitCode = result.status ?? 1 - restoreProtectedHeaders(headers) - - if (mode === '--check' && exitCode === 0) { - const changed = listChangedFiles(before, files) - if (changed.length > 0) { - console.error('Format issues found in protected-header-safe check:') - for (const file of changed) { - console.error(file) - } - exitCode = 1 - } - } -} finally { - if (mode === '--check' && before) { - restoreSnapshot(before) - } else { - restoreProtectedHeaders(headers) - } -} - -process.exit(exitCode) diff --git a/web/default/scripts/sync-i18n.mjs b/web/default/scripts/sync-i18n.mjs index 3235a9ec1e09..b91951f9db25 100644 --- a/web/default/scripts/sync-i18n.mjs +++ b/web/default/scripts/sync-i18n.mjs @@ -29,91 +29,6 @@ const OBFUSCATED_KEYS = [ }, ] -const BRAND_AND_LITERAL_KEYS = new Set([ - 'AI Proxy', - 'AIGC2D', - 'Alipay', - 'Anthropic', - 'API URL', - 'API2GPT', - 'AccessKey / SecretAccessKey', - 'AZURE_OPENAI_ENDPOINT *', - 'Baidu V2', - 'CC Switch', - 'ChatGPT', - 'ChatGPT Subscription (Codex)', - 'Claude', - 'Client ID', - 'Client Secret', - 'Cloudflare', - 'Cohere', - 'DeepSeek', - 'Discord', - 'DoubaoVideo', - 'FastGPT', - 'Gemini', - 'Gemini Image 4K', - 'GitHub', - 'Jimeng', - 'JustSong', - 'LingYiWanWu', - 'LinuxDO', - 'MjProxy', - 'MjProxyPlus', - 'MiniMax', - 'Mistral', - 'MokaAI', - 'Moonshot', - 'New API', - 'New API <noreply@example.com>', - 'NewAPI', - 'OAuth Client Secret', - 'OhMyGPT', - 'Ollama', - 'One API', - 'OpenAI', - 'OpenAIMax', - 'OpenRouter', - 'Pancake', - 'Passkey', - 'Perplexity', - 'QuantumNous', - 'Quota:', - 'Replicate', - 'SiliconFlow', - 'Stripe', - 'Submodel', - 'SunoAPI', - 'Telegram', - 'Tencent', - 'TTFT P50', - 'TTFT P95', - 'TTFT P99', - 'Uptime Kuma', - 'Uptime Kuma URL', - 'Vertex AI', - 'VolcEngine', - 'Waffo Pancake Dashboard', - 'Waffo Pancake MoR', - 'WeChat', - 'WeChat Pay', - 'Webhook URL', - 'Webhook URL:', - 'Well-Known URL', - 'Worker URL', - 'Xinference', - 'Xunfei', - 'Zhipu V4', - '"default": "us-central1", "claude-3-5-sonnet-20240620": "europe-west1"', - 'edit_this', - 'footer.columns.related.links.midjourney', - 'footer.columns.related.links.newApiKeyTool', - 'my-status', - 'new-api-key-tool', - 'price_xxx', - 'whsec_xxx', -]) - function isPlainObject(v) { return typeof v === 'object' && v !== null && !Array.isArray(v) } @@ -182,24 +97,6 @@ function isLikelyUntranslated({ locale, baseValue, value }) { // Skip short tokens / acronyms / ids const s = baseValue.trim() - if (BRAND_AND_LITERAL_KEYS.has(s)) return false - if ( - /^https?:\/\//.test(s) || - /^\/[\w/-]+/.test(s) || - /^[\w.-]+@[\w.-]+$/.test(s) || - /^smtp\./i.test(s) || - /^socks5:/i.test(s) || - /^org-/.test(s) || - /^gpt-/i.test(s) || - /^checkout\./.test(s) || - /^footer\./.test(s) || - /^[A-Z0-9_ *./:-]+$/.test(s) || - s.startsWith('{') || - s.startsWith('[') || - s.includes(' ') - ) { - return false - } if (s.length < 6) return false if (!/[A-Za-z]{3,}/.test(s)) return false @@ -290,8 +187,6 @@ async function main() { if (Object.keys(extras).length > 0) { await fs.writeFile(path.join(extrasDir, `${locale}.extras.json`), stableStringify(extras), 'utf8') - } else { - await fs.rm(path.join(extrasDir, `${locale}.extras.json`), { force: true }) } if (Object.keys(untranslated).length > 0) { await fs.writeFile( @@ -299,8 +194,6 @@ async function main() { stableStringify(untranslated), 'utf8', ) - } else { - await fs.rm(path.join(reportsDir, `${locale}.untranslated.json`), { force: true }) } // Rewrite locale file in base order (even for en to normalize formatting) @@ -308,12 +201,11 @@ async function main() { } await fs.writeFile(path.join(reportsDir, '_sync-report.json'), stableStringify(report), 'utf8') - + console.log(`i18n sync done. Report: ${path.join(reportsDir, '_sync-report.json')}`) } main().catch((err) => { - console.error(err) process.exitCode = 1 }) diff --git a/web/default/src/components/ai-elements/code-block.tsx b/web/default/src/components/ai-elements/code-block.tsx index 69bcb1560595..6872f2e19c37 100644 --- a/web/default/src/components/ai-elements/code-block.tsx +++ b/web/default/src/components/ai-elements/code-block.tsx @@ -52,7 +52,7 @@ const CodeBlockContext = createContext({ const lineNumberTransformer: ShikiTransformer = { name: 'line-numbers', - line(node, line) { + line(node, line: number) { node.children.unshift({ type: 'element', tagName: 'span', diff --git a/web/default/src/components/auto-open-notifications.tsx b/web/default/src/components/auto-open-notifications.tsx new file mode 100644 index 000000000000..fc49ef3845e5 --- /dev/null +++ b/web/default/src/components/auto-open-notifications.tsx @@ -0,0 +1,181 @@ +/* +Copyright (C) 2023-2026 QuantumNous + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + +For commercial licensing, please contact support@quantumnous.com +*/ +import { useCallback, useEffect, useRef, useState } from 'react' +import { useRouterState } from '@tanstack/react-router' +import { useNotificationStore } from '@/stores/notification-store' +import { getNotice, getStatus } from '@/lib/api' +import { + AUTO_OPEN_NOTIFICATIONS_EVENT, + AUTO_OPEN_NOTIFICATIONS_STORAGE_KEY, +} from '@/lib/notification-auto-open' +import { getAnnouncementKey } from '@/lib/notification-key' +import { NotificationDialog } from '@/components/notification-dialog' + +type NotificationTab = 'notice' | 'announcements' + +type NotificationSnapshot = { + notice: string + announcements: Record[] +} + +function getAnnouncementsFromStatus( + status: Record | null +): Record[] { + if (!status?.announcements_enabled) return [] + + return ((status.announcements || []) as Record[]).slice( + 0, + 20 + ) +} + +export function AutoOpenNotifications() { + const pathname = useRouterState({ + select: (state) => state.location.pathname, + }) + const [dialogOpen, setDialogOpen] = useState(false) + const [activeTab, setActiveTab] = useState('notice') + const [snapshot, setSnapshot] = useState({ + notice: '', + announcements: [], + }) + const [loading, setLoading] = useState(false) + const checkingRef = useRef(false) + + const { + markNoticeRead, + markAnnouncementsRead, + setClosedUntilDate, + } = useNotificationStore() + + const openSnapshot = useCallback( + (nextSnapshot: NotificationSnapshot, tab: NotificationTab) => { + if (nextSnapshot.notice) { + markNoticeRead(nextSnapshot.notice) + } + + if (tab === 'announcements' && nextSnapshot.announcements.length > 0) { + markAnnouncementsRead( + nextSnapshot.announcements.map((item) => getAnnouncementKey(item)) + ) + } + + setSnapshot(nextSnapshot) + setActiveTab(tab) + setDialogOpen(true) + }, + [markAnnouncementsRead, markNoticeRead] + ) + + const checkAndOpenUnread = useCallback(async () => { + if (checkingRef.current) return + checkingRef.current = true + window.sessionStorage.removeItem(AUTO_OPEN_NOTIFICATIONS_STORAGE_KEY) + setLoading(true) + + try { + const [status, noticeResponse] = await Promise.all([ + getStatus().catch(() => null), + getNotice().catch(() => null), + ]) + + const notice = noticeResponse?.success + ? (noticeResponse.data || '').trim() + : '' + const announcements = getAnnouncementsFromStatus(status) + const store = useNotificationStore.getState() + + const hasUnreadNotice = Boolean( + notice && notice !== store.lastReadNotice + ) + const hasUnreadAnnouncement = announcements.some((item) => { + const key = getAnnouncementKey(item) + return key && !store.isAnnouncementRead(key) + }) + + if (!hasUnreadNotice && !hasUnreadAnnouncement) return + + openSnapshot( + { notice, announcements }, + hasUnreadNotice ? 'notice' : 'announcements' + ) + } finally { + checkingRef.current = false + setLoading(false) + } + }, [openSnapshot]) + + useEffect(() => { + const onAutoOpen = () => { + void checkAndOpenUnread() + } + + window.addEventListener(AUTO_OPEN_NOTIFICATIONS_EVENT, onAutoOpen) + + if ( + window.sessionStorage.getItem(AUTO_OPEN_NOTIFICATIONS_STORAGE_KEY) === + '1' + ) { + void checkAndOpenUnread() + } + + return () => { + window.removeEventListener(AUTO_OPEN_NOTIFICATIONS_EVENT, onAutoOpen) + } + }, [checkAndOpenUnread]) + + useEffect(() => { + if ( + window.sessionStorage.getItem(AUTO_OPEN_NOTIFICATIONS_STORAGE_KEY) !== + '1' + ) { + return + } + + void checkAndOpenUnread() + }, [checkAndOpenUnread, pathname]) + + const handleTabChange = (tab: NotificationTab) => { + setActiveTab(tab) + + if (tab === 'announcements' && snapshot.announcements.length > 0) { + markAnnouncementsRead( + snapshot.announcements.map((item) => getAnnouncementKey(item)) + ) + } + } + + const handleCloseToday = () => { + setClosedUntilDate(new Date().toDateString()) + setDialogOpen(false) + } + + return ( + + ) +} diff --git a/web/default/src/components/command-menu.tsx b/web/default/src/components/command-menu.tsx index 692cf8631e23..66af025f28e8 100644 --- a/web/default/src/components/command-menu.tsx +++ b/web/default/src/components/command-menu.tsx @@ -33,7 +33,7 @@ import { CommandList, CommandSeparator, } from '@/components/ui/command' -import { getNavGroupsForPath } from './layout/lib/sidebar-view-registry' +import { getNavGroupsForPath } from './layout/lib/workspace-registry' import { ScrollArea } from './ui/scroll-area' export function CommandMenu() { @@ -44,9 +44,8 @@ export function CommandMenu() { const { pathname } = useLocation() const sidebarData = useSidebarData() - // Use the active nested sidebar view's nav groups when one matches - // the current URL; otherwise fall back to the root navigation. - const navGroups = getNavGroupsForPath(pathname, t) ?? sidebarData.navGroups + // 根据当前路径从工作区注册表获取对应的侧边栏配置 + const navGroups = getNavGroupsForPath(pathname, t) || sidebarData.navGroups const runCommand = React.useCallback( (command: () => unknown) => { diff --git a/web/default/src/components/config-drawer.tsx b/web/default/src/components/config-drawer.tsx index 102736787db7..c18d682e4858 100644 --- a/web/default/src/components/config-drawer.tsx +++ b/web/default/src/components/config-drawer.tsx @@ -34,7 +34,6 @@ import { IconThemeSystem } from '@/assets/custom/icon-theme-system' import { type ContentLayout, THEME_PRESETS, - type ThemeFont, type ThemePreset, type ThemeRadius, type ThemeScale, @@ -54,12 +53,6 @@ import { SheetTitle, SheetTrigger, } from '@/components/ui/sheet' -import { - sideDrawerContentClassName, - sideDrawerFooterClassName, - sideDrawerFormClassName, - sideDrawerHeaderClassName, -} from '@/components/drawer-layout' import { useSidebar } from './ui/sidebar' const Item = RadioPrimitive.Root @@ -95,17 +88,16 @@ export function ConfigDrawer() { >