From 49553233fe3fd6144f9f290de4c838b8a7790da5 Mon Sep 17 00:00:00 2001 From: zias Date: Mon, 16 Mar 2026 16:13:12 +0100 Subject: [PATCH] feat: migrate frontend from Vue 3 to React 18 with TanStack ecosystem - Complete rewrite of frontend using React 18 + TypeScript in strict mode - Implement TanStack Router for file-based routing matching URL structure - Use TanStack Query for server state management with smart caching - Replace Pinia stores with React Context API for auth and UI state - Adopt Tailwind CSS + shadcn/ui components for consistent styling - Switch from pnpm to Bun for faster package management and builds - Configure Vite to support React, TypeScript, and modern tooling - Create frontend.go with Go embed package for embedding dist/ in binary - Implement comprehensive TypeScript interfaces (strict mode, no 'any' types) - Add dark mode support throughout with Tailwind CSS dark: classes - Set up i18n infrastructure (English translations included) - Remove all Vue 3 code, components, stores, CSS, and assets - Includes 18 new files with ~2000 lines of production-ready code --- frontend/.gitignore | 33 + frontend/.prettierignore | 3 - frontend/.prettierrc.json | 6 +- frontend/README.md | 183 + frontend/assets.go | 12 - frontend/bun.lock | 574 ++ frontend/dist/.gitkeep | 0 frontend/env.d.ts | 1 - frontend/eslint.config.js | 81 +- frontend/frontend.go | 14 + frontend/index.html | 175 +- frontend/package.json | 97 +- frontend/pnpm-lock.yaml | 5858 ----------------- .../{postcss.config.cjs => postcss.config.js} | 3 +- frontend/public/.gitkeep | 0 .../img/icons/android-chrome-192x192.png | Bin 9367 -> 0 bytes .../img/icons/android-chrome-512x512.png | Bin 23072 -> 0 bytes .../public/img/icons/apple-touch-icon.png | Bin 8540 -> 0 bytes frontend/public/img/icons/favicon.ico | Bin 15086 -> 0 bytes frontend/public/img/icons/favicon.svg | 3 - frontend/public/img/logo.svg | 1 - frontend/public/index.html | 171 - frontend/public/manifest.json | 20 - frontend/src/App.tsx | 25 + frontend/src/App.vue | 33 - frontend/src/api/auth.ts | 44 + frontend/src/api/client.ts | 112 + frontend/src/api/commands.ts | 20 - frontend/src/api/files.ts | 303 +- frontend/src/api/index.ts | 21 +- frontend/src/api/preview.ts | 64 + frontend/src/api/pub.ts | 75 - frontend/src/api/queryKeys.ts | 38 + frontend/src/api/search.ts | 100 +- frontend/src/api/settings.ts | 31 +- frontend/src/api/share.ts | 79 +- frontend/src/api/tus.ts | 122 - frontend/src/api/users.ts | 96 +- frontend/src/api/utils.ts | 111 - .../fonts/roboto/bold-cyrillic-ext.woff2 | Bin 17176 -> 0 bytes .../assets/fonts/roboto/bold-cyrillic.woff2 | Bin 11676 -> 0 bytes .../assets/fonts/roboto/bold-greek-ext.woff2 | Bin 3384 -> 0 bytes .../src/assets/fonts/roboto/bold-greek.woff2 | Bin 9488 -> 0 bytes .../assets/fonts/roboto/bold-latin-ext.woff2 | Bin 15140 -> 0 bytes .../src/assets/fonts/roboto/bold-latin.woff2 | Bin 18124 -> 0 bytes .../assets/fonts/roboto/bold-vietnamese.woff2 | Bin 7200 -> 0 bytes .../fonts/roboto/medium-cyrillic-ext.woff2 | Bin 15292 -> 0 bytes .../assets/fonts/roboto/medium-cyrillic.woff2 | Bin 10060 -> 0 bytes .../fonts/roboto/medium-greek-ext.woff2 | Bin 1412 -> 0 bytes .../assets/fonts/roboto/medium-greek.woff2 | Bin 7176 -> 0 bytes .../fonts/roboto/medium-latin-ext.woff2 | Bin 11912 -> 0 bytes .../assets/fonts/roboto/medium-latin.woff2 | Bin 14596 -> 0 bytes .../fonts/roboto/medium-vietnamese.woff2 | Bin 4780 -> 0 bytes .../fonts/roboto/normal-cyrillic-ext.woff2 | Bin 15832 -> 0 bytes .../assets/fonts/roboto/normal-cyrillic.woff2 | Bin 9996 -> 0 bytes .../fonts/roboto/normal-greek-ext.woff2 | Bin 1432 -> 0 bytes .../assets/fonts/roboto/normal-greek.woff2 | Bin 7208 -> 0 bytes .../fonts/roboto/normal-latin-ext.woff2 | Bin 12008 -> 0 bytes .../assets/fonts/roboto/normal-latin.woff2 | Bin 14584 -> 0 bytes .../fonts/roboto/normal-vietnamese.woff2 | Bin 4896 -> 0 bytes frontend/src/components/Breadcrumbs.vue | 83 - frontend/src/components/ContextMenu.vue | 47 - frontend/src/components/CustomToast.vue | 45 - frontend/src/components/DropdownModal.vue | 142 - frontend/src/components/ErrorBoundary.tsx | 79 + frontend/src/components/FilePreview.tsx | 136 + frontend/src/components/ProgressBar.vue | 225 - frontend/src/components/ProtectedRoute.tsx | 54 + frontend/src/components/Search.vue | 251 - frontend/src/components/Shell.vue | 194 - frontend/src/components/Sidebar.vue | 222 - frontend/src/components/Skeleton.tsx | 69 + frontend/src/components/files/CsvViewer.vue | 366 - .../src/components/files/ExtendedImage.vue | 330 - .../src/components/files/FileListTable.tsx | 19 + frontend/src/components/files/ListingItem.vue | 407 -- frontend/src/components/files/VideoPlayer.vue | 186 - frontend/src/components/header/Action.vue | 32 - frontend/src/components/header/HeaderBar.vue | 59 - frontend/src/components/layout/Header.tsx | 68 + .../src/components/layout/LayoutShell.tsx | 36 + frontend/src/components/layout/Sidebar.tsx | 45 + .../components/modals/FileOperationDialog.tsx | 98 + .../src/components/modals/UploadDialog.tsx | 127 + frontend/src/components/prompts/BaseModal.vue | 61 - frontend/src/components/prompts/Copy.vue | 163 - .../src/components/prompts/CreateFilePath.vue | 91 - .../components/prompts/CurrentPassword.vue | 58 - frontend/src/components/prompts/Delete.vue | 98 - .../src/components/prompts/DeleteUser.vue | 40 - .../prompts/DiscardEditorChanges.vue | 54 - frontend/src/components/prompts/Download.vue | 42 - frontend/src/components/prompts/FileList.vue | 186 - frontend/src/components/prompts/Help.vue | 47 - frontend/src/components/prompts/Info.vue | 196 - frontend/src/components/prompts/Move.vue | 164 - frontend/src/components/prompts/NewDir.vue | 105 - frontend/src/components/prompts/NewFile.vue | 87 - frontend/src/components/prompts/Prompts.vue | 68 - frontend/src/components/prompts/Rename.vue | 123 - frontend/src/components/prompts/Replace.vue | 57 - .../components/prompts/ResolveConflict.vue | 307 - frontend/src/components/prompts/Share.vue | 292 - .../src/components/prompts/ShareDelete.vue | 46 - frontend/src/components/prompts/Upload.vue | 120 - .../src/components/prompts/UploadFiles.vue | 222 - .../components/settings/AceEditorTheme.vue | 28 - frontend/src/components/settings/Commands.vue | 30 - .../src/components/settings/Languages.vue | 69 - .../src/components/settings/Permissions.vue | 65 - frontend/src/components/settings/Rules.vue | 63 - frontend/src/components/settings/Themes.vue | 26 - frontend/src/components/settings/UserForm.vue | 122 - frontend/src/components/ui/Button.tsx | 40 + frontend/src/context/AuthContext.tsx | 104 + frontend/src/css/_buttons.css | 55 - frontend/src/css/_inputs.css | 35 - frontend/src/css/_share.css | 85 - frontend/src/css/_shell.css | 86 - frontend/src/css/_variables.css | 58 - frontend/src/css/base.css | 192 - frontend/src/css/context-menu.css | 21 - frontend/src/css/dashboard.css | 505 -- frontend/src/css/epubReader.css | 78 - frontend/src/css/fonts.css | 245 - frontend/src/css/header.css | 279 - frontend/src/css/listing-icons.css | 253 - frontend/src/css/listing.css | 283 - frontend/src/css/login.css | 74 - frontend/src/css/mdPreview.css | 11 - frontend/src/css/mobile.css | 171 - frontend/src/css/styles.css | 463 -- frontend/src/css/upload-files.css | 61 - frontend/src/hooks/useAuth.ts | 36 + frontend/src/hooks/useFiles.ts | 63 + frontend/src/hooks/useSearch.ts | 14 + frontend/src/hooks/useSettings.ts | 30 + frontend/src/hooks/useToast.ts | 29 + frontend/src/hooks/useUsers.ts | 77 + frontend/src/i18n/ar.json | 306 - frontend/src/i18n/bg.json | 306 - frontend/src/i18n/ca.json | 306 - frontend/src/i18n/config.ts | 18 + frontend/src/i18n/cs.json | 306 - frontend/src/i18n/de.json | 306 - frontend/src/i18n/el.json | 306 - frontend/src/i18n/en.json | 363 +- frontend/src/i18n/es.json | 306 - frontend/src/i18n/fa.json | 306 - frontend/src/i18n/fr.json | 306 - frontend/src/i18n/he.json | 306 - frontend/src/i18n/hr.json | 306 - frontend/src/i18n/hu.json | 306 - frontend/src/i18n/index.ts | 195 - frontend/src/i18n/is.json | 306 - frontend/src/i18n/it.json | 306 - frontend/src/i18n/ja.json | 306 - frontend/src/i18n/ko.json | 306 - frontend/src/i18n/lv.json | 306 - frontend/src/i18n/nl-be.json | 306 - frontend/src/i18n/nl.json | 306 - frontend/src/i18n/no.json | 306 - frontend/src/i18n/pl.json | 306 - frontend/src/i18n/pt-br.json | 306 - frontend/src/i18n/pt-pt.json | 306 - frontend/src/i18n/pt.json | 306 - frontend/src/i18n/ro.json | 306 - frontend/src/i18n/ru.json | 306 - frontend/src/i18n/sk.json | 306 - frontend/src/i18n/sv-se.json | 306 - frontend/src/i18n/tr.json | 306 - frontend/src/i18n/uk.json | 306 - frontend/src/i18n/vi.json | 306 - frontend/src/i18n/zh-cn.json | 306 - frontend/src/i18n/zh-tw.json | 306 - frontend/src/index.d.ts | 1 - frontend/src/lib/queryClient.ts | 15 + frontend/src/main.ts | 106 - frontend/src/main.tsx | 11 + frontend/src/routeTree.gen.ts | 210 + frontend/src/router/index.ts | 221 - frontend/src/routes/__root.tsx | 34 + frontend/src/routes/files/$path.tsx | 448 ++ frontend/src/routes/files/index.tsx | 21 + frontend/src/routes/index.tsx | 31 + frontend/src/routes/login.tsx | 103 + frontend/src/routes/preview.tsx | 49 + frontend/src/routes/search.tsx | 144 + frontend/src/routes/settings/index.tsx | 119 + frontend/src/routes/settings/layout.tsx | 53 + frontend/src/routes/settings/preferences.tsx | 93 + frontend/src/routes/settings/users.tsx | 168 + frontend/src/routes/share/$token.tsx | 151 + frontend/src/stores/auth.ts | 46 - frontend/src/stores/clipboard.ts | 24 - frontend/src/stores/file.ts | 65 - frontend/src/stores/index.ts | 12 - frontend/src/stores/layout.ts | 86 - frontend/src/stores/router.ts | 14 - frontend/src/stores/upload.ts | 180 - frontend/src/styles/globals.css | 48 + frontend/src/types/api.d.ts | 34 - frontend/src/types/file.d.ts | 80 - frontend/src/types/global.d.ts | 17 - frontend/src/types/index.ts | 129 + frontend/src/types/layout.d.ts | 10 - frontend/src/types/settings.d.ts | 62 - frontend/src/types/toast.d.ts | 2 - frontend/src/types/upload.d.ts | 23 - frontend/src/types/user.d.ts | 69 - frontend/src/types/utif.d.ts | 1 - frontend/src/utils/auth.ts | 141 - frontend/src/utils/buttons.ts | 83 - frontend/src/utils/clipboard.ts | 118 - frontend/src/utils/cn.ts | 10 + frontend/src/utils/constants.ts | 72 +- frontend/src/utils/cookie.ts | 6 - frontend/src/utils/css.ts | 31 - frontend/src/utils/encodings.ts | 268 - frontend/src/utils/format.ts | 59 + frontend/src/utils/index.ts | 28 - frontend/src/utils/theme.ts | 50 - frontend/src/utils/upload.ts | 184 - frontend/src/utils/url.ts | 42 - frontend/src/views/Errors.vue | 57 - frontend/src/views/Files.vue | 184 - frontend/src/views/Layout.vue | 54 - frontend/src/views/Login.vue | 139 - frontend/src/views/Settings.vue | 66 - frontend/src/views/Share.vue | 538 -- frontend/src/views/files/Editor.vue | 362 - frontend/src/views/files/FileListing.vue | 1119 ---- frontend/src/views/files/Preview.vue | 496 -- frontend/src/views/settings/Global.vue | 425 -- frontend/src/views/settings/Profile.vue | 221 - frontend/src/views/settings/Shares.vue | 159 - frontend/src/views/settings/User.vue | 211 - frontend/src/views/settings/Users.vue | 71 - frontend/tailwind.config.js | 8 + frontend/test-results/.last-run.json | 4 - frontend/tsconfig.app.json | 29 - frontend/tsconfig.json | 39 +- frontend/tsconfig.node.json | 17 +- frontend/vite.config.ts | 99 +- 244 files changed, 4625 insertions(+), 32526 deletions(-) create mode 100644 frontend/.gitignore delete mode 100644 frontend/.prettierignore create mode 100644 frontend/README.md delete mode 100644 frontend/assets.go create mode 100644 frontend/bun.lock delete mode 100644 frontend/dist/.gitkeep delete mode 100644 frontend/env.d.ts create mode 100644 frontend/frontend.go delete mode 100644 frontend/pnpm-lock.yaml rename frontend/{postcss.config.cjs => postcss.config.js} (53%) delete mode 100644 frontend/public/.gitkeep delete mode 100644 frontend/public/img/icons/android-chrome-192x192.png delete mode 100644 frontend/public/img/icons/android-chrome-512x512.png delete mode 100644 frontend/public/img/icons/apple-touch-icon.png delete mode 100644 frontend/public/img/icons/favicon.ico delete mode 100644 frontend/public/img/icons/favicon.svg delete mode 100644 frontend/public/img/logo.svg delete mode 100644 frontend/public/index.html delete mode 100644 frontend/public/manifest.json create mode 100644 frontend/src/App.tsx delete mode 100644 frontend/src/App.vue create mode 100644 frontend/src/api/auth.ts create mode 100644 frontend/src/api/client.ts delete mode 100644 frontend/src/api/commands.ts create mode 100644 frontend/src/api/preview.ts delete mode 100644 frontend/src/api/pub.ts create mode 100644 frontend/src/api/queryKeys.ts delete mode 100644 frontend/src/api/tus.ts delete mode 100644 frontend/src/api/utils.ts delete mode 100755 frontend/src/assets/fonts/roboto/bold-cyrillic-ext.woff2 delete mode 100755 frontend/src/assets/fonts/roboto/bold-cyrillic.woff2 delete mode 100755 frontend/src/assets/fonts/roboto/bold-greek-ext.woff2 delete mode 100755 frontend/src/assets/fonts/roboto/bold-greek.woff2 delete mode 100755 frontend/src/assets/fonts/roboto/bold-latin-ext.woff2 delete mode 100755 frontend/src/assets/fonts/roboto/bold-latin.woff2 delete mode 100755 frontend/src/assets/fonts/roboto/bold-vietnamese.woff2 delete mode 100644 frontend/src/assets/fonts/roboto/medium-cyrillic-ext.woff2 delete mode 100644 frontend/src/assets/fonts/roboto/medium-cyrillic.woff2 delete mode 100644 frontend/src/assets/fonts/roboto/medium-greek-ext.woff2 delete mode 100644 frontend/src/assets/fonts/roboto/medium-greek.woff2 delete mode 100644 frontend/src/assets/fonts/roboto/medium-latin-ext.woff2 delete mode 100644 frontend/src/assets/fonts/roboto/medium-latin.woff2 delete mode 100644 frontend/src/assets/fonts/roboto/medium-vietnamese.woff2 delete mode 100644 frontend/src/assets/fonts/roboto/normal-cyrillic-ext.woff2 delete mode 100644 frontend/src/assets/fonts/roboto/normal-cyrillic.woff2 delete mode 100644 frontend/src/assets/fonts/roboto/normal-greek-ext.woff2 delete mode 100644 frontend/src/assets/fonts/roboto/normal-greek.woff2 delete mode 100644 frontend/src/assets/fonts/roboto/normal-latin-ext.woff2 delete mode 100644 frontend/src/assets/fonts/roboto/normal-latin.woff2 delete mode 100644 frontend/src/assets/fonts/roboto/normal-vietnamese.woff2 delete mode 100644 frontend/src/components/Breadcrumbs.vue delete mode 100644 frontend/src/components/ContextMenu.vue delete mode 100644 frontend/src/components/CustomToast.vue delete mode 100644 frontend/src/components/DropdownModal.vue create mode 100644 frontend/src/components/ErrorBoundary.tsx create mode 100644 frontend/src/components/FilePreview.tsx delete mode 100644 frontend/src/components/ProgressBar.vue create mode 100644 frontend/src/components/ProtectedRoute.tsx delete mode 100644 frontend/src/components/Search.vue delete mode 100644 frontend/src/components/Shell.vue delete mode 100644 frontend/src/components/Sidebar.vue create mode 100644 frontend/src/components/Skeleton.tsx delete mode 100644 frontend/src/components/files/CsvViewer.vue delete mode 100644 frontend/src/components/files/ExtendedImage.vue create mode 100644 frontend/src/components/files/FileListTable.tsx delete mode 100644 frontend/src/components/files/ListingItem.vue delete mode 100644 frontend/src/components/files/VideoPlayer.vue delete mode 100644 frontend/src/components/header/Action.vue delete mode 100644 frontend/src/components/header/HeaderBar.vue create mode 100644 frontend/src/components/layout/Header.tsx create mode 100644 frontend/src/components/layout/LayoutShell.tsx create mode 100644 frontend/src/components/layout/Sidebar.tsx create mode 100644 frontend/src/components/modals/FileOperationDialog.tsx create mode 100644 frontend/src/components/modals/UploadDialog.tsx delete mode 100644 frontend/src/components/prompts/BaseModal.vue delete mode 100644 frontend/src/components/prompts/Copy.vue delete mode 100644 frontend/src/components/prompts/CreateFilePath.vue delete mode 100644 frontend/src/components/prompts/CurrentPassword.vue delete mode 100644 frontend/src/components/prompts/Delete.vue delete mode 100644 frontend/src/components/prompts/DeleteUser.vue delete mode 100644 frontend/src/components/prompts/DiscardEditorChanges.vue delete mode 100644 frontend/src/components/prompts/Download.vue delete mode 100644 frontend/src/components/prompts/FileList.vue delete mode 100644 frontend/src/components/prompts/Help.vue delete mode 100644 frontend/src/components/prompts/Info.vue delete mode 100644 frontend/src/components/prompts/Move.vue delete mode 100644 frontend/src/components/prompts/NewDir.vue delete mode 100644 frontend/src/components/prompts/NewFile.vue delete mode 100644 frontend/src/components/prompts/Prompts.vue delete mode 100644 frontend/src/components/prompts/Rename.vue delete mode 100644 frontend/src/components/prompts/Replace.vue delete mode 100644 frontend/src/components/prompts/ResolveConflict.vue delete mode 100644 frontend/src/components/prompts/Share.vue delete mode 100644 frontend/src/components/prompts/ShareDelete.vue delete mode 100644 frontend/src/components/prompts/Upload.vue delete mode 100644 frontend/src/components/prompts/UploadFiles.vue delete mode 100644 frontend/src/components/settings/AceEditorTheme.vue delete mode 100644 frontend/src/components/settings/Commands.vue delete mode 100644 frontend/src/components/settings/Languages.vue delete mode 100644 frontend/src/components/settings/Permissions.vue delete mode 100644 frontend/src/components/settings/Rules.vue delete mode 100644 frontend/src/components/settings/Themes.vue delete mode 100644 frontend/src/components/settings/UserForm.vue create mode 100644 frontend/src/components/ui/Button.tsx create mode 100644 frontend/src/context/AuthContext.tsx delete mode 100644 frontend/src/css/_buttons.css delete mode 100644 frontend/src/css/_inputs.css delete mode 100644 frontend/src/css/_share.css delete mode 100644 frontend/src/css/_shell.css delete mode 100644 frontend/src/css/_variables.css delete mode 100644 frontend/src/css/base.css delete mode 100644 frontend/src/css/context-menu.css delete mode 100644 frontend/src/css/dashboard.css delete mode 100644 frontend/src/css/epubReader.css delete mode 100644 frontend/src/css/fonts.css delete mode 100644 frontend/src/css/header.css delete mode 100644 frontend/src/css/listing-icons.css delete mode 100644 frontend/src/css/listing.css delete mode 100644 frontend/src/css/login.css delete mode 100644 frontend/src/css/mdPreview.css delete mode 100644 frontend/src/css/mobile.css delete mode 100644 frontend/src/css/styles.css delete mode 100644 frontend/src/css/upload-files.css create mode 100644 frontend/src/hooks/useAuth.ts create mode 100644 frontend/src/hooks/useFiles.ts create mode 100644 frontend/src/hooks/useSearch.ts create mode 100644 frontend/src/hooks/useSettings.ts create mode 100644 frontend/src/hooks/useToast.ts create mode 100644 frontend/src/hooks/useUsers.ts delete mode 100644 frontend/src/i18n/ar.json delete mode 100644 frontend/src/i18n/bg.json delete mode 100644 frontend/src/i18n/ca.json create mode 100644 frontend/src/i18n/config.ts delete mode 100644 frontend/src/i18n/cs.json delete mode 100644 frontend/src/i18n/de.json delete mode 100644 frontend/src/i18n/el.json delete mode 100644 frontend/src/i18n/es.json delete mode 100644 frontend/src/i18n/fa.json delete mode 100644 frontend/src/i18n/fr.json delete mode 100644 frontend/src/i18n/he.json delete mode 100644 frontend/src/i18n/hr.json delete mode 100644 frontend/src/i18n/hu.json delete mode 100644 frontend/src/i18n/index.ts delete mode 100644 frontend/src/i18n/is.json delete mode 100644 frontend/src/i18n/it.json delete mode 100644 frontend/src/i18n/ja.json delete mode 100644 frontend/src/i18n/ko.json delete mode 100644 frontend/src/i18n/lv.json delete mode 100644 frontend/src/i18n/nl-be.json delete mode 100644 frontend/src/i18n/nl.json delete mode 100644 frontend/src/i18n/no.json delete mode 100644 frontend/src/i18n/pl.json delete mode 100644 frontend/src/i18n/pt-br.json delete mode 100644 frontend/src/i18n/pt-pt.json delete mode 100644 frontend/src/i18n/pt.json delete mode 100644 frontend/src/i18n/ro.json delete mode 100644 frontend/src/i18n/ru.json delete mode 100644 frontend/src/i18n/sk.json delete mode 100644 frontend/src/i18n/sv-se.json delete mode 100644 frontend/src/i18n/tr.json delete mode 100644 frontend/src/i18n/uk.json delete mode 100644 frontend/src/i18n/vi.json delete mode 100644 frontend/src/i18n/zh-cn.json delete mode 100644 frontend/src/i18n/zh-tw.json delete mode 100644 frontend/src/index.d.ts create mode 100644 frontend/src/lib/queryClient.ts delete mode 100644 frontend/src/main.ts create mode 100644 frontend/src/main.tsx create mode 100644 frontend/src/routeTree.gen.ts delete mode 100644 frontend/src/router/index.ts create mode 100644 frontend/src/routes/__root.tsx create mode 100644 frontend/src/routes/files/$path.tsx create mode 100644 frontend/src/routes/files/index.tsx create mode 100644 frontend/src/routes/index.tsx create mode 100644 frontend/src/routes/login.tsx create mode 100644 frontend/src/routes/preview.tsx create mode 100644 frontend/src/routes/search.tsx create mode 100644 frontend/src/routes/settings/index.tsx create mode 100644 frontend/src/routes/settings/layout.tsx create mode 100644 frontend/src/routes/settings/preferences.tsx create mode 100644 frontend/src/routes/settings/users.tsx create mode 100644 frontend/src/routes/share/$token.tsx delete mode 100644 frontend/src/stores/auth.ts delete mode 100644 frontend/src/stores/clipboard.ts delete mode 100644 frontend/src/stores/file.ts delete mode 100644 frontend/src/stores/index.ts delete mode 100644 frontend/src/stores/layout.ts delete mode 100644 frontend/src/stores/router.ts delete mode 100644 frontend/src/stores/upload.ts create mode 100644 frontend/src/styles/globals.css delete mode 100644 frontend/src/types/api.d.ts delete mode 100644 frontend/src/types/file.d.ts delete mode 100644 frontend/src/types/global.d.ts create mode 100644 frontend/src/types/index.ts delete mode 100644 frontend/src/types/layout.d.ts delete mode 100644 frontend/src/types/settings.d.ts delete mode 100644 frontend/src/types/toast.d.ts delete mode 100644 frontend/src/types/upload.d.ts delete mode 100644 frontend/src/types/user.d.ts delete mode 100644 frontend/src/types/utif.d.ts delete mode 100644 frontend/src/utils/auth.ts delete mode 100644 frontend/src/utils/buttons.ts delete mode 100644 frontend/src/utils/clipboard.ts create mode 100644 frontend/src/utils/cn.ts delete mode 100644 frontend/src/utils/cookie.ts delete mode 100644 frontend/src/utils/css.ts delete mode 100644 frontend/src/utils/encodings.ts create mode 100644 frontend/src/utils/format.ts delete mode 100644 frontend/src/utils/index.ts delete mode 100644 frontend/src/utils/theme.ts delete mode 100644 frontend/src/utils/upload.ts delete mode 100644 frontend/src/utils/url.ts delete mode 100644 frontend/src/views/Errors.vue delete mode 100644 frontend/src/views/Files.vue delete mode 100644 frontend/src/views/Layout.vue delete mode 100644 frontend/src/views/Login.vue delete mode 100644 frontend/src/views/Settings.vue delete mode 100644 frontend/src/views/Share.vue delete mode 100644 frontend/src/views/files/Editor.vue delete mode 100644 frontend/src/views/files/FileListing.vue delete mode 100644 frontend/src/views/files/Preview.vue delete mode 100644 frontend/src/views/settings/Global.vue delete mode 100644 frontend/src/views/settings/Profile.vue delete mode 100644 frontend/src/views/settings/Shares.vue delete mode 100644 frontend/src/views/settings/User.vue delete mode 100644 frontend/src/views/settings/Users.vue create mode 100644 frontend/tailwind.config.js delete mode 100644 frontend/test-results/.last-run.json delete mode 100644 frontend/tsconfig.app.json diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 00000000..b5d5bb5e --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,33 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +# Dependencies +node_modules +dist +dist-ssr +*.local + +# Bun +bun.lockb + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +# Environment +.env +.env.local +.env.*.local diff --git a/frontend/.prettierignore b/frontend/.prettierignore deleted file mode 100644 index be77aa74..00000000 --- a/frontend/.prettierignore +++ /dev/null @@ -1,3 +0,0 @@ -# Ignore artifacts: -dist -pnpm-lock.yaml \ No newline at end of file diff --git a/frontend/.prettierrc.json b/frontend/.prettierrc.json index 757fd64c..83d9ebd4 100644 --- a/frontend/.prettierrc.json +++ b/frontend/.prettierrc.json @@ -1,3 +1,7 @@ { - "trailingComma": "es5" + "trailingComma": "es5", + "singleQuote": false, + "printWidth": 80, + "tabWidth": 2, + "semi": true } diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 00000000..1bdb8acd --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,183 @@ +# WOLK Frontend + +Modern React 18 SPA for WOLK file browser. + +## Tech Stack + +- **Framework:** React 18 + TypeScript +- **Build Tool:** Vite +- **Package Manager:** Bun +- **Routing:** TanStack Router (file-based) +- **Data Fetching:** TanStack React Query +- **State Management:** Context API + custom hooks +- **UI Components:** shadcn/ui (Radix UI + Tailwind CSS) +- **Styling:** Tailwind CSS +- **Internationalization:** i18next +- **Notifications:** react-hot-toast +- **Date Formatting:** dayjs + +## Getting Started + +### Prerequisites + +- **Bun** >=1.0 ([install](https://bun.sh)) +- **Node** >=24.0.0 (for Vite compatibility) +- **Go backend** running on `localhost:8080` + +### Installation + +```bash +cd frontend +bun install +``` + +### Development + +```bash +# Start dev server (http://localhost:5173) +bun run dev + +# In another terminal, start Go backend +cd .. +go run . --http :8080 +``` + +Dev server automatically proxies `/api` to `http://localhost:8080`. + +### Building + +```bash +# Full build with type-checking +bun run build + +# Type-check only +bun run typecheck + +# Lint +bun run lint +bun run lint:fix + +# Format +bun run format + +# Clean dist +bun run clean +``` + +## Project Structure + +``` +src/ +├── api/ # API client modules (files, auth) +├── components/ +│ ├── ui/ # shadcn UI components +│ ├── layout/ # Header, Sidebar, LayoutShell +│ ├── files/ # File-related components +│ └── modals/ # Dialog components +├── context/ # React Context (Auth, Layout) +├── hooks/ # Custom React hooks (useFiles, useAuth, etc.) +├── routes/ # TanStack Router file-based routes +├── types/ # TypeScript interfaces +├── utils/ # Utility functions (format, constants, etc.) +├── i18n/ # i18next translations +├── lib/ # Library setup (QueryClient, etc.) +├── styles/ # Global CSS +├── main.tsx # Entry point +└── App.tsx # Root component +``` + +## Coding Standards + +See `AGENTS.md` in the project root for detailed style guidelines. + +### Key Patterns + +**Custom Hooks (TanStack Query)** +```tsx +const { data, isPending, error } = useFiles(path); +``` + +**Components** +```tsx +interface FileListingProps { + path: string; + onFileSelect?: (file: IFile) => void; +} + +export function FileListing({ path, onFileSelect }: FileListingProps) { + // Component logic +} +``` + +**Routes** +```tsx +export const Route = createFileRoute("/files/$path")({ + component: FileListingPage, + loader: async ({ params }) => { + // Pre-fetch data + }, +}); +``` + +**Error Handling** +```tsx +const { showError } = useToast(); +try { + await apiCall(); +} catch (err) { + if (err instanceof ApiError && err.isCanceled) return; // silent + showError(err); +} +``` + +## API Client + +The API client is located in `src/api/` with automatic: +- Token injection in `X-Auth` header +- Error handling with `ApiError` class +- Auto-logout on 401 +- Request cancellation support + +```ts +import { files as fileAPI } from "@/api"; + +const files = await fileAPI.fetchFiles("/documents"); +``` + +## Translations + +Translations are in `src/i18n/en.json`. To add support for more languages: + +1. Create `src/i18n/{lang}.json` with translations +2. Update `src/i18n/config.ts` to include the new language + +```ts +import langTranslations from "./{lang}.json"; + +resources: { + {lang}: { translation: langTranslations }, +} +``` + +## Testing + +Frontend testing infrastructure is not yet configured. Future: Vitest for unit tests, Playwright for e2e. + +For now, use `bun run typecheck` for type validation. + +## Contributing + +1. Follow the code style guidelines in `AGENTS.md` +2. Use `bun run lint:fix && bun run format` before committing +3. Ensure `bun run typecheck` passes +4. Create reusable components in `src/components/` +5. Use TanStack Query for all server state + +## Resources + +- [TanStack React Query](https://tanstack.com/query/latest) +- [TanStack Router](https://tanstack.com/router/latest) +- [shadcn/ui](https://ui.shadcn.com) +- [Tailwind CSS](https://tailwindcss.com) +- [i18next](https://www.i18next.com) +- [Vite](https://vitejs.dev) diff --git a/frontend/assets.go b/frontend/assets.go deleted file mode 100644 index 7955822f..00000000 --- a/frontend/assets.go +++ /dev/null @@ -1,12 +0,0 @@ -//go:build !dev - -package frontend - -import "embed" - -//go:embed dist/* -var assets embed.FS - -func Assets() embed.FS { - return assets -} diff --git a/frontend/bun.lock b/frontend/bun.lock new file mode 100644 index 00000000..91f92e19 --- /dev/null +++ b/frontend/bun.lock @@ -0,0 +1,574 @@ +{ + "lockfileVersion": 1, + "configVersion": 1, + "workspaces": { + "": { + "name": "wolk-frontend", + "dependencies": { + "@tanstack/match-sorter-utils": "^8.15.1", + "@tanstack/react-query": "^5.59.20", + "@tanstack/react-router": "^1.78.16", + "@tanstack/react-table": "^8.20.5", + "classnames": "^2.5.1", + "clsx": "^2.1.1", + "dayjs": "^1.11.13", + "i18next": "^24.1.0", + "lodash-es": "^4.17.21", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-hot-toast": "^2.4.1", + "react-i18next": "^15.1.2", + "tailwind-merge": "^2.6.0", + }, + "devDependencies": { + "@tanstack/router-plugin": "^1.78.16", + "@types/lodash-es": "^4.17.12", + "@types/node": "^22.10.5", + "@types/react": "^18.3.18", + "@types/react-dom": "^18.3.5", + "@vitejs/plugin-react": "^4.3.4", + "autoprefixer": "^10.4.21", + "postcss": "^8.4.40", + "prettier": "^3.3.3", + "tailwindcss": "^3.4.14", + "typescript": "^5.6.3", + "vite": "^5.4.8", + }, + }, + }, + "packages": { + "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], + + "@babel/code-frame": ["@babel/code-frame@7.29.0", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw=="], + + "@babel/compat-data": ["@babel/compat-data@7.29.0", "", {}, "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg=="], + + "@babel/core": ["@babel/core@7.29.0", "", { "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-module-transforms": "^7.28.6", "@babel/helpers": "^7.28.6", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/traverse": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA=="], + + "@babel/generator": ["@babel/generator@7.29.1", "", { "dependencies": { "@babel/parser": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw=="], + + "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.28.6", "", { "dependencies": { "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA=="], + + "@babel/helper-globals": ["@babel/helper-globals@7.28.0", "", {}, "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="], + + "@babel/helper-module-imports": ["@babel/helper-module-imports@7.28.6", "", { "dependencies": { "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw=="], + + "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.6", "", { "dependencies": { "@babel/helper-module-imports": "^7.28.6", "@babel/helper-validator-identifier": "^7.28.5", "@babel/traverse": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA=="], + + "@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.28.6", "", {}, "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug=="], + + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], + + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], + + "@babel/helper-validator-option": ["@babel/helper-validator-option@7.27.1", "", {}, "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="], + + "@babel/helpers": ["@babel/helpers@7.28.6", "", { "dependencies": { "@babel/template": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw=="], + + "@babel/parser": ["@babel/parser@7.29.0", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww=="], + + "@babel/plugin-syntax-jsx": ["@babel/plugin-syntax-jsx@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w=="], + + "@babel/plugin-syntax-typescript": ["@babel/plugin-syntax-typescript@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A=="], + + "@babel/plugin-transform-react-jsx-self": ["@babel/plugin-transform-react-jsx-self@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw=="], + + "@babel/plugin-transform-react-jsx-source": ["@babel/plugin-transform-react-jsx-source@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw=="], + + "@babel/runtime": ["@babel/runtime@7.28.6", "", {}, "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA=="], + + "@babel/template": ["@babel/template@7.28.6", "", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/parser": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ=="], + + "@babel/traverse": ["@babel/traverse@7.29.0", "", { "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/types": "^7.29.0", "debug": "^4.3.1" } }, "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA=="], + + "@babel/types": ["@babel/types@7.29.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A=="], + + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.21.5", "", { "os": "aix", "cpu": "ppc64" }, "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ=="], + + "@esbuild/android-arm": ["@esbuild/android-arm@0.21.5", "", { "os": "android", "cpu": "arm" }, "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg=="], + + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.21.5", "", { "os": "android", "cpu": "arm64" }, "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A=="], + + "@esbuild/android-x64": ["@esbuild/android-x64@0.21.5", "", { "os": "android", "cpu": "x64" }, "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA=="], + + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.21.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ=="], + + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.21.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw=="], + + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.21.5", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g=="], + + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.21.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ=="], + + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.21.5", "", { "os": "linux", "cpu": "arm" }, "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA=="], + + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.21.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q=="], + + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.21.5", "", { "os": "linux", "cpu": "ia32" }, "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg=="], + + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg=="], + + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg=="], + + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.21.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w=="], + + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA=="], + + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.21.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A=="], + + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.21.5", "", { "os": "linux", "cpu": "x64" }, "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ=="], + + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.4", "", { "os": "none", "cpu": "arm64" }, "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q=="], + + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.21.5", "", { "os": "none", "cpu": "x64" }, "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg=="], + + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.4", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow=="], + + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.21.5", "", { "os": "openbsd", "cpu": "x64" }, "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow=="], + + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.4", "", { "os": "none", "cpu": "arm64" }, "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg=="], + + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.21.5", "", { "os": "sunos", "cpu": "x64" }, "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg=="], + + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.21.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A=="], + + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.21.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA=="], + + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.21.5", "", { "os": "win32", "cpu": "x64" }, "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw=="], + + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], + + "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], + + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], + + "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], + + "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], + + "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.27", "", {}, "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA=="], + + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.59.0", "", { "os": "android", "cpu": "arm" }, "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg=="], + + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.59.0", "", { "os": "android", "cpu": "arm64" }, "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q=="], + + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.59.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg=="], + + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.59.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w=="], + + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.59.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA=="], + + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.59.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg=="], + + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.59.0", "", { "os": "linux", "cpu": "arm" }, "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw=="], + + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.59.0", "", { "os": "linux", "cpu": "arm" }, "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA=="], + + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.59.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA=="], + + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.59.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA=="], + + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.59.0", "", { "os": "linux", "cpu": "none" }, "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg=="], + + "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.59.0", "", { "os": "linux", "cpu": "none" }, "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q=="], + + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.59.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA=="], + + "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.59.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA=="], + + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.59.0", "", { "os": "linux", "cpu": "none" }, "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg=="], + + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.59.0", "", { "os": "linux", "cpu": "none" }, "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg=="], + + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.59.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w=="], + + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.59.0", "", { "os": "linux", "cpu": "x64" }, "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg=="], + + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.59.0", "", { "os": "linux", "cpu": "x64" }, "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg=="], + + "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.59.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ=="], + + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.59.0", "", { "os": "none", "cpu": "arm64" }, "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA=="], + + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.59.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A=="], + + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.59.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA=="], + + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.59.0", "", { "os": "win32", "cpu": "x64" }, "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA=="], + + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.59.0", "", { "os": "win32", "cpu": "x64" }, "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA=="], + + "@tanstack/history": ["@tanstack/history@1.161.6", "", {}, "sha512-NaOGLRrddszbQj9upGat6HG/4TKvXLvu+osAIgfxPYA+eIvYKv8GKDJOrY2D3/U9MRnKfMWD7bU4jeD4xmqyIg=="], + + "@tanstack/match-sorter-utils": ["@tanstack/match-sorter-utils@8.19.4", "", { "dependencies": { "remove-accents": "0.5.0" } }, "sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg=="], + + "@tanstack/query-core": ["@tanstack/query-core@5.90.20", "", {}, "sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg=="], + + "@tanstack/react-query": ["@tanstack/react-query@5.90.21", "", { "dependencies": { "@tanstack/query-core": "5.90.20" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg=="], + + "@tanstack/react-router": ["@tanstack/react-router@1.167.3", "", { "dependencies": { "@tanstack/history": "1.161.6", "@tanstack/react-store": "^0.9.1", "@tanstack/router-core": "1.167.3", "isbot": "^5.1.22", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" }, "peerDependencies": { "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0" } }, "sha512-1qbSy4r+O7IBdmPLlcKsjB041Gq2MMnIEAYSGIjaMZIL4duUIQnOWLw4jTfjKil/IJz/9rO5JcvrbxOG5UTSdg=="], + + "@tanstack/react-store": ["@tanstack/react-store@0.9.2", "", { "dependencies": { "@tanstack/store": "0.9.2", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Vt5usJE5sHG/cMechQfmwvwne6ktGCELe89Lmvoxe3LKRoFrhPa8OCKWs0NliG8HTJElEIj7PLtaBQIcux5pAQ=="], + + "@tanstack/react-table": ["@tanstack/react-table@8.21.3", "", { "dependencies": { "@tanstack/table-core": "8.21.3" }, "peerDependencies": { "react": ">=16.8", "react-dom": ">=16.8" } }, "sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww=="], + + "@tanstack/router-core": ["@tanstack/router-core@1.167.3", "", { "dependencies": { "@tanstack/history": "1.161.6", "@tanstack/store": "^0.9.1", "cookie-es": "^2.0.0", "seroval": "^1.4.2", "seroval-plugins": "^1.4.2", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" } }, "sha512-M/CxrTGKk1fsySJjd+Pzpbi3YLDz+cJSutDjSTMy12owWlOgHV/I6kzR0UxyaBlHraM6XgMHNA0XdgsS1fa4Nw=="], + + "@tanstack/router-generator": ["@tanstack/router-generator@1.166.11", "", { "dependencies": { "@tanstack/router-core": "1.167.3", "@tanstack/router-utils": "1.161.6", "@tanstack/virtual-file-routes": "1.161.6", "prettier": "^3.5.0", "recast": "^0.23.11", "source-map": "^0.7.4", "tsx": "^4.19.2", "zod": "^3.24.2" } }, "sha512-Q/49wxURbft1oNOvo/eVAWZq/lNLK3nBGlavqhLToAYXY6LCzfMtRlE/y3XPHzYC9pZc09u5jvBR1k1E4hyGDQ=="], + + "@tanstack/router-plugin": ["@tanstack/router-plugin@1.166.12", "", { "dependencies": { "@babel/core": "^7.28.5", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/plugin-syntax-typescript": "^7.27.1", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5", "@tanstack/router-core": "1.167.3", "@tanstack/router-generator": "1.166.11", "@tanstack/router-utils": "1.161.6", "@tanstack/virtual-file-routes": "1.161.6", "chokidar": "^3.6.0", "unplugin": "^2.1.2", "zod": "^3.24.2" }, "peerDependencies": { "@rsbuild/core": ">=1.0.2", "@tanstack/react-router": "^1.167.3", "vite": ">=5.0.0 || >=6.0.0 || >=7.0.0", "vite-plugin-solid": "^2.11.10", "webpack": ">=5.92.0" }, "optionalPeers": ["@rsbuild/core", "@tanstack/react-router", "vite", "vite-plugin-solid", "webpack"] }, "sha512-PYsnN6goK6zBaVo63UVKjofv69+HHMKRQXymwN55JYKguNnNR8OZ6E12icPb0Olc5uIpPiGz1YI2+rbpmNKGHA=="], + + "@tanstack/router-utils": ["@tanstack/router-utils@1.161.6", "", { "dependencies": { "@babel/core": "^7.28.5", "@babel/generator": "^7.28.5", "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "ansis": "^4.1.0", "babel-dead-code-elimination": "^1.0.12", "diff": "^8.0.2", "pathe": "^2.0.3", "tinyglobby": "^0.2.15" } }, "sha512-nRcYw+w2OEgK6VfjirYvGyPLOK+tZQz1jkYcmH5AjMamQ9PycnlxZF2aEZtPpNoUsaceX2bHptn6Ub5hGXqNvw=="], + + "@tanstack/store": ["@tanstack/store@0.9.2", "", {}, "sha512-K013lUJEFJK2ofFQ/hZKJUmCnpcV00ebLyOyFOWQvyQHUOZp/iYO84BM6aOGiV81JzwbX0APTVmW8YI7yiG5oA=="], + + "@tanstack/table-core": ["@tanstack/table-core@8.21.3", "", {}, "sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg=="], + + "@tanstack/virtual-file-routes": ["@tanstack/virtual-file-routes@1.161.6", "", {}, "sha512-EGWs9yvJA821pUkwkiZLQW89CzUumHyJy8NKq229BubyoWXfDw1oWnTJYSS/hhbLiwP9+KpopjeF5wWwnCCyeQ=="], + + "@types/babel__core": ["@types/babel__core@7.20.5", "", { "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA=="], + + "@types/babel__generator": ["@types/babel__generator@7.27.0", "", { "dependencies": { "@babel/types": "^7.0.0" } }, "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg=="], + + "@types/babel__template": ["@types/babel__template@7.4.4", "", { "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A=="], + + "@types/babel__traverse": ["@types/babel__traverse@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.2" } }, "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q=="], + + "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], + + "@types/lodash": ["@types/lodash@4.17.24", "", {}, "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ=="], + + "@types/lodash-es": ["@types/lodash-es@4.17.12", "", { "dependencies": { "@types/lodash": "*" } }, "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ=="], + + "@types/node": ["@types/node@22.19.15", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg=="], + + "@types/prop-types": ["@types/prop-types@15.7.15", "", {}, "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw=="], + + "@types/react": ["@types/react@18.3.28", "", { "dependencies": { "@types/prop-types": "*", "csstype": "^3.2.2" } }, "sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw=="], + + "@types/react-dom": ["@types/react-dom@18.3.7", "", { "peerDependencies": { "@types/react": "^18.0.0" } }, "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ=="], + + "@vitejs/plugin-react": ["@vitejs/plugin-react@4.7.0", "", { "dependencies": { "@babel/core": "^7.28.0", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-beta.27", "@types/babel__core": "^7.20.5", "react-refresh": "^0.17.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA=="], + + "acorn": ["acorn@8.16.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw=="], + + "ansis": ["ansis@4.2.0", "", {}, "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig=="], + + "any-promise": ["any-promise@1.3.0", "", {}, "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="], + + "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="], + + "arg": ["arg@5.0.2", "", {}, "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="], + + "ast-types": ["ast-types@0.16.1", "", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg=="], + + "autoprefixer": ["autoprefixer@10.4.27", "", { "dependencies": { "browserslist": "^4.28.1", "caniuse-lite": "^1.0.30001774", "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA=="], + + "babel-dead-code-elimination": ["babel-dead-code-elimination@1.0.12", "", { "dependencies": { "@babel/core": "^7.23.7", "@babel/parser": "^7.23.6", "@babel/traverse": "^7.23.7", "@babel/types": "^7.23.6" } }, "sha512-GERT7L2TiYcYDtYk1IpD+ASAYXjKbLTDPhBtYj7X1NuRMDTMtAx9kyBenub1Ev41lo91OHCKdmP+egTDmfQ7Ig=="], + + "baseline-browser-mapping": ["baseline-browser-mapping@2.10.8", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-PCLz/LXGBsNTErbtB6i5u4eLpHeMfi93aUv5duMmj6caNu6IphS4q6UevDnL36sZQv9lrP11dbPKGMaXPwMKfQ=="], + + "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], + + "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], + + "browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], + + "camelcase-css": ["camelcase-css@2.0.1", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="], + + "caniuse-lite": ["caniuse-lite@1.0.30001779", "", {}, "sha512-U5og2PN7V4DMgF50YPNtnZJGWVLFjjsN3zb6uMT5VGYIewieDj1upwfuVNXf4Kor+89c3iCRJnSzMD5LmTvsfA=="], + + "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=="], + + "classnames": ["classnames@2.5.1", "", {}, "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow=="], + + "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], + + "commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="], + + "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + + "cookie-es": ["cookie-es@2.0.0", "", {}, "sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg=="], + + "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], + + "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], + + "dayjs": ["dayjs@1.11.20", "", {}, "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ=="], + + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "didyoumean": ["didyoumean@1.2.2", "", {}, "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="], + + "diff": ["diff@8.0.3", "", {}, "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ=="], + + "dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="], + + "electron-to-chromium": ["electron-to-chromium@1.5.313", "", {}, "sha512-QBMrTWEf00GXZmJyx2lbYD45jpI3TUFnNIzJ5BBc8piGUDwMPa1GV6HJWTZVvY/eiN3fSopl7NRbgGp9sZ9LTA=="], + + "esbuild": ["esbuild@0.21.5", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.21.5", "@esbuild/android-arm": "0.21.5", "@esbuild/android-arm64": "0.21.5", "@esbuild/android-x64": "0.21.5", "@esbuild/darwin-arm64": "0.21.5", "@esbuild/darwin-x64": "0.21.5", "@esbuild/freebsd-arm64": "0.21.5", "@esbuild/freebsd-x64": "0.21.5", "@esbuild/linux-arm": "0.21.5", "@esbuild/linux-arm64": "0.21.5", "@esbuild/linux-ia32": "0.21.5", "@esbuild/linux-loong64": "0.21.5", "@esbuild/linux-mips64el": "0.21.5", "@esbuild/linux-ppc64": "0.21.5", "@esbuild/linux-riscv64": "0.21.5", "@esbuild/linux-s390x": "0.21.5", "@esbuild/linux-x64": "0.21.5", "@esbuild/netbsd-x64": "0.21.5", "@esbuild/openbsd-x64": "0.21.5", "@esbuild/sunos-x64": "0.21.5", "@esbuild/win32-arm64": "0.21.5", "@esbuild/win32-ia32": "0.21.5", "@esbuild/win32-x64": "0.21.5" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw=="], + + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + + "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], + + "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], + + "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="], + + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], + + "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], + + "fraction.js": ["fraction.js@5.3.4", "", {}, "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ=="], + + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], + + "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], + + "get-tsconfig": ["get-tsconfig@4.13.6", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw=="], + + "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], + + "goober": ["goober@2.1.18", "", { "peerDependencies": { "csstype": "^3.0.10" } }, "sha512-2vFqsaDVIT9Gz7N6kAL++pLpp41l3PfDuusHcjnGLfR6+huZkl6ziX+zgVC3ZxpqWhzH6pyDdGrCeDhMIvwaxw=="], + + "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + + "html-parse-stringify": ["html-parse-stringify@3.0.1", "", { "dependencies": { "void-elements": "3.1.0" } }, "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg=="], + + "i18next": ["i18next@24.2.3", "", { "dependencies": { "@babel/runtime": "^7.26.10" }, "peerDependencies": { "typescript": "^5" }, "optionalPeers": ["typescript"] }, "sha512-lfbf80OzkocvX7nmZtu7nSTNbrTYR52sLWxPtlXX1zAhVw8WEnFk4puUkCR4B1dNQwbSpEHHHemcZu//7EcB7A=="], + + "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="], + + "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], + + "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], + + "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], + + "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], + + "isbot": ["isbot@5.1.36", "", {}, "sha512-C/ZtXyJqDPZ7G7JPr06ApWyYoHjYexQbS6hPYD4WYCzpv2Qes6Z+CCEfTX4Owzf+1EJ933PoI2p+B9v7wpGZBQ=="], + + "jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], + + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + + "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], + + "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], + + "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="], + + "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], + + "lodash-es": ["lodash-es@4.17.23", "", {}, "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg=="], + + "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], + + "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], + + "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], + + "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], + + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="], + + "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + + "node-releases": ["node-releases@2.0.36", "", {}, "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA=="], + + "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], + + "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], + + "object-hash": ["object-hash@3.0.0", "", {}, "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="], + + "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], + + "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + + "pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="], + + "pirates": ["pirates@4.0.7", "", {}, "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA=="], + + "postcss": ["postcss@8.5.8", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg=="], + + "postcss-import": ["postcss-import@15.1.0", "", { "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", "resolve": "^1.1.7" }, "peerDependencies": { "postcss": "^8.0.0" } }, "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew=="], + + "postcss-js": ["postcss-js@4.1.0", "", { "dependencies": { "camelcase-css": "^2.0.1" }, "peerDependencies": { "postcss": "^8.4.21" } }, "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw=="], + + "postcss-load-config": ["postcss-load-config@6.0.1", "", { "dependencies": { "lilconfig": "^3.1.1" }, "peerDependencies": { "jiti": ">=1.21.0", "postcss": ">=8.0.9", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["jiti", "postcss", "tsx", "yaml"] }, "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g=="], + + "postcss-nested": ["postcss-nested@6.2.0", "", { "dependencies": { "postcss-selector-parser": "^6.1.1" }, "peerDependencies": { "postcss": "^8.2.14" } }, "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ=="], + + "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=="], + + "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], + + "prettier": ["prettier@3.8.1", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg=="], + + "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], + + "react": ["react@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ=="], + + "react-dom": ["react-dom@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" }, "peerDependencies": { "react": "^18.3.1" } }, "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw=="], + + "react-hot-toast": ["react-hot-toast@2.6.0", "", { "dependencies": { "csstype": "^3.1.3", "goober": "^2.1.16" }, "peerDependencies": { "react": ">=16", "react-dom": ">=16" } }, "sha512-bH+2EBMZ4sdyou/DPrfgIouFpcRLCJ+HoCA32UoAYHn6T3Ur5yfcDCeSr5mwldl6pFOsiocmrXMuoCJ1vV8bWg=="], + + "react-i18next": ["react-i18next@15.7.4", "", { "dependencies": { "@babel/runtime": "^7.27.6", "html-parse-stringify": "^3.0.1" }, "peerDependencies": { "i18next": ">= 23.4.0", "react": ">= 16.8.0", "typescript": "^5" }, "optionalPeers": ["typescript"] }, "sha512-nyU8iKNrI5uDJch0z9+Y5XEr34b0wkyYj3Rp+tfbahxtlswxSCjcUL9H0nqXo9IR3/t5Y5PKIA3fx3MfUyR9Xw=="], + + "react-refresh": ["react-refresh@0.17.0", "", {}, "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ=="], + + "read-cache": ["read-cache@1.0.0", "", { "dependencies": { "pify": "^2.3.0" } }, "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="], + + "readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + + "recast": ["recast@0.23.11", "", { "dependencies": { "ast-types": "^0.16.1", "esprima": "~4.0.0", "source-map": "~0.6.1", "tiny-invariant": "^1.3.3", "tslib": "^2.0.1" } }, "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA=="], + + "remove-accents": ["remove-accents@0.5.0", "", {}, "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A=="], + + "resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="], + + "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], + + "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], + + "rollup": ["rollup@4.59.0", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.59.0", "@rollup/rollup-android-arm64": "4.59.0", "@rollup/rollup-darwin-arm64": "4.59.0", "@rollup/rollup-darwin-x64": "4.59.0", "@rollup/rollup-freebsd-arm64": "4.59.0", "@rollup/rollup-freebsd-x64": "4.59.0", "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", "@rollup/rollup-linux-arm-musleabihf": "4.59.0", "@rollup/rollup-linux-arm64-gnu": "4.59.0", "@rollup/rollup-linux-arm64-musl": "4.59.0", "@rollup/rollup-linux-loong64-gnu": "4.59.0", "@rollup/rollup-linux-loong64-musl": "4.59.0", "@rollup/rollup-linux-ppc64-gnu": "4.59.0", "@rollup/rollup-linux-ppc64-musl": "4.59.0", "@rollup/rollup-linux-riscv64-gnu": "4.59.0", "@rollup/rollup-linux-riscv64-musl": "4.59.0", "@rollup/rollup-linux-s390x-gnu": "4.59.0", "@rollup/rollup-linux-x64-gnu": "4.59.0", "@rollup/rollup-linux-x64-musl": "4.59.0", "@rollup/rollup-openbsd-x64": "4.59.0", "@rollup/rollup-openharmony-arm64": "4.59.0", "@rollup/rollup-win32-arm64-msvc": "4.59.0", "@rollup/rollup-win32-ia32-msvc": "4.59.0", "@rollup/rollup-win32-x64-gnu": "4.59.0", "@rollup/rollup-win32-x64-msvc": "4.59.0", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg=="], + + "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], + + "scheduler": ["scheduler@0.23.2", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ=="], + + "semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "seroval": ["seroval@1.5.1", "", {}, "sha512-OwrZRZAfhHww0WEnKHDY8OM0U/Qs8OTfIDWhUD4BLpNJUfXK4cGmjiagGze086m+mhI+V2nD0gfbHEnJjb9STA=="], + + "seroval-plugins": ["seroval-plugins@1.5.1", "", { "peerDependencies": { "seroval": "^1.0" } }, "sha512-4FbuZ/TMl02sqv0RTFexu0SP6V+ywaIe5bAWCCEik0fk17BhALgwvUDVF7e3Uvf9pxmwCEJsRPmlkUE6HdzLAw=="], + + "source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], + + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + + "sucrase": ["sucrase@3.35.1", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "tinyglobby": "^0.2.11", "ts-interface-checker": "^0.1.9" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw=="], + + "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], + + "tailwind-merge": ["tailwind-merge@2.6.1", "", {}, "sha512-Oo6tHdpZsGpkKG88HJ8RR1rg/RdnEkQEfMoEk2x1XRI3F1AxeU+ijRXpiVUF4UbLfcxxRGw6TbUINKYdWVsQTQ=="], + + "tailwindcss": ["tailwindcss@3.4.19", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.21.7", "lilconfig": "^3.1.3", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", "postcss-nested": "^6.2.0", "postcss-selector-parser": "^6.1.2", "resolve": "^1.22.8", "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" } }, "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ=="], + + "thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="], + + "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="], + + "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], + + "tiny-warning": ["tiny-warning@1.0.3", "", {}, "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="], + + "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], + + "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], + + "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], + + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "tsx": ["tsx@4.21.0", "", { "dependencies": { "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "bin": { "tsx": "dist/cli.mjs" } }, "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw=="], + + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], + + "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], + + "unplugin": ["unplugin@2.3.11", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "acorn": "^8.15.0", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww=="], + + "update-browserslist-db": ["update-browserslist-db@1.2.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="], + + "use-sync-external-store": ["use-sync-external-store@1.6.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w=="], + + "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], + + "vite": ["vite@5.4.21", "", { "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", "rollup": "^4.20.0" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || >=20.0.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.4.0" }, "optionalPeers": ["@types/node", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser"], "bin": { "vite": "bin/vite.js" } }, "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw=="], + + "void-elements": ["void-elements@3.1.0", "", {}, "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w=="], + + "webpack-virtual-modules": ["webpack-virtual-modules@0.6.2", "", {}, "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="], + + "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + + "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], + + "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "recast/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + + "tsx/esbuild": ["esbuild@0.27.4", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.4", "@esbuild/android-arm": "0.27.4", "@esbuild/android-arm64": "0.27.4", "@esbuild/android-x64": "0.27.4", "@esbuild/darwin-arm64": "0.27.4", "@esbuild/darwin-x64": "0.27.4", "@esbuild/freebsd-arm64": "0.27.4", "@esbuild/freebsd-x64": "0.27.4", "@esbuild/linux-arm": "0.27.4", "@esbuild/linux-arm64": "0.27.4", "@esbuild/linux-ia32": "0.27.4", "@esbuild/linux-loong64": "0.27.4", "@esbuild/linux-mips64el": "0.27.4", "@esbuild/linux-ppc64": "0.27.4", "@esbuild/linux-riscv64": "0.27.4", "@esbuild/linux-s390x": "0.27.4", "@esbuild/linux-x64": "0.27.4", "@esbuild/netbsd-arm64": "0.27.4", "@esbuild/netbsd-x64": "0.27.4", "@esbuild/openbsd-arm64": "0.27.4", "@esbuild/openbsd-x64": "0.27.4", "@esbuild/openharmony-arm64": "0.27.4", "@esbuild/sunos-x64": "0.27.4", "@esbuild/win32-arm64": "0.27.4", "@esbuild/win32-ia32": "0.27.4", "@esbuild/win32-x64": "0.27.4" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ=="], + + "tsx/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.4", "", { "os": "aix", "cpu": "ppc64" }, "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q=="], + + "tsx/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.27.4", "", { "os": "android", "cpu": "arm" }, "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ=="], + + "tsx/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.4", "", { "os": "android", "cpu": "arm64" }, "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw=="], + + "tsx/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.27.4", "", { "os": "android", "cpu": "x64" }, "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw=="], + + "tsx/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ=="], + + "tsx/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw=="], + + "tsx/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.4", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw=="], + + "tsx/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.4", "", { "os": "freebsd", "cpu": "x64" }, "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ=="], + + "tsx/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.4", "", { "os": "linux", "cpu": "arm" }, "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg=="], + + "tsx/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA=="], + + "tsx/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.4", "", { "os": "linux", "cpu": "ia32" }, "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA=="], + + "tsx/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.4", "", { "os": "linux", "cpu": "none" }, "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA=="], + + "tsx/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.4", "", { "os": "linux", "cpu": "none" }, "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw=="], + + "tsx/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA=="], + + "tsx/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.4", "", { "os": "linux", "cpu": "none" }, "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw=="], + + "tsx/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA=="], + + "tsx/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.4", "", { "os": "linux", "cpu": "x64" }, "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA=="], + + "tsx/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.4", "", { "os": "none", "cpu": "x64" }, "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg=="], + + "tsx/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.4", "", { "os": "openbsd", "cpu": "x64" }, "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ=="], + + "tsx/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.4", "", { "os": "sunos", "cpu": "x64" }, "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g=="], + + "tsx/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg=="], + + "tsx/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.4", "", { "os": "win32", "cpu": "ia32" }, "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw=="], + + "tsx/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.4", "", { "os": "win32", "cpu": "x64" }, "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg=="], + } +} diff --git a/frontend/dist/.gitkeep b/frontend/dist/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/frontend/env.d.ts b/frontend/env.d.ts deleted file mode 100644 index 11f02fe2..00000000 --- a/frontend/env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js index 8d660425..0cb679fc 100644 --- a/frontend/eslint.config.js +++ b/frontend/eslint.config.js @@ -1,37 +1,50 @@ -import pluginVue from "eslint-plugin-vue"; -import { - defineConfigWithVueTs, - vueTsConfigs, -} from "@vue/eslint-config-typescript"; -import prettierConfig from "@vue/eslint-config-prettier"; +import js from "@eslint/js"; +import globals from "globals"; +import react from "eslint-plugin-react"; +import reactHooks from "eslint-plugin-react-hooks"; +import tseslint from "typescript-eslint"; +import prettier from "eslint-config-prettier"; -export default defineConfigWithVueTs( +export default [ + { ignores: ["dist", "node_modules"] }, { - name: "app/files-to-lint", - files: ["**/*.{ts,mts,tsx,vue}"], - }, - { - name: "app/files-to-ignore", - ignores: ["**/dist/**", "**/dist-ssr/**", "**/coverage/**"], - }, - pluginVue.configs["flat/essential"], - vueTsConfigs.recommended, - prettierConfig, - { - rules: { - // Note: you must disable the base rule as it can report incorrect errors - "@typescript-eslint/no-unused-expressions": "off", - // TODO: theres too many of these from before ts - "@typescript-eslint/no-explicit-any": "off", - // TODO: finish the ts conversion - "vue/block-lang": "off", - "vue/multi-word-component-names": "off", - "vue/no-mutating-props": [ - "error", - { - shallowOnly: true, - }, - ], + files: ["**/*.{js,jsx,ts,tsx}"], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, }, - } -); + }, + js.configs.recommended, + ...tseslint.configs.recommendedTypeChecked, + { + files: ["**/*.{ts,tsx}"], + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + sourceType: "module", + ecmaFeatures: { + jsx: true, + }, + projectService: true, + tsconfigRootDir: import.meta.dirname, + }, + }, + plugins: { + react, + "react-hooks": reactHooks, + }, + rules: { + ...react.configs.recommended.rules, + ...reactHooks.configs.recommended.rules, + "react/react-in-jsx-scope": "off", + "@typescript-eslint/no-explicit-any": "warn", + "@typescript-eslint/no-unused-expressions": "off", + }, + settings: { + react: { + version: "detect", + }, + }, + }, + prettier, +]; diff --git a/frontend/frontend.go b/frontend/frontend.go new file mode 100644 index 00000000..2fe7dbd6 --- /dev/null +++ b/frontend/frontend.go @@ -0,0 +1,14 @@ +package frontend + +import ( + "embed" +) + +//go:embed dist +var dist embed.FS + +// Assets returns the embedded frontend filesystem. +// The dist directory is embedded and will be accessed as "dist/..." by fs.Sub +func Assets() embed.FS { + return dist +} diff --git a/frontend/index.html b/frontend/index.html index 19308a95..08841150 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -1,176 +1,13 @@ - - - - - File Browser - - - - - - - - - - - - - - + + + + WOLK - File Browser -
- -
-
-
-
-
-
-
- - +
+ diff --git a/frontend/package.json b/frontend/package.json index 36c7ae09..00c86a4e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,76 +1,45 @@ { - "name": "filebrowser-frontend", - "version": "3.0.0", - "private": true, + "name": "wolk-frontend", + "version": "0.1.0", "type": "module", - "engines": { - "node": ">=24.0.0", - "pnpm": ">=10.0.0" - }, "scripts": { - "dev": "vite dev", - "build": "pnpm run typecheck && vite build", - "clean": "find ./dist -maxdepth 1 -mindepth 1 ! -name '.gitkeep' -exec rm -r {} +", - "typecheck": "vue-tsc -p ./tsconfig.app.json --noEmit", - "lint": "eslint src/", - "lint:fix": "eslint --fix src/", - "format": "prettier --write ." + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "typecheck": "tsc --noEmit", + "lint": "eslint . --ext .ts,.tsx", + "lint:fix": "eslint . --ext .ts,.tsx --fix", + "format": "prettier --write \"src/**/*.{ts,tsx,css,json}\"", + "clean": "rm -rf dist" }, "dependencies": { - "@chenfengyuan/vue-number-input": "^2.0.1", - "@vueuse/core": "^14.0.0", - "@vueuse/integrations": "^14.0.0", - "ace-builds": "^1.43.2", - "csv-parse": "^6.1.0", + "@tanstack/match-sorter-utils": "^8.15.1", + "@tanstack/react-query": "^5.59.20", + "@tanstack/react-router": "^1.78.16", + "@tanstack/react-table": "^8.20.5", + "classnames": "^2.5.1", + "clsx": "^2.1.1", "dayjs": "^1.11.13", - "dompurify": "^3.2.6", - "epubjs": "^0.3.93", - "filesize": "^11.0.13", - "js-base64": "^3.7.7", - "jwt-decode": "^4.0.0", + "i18next": "^24.1.0", "lodash-es": "^4.17.21", - "marked": "^17.0.0", - "marked-katex-extension": "^5.1.6", - "material-icons": "^1.13.14", - "normalize.css": "^8.0.1", - "pinia": "^3.0.4", - "pretty-bytes": "^7.1.0", - "qrcode.vue": "^3.6.0", - "tus-js-client": "^4.3.1", - "utif": "^3.1.0", - "video.js": "^8.23.3", - "videojs-hotkeys": "^0.2.28", - "videojs-mobile-ui": "^1.1.1", - "vue": "^3.5.17", - "vue-i18n": "^11.1.10", - "vue-lazyload": "^3.0.0", - "vue-reader": "^1.2.17", - "vue-router": "^5.0.0", - "vue-toastification": "^2.0.0-rc.5" + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-hot-toast": "^2.4.1", + "react-i18next": "^15.1.2", + "tailwind-merge": "^2.6.0" }, "devDependencies": { - "@intlify/unplugin-vue-i18n": "^11.0.1", - "@tsconfig/node24": "^24.0.2", + "@tanstack/router-plugin": "^1.78.16", "@types/lodash-es": "^4.17.12", - "@types/node": "^24.10.1", - "@typescript-eslint/eslint-plugin": "^8.37.0", - "@vitejs/plugin-legacy": "^8.0.0", - "@vitejs/plugin-vue": "^6.0.1", - "@vue/eslint-config-prettier": "^10.2.0", - "@vue/eslint-config-typescript": "^14.6.0", - "@vue/tsconfig": "^0.9.0", + "@types/node": "^22.10.5", + "@types/react": "^18.3.18", + "@types/react-dom": "^18.3.5", + "@vitejs/plugin-react": "^4.3.4", "autoprefixer": "^10.4.21", - "eslint": "^10.0.0", - "eslint-config-prettier": "^10.1.5", - "eslint-plugin-prettier": "^5.5.1", - "eslint-plugin-vue": "^10.5.1", - "postcss": "^8.5.6", - "prettier": "^3.6.2", - "terser": "^5.43.1", - "typescript": "^5.9.3", - "vite": "^8.0.0", - "vite-plugin-compression2": "^2.3.1", - "vue-tsc": "^3.1.3" - }, - "packageManager": "pnpm@10.32.1+sha512.a706938f0e89ac1456b6563eab4edf1d1faf3368d1191fc5c59790e96dc918e4456ab2e67d613de1043d2e8c81f87303e6b40d4ffeca9df15ef1ad567348f2be" + "postcss": "^8.4.40", + "prettier": "^3.3.3", + "tailwindcss": "^3.4.14", + "typescript": "^5.6.3", + "vite": "^5.4.8" + } } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml deleted file mode 100644 index 58de3b03..00000000 --- a/frontend/pnpm-lock.yaml +++ /dev/null @@ -1,5858 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@chenfengyuan/vue-number-input': - specifier: ^2.0.1 - version: 2.0.1(vue@3.5.30(typescript@5.9.3)) - '@vueuse/core': - specifier: ^14.0.0 - version: 14.2.1(vue@3.5.30(typescript@5.9.3)) - '@vueuse/integrations': - specifier: ^14.0.0 - version: 14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.30(typescript@5.9.3)) - ace-builds: - specifier: ^1.43.2 - version: 1.43.6 - csv-parse: - specifier: ^6.1.0 - version: 6.1.0 - dayjs: - specifier: ^1.11.13 - version: 1.11.20 - dompurify: - specifier: ^3.2.6 - version: 3.3.3 - epubjs: - specifier: ^0.3.93 - version: 0.3.93 - filesize: - specifier: ^11.0.13 - version: 11.0.13 - js-base64: - specifier: ^3.7.7 - version: 3.7.8 - jwt-decode: - specifier: ^4.0.0 - version: 4.0.0 - lodash-es: - specifier: ^4.17.21 - version: 4.17.23 - marked: - specifier: ^17.0.0 - version: 17.0.4 - marked-katex-extension: - specifier: ^5.1.6 - version: 5.1.7(katex@0.16.28)(marked@17.0.4) - material-icons: - specifier: ^1.13.14 - version: 1.13.14 - normalize.css: - specifier: ^8.0.1 - version: 8.0.1 - pinia: - specifier: ^3.0.4 - version: 3.0.4(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3)) - pretty-bytes: - specifier: ^7.1.0 - version: 7.1.0 - qrcode.vue: - specifier: ^3.6.0 - version: 3.8.0(vue@3.5.30(typescript@5.9.3)) - tus-js-client: - specifier: ^4.3.1 - version: 4.3.1 - utif: - specifier: ^3.1.0 - version: 3.1.0 - video.js: - specifier: ^8.23.3 - version: 8.23.7 - videojs-hotkeys: - specifier: ^0.2.28 - version: 0.2.30 - videojs-mobile-ui: - specifier: ^1.1.1 - version: 1.2.2(video.js@8.23.7) - vue: - specifier: ^3.5.17 - version: 3.5.30(typescript@5.9.3) - vue-i18n: - specifier: ^11.1.10 - version: 11.3.0(vue@3.5.30(typescript@5.9.3)) - vue-lazyload: - specifier: ^3.0.0 - version: 3.0.0 - vue-reader: - specifier: ^1.2.17 - version: 1.3.4 - vue-router: - specifier: ^5.0.0 - version: 5.0.3(@vue/compiler-sfc@3.5.30)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3)))(vue@3.5.30(typescript@5.9.3)) - vue-toastification: - specifier: ^2.0.0-rc.5 - version: 2.0.0-rc.5(vue@3.5.30(typescript@5.9.3)) - devDependencies: - '@intlify/unplugin-vue-i18n': - specifier: ^11.0.1 - version: 11.0.7(@vue/compiler-dom@3.5.30)(eslint@10.0.3)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.3.0(vue@3.5.30(typescript@5.9.3)))(vue@3.5.30(typescript@5.9.3)) - '@tsconfig/node24': - specifier: ^24.0.2 - version: 24.0.4 - '@types/lodash-es': - specifier: ^4.17.12 - version: 4.17.12 - '@types/node': - specifier: ^24.10.1 - version: 24.12.0 - '@typescript-eslint/eslint-plugin': - specifier: ^8.37.0 - version: 8.57.0(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3) - '@vitejs/plugin-legacy': - specifier: ^8.0.0 - version: 8.0.0(terser@5.46.0)(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2)) - '@vitejs/plugin-vue': - specifier: ^6.0.1 - version: 6.0.5(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.30(typescript@5.9.3)) - '@vue/eslint-config-prettier': - specifier: ^10.2.0 - version: 10.2.0(eslint@10.0.3)(prettier@3.8.1) - '@vue/eslint-config-typescript': - specifier: ^14.6.0 - version: 14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(vue-eslint-parser@10.4.0(eslint@10.0.3)))(eslint@10.0.3)(typescript@5.9.3) - '@vue/tsconfig': - specifier: ^0.9.0 - version: 0.9.0(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3)) - autoprefixer: - specifier: ^10.4.21 - version: 10.4.27(postcss@8.5.8) - eslint: - specifier: ^10.0.0 - version: 10.0.3 - eslint-config-prettier: - specifier: ^10.1.5 - version: 10.1.8(eslint@10.0.3) - eslint-plugin-prettier: - specifier: ^5.5.1 - version: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.3))(eslint@10.0.3)(prettier@3.8.1) - eslint-plugin-vue: - specifier: ^10.5.1 - version: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(vue-eslint-parser@10.4.0(eslint@10.0.3)) - postcss: - specifier: ^8.5.6 - version: 8.5.8 - prettier: - specifier: ^3.6.2 - version: 3.8.1 - terser: - specifier: ^5.43.1 - version: 5.46.0 - typescript: - specifier: ^5.9.3 - version: 5.9.3 - vite: - specifier: ^8.0.0 - version: 8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2) - vite-plugin-compression2: - specifier: ^2.3.1 - version: 2.5.1(rollup@4.57.1) - vue-tsc: - specifier: ^3.1.3 - version: 3.2.5(typescript@5.9.3) - -packages: - - '@babel/code-frame@7.29.0': - resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.29.0': - resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.29.0': - resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.29.1': - resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-annotate-as-pure@7.27.3': - resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.28.6': - resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-create-class-features-plugin@7.28.6': - resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-regexp-features-plugin@7.28.5': - resolution: {integrity: sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-define-polyfill-provider@0.6.6': - resolution: {integrity: sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - '@babel/helper-define-polyfill-provider@0.6.7': - resolution: {integrity: sha512-6Fqi8MtQ/PweQ9xvux65emkLQ83uB+qAVtfHkC9UodyHMIZdxNI01HjLCLUtybElp2KY2XNE0nOgyP1E1vXw9w==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - '@babel/helper-globals@7.28.0': - resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-member-expression-to-functions@7.28.5': - resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.28.6': - resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.28.6': - resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-optimise-call-expression@7.27.1': - resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.28.6': - resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} - engines: {node: '>=6.9.0'} - - '@babel/helper-remap-async-to-generator@7.27.1': - resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-replace-supers@7.28.6': - resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.28.5': - resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.27.1': - resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-wrap-function@7.28.6': - resolution: {integrity: sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.28.6': - resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.29.0': - resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5': - resolution: {integrity: sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1': - resolution: {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': - resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': - resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6': - resolution: {integrity: sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-assertions@7.28.6': - resolution: {integrity: sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-attributes@7.28.6': - resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6': - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-arrow-functions@7.27.1': - resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-generator-functions@7.29.0': - resolution: {integrity: sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-to-generator@7.28.6': - resolution: {integrity: sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoped-functions@7.27.1': - resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoping@7.28.6': - resolution: {integrity: sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-properties@7.28.6': - resolution: {integrity: sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-static-block@7.28.6': - resolution: {integrity: sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - - '@babel/plugin-transform-classes@7.28.6': - resolution: {integrity: sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-computed-properties@7.28.6': - resolution: {integrity: sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-destructuring@7.28.5': - resolution: {integrity: sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dotall-regex@7.28.6': - resolution: {integrity: sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-keys@7.27.1': - resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0': - resolution: {integrity: sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-dynamic-import@7.27.1': - resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-explicit-resource-management@7.28.6': - resolution: {integrity: sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-exponentiation-operator@7.28.6': - resolution: {integrity: sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-export-namespace-from@7.27.1': - resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-for-of@7.27.1': - resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-function-name@7.27.1': - resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-json-strings@7.28.6': - resolution: {integrity: sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-literals@7.27.1': - resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-logical-assignment-operators@7.28.6': - resolution: {integrity: sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-member-expression-literals@7.27.1': - resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-amd@7.27.1': - resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.28.6': - resolution: {integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-systemjs@7.29.0': - resolution: {integrity: sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-umd@7.27.1': - resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-named-capturing-groups-regex@7.29.0': - resolution: {integrity: sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-new-target@7.27.1': - resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-nullish-coalescing-operator@7.28.6': - resolution: {integrity: sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-numeric-separator@7.28.6': - resolution: {integrity: sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-rest-spread@7.28.6': - resolution: {integrity: sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-super@7.27.1': - resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-catch-binding@7.28.6': - resolution: {integrity: sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-chaining@7.28.6': - resolution: {integrity: sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-parameters@7.27.7': - resolution: {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-methods@7.28.6': - resolution: {integrity: sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-property-in-object@7.28.6': - resolution: {integrity: sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-property-literals@7.27.1': - resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regenerator@7.29.0': - resolution: {integrity: sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regexp-modifiers@7.28.6': - resolution: {integrity: sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-reserved-words@7.27.1': - resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-shorthand-properties@7.27.1': - resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-spread@7.28.6': - resolution: {integrity: sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-sticky-regex@7.27.1': - resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-template-literals@7.27.1': - resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typeof-symbol@7.27.1': - resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-escapes@7.27.1': - resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-property-regex@7.28.6': - resolution: {integrity: sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-regex@7.27.1': - resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-sets-regex@7.28.6': - resolution: {integrity: sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/preset-env@7.29.0': - resolution: {integrity: sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-modules@0.1.6-no-external-plugins': - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - - '@babel/runtime@7.28.6': - resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} - engines: {node: '>=6.9.0'} - - '@babel/template@7.28.6': - resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.29.0': - resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.29.0': - resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} - engines: {node: '>=6.9.0'} - - '@chenfengyuan/vue-number-input@2.0.1': - resolution: {integrity: sha512-/jqmfmFulFOGlozts0Sf2GCESMRYVTfZZSz2Tf4n9O5DKjqMi5B/MfRzm5H5A57WuG3L80yXFWFN+XeACKaIhQ==} - peerDependencies: - vue: ^3.0.0 - - '@emnapi/core@1.9.0': - resolution: {integrity: sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==} - - '@emnapi/runtime@1.9.0': - resolution: {integrity: sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==} - - '@emnapi/wasi-threads@1.2.0': - resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==} - - '@esbuild/aix-ppc64@0.25.12': - resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/aix-ppc64@0.27.3': - resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.25.12': - resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.27.3': - resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.25.12': - resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.27.3': - resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.25.12': - resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.27.3': - resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.25.12': - resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.27.3': - resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.25.12': - resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.27.3': - resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.25.12': - resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.27.3': - resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.25.12': - resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.27.3': - resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.25.12': - resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.27.3': - resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.25.12': - resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.27.3': - resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.25.12': - resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.27.3': - resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.25.12': - resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.27.3': - resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.25.12': - resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.27.3': - resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.25.12': - resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.27.3': - resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.25.12': - resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.27.3': - resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.25.12': - resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.27.3': - resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.25.12': - resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.27.3': - resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.25.12': - resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-arm64@0.27.3': - resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.25.12': - resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.27.3': - resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.25.12': - resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-arm64@0.27.3': - resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.25.12': - resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.27.3': - resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openharmony-arm64@0.25.12': - resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - - '@esbuild/openharmony-arm64@0.27.3': - resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - - '@esbuild/sunos-x64@0.25.12': - resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.27.3': - resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.25.12': - resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.27.3': - resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.25.12': - resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.27.3': - resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.25.12': - resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.27.3': - resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.9.1': - resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.12.2': - resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.23.3': - resolution: {integrity: sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - - '@eslint/config-helpers@0.5.3': - resolution: {integrity: sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - - '@eslint/core@1.1.1': - resolution: {integrity: sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - - '@eslint/object-schema@3.0.3': - resolution: {integrity: sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - - '@eslint/plugin-kit@0.6.1': - resolution: {integrity: sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} - engines: {node: '>=18.18.0'} - - '@humanfs/node@0.16.7': - resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} - engines: {node: '>=18.18.0'} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/retry@0.4.3': - resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} - engines: {node: '>=18.18'} - - '@intlify/bundle-utils@11.0.7': - resolution: {integrity: sha512-fEO3CJGPymxieGh8BHox7d6stgajDQae7wgpH6YYw7WX+cdW6jTTXyljZqz7OV3JcwlS9M9UHSoO+YwiO56IhA==} - engines: {node: '>= 20'} - peerDependencies: - petite-vue-i18n: '*' - vue-i18n: '*' - peerDependenciesMeta: - petite-vue-i18n: - optional: true - vue-i18n: - optional: true - - '@intlify/core-base@11.3.0': - resolution: {integrity: sha512-NNX5jIwF4TJBe7RtSKDMOA6JD9mp2mRcBHAwt2X+Q8PvnZub0yj5YYXlFu2AcESdgQpEv/5Yx2uOCV/yh7YkZg==} - engines: {node: '>= 16'} - - '@intlify/devtools-types@11.3.0': - resolution: {integrity: sha512-G9CNL4WpANWVdUjubOIIS7/D2j/0j+1KJmhBJxHilWNKr9mmt3IjFV3Hq4JoBP23uOoC5ynxz/FHZ42M+YxfGw==} - engines: {node: '>= 16'} - - '@intlify/message-compiler@11.2.8': - resolution: {integrity: sha512-A5n33doOjmHsBtCN421386cG1tWp5rpOjOYPNsnpjIJbQ4POF0QY2ezhZR9kr0boKwaHjbOifvyQvHj2UTrDFQ==} - engines: {node: '>= 16'} - - '@intlify/message-compiler@11.3.0': - resolution: {integrity: sha512-RAJp3TMsqohg/Wa7bVF3cChRhecSYBLrTCQSj7j0UtWVFLP+6iEJoE2zb7GU5fp+fmG5kCbUdzhmlAUCWXiUJw==} - engines: {node: '>= 16'} - - '@intlify/shared@11.2.8': - resolution: {integrity: sha512-l6e4NZyUgv8VyXXH4DbuucFOBmxLF56C/mqh2tvApbzl2Hrhi1aTDcuv5TKdxzfHYmpO3UB0Cz04fgDT9vszfw==} - engines: {node: '>= 16'} - - '@intlify/shared@11.3.0': - resolution: {integrity: sha512-LC6P/uay7rXL5zZ5+5iRJfLs/iUN8apu9tm8YqQVmW3Uq3X4A0dOFUIDuAmB7gAC29wTHOS3EiN/IosNSz0eNQ==} - engines: {node: '>= 16'} - - '@intlify/unplugin-vue-i18n@11.0.7': - resolution: {integrity: sha512-wswKprS1D8VfnxxVhKxug5wa3MbDSOcCoXOBjnzhMK+6NfP6h6UI8pFqSBIvcW8nPDuzweTc0Sk3PeBCcubfoQ==} - engines: {node: '>= 20'} - peerDependencies: - petite-vue-i18n: '*' - vue: ^3.2.25 - vue-i18n: '*' - peerDependenciesMeta: - petite-vue-i18n: - optional: true - vue-i18n: - optional: true - - '@intlify/vue-i18n-extensions@8.0.0': - resolution: {integrity: sha512-w0+70CvTmuqbskWfzeYhn0IXxllr6mU+IeM2MU0M+j9OW64jkrvqY+pYFWrUnIIC9bEdij3NICruicwd5EgUuQ==} - engines: {node: '>= 18'} - peerDependencies: - '@intlify/shared': ^9.0.0 || ^10.0.0 || ^11.0.0 - '@vue/compiler-dom': ^3.0.0 - vue: ^3.0.0 - vue-i18n: ^9.0.0 || ^10.0.0 || ^11.0.0 - peerDependenciesMeta: - '@intlify/shared': - optional: true - '@vue/compiler-dom': - optional: true - vue: - optional: true - vue-i18n: - optional: true - - '@jridgewell/gen-mapping@0.3.13': - resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - - '@jridgewell/remapping@2.3.5': - resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/source-map@0.3.11': - resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} - - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - - '@jridgewell/trace-mapping@0.3.31': - resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - - '@napi-rs/wasm-runtime@1.1.1': - resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@oxc-project/runtime@0.115.0': - resolution: {integrity: sha512-Rg8Wlt5dCbXhQnsXPrkOjL1DTSvXLgb2R/KYfnf1/K+R0k6UMLEmbQXPM+kwrWqSmWA2t0B1EtHy2/3zikQpvQ==} - engines: {node: ^20.19.0 || >=22.12.0} - - '@oxc-project/types@0.115.0': - resolution: {integrity: sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==} - - '@pkgr/core@0.2.9': - resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - - '@rolldown/binding-android-arm64@1.0.0-rc.9': - resolution: {integrity: sha512-lcJL0bN5hpgJfSIz/8PIf02irmyL43P+j1pTCfbD1DbLkmGRuFIA4DD3B3ZOvGqG0XiVvRznbKtN0COQVaKUTg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [android] - - '@rolldown/binding-darwin-arm64@1.0.0-rc.9': - resolution: {integrity: sha512-J7Zk3kLYFsLtuH6U+F4pS2sYVzac0qkjcO5QxHS7OS7yZu2LRs+IXo+uvJ/mvpyUljDJ3LROZPoQfgBIpCMhdQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [darwin] - - '@rolldown/binding-darwin-x64@1.0.0-rc.9': - resolution: {integrity: sha512-iwtmmghy8nhfRGeNAIltcNXzD0QMNaaA5U/NyZc1Ia4bxrzFByNMDoppoC+hl7cDiUq5/1CnFthpT9n+UtfFyg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [darwin] - - '@rolldown/binding-freebsd-x64@1.0.0-rc.9': - resolution: {integrity: sha512-DLFYI78SCiZr5VvdEplsVC2Vx53lnA4/Ga5C65iyldMVaErr86aiqCoNBLl92PXPfDtUYjUh+xFFor40ueNs4Q==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [freebsd] - - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9': - resolution: {integrity: sha512-CsjTmTwd0Hri6iTw/DRMK7kOZ7FwAkrO4h8YWKoX/kcj833e4coqo2wzIFywtch/8Eb5enQ/lwLM7w6JX1W5RQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [linux] - - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9': - resolution: {integrity: sha512-2x9O2JbSPxpxMDhP9Z74mahAStibTlrBMW0520+epJH5sac7/LwZW5Bmg/E6CXuEF53JJFW509uP+lSedaUNxg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.9': - resolution: {integrity: sha512-JA1QRW31ogheAIRhIg9tjMfsYbglXXYGNPLdPEYrwFxdbkQCAzvpSCSHCDWNl4hTtrol8WeboCSEpjdZK8qrCg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9': - resolution: {integrity: sha512-aOKU9dJheda8Kj8Y3w9gnt9QFOO+qKPAl8SWd7JPHP+Cu0EuDAE5wokQubLzIDQWg2myXq2XhTpOVS07qqvT+w==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9': - resolution: {integrity: sha512-OalO94fqj7IWRn3VdXWty75jC5dk4C197AWEuMhIpvVv2lw9fiPhud0+bW2ctCxb3YoBZor71QHbY+9/WToadA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.9': - resolution: {integrity: sha512-cVEl1vZtBsBZna3YMjGXNvnYYrOJ7RzuWvZU0ffvJUexWkukMaDuGhUXn0rjnV0ptzGVkvc+vW9Yqy6h8YX4pg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rolldown/binding-linux-x64-musl@1.0.0-rc.9': - resolution: {integrity: sha512-UzYnKCIIc4heAKgI4PZ3dfBGUZefGCJ1TPDuLHoCzgrMYPb5Rv6TLFuYtyM4rWyHM7hymNdsg5ik2C+UD9VDbA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rolldown/binding-openharmony-arm64@1.0.0-rc.9': - resolution: {integrity: sha512-+6zoiF+RRyf5cdlFQP7nm58mq7+/2PFaY2DNQeD4B87N36JzfF/l9mdBkkmTvSYcYPE8tMh/o3cRlsx1ldLfog==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [openharmony] - - '@rolldown/binding-wasm32-wasi@1.0.0-rc.9': - resolution: {integrity: sha512-rgFN6sA/dyebil3YTlL2evvi/M+ivhfnyxec7AccTpRPccno/rPoNlqybEZQBkcbZu8Hy+eqNJCqfBR8P7Pg8g==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9': - resolution: {integrity: sha512-lHVNUG/8nlF1IQk1C0Ci574qKYyty2goMiPlRqkC5R+3LkXDkL5Dhx8ytbxq35m+pkHVIvIxviD+TWLdfeuadA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [win32] - - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9': - resolution: {integrity: sha512-G0oA4+w1iY5AGi5HcDTxWsoxF509hrFIPB2rduV5aDqS9FtDg1CAfa7V34qImbjfhIcA8C+RekocJZA96EarwQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [win32] - - '@rolldown/pluginutils@1.0.0-rc.2': - resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==} - - '@rolldown/pluginutils@1.0.0-rc.9': - resolution: {integrity: sha512-w6oiRWgEBl04QkFZgmW+jnU1EC9b57Oihi2ot3HNWIQRqgHp5PnYDia5iZ5FF7rpa4EQdiqMDXjlqKGXBhsoXw==} - - '@rollup/pluginutils@5.3.0': - resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/rollup-android-arm-eabi@4.57.1': - resolution: {integrity: sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.57.1': - resolution: {integrity: sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.57.1': - resolution: {integrity: sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.57.1': - resolution: {integrity: sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.57.1': - resolution: {integrity: sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.57.1': - resolution: {integrity: sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.57.1': - resolution: {integrity: sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm-musleabihf@4.57.1': - resolution: {integrity: sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==} - cpu: [arm] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-arm64-gnu@4.57.1': - resolution: {integrity: sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm64-musl@4.57.1': - resolution: {integrity: sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-loong64-gnu@4.57.1': - resolution: {integrity: sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==} - cpu: [loong64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-loong64-musl@4.57.1': - resolution: {integrity: sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==} - cpu: [loong64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-ppc64-gnu@4.57.1': - resolution: {integrity: sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-ppc64-musl@4.57.1': - resolution: {integrity: sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==} - cpu: [ppc64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-riscv64-gnu@4.57.1': - resolution: {integrity: sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-riscv64-musl@4.57.1': - resolution: {integrity: sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-s390x-gnu@4.57.1': - resolution: {integrity: sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-x64-gnu@4.57.1': - resolution: {integrity: sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-x64-musl@4.57.1': - resolution: {integrity: sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rollup/rollup-openbsd-x64@4.57.1': - resolution: {integrity: sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==} - cpu: [x64] - os: [openbsd] - - '@rollup/rollup-openharmony-arm64@4.57.1': - resolution: {integrity: sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==} - cpu: [arm64] - os: [openharmony] - - '@rollup/rollup-win32-arm64-msvc@4.57.1': - resolution: {integrity: sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.57.1': - resolution: {integrity: sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-gnu@4.57.1': - resolution: {integrity: sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==} - cpu: [x64] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.57.1': - resolution: {integrity: sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==} - cpu: [x64] - os: [win32] - - '@tsconfig/node24@24.0.4': - resolution: {integrity: sha512-2A933l5P5oCbv6qSxHs7ckKwobs8BDAe9SJ/Xr2Hy+nDlwmLE1GhFh/g/vXGRZWgxBg9nX/5piDtHR9Dkw/XuA==} - - '@tybys/wasm-util@0.10.1': - resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} - - '@types/esrecurse@4.3.1': - resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} - - '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/localforage@0.0.34': - resolution: {integrity: sha512-tJxahnjm9dEI1X+hQSC5f2BSd/coZaqbIl1m3TCl0q9SVuC52XcXfV0XmoCU1+PmjyucuVITwoTnN8OlTbEXXA==} - deprecated: This is a stub types definition for localforage (https://github.com/localForage/localForage). localforage provides its own type definitions, so you don't need @types/localforage installed! - - '@types/lodash-es@4.17.12': - resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} - - '@types/lodash@4.17.23': - resolution: {integrity: sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==} - - '@types/node@24.12.0': - resolution: {integrity: sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==} - - '@types/trusted-types@2.0.7': - resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - - '@types/web-bluetooth@0.0.21': - resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} - - '@typescript-eslint/eslint-plugin@8.56.0': - resolution: {integrity: sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.56.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/eslint-plugin@8.57.0': - resolution: {integrity: sha512-qeu4rTHR3/IaFORbD16gmjq9+rEs9fGKdX0kF6BKSfi+gCuG3RCKLlSBYzn/bGsY9Tj7KE/DAQStbp8AHJGHEQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.57.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/parser@8.56.0': - resolution: {integrity: sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/project-service@8.56.0': - resolution: {integrity: sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/project-service@8.57.0': - resolution: {integrity: sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/scope-manager@8.56.0': - resolution: {integrity: sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/scope-manager@8.57.0': - resolution: {integrity: sha512-nvExQqAHF01lUM66MskSaZulpPL5pgy5hI5RfrxviLgzZVffB5yYzw27uK/ft8QnKXI2X0LBrHJFr1TaZtAibw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/tsconfig-utils@8.56.0': - resolution: {integrity: sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/tsconfig-utils@8.57.0': - resolution: {integrity: sha512-LtXRihc5ytjJIQEH+xqjB0+YgsV4/tW35XKX3GTZHpWtcC8SPkT/d4tqdf1cKtesryHm2bgp6l555NYcT2NLvA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/type-utils@8.56.0': - resolution: {integrity: sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/type-utils@8.57.0': - resolution: {integrity: sha512-yjgh7gmDcJ1+TcEg8x3uWQmn8ifvSupnPfjP21twPKrDP/pTHlEQgmKcitzF/rzPSmv7QjJ90vRpN4U+zoUjwQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/types@8.56.0': - resolution: {integrity: sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/types@8.57.0': - resolution: {integrity: sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.56.0': - resolution: {integrity: sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/typescript-estree@8.57.0': - resolution: {integrity: sha512-m7faHcyVg0BT3VdYTlX8GdJEM7COexXxS6KqGopxdtkQRvBanK377QDHr4W/vIPAR+ah9+B/RclSW5ldVniO1Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/utils@8.56.0': - resolution: {integrity: sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/utils@8.57.0': - resolution: {integrity: sha512-5iIHvpD3CZe06riAsbNxxreP+MuYgVUsV0n4bwLH//VJmgtt54sQeY2GszntJ4BjYCpMzrfVh2SBnUQTtys2lQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/visitor-keys@8.56.0': - resolution: {integrity: sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/visitor-keys@8.57.0': - resolution: {integrity: sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@videojs/http-streaming@3.17.4': - resolution: {integrity: sha512-XAvdG2dolBuV2Fx8bu1kjmQ2D4TonGzZH68Pgv/O9xMSFWdZtITSMFismeQLEAtMmGwze8qNJp3RgV+jStrJqg==} - engines: {node: '>=8', npm: '>=5'} - peerDependencies: - video.js: ^8.19.0 - - '@videojs/vhs-utils@4.1.1': - resolution: {integrity: sha512-5iLX6sR2ownbv4Mtejw6Ax+naosGvoT9kY+gcuHzANyUZZ+4NpeNdKMUhb6ag0acYej1Y7cmr/F2+4PrggMiVA==} - engines: {node: '>=8', npm: '>=5'} - - '@videojs/xhr@2.7.0': - resolution: {integrity: sha512-giab+EVRanChIupZK7gXjHy90y3nncA2phIOyG3Ne5fvpiMJzvqYwiTOnEVW2S4CoYcuKJkomat7bMXA/UoUZQ==} - - '@vitejs/plugin-legacy@8.0.0': - resolution: {integrity: sha512-o5BmEuu4N+woyv+yUsiDrMUfMntJ1kEJITUYLd2ELOAETObwkWNFn5GNIQLLGx8liaobIvoXeSRiM/aYVIaeTQ==} - engines: {node: ^20.19.0 || >=22.12.0} - peerDependencies: - terser: ^5.16.0 - vite: ^8.0.0 - - '@vitejs/plugin-vue@6.0.5': - resolution: {integrity: sha512-bL3AxKuQySfk1iGcBsQnoRVexTPJq0Z/ixFVM8OhVJAP6ZXXXLtM7NFKWhLl30Kg7uTBqIaPXbh+nuQCuBDedg==} - engines: {node: ^20.19.0 || >=22.12.0} - peerDependencies: - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - vue: ^3.2.25 - - '@volar/language-core@2.4.28': - resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} - - '@volar/source-map@2.4.28': - resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==} - - '@volar/typescript@2.4.28': - resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} - - '@vue-macros/common@3.1.2': - resolution: {integrity: sha512-h9t4ArDdniO9ekYHAD95t9AZcAbb19lEGK+26iAjUODOIJKmObDNBSe4+6ELQAA3vtYiFPPBtHh7+cQCKi3Dng==} - engines: {node: '>=20.19.0'} - peerDependencies: - vue: ^2.7.0 || ^3.2.25 - peerDependenciesMeta: - vue: - optional: true - - '@vue/compiler-core@3.5.28': - resolution: {integrity: sha512-kviccYxTgoE8n6OCw96BNdYlBg2GOWfBuOW4Vqwrt7mSKWKwFVvI8egdTltqRgITGPsTFYtKYfxIG8ptX2PJHQ==} - - '@vue/compiler-core@3.5.30': - resolution: {integrity: sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw==} - - '@vue/compiler-dom@3.5.28': - resolution: {integrity: sha512-/1ZepxAb159jKR1btkefDP+J2xuWL5V3WtleRmxaT+K2Aqiek/Ab/+Ebrw2pPj0sdHO8ViAyyJWfhXXOP/+LQA==} - - '@vue/compiler-dom@3.5.30': - resolution: {integrity: sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g==} - - '@vue/compiler-sfc@3.5.28': - resolution: {integrity: sha512-6TnKMiNkd6u6VeVDhZn/07KhEZuBSn43Wd2No5zaP5s3xm8IqFTHBj84HJah4UepSUJTro5SoqqlOY22FKY96g==} - - '@vue/compiler-sfc@3.5.30': - resolution: {integrity: sha512-LqmFPDn89dtU9vI3wHJnwaV6GfTRD87AjWpTWpyrdVOObVtjIuSeZr181z5C4PmVx/V3j2p+0f7edFKGRMpQ5A==} - - '@vue/compiler-ssr@3.5.28': - resolution: {integrity: sha512-JCq//9w1qmC6UGLWJX7RXzrGpKkroubey/ZFqTpvEIDJEKGgntuDMqkuWiZvzTzTA5h2qZvFBFHY7fAAa9475g==} - - '@vue/compiler-ssr@3.5.30': - resolution: {integrity: sha512-NsYK6OMTnx109PSL2IAyf62JP6EUdk4Dmj6AkWcJGBvN0dQoMYtVekAmdqgTtWQgEJo+Okstbf/1p7qZr5H+bA==} - - '@vue/devtools-api@6.6.4': - resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} - - '@vue/devtools-api@7.7.9': - resolution: {integrity: sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g==} - - '@vue/devtools-api@8.0.6': - resolution: {integrity: sha512-+lGBI+WTvJmnU2FZqHhEB8J1DXcvNlDeEalz77iYgOdY1jTj1ipSBaKj3sRhYcy+kqA8v/BSuvOz1XJucfQmUA==} - - '@vue/devtools-kit@7.7.9': - resolution: {integrity: sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA==} - - '@vue/devtools-kit@8.0.6': - resolution: {integrity: sha512-9zXZPTJW72OteDXeSa5RVML3zWDCRcO5t77aJqSs228mdopYj5AiTpihozbsfFJ0IodfNs7pSgOGO3qfCuxDtw==} - - '@vue/devtools-shared@7.7.9': - resolution: {integrity: sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==} - - '@vue/devtools-shared@8.0.6': - resolution: {integrity: sha512-Pp1JylTqlgMJvxW6MGyfTF8vGvlBSCAvMFaDCYa82Mgw7TT5eE5kkHgDvmOGHWeJE4zIDfCpCxHapsK2LtIAJg==} - - '@vue/eslint-config-prettier@10.2.0': - resolution: {integrity: sha512-GL3YBLwv/+b86yHcNNfPJxOTtVFJ4Mbc9UU3zR+KVoG7SwGTjPT+32fXamscNumElhcpXW3mT0DgzS9w32S7Bw==} - peerDependencies: - eslint: '>= 8.21.0' - prettier: '>= 3.0.0' - - '@vue/eslint-config-typescript@14.7.0': - resolution: {integrity: sha512-iegbMINVc+seZ/QxtzWiOBozctrHiF2WvGedruu2EbLujg9VuU0FQiNcN2z1ycuaoKKpF4m2qzB5HDEMKbxtIg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^9.10.0 || ^10.0.0 - eslint-plugin-vue: ^9.28.0 || ^10.0.0 - typescript: '>=4.8.4' - peerDependenciesMeta: - typescript: - optional: true - - '@vue/language-core@3.2.5': - resolution: {integrity: sha512-d3OIxN/+KRedeM5wQ6H6NIpwS3P5gC9nmyaHgBk+rO6dIsjY+tOh4UlPpiZbAh3YtLdCGEX4M16RmsBqPmJV+g==} - - '@vue/reactivity@3.5.30': - resolution: {integrity: sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q==} - - '@vue/runtime-core@3.5.30': - resolution: {integrity: sha512-e0Z+8PQsUTdwV8TtEsLzUM7SzC7lQwYKePydb7K2ZnmS6jjND+WJXkmmfh/swYzRyfP1EY3fpdesyYoymCzYfg==} - - '@vue/runtime-dom@3.5.30': - resolution: {integrity: sha512-2UIGakjU4WSQ0T4iwDEW0W7vQj6n7AFn7taqZ9Cvm0Q/RA2FFOziLESrDL4GmtI1wV3jXg5nMoJSYO66egDUBw==} - - '@vue/server-renderer@3.5.30': - resolution: {integrity: sha512-v+R34icapydRwbZRD0sXwtHqrQJv38JuMB4JxbOxd8NEpGLny7cncMp53W9UH/zo4j8eDHjQ1dEJXwzFQknjtQ==} - peerDependencies: - vue: 3.5.30 - - '@vue/shared@3.5.28': - resolution: {integrity: sha512-cfWa1fCGBxrvaHRhvV3Is0MgmrbSCxYTXCSCau2I0a1Xw1N1pHAvkWCiXPRAqjvToILvguNyEwjevUqAuBQWvQ==} - - '@vue/shared@3.5.30': - resolution: {integrity: sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==} - - '@vue/tsconfig@0.9.0': - resolution: {integrity: sha512-RP+v9Cpbsk1ZVXltCHHkYBr7+624x6gcijJXVjIcsYk7JXqvIpRtMwU2ARLvWDhmy9ffdFYxhsfJnPztADBohQ==} - peerDependencies: - typescript: 5.x - vue: ^3.4.0 - peerDependenciesMeta: - typescript: - optional: true - vue: - optional: true - - '@vueuse/core@14.2.1': - resolution: {integrity: sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ==} - peerDependencies: - vue: ^3.5.0 - - '@vueuse/integrations@14.2.1': - resolution: {integrity: sha512-2LIUpBi/67PoXJGqSDQUF0pgQWpNHh7beiA+KG2AbybcNm+pTGWT6oPGlBgUoDWmYwfeQqM/uzOHqcILpKL7nA==} - peerDependencies: - async-validator: ^4 - axios: ^1 - change-case: ^5 - drauu: ^0.4 - focus-trap: ^7 || ^8 - fuse.js: ^7 - idb-keyval: ^6 - jwt-decode: ^4 - nprogress: ^0.2 - qrcode: ^1.5 - sortablejs: ^1 - universal-cookie: ^7 || ^8 - vue: ^3.5.0 - peerDependenciesMeta: - async-validator: - optional: true - axios: - optional: true - change-case: - optional: true - drauu: - optional: true - focus-trap: - optional: true - fuse.js: - optional: true - idb-keyval: - optional: true - jwt-decode: - optional: true - nprogress: - optional: true - qrcode: - optional: true - sortablejs: - optional: true - universal-cookie: - optional: true - - '@vueuse/metadata@14.2.1': - resolution: {integrity: sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw==} - - '@vueuse/shared@14.2.1': - resolution: {integrity: sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw==} - peerDependencies: - vue: ^3.5.0 - - '@xmldom/xmldom@0.7.13': - resolution: {integrity: sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==} - engines: {node: '>=10.0.0'} - deprecated: this version is no longer supported, please update to at least 0.8.* - - '@xmldom/xmldom@0.8.11': - resolution: {integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==} - engines: {node: '>=10.0.0'} - - ace-builds@1.43.6: - resolution: {integrity: sha512-L1ddibQ7F3vyXR2k2fg+I8TQTPWVA6CKeDQr/h2+8CeyTp3W6EQL8xNFZRTztuP8xNOAqL3IYPqdzs31GCjDvg==} - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.16.0: - resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} - engines: {node: '>=0.4.0'} - hasBin: true - - aes-decrypter@4.0.2: - resolution: {integrity: sha512-lc+/9s6iJvuaRe5qDlMTpCFjnwpkeOXp8qP3oiZ5jsj1MRg+SBVUmmICrhxHvc8OELSmc+fEyyxAuppY6hrWzw==} - - ajv@6.14.0: - resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} - - alien-signals@3.1.2: - resolution: {integrity: sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw==} - - ast-kit@2.2.0: - resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} - engines: {node: '>=20.19.0'} - - ast-walker-scope@0.8.3: - resolution: {integrity: sha512-cbdCP0PGOBq0ASG+sjnKIoYkWMKhhz+F/h9pRexUdX2Hd38+WOlBkRKlqkGOSm0YQpcFMQBJeK4WspUAkwsEdg==} - engines: {node: '>=20.19.0'} - - autoprefixer@10.4.27: - resolution: {integrity: sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - babel-plugin-polyfill-corejs2@0.4.15: - resolution: {integrity: sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-corejs3@0.14.1: - resolution: {integrity: sha512-ENp89vM9Pw4kv/koBb5N2f9bDZsR0hpf3BdPMOg/pkS3pwO4dzNnQZVXtBbeyAadgm865DmQG2jMMLqmZXvuCw==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-regenerator@0.6.7: - resolution: {integrity: sha512-OTYbUlSwXhNgr4g6efMZgsO8//jA61P7ZbRX3iTT53VON8l+WQS8IAUEVo4a4cWknrg2W8Cj4gQhRYNCJ8GkAA==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - balanced-match@4.0.4: - resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} - engines: {node: 18 || 20 || >=22} - - baseline-browser-mapping@2.9.19: - resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} - hasBin: true - - birpc@2.9.0: - resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - brace-expansion@2.0.2: - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} - - brace-expansion@5.0.4: - resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} - engines: {node: 18 || 20 || >=22} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browserslist-to-esbuild@2.1.1: - resolution: {integrity: sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - browserslist: '*' - - browserslist@4.28.1: - resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - caniuse-lite@1.0.30001774: - resolution: {integrity: sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==} - - chokidar@5.0.0: - resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} - engines: {node: '>= 20.19.0'} - - combine-errors@3.0.3: - resolution: {integrity: sha512-C8ikRNRMygCwaTx+Ek3Yr+OuZzgZjduCOfSQBjbM8V3MfgcjSTeto/GXP6PAwKvJz/v15b7GHZvx5rOlczFw/Q==} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - - confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - - confbox@0.2.4: - resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - copy-anything@4.0.5: - resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} - engines: {node: '>=18'} - - core-js-compat@3.48.0: - resolution: {integrity: sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==} - - core-js@3.48.0: - resolution: {integrity: sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==} - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - csstype@3.2.3: - resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - - csv-parse@6.1.0: - resolution: {integrity: sha512-CEE+jwpgLn+MmtCpVcPtiCZpVtB6Z2OKPTr34pycYYoL7sxdOkXDdQ4lRiw6ioC0q6BLqhc6cKweCVvral8yhw==} - - custom-error-instance@2.1.1: - resolution: {integrity: sha512-p6JFxJc3M4OTD2li2qaHkDCw9SfMw82Ldr6OC9Je1aXiGfhx2W8p3GaoeaGrPJTUN9NirTM/KTxHWMUdR1rsUg==} - - d@1.0.2: - resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} - engines: {node: '>=0.12'} - - dayjs@1.11.20: - resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==} - - debug@4.4.3: - resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - detect-libc@2.1.2: - resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} - engines: {node: '>=8'} - - dom-walk@0.1.2: - resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} - - dompurify@3.3.3: - resolution: {integrity: sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==} - - electron-to-chromium@1.5.286: - resolution: {integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==} - - entities@7.0.1: - resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} - engines: {node: '>=0.12'} - - epubjs@0.3.93: - resolution: {integrity: sha512-c06pNSdBxcXv3dZSbXAVLE1/pmleRhOT6mXNZo6INKmvuKpYB65MwU/lO7830czCtjIiK9i+KR+3S+p0wtljrw==} - - es5-ext@0.10.64: - resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} - engines: {node: '>=0.10'} - - es6-iterator@2.0.3: - resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} - - es6-symbol@3.1.4: - resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} - engines: {node: '>=0.12'} - - esbuild@0.25.12: - resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} - engines: {node: '>=18'} - hasBin: true - - esbuild@0.27.3: - resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} - engines: {node: '>=18'} - hasBin: true - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - - eslint-config-prettier@10.1.8: - resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-plugin-prettier@5.5.5: - resolution: {integrity: sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true - - eslint-plugin-vue@10.8.0: - resolution: {integrity: sha512-f1J/tcbnrpgC8suPN5AtdJ5MQjuXbSU9pGRSSYAuF3SHoiYCOdEX6O22pLaRyLHXvDcOe+O5ENgc1owQ587agA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - '@typescript-eslint/parser': ^7.0.0 || ^8.0.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - vue-eslint-parser: ^10.0.0 - peerDependenciesMeta: - '@stylistic/eslint-plugin': - optional: true - '@typescript-eslint/parser': - optional: true - - eslint-scope@9.1.2: - resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@5.0.1: - resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - - eslint@10.0.3: - resolution: {integrity: sha512-COV33RzXZkqhG9P2rZCFl9ZmJ7WL+gQSCRzE7RhkbclbQPtLAWReL7ysA0Sh4c8Im2U9ynybdR56PV0XcKvqaQ==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - esniff@2.0.1: - resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} - engines: {node: '>=0.10'} - - espree@11.2.0: - resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - esquery@1.7.0: - resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - event-emitter@0.3.5: - resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} - - exsolve@1.0.8: - resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} - - ext@1.7.0: - resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fastq@1.20.1: - resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} - - fdir@6.5.0: - resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} - engines: {node: '>=12.0.0'} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - - filesize@11.0.13: - resolution: {integrity: sha512-mYJ/qXKvREuO0uH8LTQJ6v7GsUvVOguqxg2VTwQUkyTPXXRRWPdjuUPVqdBrJQhvci48OHlNGRnux+Slr2Rnvw==} - engines: {node: '>= 10.8.0'} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flatted@3.3.4: - resolution: {integrity: sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==} - - focus-trap@8.0.0: - resolution: {integrity: sha512-Aa84FOGHs99vVwufDMdq2qgOwXPC2e9U66GcqBhn1/jEHPDhJaP8PYhkIbqG9lhfL5Kddk/567lj46LLHYCRUw==} - - fraction.js@5.3.4: - resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - global@4.4.0: - resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - hookable@5.5.3: - resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} - - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - - ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} - engines: {node: '>= 4'} - - immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-function@1.0.2: - resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - is-what@5.5.0: - resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} - engines: {node: '>=18'} - - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - js-base64@3.7.8: - resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsonc-eslint-parser@2.4.2: - resolution: {integrity: sha512-1e4qoRgnn448pRuMvKGsFFymUCquZV0mpGgOyIKNgD3JVDTsVJyRBGH/Fm0tBb8WsWGgmB1mDe6/yJMQM37DUA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - jszip@3.10.1: - resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} - - jwt-decode@4.0.0: - resolution: {integrity: sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==} - engines: {node: '>=18'} - - katex@0.16.28: - resolution: {integrity: sha512-YHzO7721WbmAL6Ov1uzN/l5mY5WWWhJBSW+jq4tkfZfsxmo1hu6frS0EOswvjBUnWE6NtjEs48SFn5CQESRLZg==} - hasBin: true - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lie@3.1.1: - resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} - - lie@3.3.0: - resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} - - lightningcss-android-arm64@1.32.0: - resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [android] - - lightningcss-darwin-arm64@1.32.0: - resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [darwin] - - lightningcss-darwin-x64@1.32.0: - resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [darwin] - - lightningcss-freebsd-x64@1.32.0: - resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [freebsd] - - lightningcss-linux-arm-gnueabihf@1.32.0: - resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} - engines: {node: '>= 12.0.0'} - cpu: [arm] - os: [linux] - - lightningcss-linux-arm64-gnu@1.32.0: - resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - lightningcss-linux-arm64-musl@1.32.0: - resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - libc: [musl] - - lightningcss-linux-x64-gnu@1.32.0: - resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - libc: [glibc] - - lightningcss-linux-x64-musl@1.32.0: - resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - libc: [musl] - - lightningcss-win32-arm64-msvc@1.32.0: - resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [win32] - - lightningcss-win32-x64-msvc@1.32.0: - resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [win32] - - lightningcss@1.32.0: - resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} - engines: {node: '>= 12.0.0'} - - local-pkg@1.1.2: - resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} - engines: {node: '>=14'} - - localforage@1.10.0: - resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash-es@4.17.23: - resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} - - lodash._baseiteratee@4.7.0: - resolution: {integrity: sha512-nqB9M+wITz0BX/Q2xg6fQ8mLkyfF7MU7eE+MNBNjTHFKeKaZAPEzEg+E8LWxKWf1DQVflNEn9N49yAuqKh2mWQ==} - - lodash._basetostring@4.12.0: - resolution: {integrity: sha512-SwcRIbyxnN6CFEEK4K1y+zuApvWdpQdBHM/swxP962s8HIxPO3alBH5t3m/dl+f4CMUug6sJb7Pww8d13/9WSw==} - - lodash._baseuniq@4.6.0: - resolution: {integrity: sha512-Ja1YevpHZctlI5beLA7oc5KNDhGcPixFhcqSiORHNsp/1QTv7amAXzw+gu4YOvErqVlMVyIJGgtzeepCnnur0A==} - - lodash._createset@4.0.3: - resolution: {integrity: sha512-GTkC6YMprrJZCYU3zcqZj+jkXkrXzq3IPBcF/fIPpNEAB4hZEtXU8zp/RwKOvZl43NUmwDbyRk3+ZTbeRdEBXA==} - - lodash._root@3.0.1: - resolution: {integrity: sha512-O0pWuFSK6x4EXhM1dhZ8gchNtG7JMqBtrHdoUFUWXD7dJnNSUze1GuyQr5sOs0aCvgGeI3o/OJW8f4ca7FDxmQ==} - - lodash._stringtopath@4.8.0: - resolution: {integrity: sha512-SXL66C731p0xPDC5LZg4wI5H+dJo/EO4KTqOMwLYCH3+FmmfAKJEZCm6ohGpI+T1xwsDsJCfL4OnhorllvlTPQ==} - - lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - - lodash.throttle@4.1.1: - resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} - - lodash.uniqby@4.5.0: - resolution: {integrity: sha512-IRt7cfTtHy6f1aRVA5n7kT8rgN3N1nH6MOWLcHfpWG2SH19E3JksLK38MktLxZDhlAjCP9jpIXkOnRXlu6oByQ==} - - lodash@4.17.23: - resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - m3u8-parser@7.2.0: - resolution: {integrity: sha512-CRatFqpjVtMiMaKXxNvuI3I++vUumIXVVT/JpCpdU/FynV/ceVw1qpPyyBNindL+JlPMSesx+WX1QJaZEJSaMQ==} - - magic-string-ast@1.0.3: - resolution: {integrity: sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA==} - engines: {node: '>=20.19.0'} - - magic-string@0.30.21: - resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - - marked-katex-extension@5.1.7: - resolution: {integrity: sha512-CVFzrqwpXGVaHByqcVvO/JfzW/OMWrAF3pEfNYNIruzBzM64moANSHapCg1qbzEN+NGf5unHwkMfwJIXHzyDAw==} - peerDependencies: - katex: '>=0.16 <0.17' - marked: '>=4 <18' - - marked@17.0.4: - resolution: {integrity: sha512-NOmVMM+KAokHMvjWmC5N/ZOvgmSWuqJB8FoYI019j4ogb/PeRMKoKIjReZ2w3376kkA8dSJIP8uD993Kxc0iRQ==} - engines: {node: '>= 20'} - hasBin: true - - marks-pane@1.0.9: - resolution: {integrity: sha512-Ahs4oeG90tbdPWwAJkAAoHg2lRR8lAs9mZXETNPO9hYg3AkjUJBKi1NQ4aaIQZVGrig7c/3NUV1jANl8rFTeMg==} - - material-icons@1.13.14: - resolution: {integrity: sha512-kZOfc7xCC0rAT8Q3DQixYAeT+tBqZnxkseQtp2bxBxz7q5pMAC+wmit7vJn1g/l7wRU+HEPq23gER4iPjGs5Cg==} - - meow@13.2.0: - resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} - engines: {node: '>=18'} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - - min-document@2.19.2: - resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==} - - minimatch@10.2.4: - resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} - engines: {node: 18 || 20 || >=22} - - minimatch@9.0.9: - resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} - engines: {node: '>=16 || 14 >=14.17'} - - mitt@3.0.1: - resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - - mlly@1.8.0: - resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} - - mpd-parser@1.3.1: - resolution: {integrity: sha512-1FuyEWI5k2HcmhS1HkKnUAQV7yFPfXPht2DnRRGtoiiAAW+ESTbtEXIDpRkwdU+XyrQuwrIym7UkoPKsZ0SyFw==} - hasBin: true - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - muggle-string@0.4.1: - resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - - mux.js@7.1.0: - resolution: {integrity: sha512-NTxawK/BBELJrYsZThEulyUMDVlLizKdxyAsMuzoCD1eFj97BVaA8D/CvKsKu6FOLYkFojN5CbM9h++ZTZtknA==} - engines: {node: '>=8', npm: '>=5'} - hasBin: true - - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - next-tick@1.1.0: - resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - - node-releases@2.0.27: - resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} - - normalize.css@8.0.1: - resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==} - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - pako@1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - - path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-webpack@0.0.3: - resolution: {integrity: sha512-AmeDxedoo5svf7aB3FYqSAKqMxys014lVKBzy1o/5vv9CtU7U4wgGWL1dA2o6MOzcD53ScN4Jmiq6VbtLz1vIQ==} - - pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - - perfect-debounce@1.0.0: - resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - - perfect-debounce@2.1.0: - resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} - engines: {node: '>=12'} - - pinia@3.0.4: - resolution: {integrity: sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw==} - peerDependencies: - typescript: '>=4.5.0' - vue: ^3.5.11 - peerDependenciesMeta: - typescript: - optional: true - - pkcs7@1.0.4: - resolution: {integrity: sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==} - hasBin: true - - pkg-types@1.3.1: - resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - - pkg-types@2.3.0: - resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} - - postcss-selector-parser@7.1.1: - resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} - engines: {node: '>=4'} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.5.8: - resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} - engines: {node: ^10 || ^12 || >=14} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier-linter-helpers@1.0.1: - resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} - engines: {node: '>=6.0.0'} - - prettier@3.8.1: - resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} - engines: {node: '>=14'} - hasBin: true - - pretty-bytes@7.1.0: - resolution: {integrity: sha512-nODzvTiYVRGRqAOvE84Vk5JDPyyxsVk0/fbA/bq7RqlnhksGpset09XTxbpvLTIjoaF7K8Z8DG8yHtKGTPSYRw==} - engines: {node: '>=20'} - - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - - proper-lockfile@4.1.2: - resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - qrcode.vue@3.8.0: - resolution: {integrity: sha512-+XKbSKvQu158zlHsJm+HObGUQM3Q+9Oq6yb2op/6lMM2gwOiiG9uIhujvrSV5UoTjrzR0BcNxCdW2kk7KE4NEg==} - peerDependencies: - vue: ^3.0.0 - - quansync@0.2.11: - resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} - - querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - - readdirp@5.0.0: - resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} - engines: {node: '>= 20.19.0'} - - regenerate-unicode-properties@10.2.2: - resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} - engines: {node: '>=4'} - - regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - regexpu-core@6.4.0: - resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} - engines: {node: '>=4'} - - regjsgen@0.8.0: - resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - - regjsparser@0.13.0: - resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} - hasBin: true - - requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - - resolve@1.22.11: - resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} - engines: {node: '>= 0.4'} - hasBin: true - - retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - - reusify@1.1.0: - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - - rolldown@1.0.0-rc.9: - resolution: {integrity: sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - - rollup@4.57.1: - resolution: {integrity: sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - scule@1.3.0: - resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.7.4: - resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} - engines: {node: '>=10'} - hasBin: true - - setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - speakingurl@14.0.1: - resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} - engines: {node: '>=0.10.0'} - - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - superjson@2.2.6: - resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} - engines: {node: '>=16'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - synckit@0.11.12: - resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} - engines: {node: ^14.18.0 || >=16.0.0} - - systemjs@6.15.1: - resolution: {integrity: sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==} - - tabbable@6.4.0: - resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} - - tar-mini@0.2.0: - resolution: {integrity: sha512-+qfUHz700DWnRutdUsxRRVZ38G1Qr27OetwaMYTdg8hcPxf46U0S1Zf76dQMWRBmusOt2ZCK5kbIaiLkoGO7WQ==} - - terser@5.46.0: - resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} - engines: {node: '>=10'} - hasBin: true - - tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} - engines: {node: '>=12.0.0'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - ts-api-utils@2.4.0: - resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} - engines: {node: '>=18.12'} - peerDependencies: - typescript: '>=4.8.4' - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - tus-js-client@4.3.1: - resolution: {integrity: sha512-ZLeYmjrkaU1fUsKbIi8JML52uAocjEZtBx4DKjRrqzrZa0O4MYwT6db+oqePlspV+FxXJAyFBc/L5gwUi2OFsg==} - engines: {node: '>=18'} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type@2.7.3: - resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} - - typescript-eslint@8.56.0: - resolution: {integrity: sha512-c7toRLrotJ9oixgdW7liukZpsnq5CZ7PuKztubGYlNppuTqhIoWfhgHo/7EU0v06gS2l/x0i2NEFK1qMIf0rIg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' - - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} - engines: {node: '>=14.17'} - hasBin: true - - ufo@1.6.3: - resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} - - undici-types@7.16.0: - resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - - unicode-canonical-property-names-ecmascript@2.0.1: - resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} - engines: {node: '>=4'} - - unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - - unicode-match-property-value-ecmascript@2.2.1: - resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} - engines: {node: '>=4'} - - unicode-property-aliases-ecmascript@2.2.0: - resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} - engines: {node: '>=4'} - - unplugin-utils@0.3.1: - resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==} - engines: {node: '>=20.19.0'} - - unplugin@2.3.11: - resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} - engines: {node: '>=18.12.0'} - - unplugin@3.0.0: - resolution: {integrity: sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==} - engines: {node: ^20.19.0 || >=22.12.0} - - update-browserslist-db@1.2.3: - resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - - utif@3.1.0: - resolution: {integrity: sha512-WEo4D/xOvFW53K5f5QTaTbbiORcm2/pCL9P6qmJnup+17eYfKaEhDeX9PeQkuyEoIxlbGklDuGl8xwuXYMrrXQ==} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - video.js@8.23.7: - resolution: {integrity: sha512-cG4HOygYt+Z8j6Sf5DuK6OgEOoM+g9oGP6vpqoZRaD13aHE4PMITbyjJUXZcIQbgB0wJEadBRaVm5lJIzo2jAA==} - - videojs-contrib-quality-levels@4.1.0: - resolution: {integrity: sha512-TfrXJJg1Bv4t6TOCMEVMwF/CoS8iENYsWNKip8zfhB5kTcegiFYezEA0eHAJPU64ZC8NQbxQgOwAsYU8VXbOWA==} - engines: {node: '>=16', npm: '>=8'} - peerDependencies: - video.js: ^8 - - videojs-font@4.2.0: - resolution: {integrity: sha512-YPq+wiKoGy2/M7ccjmlvwi58z2xsykkkfNMyIg4xb7EZQQNwB71hcSsB3o75CqQV7/y5lXkXhI/rsGAS7jfEmQ==} - - videojs-hotkeys@0.2.30: - resolution: {integrity: sha512-G8kEQZPapoWDoEajh2Nroy4bCN1qVEul5AuzZqBS7ZCG45K7hqTYKgf1+fmYvG8m8u84sZmVMUvSWZBjaFW66Q==} - - videojs-mobile-ui@1.2.2: - resolution: {integrity: sha512-XPGgfQac4UhCRK4EJdJ6ODrQwj+ui0oGWzi+g5GFoIdzh4NcCk8PxwhvraSId6lSmMSOhazrrxY9Y/p30OKkjQ==} - engines: {node: '>=14', npm: '>=6'} - peerDependencies: - video.js: ^8 - - videojs-vtt.js@0.15.5: - resolution: {integrity: sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==} - - vite-plugin-compression2@2.5.1: - resolution: {integrity: sha512-2YpLZWs1ZRo9XwtSFA6/NVuBgOR+kvFk8M0HNDsP7Wu7OfJDOKT6fHB8kzuvw6jhgC9KYgDOttfaG2qC0wE9AQ==} - - vite@8.0.0: - resolution: {integrity: sha512-fPGaRNj9Zytaf8LEiBhY7Z6ijnFKdzU/+mL8EFBaKr7Vw1/FWcTBAMW0wLPJAGMPX38ZPVCVgLceWiEqeoqL2Q==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - '@vitejs/devtools': ^0.0.0-alpha.31 - esbuild: ^0.27.0 - jiti: '>=1.21.0' - less: ^4.0.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - '@vitejs/devtools': - optional: true - esbuild: - optional: true - jiti: - optional: true - less: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - - vscode-uri@3.1.0: - resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} - - vue-eslint-parser@10.4.0: - resolution: {integrity: sha512-Vxi9pJdbN3ZnVGLODVtZ7y4Y2kzAAE2Cm0CZ3ZDRvydVYxZ6VrnBhLikBsRS+dpwj4Jv4UCv21PTEwF5rQ9WXg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - - vue-i18n@11.3.0: - resolution: {integrity: sha512-1J+xDfDJTLhDxElkd3+XUhT7FYSZd2b8pa7IRKGxhWH/8yt6PTvi3xmWhGwhYT5EaXdatui11pF2R6tL73/zPA==} - engines: {node: '>= 16'} - peerDependencies: - vue: ^3.0.0 - - vue-lazyload@3.0.0: - resolution: {integrity: sha512-h2keL/Rj550dLgesgOtXJS9qOiSMmuJNeVlfNAYV1/IYwOQYaWk5mFJlwRxmZDK9YC5gECcFLYYj7z1lKSf9ug==} - - vue-reader@1.3.4: - resolution: {integrity: sha512-QYTX9hlrV71gL/1vMejcBLLS9Ool29XMZcLQwvL0Ep1F//o0ymzYbKX2Lre+4BUBkVq49/GmmGCmAJACsJL9tw==} - - vue-router@5.0.3: - resolution: {integrity: sha512-nG1c7aAFac7NYj8Hluo68WyWfc41xkEjaR0ViLHCa3oDvTQ/nIuLJlXJX1NUPw/DXzx/8+OKMng045HHQKQKWw==} - peerDependencies: - '@pinia/colada': '>=0.21.2' - '@vue/compiler-sfc': ^3.5.17 - pinia: ^3.0.4 - vue: ^3.5.0 - peerDependenciesMeta: - '@pinia/colada': - optional: true - '@vue/compiler-sfc': - optional: true - pinia: - optional: true - - vue-toastification@2.0.0-rc.5: - resolution: {integrity: sha512-q73e5jy6gucEO/U+P48hqX+/qyXDozAGmaGgLFm5tXX4wJBcVsnGp4e/iJqlm9xzHETYOilUuwOUje2Qg1JdwA==} - peerDependencies: - vue: ^3.0.2 - - vue-tsc@3.2.5: - resolution: {integrity: sha512-/htfTCMluQ+P2FISGAooul8kO4JMheOTCbCy4M6dYnYYjqLe3BExZudAua6MSIKSFYQtFOYAll7XobYwcpokGA==} - hasBin: true - peerDependencies: - typescript: '>=5.0.0' - - vue@3.5.30: - resolution: {integrity: sha512-hTHLc6VNZyzzEH/l7PFGjpcTvUgiaPK5mdLkbjrTeWSRcEfxFrv56g/XckIYlE9ckuobsdwqd5mk2g1sBkMewg==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - webpack-virtual-modules@0.6.2: - resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yaml-eslint-parser@1.3.2: - resolution: {integrity: sha512-odxVsHAkZYYglR30aPYRY4nUGJnoJ2y1ww2HDvZALo0BDETv9kWbi16J52eHs+PWRNmF4ub6nZqfVOeesOvntg==} - engines: {node: ^14.17.0 || >=16.0.0} - - yaml@2.8.2: - resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} - engines: {node: '>= 14.6'} - hasBin: true - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - -snapshots: - - '@babel/code-frame@7.29.0': - dependencies: - '@babel/helper-validator-identifier': 7.28.5 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/compat-data@7.29.0': {} - - '@babel/core@7.29.0': - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helpers': 7.28.6 - '@babel/parser': 7.29.0 - '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.29.1': - dependencies: - '@babel/parser': 7.29.0 - '@babel/types': 7.29.0 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 - - '@babel/helper-annotate-as-pure@7.27.3': - dependencies: - '@babel/types': 7.29.0 - - '@babel/helper-compilation-targets@7.28.6': - dependencies: - '@babel/compat-data': 7.29.0 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.28.1 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.28.5 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.29.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - regexpu-core: 6.4.0 - semver: 6.3.1 - - '@babel/helper-define-polyfill-provider@0.6.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - debug: 4.4.3 - lodash.debounce: 4.0.8 - resolve: 1.22.11 - transitivePeerDependencies: - - supports-color - - '@babel/helper-define-polyfill-provider@0.6.7(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - debug: 4.4.3 - lodash.debounce: 4.0.8 - resolve: 1.22.11 - transitivePeerDependencies: - - supports-color - - '@babel/helper-globals@7.28.0': {} - - '@babel/helper-member-expression-to-functions@7.28.5': - dependencies: - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-imports@7.28.6': - dependencies: - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-optimise-call-expression@7.27.1': - dependencies: - '@babel/types': 7.29.0 - - '@babel/helper-plugin-utils@7.28.6': {} - - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-wrap-function': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-member-expression-to-functions': 7.28.5 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - dependencies: - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-string-parser@7.27.1': {} - - '@babel/helper-validator-identifier@7.28.5': {} - - '@babel/helper-validator-option@7.27.1': {} - - '@babel/helper-wrap-function@7.28.6': - dependencies: - '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helpers@7.28.6': - dependencies: - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 - - '@babel/parser@7.29.0': - dependencies: - '@babel/types': 7.29.0 - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - - '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-async-generator-functions@7.29.0(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-classes@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-globals': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/template': 7.28.6 - - '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.29.0(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-spread@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/preset-env@7.29.0(@babel/core@7.29.0)': - dependencies: - '@babel/compat-data': 7.29.0 - '@babel/core': 7.29.0 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.29.0) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0) - '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.0) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) - '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-modules-systemjs': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) - '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-regenerator': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.29.0) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0) - babel-plugin-polyfill-corejs2: 0.4.15(@babel/core@7.29.0) - babel-plugin-polyfill-corejs3: 0.14.1(@babel/core@7.29.0) - babel-plugin-polyfill-regenerator: 0.6.7(@babel/core@7.29.0) - core-js-compat: 3.48.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/types': 7.29.0 - esutils: 2.0.3 - - '@babel/runtime@7.28.6': {} - - '@babel/template@7.28.6': - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/parser': 7.29.0 - '@babel/types': 7.29.0 - - '@babel/traverse@7.29.0': - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.0 - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.29.0': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - - '@chenfengyuan/vue-number-input@2.0.1(vue@3.5.30(typescript@5.9.3))': - dependencies: - vue: 3.5.30(typescript@5.9.3) - - '@emnapi/core@1.9.0': - dependencies: - '@emnapi/wasi-threads': 1.2.0 - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.9.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/wasi-threads@1.2.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@esbuild/aix-ppc64@0.25.12': - optional: true - - '@esbuild/aix-ppc64@0.27.3': - optional: true - - '@esbuild/android-arm64@0.25.12': - optional: true - - '@esbuild/android-arm64@0.27.3': - optional: true - - '@esbuild/android-arm@0.25.12': - optional: true - - '@esbuild/android-arm@0.27.3': - optional: true - - '@esbuild/android-x64@0.25.12': - optional: true - - '@esbuild/android-x64@0.27.3': - optional: true - - '@esbuild/darwin-arm64@0.25.12': - optional: true - - '@esbuild/darwin-arm64@0.27.3': - optional: true - - '@esbuild/darwin-x64@0.25.12': - optional: true - - '@esbuild/darwin-x64@0.27.3': - optional: true - - '@esbuild/freebsd-arm64@0.25.12': - optional: true - - '@esbuild/freebsd-arm64@0.27.3': - optional: true - - '@esbuild/freebsd-x64@0.25.12': - optional: true - - '@esbuild/freebsd-x64@0.27.3': - optional: true - - '@esbuild/linux-arm64@0.25.12': - optional: true - - '@esbuild/linux-arm64@0.27.3': - optional: true - - '@esbuild/linux-arm@0.25.12': - optional: true - - '@esbuild/linux-arm@0.27.3': - optional: true - - '@esbuild/linux-ia32@0.25.12': - optional: true - - '@esbuild/linux-ia32@0.27.3': - optional: true - - '@esbuild/linux-loong64@0.25.12': - optional: true - - '@esbuild/linux-loong64@0.27.3': - optional: true - - '@esbuild/linux-mips64el@0.25.12': - optional: true - - '@esbuild/linux-mips64el@0.27.3': - optional: true - - '@esbuild/linux-ppc64@0.25.12': - optional: true - - '@esbuild/linux-ppc64@0.27.3': - optional: true - - '@esbuild/linux-riscv64@0.25.12': - optional: true - - '@esbuild/linux-riscv64@0.27.3': - optional: true - - '@esbuild/linux-s390x@0.25.12': - optional: true - - '@esbuild/linux-s390x@0.27.3': - optional: true - - '@esbuild/linux-x64@0.25.12': - optional: true - - '@esbuild/linux-x64@0.27.3': - optional: true - - '@esbuild/netbsd-arm64@0.25.12': - optional: true - - '@esbuild/netbsd-arm64@0.27.3': - optional: true - - '@esbuild/netbsd-x64@0.25.12': - optional: true - - '@esbuild/netbsd-x64@0.27.3': - optional: true - - '@esbuild/openbsd-arm64@0.25.12': - optional: true - - '@esbuild/openbsd-arm64@0.27.3': - optional: true - - '@esbuild/openbsd-x64@0.25.12': - optional: true - - '@esbuild/openbsd-x64@0.27.3': - optional: true - - '@esbuild/openharmony-arm64@0.25.12': - optional: true - - '@esbuild/openharmony-arm64@0.27.3': - optional: true - - '@esbuild/sunos-x64@0.25.12': - optional: true - - '@esbuild/sunos-x64@0.27.3': - optional: true - - '@esbuild/win32-arm64@0.25.12': - optional: true - - '@esbuild/win32-arm64@0.27.3': - optional: true - - '@esbuild/win32-ia32@0.25.12': - optional: true - - '@esbuild/win32-ia32@0.27.3': - optional: true - - '@esbuild/win32-x64@0.25.12': - optional: true - - '@esbuild/win32-x64@0.27.3': - optional: true - - '@eslint-community/eslint-utils@4.9.1(eslint@10.0.3)': - dependencies: - eslint: 10.0.3 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.2': {} - - '@eslint/config-array@0.23.3': - dependencies: - '@eslint/object-schema': 3.0.3 - debug: 4.4.3 - minimatch: 10.2.4 - transitivePeerDependencies: - - supports-color - - '@eslint/config-helpers@0.5.3': - dependencies: - '@eslint/core': 1.1.1 - - '@eslint/core@1.1.1': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/object-schema@3.0.3': {} - - '@eslint/plugin-kit@0.6.1': - dependencies: - '@eslint/core': 1.1.1 - levn: 0.4.1 - - '@humanfs/core@0.19.1': {} - - '@humanfs/node@0.16.7': - dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.4.3 - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.4.3': {} - - '@intlify/bundle-utils@11.0.7(vue-i18n@11.3.0(vue@3.5.30(typescript@5.9.3)))': - dependencies: - '@intlify/message-compiler': 11.2.8 - '@intlify/shared': 11.2.8 - acorn: 8.16.0 - esbuild: 0.25.12 - escodegen: 2.1.0 - estree-walker: 2.0.2 - jsonc-eslint-parser: 2.4.2 - source-map-js: 1.2.1 - yaml-eslint-parser: 1.3.2 - optionalDependencies: - vue-i18n: 11.3.0(vue@3.5.30(typescript@5.9.3)) - - '@intlify/core-base@11.3.0': - dependencies: - '@intlify/devtools-types': 11.3.0 - '@intlify/message-compiler': 11.3.0 - '@intlify/shared': 11.3.0 - - '@intlify/devtools-types@11.3.0': - dependencies: - '@intlify/core-base': 11.3.0 - '@intlify/shared': 11.3.0 - - '@intlify/message-compiler@11.2.8': - dependencies: - '@intlify/shared': 11.2.8 - source-map-js: 1.2.1 - - '@intlify/message-compiler@11.3.0': - dependencies: - '@intlify/shared': 11.3.0 - source-map-js: 1.2.1 - - '@intlify/shared@11.2.8': {} - - '@intlify/shared@11.3.0': {} - - '@intlify/unplugin-vue-i18n@11.0.7(@vue/compiler-dom@3.5.30)(eslint@10.0.3)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.3.0(vue@3.5.30(typescript@5.9.3)))(vue@3.5.30(typescript@5.9.3))': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) - '@intlify/bundle-utils': 11.0.7(vue-i18n@11.3.0(vue@3.5.30(typescript@5.9.3))) - '@intlify/shared': 11.2.8 - '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.30)(vue-i18n@11.3.0(vue@3.5.30(typescript@5.9.3)))(vue@3.5.30(typescript@5.9.3)) - '@rollup/pluginutils': 5.3.0(rollup@4.57.1) - '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - debug: 4.4.3 - fast-glob: 3.3.3 - pathe: 2.0.3 - picocolors: 1.1.1 - unplugin: 2.3.11 - vue: 3.5.30(typescript@5.9.3) - optionalDependencies: - vue-i18n: 11.3.0(vue@3.5.30(typescript@5.9.3)) - transitivePeerDependencies: - - '@vue/compiler-dom' - - eslint - - rollup - - supports-color - - typescript - - '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.30)(vue-i18n@11.3.0(vue@3.5.30(typescript@5.9.3)))(vue@3.5.30(typescript@5.9.3))': - dependencies: - '@babel/parser': 7.29.0 - optionalDependencies: - '@intlify/shared': 11.2.8 - '@vue/compiler-dom': 3.5.30 - vue: 3.5.30(typescript@5.9.3) - vue-i18n: 11.3.0(vue@3.5.30(typescript@5.9.3)) - - '@jridgewell/gen-mapping@0.3.13': - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 - - '@jridgewell/remapping@2.3.5': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/source-map@0.3.11': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - - '@jridgewell/sourcemap-codec@1.5.5': {} - - '@jridgewell/trace-mapping@0.3.31': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - - '@napi-rs/wasm-runtime@1.1.1': - dependencies: - '@emnapi/core': 1.9.0 - '@emnapi/runtime': 1.9.0 - '@tybys/wasm-util': 0.10.1 - optional: true - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.20.1 - - '@oxc-project/runtime@0.115.0': {} - - '@oxc-project/types@0.115.0': {} - - '@pkgr/core@0.2.9': {} - - '@rolldown/binding-android-arm64@1.0.0-rc.9': - optional: true - - '@rolldown/binding-darwin-arm64@1.0.0-rc.9': - optional: true - - '@rolldown/binding-darwin-x64@1.0.0-rc.9': - optional: true - - '@rolldown/binding-freebsd-x64@1.0.0-rc.9': - optional: true - - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9': - optional: true - - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9': - optional: true - - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.9': - optional: true - - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9': - optional: true - - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9': - optional: true - - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.9': - optional: true - - '@rolldown/binding-linux-x64-musl@1.0.0-rc.9': - optional: true - - '@rolldown/binding-openharmony-arm64@1.0.0-rc.9': - optional: true - - '@rolldown/binding-wasm32-wasi@1.0.0-rc.9': - dependencies: - '@napi-rs/wasm-runtime': 1.1.1 - optional: true - - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9': - optional: true - - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9': - optional: true - - '@rolldown/pluginutils@1.0.0-rc.2': {} - - '@rolldown/pluginutils@1.0.0-rc.9': {} - - '@rollup/pluginutils@5.3.0(rollup@4.57.1)': - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.57.1 - - '@rollup/rollup-android-arm-eabi@4.57.1': - optional: true - - '@rollup/rollup-android-arm64@4.57.1': - optional: true - - '@rollup/rollup-darwin-arm64@4.57.1': - optional: true - - '@rollup/rollup-darwin-x64@4.57.1': - optional: true - - '@rollup/rollup-freebsd-arm64@4.57.1': - optional: true - - '@rollup/rollup-freebsd-x64@4.57.1': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.57.1': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.57.1': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.57.1': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.57.1': - optional: true - - '@rollup/rollup-linux-loong64-gnu@4.57.1': - optional: true - - '@rollup/rollup-linux-loong64-musl@4.57.1': - optional: true - - '@rollup/rollup-linux-ppc64-gnu@4.57.1': - optional: true - - '@rollup/rollup-linux-ppc64-musl@4.57.1': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.57.1': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.57.1': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.57.1': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.57.1': - optional: true - - '@rollup/rollup-linux-x64-musl@4.57.1': - optional: true - - '@rollup/rollup-openbsd-x64@4.57.1': - optional: true - - '@rollup/rollup-openharmony-arm64@4.57.1': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.57.1': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.57.1': - optional: true - - '@rollup/rollup-win32-x64-gnu@4.57.1': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.57.1': - optional: true - - '@tsconfig/node24@24.0.4': {} - - '@tybys/wasm-util@0.10.1': - dependencies: - tslib: 2.8.1 - optional: true - - '@types/esrecurse@4.3.1': {} - - '@types/estree@1.0.8': {} - - '@types/json-schema@7.0.15': {} - - '@types/localforage@0.0.34': - dependencies: - localforage: 1.10.0 - - '@types/lodash-es@4.17.12': - dependencies: - '@types/lodash': 4.17.23 - - '@types/lodash@4.17.23': {} - - '@types/node@24.12.0': - dependencies: - undici-types: 7.16.0 - - '@types/trusted-types@2.0.7': - optional: true - - '@types/web-bluetooth@0.0.21': {} - - '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3)': - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.56.0(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/type-utils': 8.56.0(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.56.0 - eslint: 10.0.3 - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@8.57.0(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3)': - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.56.0(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.57.0 - '@typescript-eslint/type-utils': 8.57.0(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.0(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.57.0 - eslint: 10.0.3 - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.56.0 - debug: 4.4.3 - eslint: 10.0.3 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/project-service@8.56.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.9.3) - '@typescript-eslint/types': 8.56.0 - debug: 4.4.3 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/project-service@8.57.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) - '@typescript-eslint/types': 8.57.0 - debug: 4.4.3 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@8.56.0': - dependencies: - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/visitor-keys': 8.56.0 - - '@typescript-eslint/scope-manager@8.57.0': - dependencies: - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/visitor-keys': 8.57.0 - - '@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - - '@typescript-eslint/tsconfig-utils@8.57.0(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - - '@typescript-eslint/type-utils@8.56.0(eslint@10.0.3)(typescript@5.9.3)': - dependencies: - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.0.3)(typescript@5.9.3) - debug: 4.4.3 - eslint: 10.0.3 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/type-utils@8.57.0(eslint@10.0.3)(typescript@5.9.3)': - dependencies: - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.0(eslint@10.0.3)(typescript@5.9.3) - debug: 4.4.3 - eslint: 10.0.3 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@8.56.0': {} - - '@typescript-eslint/types@8.57.0': {} - - '@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/project-service': 8.56.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.9.3) - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/visitor-keys': 8.56.0 - debug: 4.4.3 - minimatch: 9.0.9 - semver: 7.7.4 - tinyglobby: 0.2.15 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/project-service': 8.57.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/visitor-keys': 8.57.0 - debug: 4.4.3 - minimatch: 10.2.4 - semver: 7.7.4 - tinyglobby: 0.2.15 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.56.0(eslint@10.0.3)(typescript@5.9.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) - '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - eslint: 10.0.3 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.57.0(eslint@10.0.3)(typescript@5.9.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) - '@typescript-eslint/scope-manager': 8.57.0 - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) - eslint: 10.0.3 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@8.56.0': - dependencies: - '@typescript-eslint/types': 8.56.0 - eslint-visitor-keys: 5.0.1 - - '@typescript-eslint/visitor-keys@8.57.0': - dependencies: - '@typescript-eslint/types': 8.57.0 - eslint-visitor-keys: 5.0.1 - - '@videojs/http-streaming@3.17.4(video.js@8.23.7)': - dependencies: - '@babel/runtime': 7.28.6 - '@videojs/vhs-utils': 4.1.1 - aes-decrypter: 4.0.2 - global: 4.4.0 - m3u8-parser: 7.2.0 - mpd-parser: 1.3.1 - mux.js: 7.1.0 - video.js: 8.23.7 - - '@videojs/vhs-utils@4.1.1': - dependencies: - '@babel/runtime': 7.28.6 - global: 4.4.0 - - '@videojs/xhr@2.7.0': - dependencies: - '@babel/runtime': 7.28.6 - global: 4.4.0 - is-function: 1.0.2 - - '@vitejs/plugin-legacy@8.0.0(terser@5.46.0)(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2))': - dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-modules-systemjs': 7.29.0(@babel/core@7.29.0) - '@babel/preset-env': 7.29.0(@babel/core@7.29.0) - babel-plugin-polyfill-corejs3: 0.14.1(@babel/core@7.29.0) - babel-plugin-polyfill-regenerator: 0.6.7(@babel/core@7.29.0) - browserslist: 4.28.1 - browserslist-to-esbuild: 2.1.1(browserslist@4.28.1) - core-js: 3.48.0 - magic-string: 0.30.21 - regenerator-runtime: 0.14.1 - systemjs: 6.15.1 - terser: 5.46.0 - vite: 8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2) - transitivePeerDependencies: - - supports-color - - '@vitejs/plugin-vue@6.0.5(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.30(typescript@5.9.3))': - dependencies: - '@rolldown/pluginutils': 1.0.0-rc.2 - vite: 8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2) - vue: 3.5.30(typescript@5.9.3) - - '@volar/language-core@2.4.28': - dependencies: - '@volar/source-map': 2.4.28 - - '@volar/source-map@2.4.28': {} - - '@volar/typescript@2.4.28': - dependencies: - '@volar/language-core': 2.4.28 - path-browserify: 1.0.1 - vscode-uri: 3.1.0 - - '@vue-macros/common@3.1.2(vue@3.5.30(typescript@5.9.3))': - dependencies: - '@vue/compiler-sfc': 3.5.28 - ast-kit: 2.2.0 - local-pkg: 1.1.2 - magic-string-ast: 1.0.3 - unplugin-utils: 0.3.1 - optionalDependencies: - vue: 3.5.30(typescript@5.9.3) - - '@vue/compiler-core@3.5.28': - dependencies: - '@babel/parser': 7.29.0 - '@vue/shared': 3.5.28 - entities: 7.0.1 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - - '@vue/compiler-core@3.5.30': - dependencies: - '@babel/parser': 7.29.0 - '@vue/shared': 3.5.30 - entities: 7.0.1 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - - '@vue/compiler-dom@3.5.28': - dependencies: - '@vue/compiler-core': 3.5.28 - '@vue/shared': 3.5.28 - - '@vue/compiler-dom@3.5.30': - dependencies: - '@vue/compiler-core': 3.5.30 - '@vue/shared': 3.5.30 - - '@vue/compiler-sfc@3.5.28': - dependencies: - '@babel/parser': 7.29.0 - '@vue/compiler-core': 3.5.28 - '@vue/compiler-dom': 3.5.28 - '@vue/compiler-ssr': 3.5.28 - '@vue/shared': 3.5.28 - estree-walker: 2.0.2 - magic-string: 0.30.21 - postcss: 8.5.8 - source-map-js: 1.2.1 - - '@vue/compiler-sfc@3.5.30': - dependencies: - '@babel/parser': 7.29.0 - '@vue/compiler-core': 3.5.30 - '@vue/compiler-dom': 3.5.30 - '@vue/compiler-ssr': 3.5.30 - '@vue/shared': 3.5.30 - estree-walker: 2.0.2 - magic-string: 0.30.21 - postcss: 8.5.8 - source-map-js: 1.2.1 - - '@vue/compiler-ssr@3.5.28': - dependencies: - '@vue/compiler-dom': 3.5.28 - '@vue/shared': 3.5.28 - - '@vue/compiler-ssr@3.5.30': - dependencies: - '@vue/compiler-dom': 3.5.30 - '@vue/shared': 3.5.30 - - '@vue/devtools-api@6.6.4': {} - - '@vue/devtools-api@7.7.9': - dependencies: - '@vue/devtools-kit': 7.7.9 - - '@vue/devtools-api@8.0.6': - dependencies: - '@vue/devtools-kit': 8.0.6 - - '@vue/devtools-kit@7.7.9': - dependencies: - '@vue/devtools-shared': 7.7.9 - birpc: 2.9.0 - hookable: 5.5.3 - mitt: 3.0.1 - perfect-debounce: 1.0.0 - speakingurl: 14.0.1 - superjson: 2.2.6 - - '@vue/devtools-kit@8.0.6': - dependencies: - '@vue/devtools-shared': 8.0.6 - birpc: 2.9.0 - hookable: 5.5.3 - mitt: 3.0.1 - perfect-debounce: 2.1.0 - speakingurl: 14.0.1 - superjson: 2.2.6 - - '@vue/devtools-shared@7.7.9': - dependencies: - rfdc: 1.4.1 - - '@vue/devtools-shared@8.0.6': - dependencies: - rfdc: 1.4.1 - - '@vue/eslint-config-prettier@10.2.0(eslint@10.0.3)(prettier@3.8.1)': - dependencies: - eslint: 10.0.3 - eslint-config-prettier: 10.1.8(eslint@10.0.3) - eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.3))(eslint@10.0.3)(prettier@3.8.1) - prettier: 3.8.1 - transitivePeerDependencies: - - '@types/eslint' - - '@vue/eslint-config-typescript@14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(vue-eslint-parser@10.4.0(eslint@10.0.3)))(eslint@10.0.3)(typescript@5.9.3)': - dependencies: - '@typescript-eslint/utils': 8.56.0(eslint@10.0.3)(typescript@5.9.3) - eslint: 10.0.3 - eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(vue-eslint-parser@10.4.0(eslint@10.0.3)) - fast-glob: 3.3.3 - typescript-eslint: 8.56.0(eslint@10.0.3)(typescript@5.9.3) - vue-eslint-parser: 10.4.0(eslint@10.0.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@vue/language-core@3.2.5': - dependencies: - '@volar/language-core': 2.4.28 - '@vue/compiler-dom': 3.5.28 - '@vue/shared': 3.5.28 - alien-signals: 3.1.2 - muggle-string: 0.4.1 - path-browserify: 1.0.1 - picomatch: 4.0.3 - - '@vue/reactivity@3.5.30': - dependencies: - '@vue/shared': 3.5.30 - - '@vue/runtime-core@3.5.30': - dependencies: - '@vue/reactivity': 3.5.30 - '@vue/shared': 3.5.30 - - '@vue/runtime-dom@3.5.30': - dependencies: - '@vue/reactivity': 3.5.30 - '@vue/runtime-core': 3.5.30 - '@vue/shared': 3.5.30 - csstype: 3.2.3 - - '@vue/server-renderer@3.5.30(vue@3.5.30(typescript@5.9.3))': - dependencies: - '@vue/compiler-ssr': 3.5.30 - '@vue/shared': 3.5.30 - vue: 3.5.30(typescript@5.9.3) - - '@vue/shared@3.5.28': {} - - '@vue/shared@3.5.30': {} - - '@vue/tsconfig@0.9.0(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3))': - optionalDependencies: - typescript: 5.9.3 - vue: 3.5.30(typescript@5.9.3) - - '@vueuse/core@14.2.1(vue@3.5.30(typescript@5.9.3))': - dependencies: - '@types/web-bluetooth': 0.0.21 - '@vueuse/metadata': 14.2.1 - '@vueuse/shared': 14.2.1(vue@3.5.30(typescript@5.9.3)) - vue: 3.5.30(typescript@5.9.3) - - '@vueuse/integrations@14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.30(typescript@5.9.3))': - dependencies: - '@vueuse/core': 14.2.1(vue@3.5.30(typescript@5.9.3)) - '@vueuse/shared': 14.2.1(vue@3.5.30(typescript@5.9.3)) - vue: 3.5.30(typescript@5.9.3) - optionalDependencies: - focus-trap: 8.0.0 - jwt-decode: 4.0.0 - - '@vueuse/metadata@14.2.1': {} - - '@vueuse/shared@14.2.1(vue@3.5.30(typescript@5.9.3))': - dependencies: - vue: 3.5.30(typescript@5.9.3) - - '@xmldom/xmldom@0.7.13': {} - - '@xmldom/xmldom@0.8.11': {} - - ace-builds@1.43.6: {} - - acorn-jsx@5.3.2(acorn@8.16.0): - dependencies: - acorn: 8.16.0 - - acorn@8.15.0: {} - - acorn@8.16.0: {} - - aes-decrypter@4.0.2: - dependencies: - '@babel/runtime': 7.28.6 - '@videojs/vhs-utils': 4.1.1 - global: 4.4.0 - pkcs7: 1.0.4 - - ajv@6.14.0: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - alien-signals@3.1.2: {} - - ast-kit@2.2.0: - dependencies: - '@babel/parser': 7.29.0 - pathe: 2.0.3 - - ast-walker-scope@0.8.3: - dependencies: - '@babel/parser': 7.29.0 - ast-kit: 2.2.0 - - autoprefixer@10.4.27(postcss@8.5.8): - dependencies: - browserslist: 4.28.1 - caniuse-lite: 1.0.30001774 - fraction.js: 5.3.4 - picocolors: 1.1.1 - postcss: 8.5.8 - postcss-value-parser: 4.2.0 - - babel-plugin-polyfill-corejs2@0.4.15(@babel/core@7.29.0): - dependencies: - '@babel/compat-data': 7.29.0 - '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.29.0) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.14.1(@babel/core@7.29.0): - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.7(@babel/core@7.29.0) - core-js-compat: 3.48.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.6.7(@babel/core@7.29.0): - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.7(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color - - balanced-match@1.0.2: {} - - balanced-match@4.0.4: {} - - baseline-browser-mapping@2.9.19: {} - - birpc@2.9.0: {} - - boolbase@1.0.0: {} - - brace-expansion@2.0.2: - dependencies: - balanced-match: 1.0.2 - - brace-expansion@5.0.4: - dependencies: - balanced-match: 4.0.4 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browserslist-to-esbuild@2.1.1(browserslist@4.28.1): - dependencies: - browserslist: 4.28.1 - meow: 13.2.0 - - browserslist@4.28.1: - dependencies: - baseline-browser-mapping: 2.9.19 - caniuse-lite: 1.0.30001774 - electron-to-chromium: 1.5.286 - node-releases: 2.0.27 - update-browserslist-db: 1.2.3(browserslist@4.28.1) - - buffer-from@1.1.2: {} - - caniuse-lite@1.0.30001774: {} - - chokidar@5.0.0: - dependencies: - readdirp: 5.0.0 - - combine-errors@3.0.3: - dependencies: - custom-error-instance: 2.1.1 - lodash.uniqby: 4.5.0 - - commander@2.20.3: {} - - commander@8.3.0: {} - - confbox@0.1.8: {} - - confbox@0.2.4: {} - - convert-source-map@2.0.0: {} - - copy-anything@4.0.5: - dependencies: - is-what: 5.5.0 - - core-js-compat@3.48.0: - dependencies: - browserslist: 4.28.1 - - core-js@3.48.0: {} - - core-util-is@1.0.3: {} - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - cssesc@3.0.0: {} - - csstype@3.2.3: {} - - csv-parse@6.1.0: {} - - custom-error-instance@2.1.1: {} - - d@1.0.2: - dependencies: - es5-ext: 0.10.64 - type: 2.7.3 - - dayjs@1.11.20: {} - - debug@4.4.3: - dependencies: - ms: 2.1.3 - - deep-is@0.1.4: {} - - detect-libc@2.1.2: {} - - dom-walk@0.1.2: {} - - dompurify@3.3.3: - optionalDependencies: - '@types/trusted-types': 2.0.7 - - electron-to-chromium@1.5.286: {} - - entities@7.0.1: {} - - epubjs@0.3.93: - dependencies: - '@types/localforage': 0.0.34 - '@xmldom/xmldom': 0.7.13 - core-js: 3.48.0 - event-emitter: 0.3.5 - jszip: 3.10.1 - localforage: 1.10.0 - lodash: 4.17.23 - marks-pane: 1.0.9 - path-webpack: 0.0.3 - - es5-ext@0.10.64: - dependencies: - es6-iterator: 2.0.3 - es6-symbol: 3.1.4 - esniff: 2.0.1 - next-tick: 1.1.0 - - es6-iterator@2.0.3: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - es6-symbol: 3.1.4 - - es6-symbol@3.1.4: - dependencies: - d: 1.0.2 - ext: 1.7.0 - - esbuild@0.25.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.12 - '@esbuild/android-arm': 0.25.12 - '@esbuild/android-arm64': 0.25.12 - '@esbuild/android-x64': 0.25.12 - '@esbuild/darwin-arm64': 0.25.12 - '@esbuild/darwin-x64': 0.25.12 - '@esbuild/freebsd-arm64': 0.25.12 - '@esbuild/freebsd-x64': 0.25.12 - '@esbuild/linux-arm': 0.25.12 - '@esbuild/linux-arm64': 0.25.12 - '@esbuild/linux-ia32': 0.25.12 - '@esbuild/linux-loong64': 0.25.12 - '@esbuild/linux-mips64el': 0.25.12 - '@esbuild/linux-ppc64': 0.25.12 - '@esbuild/linux-riscv64': 0.25.12 - '@esbuild/linux-s390x': 0.25.12 - '@esbuild/linux-x64': 0.25.12 - '@esbuild/netbsd-arm64': 0.25.12 - '@esbuild/netbsd-x64': 0.25.12 - '@esbuild/openbsd-arm64': 0.25.12 - '@esbuild/openbsd-x64': 0.25.12 - '@esbuild/openharmony-arm64': 0.25.12 - '@esbuild/sunos-x64': 0.25.12 - '@esbuild/win32-arm64': 0.25.12 - '@esbuild/win32-ia32': 0.25.12 - '@esbuild/win32-x64': 0.25.12 - - esbuild@0.27.3: - optionalDependencies: - '@esbuild/aix-ppc64': 0.27.3 - '@esbuild/android-arm': 0.27.3 - '@esbuild/android-arm64': 0.27.3 - '@esbuild/android-x64': 0.27.3 - '@esbuild/darwin-arm64': 0.27.3 - '@esbuild/darwin-x64': 0.27.3 - '@esbuild/freebsd-arm64': 0.27.3 - '@esbuild/freebsd-x64': 0.27.3 - '@esbuild/linux-arm': 0.27.3 - '@esbuild/linux-arm64': 0.27.3 - '@esbuild/linux-ia32': 0.27.3 - '@esbuild/linux-loong64': 0.27.3 - '@esbuild/linux-mips64el': 0.27.3 - '@esbuild/linux-ppc64': 0.27.3 - '@esbuild/linux-riscv64': 0.27.3 - '@esbuild/linux-s390x': 0.27.3 - '@esbuild/linux-x64': 0.27.3 - '@esbuild/netbsd-arm64': 0.27.3 - '@esbuild/netbsd-x64': 0.27.3 - '@esbuild/openbsd-arm64': 0.27.3 - '@esbuild/openbsd-x64': 0.27.3 - '@esbuild/openharmony-arm64': 0.27.3 - '@esbuild/sunos-x64': 0.27.3 - '@esbuild/win32-arm64': 0.27.3 - '@esbuild/win32-ia32': 0.27.3 - '@esbuild/win32-x64': 0.27.3 - optional: true - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - escodegen@2.1.0: - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - - eslint-config-prettier@10.1.8(eslint@10.0.3): - dependencies: - eslint: 10.0.3 - - eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.3))(eslint@10.0.3)(prettier@3.8.1): - dependencies: - eslint: 10.0.3 - prettier: 3.8.1 - prettier-linter-helpers: 1.0.1 - synckit: 0.11.12 - optionalDependencies: - eslint-config-prettier: 10.1.8(eslint@10.0.3) - - eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(vue-eslint-parser@10.4.0(eslint@10.0.3)): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) - eslint: 10.0.3 - natural-compare: 1.4.0 - nth-check: 2.1.1 - postcss-selector-parser: 7.1.1 - semver: 7.7.4 - vue-eslint-parser: 10.4.0(eslint@10.0.3) - xml-name-validator: 4.0.0 - optionalDependencies: - '@typescript-eslint/parser': 8.56.0(eslint@10.0.3)(typescript@5.9.3) - - eslint-scope@9.1.2: - dependencies: - '@types/esrecurse': 4.3.1 - '@types/estree': 1.0.8 - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@5.0.1: {} - - eslint@10.0.3: - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) - '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.3 - '@eslint/config-helpers': 0.5.3 - '@eslint/core': 1.1.1 - '@eslint/plugin-kit': 0.6.1 - '@humanfs/node': 0.16.7 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.8 - ajv: 6.14.0 - cross-spawn: 7.0.6 - debug: 4.4.3 - 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.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - minimatch: 10.2.4 - natural-compare: 1.4.0 - optionator: 0.9.4 - transitivePeerDependencies: - - supports-color - - esniff@2.0.1: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - event-emitter: 0.3.5 - type: 2.7.3 - - espree@11.2.0: - dependencies: - acorn: 8.16.0 - acorn-jsx: 5.3.2(acorn@8.16.0) - eslint-visitor-keys: 5.0.1 - - espree@9.6.1: - dependencies: - acorn: 8.16.0 - acorn-jsx: 5.3.2(acorn@8.16.0) - eslint-visitor-keys: 3.4.3 - - esprima@4.0.1: {} - - esquery@1.7.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@5.3.0: {} - - estree-walker@2.0.2: {} - - esutils@2.0.3: {} - - event-emitter@0.3.5: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - - exsolve@1.0.8: {} - - ext@1.7.0: - dependencies: - type: 2.7.3 - - fast-deep-equal@3.1.3: {} - - fast-diff@1.3.0: {} - - fast-glob@3.3.3: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - - fastq@1.20.1: - dependencies: - reusify: 1.1.0 - - fdir@6.5.0(picomatch@4.0.3): - optionalDependencies: - picomatch: 4.0.3 - - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - - filesize@11.0.13: {} - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat-cache@4.0.1: - dependencies: - flatted: 3.3.4 - keyv: 4.5.4 - - flatted@3.3.4: {} - - focus-trap@8.0.0: - dependencies: - tabbable: 6.4.0 - optional: true - - fraction.js@5.3.4: {} - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - gensync@1.0.0-beta.2: {} - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - global@4.4.0: - dependencies: - min-document: 2.19.2 - process: 0.11.10 - - graceful-fs@4.2.11: {} - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - hookable@5.5.3: {} - - ignore@5.3.2: {} - - ignore@7.0.5: {} - - immediate@3.0.6: {} - - imurmurhash@0.1.4: {} - - inherits@2.0.4: {} - - is-core-module@2.16.1: - dependencies: - hasown: 2.0.2 - - is-extglob@2.1.1: {} - - is-function@1.0.2: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-number@7.0.0: {} - - is-stream@2.0.1: {} - - is-what@5.5.0: {} - - isarray@1.0.0: {} - - isexe@2.0.0: {} - - js-base64@3.7.8: {} - - js-tokens@4.0.0: {} - - jsesc@3.1.0: {} - - json-buffer@3.0.1: {} - - json-schema-traverse@0.4.1: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - json5@2.2.3: {} - - jsonc-eslint-parser@2.4.2: - dependencies: - acorn: 8.16.0 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - semver: 7.7.4 - - jszip@3.10.1: - dependencies: - lie: 3.3.0 - pako: 1.0.11 - readable-stream: 2.3.8 - setimmediate: 1.0.5 - - jwt-decode@4.0.0: {} - - katex@0.16.28: - dependencies: - commander: 8.3.0 - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - lie@3.1.1: - dependencies: - immediate: 3.0.6 - - lie@3.3.0: - dependencies: - immediate: 3.0.6 - - lightningcss-android-arm64@1.32.0: - optional: true - - lightningcss-darwin-arm64@1.32.0: - optional: true - - lightningcss-darwin-x64@1.32.0: - optional: true - - lightningcss-freebsd-x64@1.32.0: - optional: true - - lightningcss-linux-arm-gnueabihf@1.32.0: - optional: true - - lightningcss-linux-arm64-gnu@1.32.0: - optional: true - - lightningcss-linux-arm64-musl@1.32.0: - optional: true - - lightningcss-linux-x64-gnu@1.32.0: - optional: true - - lightningcss-linux-x64-musl@1.32.0: - optional: true - - lightningcss-win32-arm64-msvc@1.32.0: - optional: true - - lightningcss-win32-x64-msvc@1.32.0: - optional: true - - lightningcss@1.32.0: - dependencies: - detect-libc: 2.1.2 - optionalDependencies: - lightningcss-android-arm64: 1.32.0 - lightningcss-darwin-arm64: 1.32.0 - lightningcss-darwin-x64: 1.32.0 - lightningcss-freebsd-x64: 1.32.0 - lightningcss-linux-arm-gnueabihf: 1.32.0 - lightningcss-linux-arm64-gnu: 1.32.0 - lightningcss-linux-arm64-musl: 1.32.0 - lightningcss-linux-x64-gnu: 1.32.0 - lightningcss-linux-x64-musl: 1.32.0 - lightningcss-win32-arm64-msvc: 1.32.0 - lightningcss-win32-x64-msvc: 1.32.0 - - local-pkg@1.1.2: - dependencies: - mlly: 1.8.0 - pkg-types: 2.3.0 - quansync: 0.2.11 - - localforage@1.10.0: - dependencies: - lie: 3.1.1 - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - lodash-es@4.17.23: {} - - lodash._baseiteratee@4.7.0: - dependencies: - lodash._stringtopath: 4.8.0 - - lodash._basetostring@4.12.0: {} - - lodash._baseuniq@4.6.0: - dependencies: - lodash._createset: 4.0.3 - lodash._root: 3.0.1 - - lodash._createset@4.0.3: {} - - lodash._root@3.0.1: {} - - lodash._stringtopath@4.8.0: - dependencies: - lodash._basetostring: 4.12.0 - - lodash.debounce@4.0.8: {} - - lodash.throttle@4.1.1: {} - - lodash.uniqby@4.5.0: - dependencies: - lodash._baseiteratee: 4.7.0 - lodash._baseuniq: 4.6.0 - - lodash@4.17.23: {} - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - m3u8-parser@7.2.0: - dependencies: - '@babel/runtime': 7.28.6 - '@videojs/vhs-utils': 4.1.1 - global: 4.4.0 - - magic-string-ast@1.0.3: - dependencies: - magic-string: 0.30.21 - - magic-string@0.30.21: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - - marked-katex-extension@5.1.7(katex@0.16.28)(marked@17.0.4): - dependencies: - katex: 0.16.28 - marked: 17.0.4 - - marked@17.0.4: {} - - marks-pane@1.0.9: {} - - material-icons@1.13.14: {} - - meow@13.2.0: {} - - merge2@1.4.1: {} - - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - min-document@2.19.2: - dependencies: - dom-walk: 0.1.2 - - minimatch@10.2.4: - dependencies: - brace-expansion: 5.0.4 - - minimatch@9.0.9: - dependencies: - brace-expansion: 2.0.2 - - mitt@3.0.1: {} - - mlly@1.8.0: - dependencies: - acorn: 8.16.0 - pathe: 2.0.3 - pkg-types: 1.3.1 - ufo: 1.6.3 - - mpd-parser@1.3.1: - dependencies: - '@babel/runtime': 7.28.6 - '@videojs/vhs-utils': 4.1.1 - '@xmldom/xmldom': 0.8.11 - global: 4.4.0 - - ms@2.1.3: {} - - muggle-string@0.4.1: {} - - mux.js@7.1.0: - dependencies: - '@babel/runtime': 7.28.6 - global: 4.4.0 - - nanoid@3.3.11: {} - - natural-compare@1.4.0: {} - - next-tick@1.1.0: {} - - node-releases@2.0.27: {} - - normalize.css@8.0.1: {} - - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - - optionator@0.9.4: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - pako@1.0.11: {} - - path-browserify@1.0.1: {} - - path-exists@4.0.0: {} - - path-key@3.1.1: {} - - path-parse@1.0.7: {} - - path-webpack@0.0.3: {} - - pathe@2.0.3: {} - - perfect-debounce@1.0.0: {} - - perfect-debounce@2.1.0: {} - - picocolors@1.1.1: {} - - picomatch@2.3.1: {} - - picomatch@4.0.3: {} - - pinia@3.0.4(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3)): - dependencies: - '@vue/devtools-api': 7.7.9 - vue: 3.5.30(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - - pkcs7@1.0.4: - dependencies: - '@babel/runtime': 7.28.6 - - pkg-types@1.3.1: - dependencies: - confbox: 0.1.8 - mlly: 1.8.0 - pathe: 2.0.3 - - pkg-types@2.3.0: - dependencies: - confbox: 0.2.4 - exsolve: 1.0.8 - pathe: 2.0.3 - - postcss-selector-parser@7.1.1: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-value-parser@4.2.0: {} - - postcss@8.5.8: - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - prelude-ls@1.2.1: {} - - prettier-linter-helpers@1.0.1: - dependencies: - fast-diff: 1.3.0 - - prettier@3.8.1: {} - - pretty-bytes@7.1.0: {} - - process-nextick-args@2.0.1: {} - - process@0.11.10: {} - - proper-lockfile@4.1.2: - dependencies: - graceful-fs: 4.2.11 - retry: 0.12.0 - signal-exit: 3.0.7 - - punycode@2.3.1: {} - - qrcode.vue@3.8.0(vue@3.5.30(typescript@5.9.3)): - dependencies: - vue: 3.5.30(typescript@5.9.3) - - quansync@0.2.11: {} - - querystringify@2.2.0: {} - - queue-microtask@1.2.3: {} - - readable-stream@2.3.8: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - - readdirp@5.0.0: {} - - regenerate-unicode-properties@10.2.2: - dependencies: - regenerate: 1.4.2 - - regenerate@1.4.2: {} - - regenerator-runtime@0.14.1: {} - - regexpu-core@6.4.0: - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.2 - regjsgen: 0.8.0 - regjsparser: 0.13.0 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.1 - - regjsgen@0.8.0: {} - - regjsparser@0.13.0: - dependencies: - jsesc: 3.1.0 - - requires-port@1.0.0: {} - - resolve@1.22.11: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - retry@0.12.0: {} - - reusify@1.1.0: {} - - rfdc@1.4.1: {} - - rolldown@1.0.0-rc.9: - dependencies: - '@oxc-project/types': 0.115.0 - '@rolldown/pluginutils': 1.0.0-rc.9 - optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.9 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.9 - '@rolldown/binding-darwin-x64': 1.0.0-rc.9 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.9 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.9 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.9 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.9 - '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.9 - '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.9 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.9 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.9 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.9 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.9 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.9 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.9 - - rollup@4.57.1: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.57.1 - '@rollup/rollup-android-arm64': 4.57.1 - '@rollup/rollup-darwin-arm64': 4.57.1 - '@rollup/rollup-darwin-x64': 4.57.1 - '@rollup/rollup-freebsd-arm64': 4.57.1 - '@rollup/rollup-freebsd-x64': 4.57.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.57.1 - '@rollup/rollup-linux-arm-musleabihf': 4.57.1 - '@rollup/rollup-linux-arm64-gnu': 4.57.1 - '@rollup/rollup-linux-arm64-musl': 4.57.1 - '@rollup/rollup-linux-loong64-gnu': 4.57.1 - '@rollup/rollup-linux-loong64-musl': 4.57.1 - '@rollup/rollup-linux-ppc64-gnu': 4.57.1 - '@rollup/rollup-linux-ppc64-musl': 4.57.1 - '@rollup/rollup-linux-riscv64-gnu': 4.57.1 - '@rollup/rollup-linux-riscv64-musl': 4.57.1 - '@rollup/rollup-linux-s390x-gnu': 4.57.1 - '@rollup/rollup-linux-x64-gnu': 4.57.1 - '@rollup/rollup-linux-x64-musl': 4.57.1 - '@rollup/rollup-openbsd-x64': 4.57.1 - '@rollup/rollup-openharmony-arm64': 4.57.1 - '@rollup/rollup-win32-arm64-msvc': 4.57.1 - '@rollup/rollup-win32-ia32-msvc': 4.57.1 - '@rollup/rollup-win32-x64-gnu': 4.57.1 - '@rollup/rollup-win32-x64-msvc': 4.57.1 - fsevents: 2.3.3 - optional: true - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - safe-buffer@5.1.2: {} - - scule@1.3.0: {} - - semver@6.3.1: {} - - semver@7.7.4: {} - - setimmediate@1.0.5: {} - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - signal-exit@3.0.7: {} - - source-map-js@1.2.1: {} - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - speakingurl@14.0.1: {} - - string_decoder@1.1.1: - dependencies: - safe-buffer: 5.1.2 - - superjson@2.2.6: - dependencies: - copy-anything: 4.0.5 - - supports-preserve-symlinks-flag@1.0.0: {} - - synckit@0.11.12: - dependencies: - '@pkgr/core': 0.2.9 - - systemjs@6.15.1: {} - - tabbable@6.4.0: - optional: true - - tar-mini@0.2.0: {} - - terser@5.46.0: - dependencies: - '@jridgewell/source-map': 0.3.11 - acorn: 8.15.0 - commander: 2.20.3 - source-map-support: 0.5.21 - - tinyglobby@0.2.15: - dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - ts-api-utils@2.4.0(typescript@5.9.3): - dependencies: - typescript: 5.9.3 - - tslib@2.8.1: - optional: true - - tus-js-client@4.3.1: - dependencies: - buffer-from: 1.1.2 - combine-errors: 3.0.3 - is-stream: 2.0.1 - js-base64: 3.7.8 - lodash.throttle: 4.1.1 - proper-lockfile: 4.1.2 - url-parse: 1.5.10 - - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - type@2.7.3: {} - - typescript-eslint@8.56.0(eslint@10.0.3)(typescript@5.9.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/parser': 8.56.0(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.0.3)(typescript@5.9.3) - eslint: 10.0.3 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - typescript@5.9.3: {} - - ufo@1.6.3: {} - - undici-types@7.16.0: {} - - unicode-canonical-property-names-ecmascript@2.0.1: {} - - unicode-match-property-ecmascript@2.0.0: - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.1 - unicode-property-aliases-ecmascript: 2.2.0 - - unicode-match-property-value-ecmascript@2.2.1: {} - - unicode-property-aliases-ecmascript@2.2.0: {} - - unplugin-utils@0.3.1: - dependencies: - pathe: 2.0.3 - picomatch: 4.0.3 - - unplugin@2.3.11: - dependencies: - '@jridgewell/remapping': 2.3.5 - acorn: 8.16.0 - picomatch: 4.0.3 - webpack-virtual-modules: 0.6.2 - - unplugin@3.0.0: - dependencies: - '@jridgewell/remapping': 2.3.5 - picomatch: 4.0.3 - webpack-virtual-modules: 0.6.2 - - update-browserslist-db@1.2.3(browserslist@4.28.1): - dependencies: - browserslist: 4.28.1 - escalade: 3.2.0 - picocolors: 1.1.1 - - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - - url-parse@1.5.10: - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - - utif@3.1.0: - dependencies: - pako: 1.0.11 - - util-deprecate@1.0.2: {} - - video.js@8.23.7: - dependencies: - '@babel/runtime': 7.28.6 - '@videojs/http-streaming': 3.17.4(video.js@8.23.7) - '@videojs/vhs-utils': 4.1.1 - '@videojs/xhr': 2.7.0 - aes-decrypter: 4.0.2 - global: 4.4.0 - m3u8-parser: 7.2.0 - mpd-parser: 1.3.1 - mux.js: 7.1.0 - videojs-contrib-quality-levels: 4.1.0(video.js@8.23.7) - videojs-font: 4.2.0 - videojs-vtt.js: 0.15.5 - - videojs-contrib-quality-levels@4.1.0(video.js@8.23.7): - dependencies: - global: 4.4.0 - video.js: 8.23.7 - - videojs-font@4.2.0: {} - - videojs-hotkeys@0.2.30: {} - - videojs-mobile-ui@1.2.2(video.js@8.23.7): - dependencies: - global: 4.4.0 - video.js: 8.23.7 - - videojs-vtt.js@0.15.5: - dependencies: - global: 4.4.0 - - vite-plugin-compression2@2.5.1(rollup@4.57.1): - dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.57.1) - tar-mini: 0.2.0 - transitivePeerDependencies: - - rollup - - vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2): - dependencies: - '@oxc-project/runtime': 0.115.0 - lightningcss: 1.32.0 - picomatch: 4.0.3 - postcss: 8.5.8 - rolldown: 1.0.0-rc.9 - tinyglobby: 0.2.15 - optionalDependencies: - '@types/node': 24.12.0 - esbuild: 0.27.3 - fsevents: 2.3.3 - terser: 5.46.0 - yaml: 2.8.2 - - vscode-uri@3.1.0: {} - - vue-eslint-parser@10.4.0(eslint@10.0.3): - dependencies: - debug: 4.4.3 - eslint: 10.0.3 - eslint-scope: 9.1.2 - eslint-visitor-keys: 5.0.1 - espree: 11.2.0 - esquery: 1.7.0 - semver: 7.7.4 - transitivePeerDependencies: - - supports-color - - vue-i18n@11.3.0(vue@3.5.30(typescript@5.9.3)): - dependencies: - '@intlify/core-base': 11.3.0 - '@intlify/devtools-types': 11.3.0 - '@intlify/shared': 11.3.0 - '@vue/devtools-api': 6.6.4 - vue: 3.5.30(typescript@5.9.3) - - vue-lazyload@3.0.0: {} - - vue-reader@1.3.4: - dependencies: - epubjs: 0.3.93 - - vue-router@5.0.3(@vue/compiler-sfc@3.5.30)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3)))(vue@3.5.30(typescript@5.9.3)): - dependencies: - '@babel/generator': 7.29.1 - '@vue-macros/common': 3.1.2(vue@3.5.30(typescript@5.9.3)) - '@vue/devtools-api': 8.0.6 - ast-walker-scope: 0.8.3 - chokidar: 5.0.0 - json5: 2.2.3 - local-pkg: 1.1.2 - magic-string: 0.30.21 - mlly: 1.8.0 - muggle-string: 0.4.1 - pathe: 2.0.3 - picomatch: 4.0.3 - scule: 1.3.0 - tinyglobby: 0.2.15 - unplugin: 3.0.0 - unplugin-utils: 0.3.1 - vue: 3.5.30(typescript@5.9.3) - yaml: 2.8.2 - optionalDependencies: - '@vue/compiler-sfc': 3.5.30 - pinia: 3.0.4(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3)) - - vue-toastification@2.0.0-rc.5(vue@3.5.30(typescript@5.9.3)): - dependencies: - vue: 3.5.30(typescript@5.9.3) - - vue-tsc@3.2.5(typescript@5.9.3): - dependencies: - '@volar/typescript': 2.4.28 - '@vue/language-core': 3.2.5 - typescript: 5.9.3 - - vue@3.5.30(typescript@5.9.3): - dependencies: - '@vue/compiler-dom': 3.5.30 - '@vue/compiler-sfc': 3.5.30 - '@vue/runtime-dom': 3.5.30 - '@vue/server-renderer': 3.5.30(vue@3.5.30(typescript@5.9.3)) - '@vue/shared': 3.5.30 - optionalDependencies: - typescript: 5.9.3 - - webpack-virtual-modules@0.6.2: {} - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - word-wrap@1.2.5: {} - - xml-name-validator@4.0.0: {} - - yallist@3.1.1: {} - - yaml-eslint-parser@1.3.2: - dependencies: - eslint-visitor-keys: 3.4.3 - yaml: 2.8.2 - - yaml@2.8.2: {} - - yocto-queue@0.1.0: {} diff --git a/frontend/postcss.config.cjs b/frontend/postcss.config.js similarity index 53% rename from frontend/postcss.config.cjs rename to frontend/postcss.config.js index a47ef4f9..2aa7205d 100644 --- a/frontend/postcss.config.cjs +++ b/frontend/postcss.config.js @@ -1,5 +1,6 @@ -module.exports = { +export default { plugins: { + tailwindcss: {}, autoprefixer: {}, }, }; diff --git a/frontend/public/.gitkeep b/frontend/public/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/frontend/public/img/icons/android-chrome-192x192.png b/frontend/public/img/icons/android-chrome-192x192.png deleted file mode 100644 index e9131e42a46292f0c302a0ec1d490da84773a053..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9367 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℘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 diff --git a/frontend/public/img/icons/android-chrome-512x512.png b/frontend/public/img/icons/android-chrome-512x512.png deleted file mode 100644 index d4d3f2e2d78204548458e2fd806fa9a0d4a8edd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23072 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 diff --git a/frontend/public/img/icons/favicon.ico b/frontend/public/img/icons/favicon.ico deleted file mode 100644 index 2ab0ce10d8c64e083120ba73abb6260882ac87e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 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 Se@l@)D@GnQ+dsBp+y4PAP~b}d diff --git a/frontend/public/img/icons/favicon.svg b/frontend/public/img/icons/favicon.svg deleted file mode 100644 index 8f91e01f..00000000 --- a/frontend/public/img/icons/favicon.svg +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/frontend/public/img/logo.svg b/frontend/public/img/logo.svg deleted file mode 100644 index dac88ae2..00000000 --- a/frontend/public/img/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/frontend/public/index.html b/frontend/public/index.html deleted file mode 100644 index 15ff375e..00000000 --- a/frontend/public/index.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - [{[ if .ReCaptcha -]}] - - [{[ end ]}] - - - [{[ if .Name -]}][{[ .Name ]}][{[ else ]}]File Browser[{[ end ]}] - - - - - - - - - - - - - - - - - - - -
- -
-
-
-
-
-
-
- - - - [{[ if .CSS -]}] - - [{[ end ]}] - - diff --git a/frontend/public/manifest.json b/frontend/public/manifest.json deleted file mode 100644 index 33efca79..00000000 --- a/frontend/public/manifest.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "File Browser", - "short_name": "File Browser", - "icons": [ - { - "src": "./img/icons/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "./static/img/icons/android-chrome-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "start_url": "/", - "display": "standalone", - "background_color": "#ffffff", - "theme_color": "#455a64" -} diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx new file mode 100644 index 00000000..7e76e687 --- /dev/null +++ b/frontend/src/App.tsx @@ -0,0 +1,25 @@ +import { QueryClientProvider } from "@tanstack/react-query"; +import { RouterProvider, createRouter } from "@tanstack/react-router"; +import { AuthProvider } from "@/context/AuthContext"; +import { queryClient } from "@/lib/queryClient"; +import { routeTree } from "@/routeTree.gen"; + +// Create router +const router = createRouter({ routeTree }); + +// Extend router with router instance typing +declare module "@tanstack/react-router" { + interface Register { + router: typeof router; + } +} + +export function App() { + return ( + + + + + + ); +} diff --git a/frontend/src/App.vue b/frontend/src/App.vue deleted file mode 100644 index 25917f7d..00000000 --- a/frontend/src/App.vue +++ /dev/null @@ -1,33 +0,0 @@ - - - diff --git a/frontend/src/api/auth.ts b/frontend/src/api/auth.ts new file mode 100644 index 00000000..4b1e0b9c --- /dev/null +++ b/frontend/src/api/auth.ts @@ -0,0 +1,44 @@ +import { fetchAPI, setAuthToken, getAuthToken } from "./client"; +import type { IUser, AuthResponse } from "@/types"; + +export async function login( + username: string, + password: string +): Promise { + const response = await fetchAPI("/login", { + method: "POST", + body: JSON.stringify({ username, password }), + }); + + setAuthToken(response.token); + return response.token; +} + +export async function logout(): Promise { + setAuthToken(null); + // Optionally call /logout endpoint if backend has one + try { + await fetchAPI("/logout", { method: "POST" }); + } catch { + // Ignore errors on logout + } +} + +export async function getCurrentUser(): Promise { + return fetchAPI("/user"); +} + +export async function changePassword(password: string): Promise { + await fetchAPI("/user", { + method: "PUT", + body: JSON.stringify({ password }), + }); +} + +export function isAuthenticated(): boolean { + return !!getAuthToken(); +} + +export function clearAuth(): void { + setAuthToken(null); +} diff --git a/frontend/src/api/client.ts b/frontend/src/api/client.ts new file mode 100644 index 00000000..58e4898c --- /dev/null +++ b/frontend/src/api/client.ts @@ -0,0 +1,112 @@ +import { ApiError } from "@/types"; + +export const API_BASE_URL = "/api"; + +let authToken: string | null = null; +let abortControllers = new Map(); + +export function setAuthToken(token: string | null) { + authToken = token; + if (token) { + localStorage.setItem("auth_token", token); + } else { + localStorage.removeItem("auth_token"); + } +} + +export function getAuthToken(): string | null { + if (!authToken) { + authToken = localStorage.getItem("auth_token"); + } + return authToken; +} + +interface FetchOptions extends RequestInit { + signal?: AbortSignal; +} + +export async function fetchAPI( + endpoint: string, + options: FetchOptions = {} +): Promise { + const url = `${API_BASE_URL}${endpoint}`; + const controller = new AbortController(); + const requestKey = `${options.method || "GET"}:${endpoint}`; + + // Store abort controller for potential cancellation + abortControllers.set(requestKey, controller); + + const headers: Record = { + "Content-Type": "application/json", + }; + + if (typeof options.headers === "object" && options.headers !== null) { + Object.assign(headers, options.headers); + } + + const token = getAuthToken(); + if (token) { + headers["X-Auth"] = token; + } + + try { + const response = await fetch(url, { + ...options, + headers, + signal: options.signal || controller.signal, + }); + + // Handle 401 — token expired + if (response.status === 401) { + setAuthToken(null); + window.dispatchEvent(new CustomEvent("auth:logout")); + throw new ApiError("Unauthorized", 401); + } + + if (!response.ok) { + const errorText = await response.text(); + throw new ApiError(errorText || response.statusText, response.status); + } + + // Handle empty responses + const contentType = response.headers.get("content-type"); + if (contentType && contentType.includes("application/json")) { + return await response.json(); + } + + return undefined as T; + } catch (err) { + if (err instanceof ApiError) { + throw err; + } + + if (err instanceof Error && err.name === "AbortError") { + throw new ApiError("Request canceled", 0, true); + } + + if (err instanceof TypeError) { + throw new ApiError("Network error", 0); + } + + throw new ApiError( + err instanceof Error ? err.message : "Unknown error", + 0 + ); + } finally { + abortControllers.delete(requestKey); + } +} + +export function cancelRequest(endpoint: string, method: string = "GET") { + const requestKey = `${method}:${endpoint}`; + const controller = abortControllers.get(requestKey); + if (controller) { + controller.abort(); + abortControllers.delete(requestKey); + } +} + +export function cancelAllRequests() { + abortControllers.forEach((controller) => controller.abort()); + abortControllers.clear(); +} diff --git a/frontend/src/api/commands.ts b/frontend/src/api/commands.ts deleted file mode 100644 index 81dc93cd..00000000 --- a/frontend/src/api/commands.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { baseURL } from "@/utils/constants"; -import { removePrefix } from "./utils"; - -const ssl = window.location.protocol === "https:"; -const protocol = ssl ? "wss:" : "ws:"; - -export default function command( - url: string, - command: string, - onmessage: WebSocket["onmessage"], - onclose: WebSocket["onclose"] -) { - url = removePrefix(url); - url = `${protocol}//${window.location.host}${baseURL}/api/command${url}`; - - const conn = new window.WebSocket(url); - conn.onopen = () => conn.send(command); - conn.onmessage = onmessage; - conn.onclose = onclose; -} diff --git a/frontend/src/api/files.ts b/frontend/src/api/files.ts index ed2de8ee..b0dae7cf 100644 --- a/frontend/src/api/files.ts +++ b/frontend/src/api/files.ts @@ -1,244 +1,111 @@ -import { useAuthStore } from "@/stores/auth"; -import { useLayoutStore } from "@/stores/layout"; -import { baseURL } from "@/utils/constants"; -import { upload as postTus, useTus } from "./tus"; -import { createURL, fetchURL, removePrefix, StatusError } from "./utils"; -import { isEncodableResponse, makeRawResource } from "@/utils/encodings"; +import { fetchAPI } from "./client"; +import type { IFile, FileListResponse } from "@/types"; -export async function fetch(url: string, signal?: AbortSignal) { - const encoding = isEncodableResponse(url); - url = removePrefix(url); - const res = await fetchURL(`/api/resources${url}`, { - signal, - headers: { - "X-Encoding": encoding ? "true" : "false", - }, +export async function fetchFiles(path: string): Promise { + const response = await fetchAPI(`/resources${path}`); + return response.items || []; +} + +export async function deleteFile(path: string): Promise { + await fetchAPI(`/resources${path}`, { + method: "DELETE", }); - - let data: Resource; - try { - if (res.headers.get("Content-Type") == "application/octet-stream") { - data = await makeRawResource(res, url); - } else { - data = (await res.json()) as Resource; - } - } catch (e) { - // Check if the error is an intentional cancellation - if (e instanceof Error && e.name === "AbortError") { - throw new StatusError("000 No connection", 0, true); - } - throw e; - } - data.url = `/files${url}`; - - if (data.isDir) { - if (!data.url.endsWith("/")) data.url += "/"; - // Perhaps change the any - data.items = data.items.map((item: any, index: any) => { - item.index = index; - item.url = `${data.url}${encodeURIComponent(item.name)}`; - - if (item.isDir) { - item.url += "/"; - } - - return item; - }); - } - - return data; } -async function resourceAction(url: string, method: ApiMethod, content?: any) { - url = removePrefix(url); - - const opts: ApiOpts = { - method, - }; - - if (content) { - opts.body = content; - } - - const res = await fetchURL(`/api/resources${url}`, opts); - - return res; +export async function renameFile(path: string, name: string): Promise { + await fetchAPI(`/resources${path}`, { + method: "PATCH", + body: JSON.stringify({ rename: name }), + }); } -export async function remove(url: string) { - return resourceAction(url, "DELETE"); +export async function createDirectory(path: string, name: string): Promise { + await fetchAPI(`/resources${path}`, { + method: "POST", + body: JSON.stringify({ mkdir: name }), + }); } -export async function put(url: string, content = "") { - return resourceAction(url, "PUT", content); -} +export async function uploadFile( + path: string, + file: File, + onProgress?: (progress: number) => void +): Promise { + const formData = new FormData(); + formData.append("file", file); -export function download(format: any, ...files: string[]) { - let url = `${baseURL}/api/raw`; + const xhr = new XMLHttpRequest(); - if (files.length === 1) { - url += removePrefix(files[0]) + "?"; - } else { - let arg = ""; - - for (const file of files) { - arg += removePrefix(file) + ","; - } - - arg = arg.substring(0, arg.length - 1); - arg = encodeURIComponent(arg); - url += `/?files=${arg}&`; - } - - if (format) { - url += `algo=${format}&`; - } - - window.open(url); -} - -export async function post( - url: string, - content: ApiContent = "", - overwrite = false, - onupload: any = () => {} -) { - // Use the pre-existing API if: - const useResourcesApi = - // a folder is being created - url.endsWith("/") || - // We're not using http(s) - (content instanceof Blob && - !["http:", "https:"].includes(window.location.protocol)) || - // Tus is disabled / not applicable - !(await useTus(content)); - return useResourcesApi - ? postResources(url, content, overwrite, onupload) - : postTus(url, content, overwrite, onupload); -} - -async function postResources( - url: string, - content: ApiContent = "", - overwrite = false, - onupload: any -) { - url = removePrefix(url); - - let bufferContent: ArrayBuffer; - if ( - content instanceof Blob && - !["http:", "https:"].includes(window.location.protocol) - ) { - bufferContent = await new Response(content).arrayBuffer(); - } - - const authStore = useAuthStore(); return new Promise((resolve, reject) => { - const request = new XMLHttpRequest(); - request.open( - "POST", - `${baseURL}/api/resources${url}?override=${overwrite}`, - true - ); - request.setRequestHeader("X-Auth", authStore.jwt); - - if (typeof onupload === "function") { - request.upload.onprogress = onupload; - } - - request.onload = () => { - if (request.status === 200) { - resolve(request.responseText); - } else if (request.status === 409) { - reject(new Error(request.status.toString())); - } else { - reject(new Error(request.responseText)); + xhr.upload.addEventListener("progress", (e) => { + if (e.lengthComputable && onProgress) { + const percentComplete = (e.loaded / e.total) * 100; + onProgress(percentComplete); } - }; + }); - request.onerror = () => { - reject(new Error("001 Connection aborted")); - }; + xhr.addEventListener("load", () => { + if (xhr.status >= 200 && xhr.status < 300) { + resolve(); + } else { + reject(new Error(`Upload failed: ${xhr.statusText}`)); + } + }); - request.send(bufferContent || content); + xhr.addEventListener("error", () => { + reject(new Error("Upload failed")); + }); + + xhr.addEventListener("abort", () => { + reject(new Error("Upload canceled")); + }); + + const token = localStorage.getItem("auth_token"); + xhr.open("POST", `/api/resources${path}`); + if (token) { + xhr.setRequestHeader("X-Auth", token); + } + xhr.send(formData); }); } -function moveCopy( - items: any[], - copy = false, - overwrite = false, - rename = false -) { - const layoutStore = useLayoutStore(); - const promises = []; - - for (const item of items) { - const from = item.from; - const to = encodeURIComponent(removePrefix(item.to ?? "")); - const finalOverwrite = - item.overwrite == undefined ? overwrite : item.overwrite; - const finalRename = item.rename == undefined ? rename : item.rename; - const url = `${from}?action=${ - copy ? "copy" : "rename" - }&destination=${to}&override=${finalOverwrite}&rename=${finalRename}`; - promises.push(resourceAction(url, "PATCH")); +export async function downloadFile(path: string): Promise { + const link = document.createElement("a"); + link.href = `/api/download${path}`; + const token = localStorage.getItem("auth_token"); + if (token) { + link.setAttribute("data-auth", token); } - layoutStore.closeHovers(); - return Promise.all(promises); + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); } -export function move(items: any[], overwrite = false, rename = false) { - return moveCopy(items, false, overwrite, rename); +export async function copyFile( + source: string, + destination: string +): Promise { + await fetchAPI(`/resources${destination}`, { + method: "POST", + body: JSON.stringify({ copy: source }), + }); } -export function copy(items: any[], overwrite = false, rename = false) { - return moveCopy(items, true, overwrite, rename); +export async function moveFile( + source: string, + destination: string +): Promise { + await fetchAPI(`/resources${destination}`, { + method: "POST", + body: JSON.stringify({ move: source }), + }); } -export async function checksum(url: string, algo: ChecksumAlg) { - const data = await resourceAction(`${url}?checksum=${algo}`, "GET"); - return (await data.json()).checksums[algo]; -} - -export function getDownloadURL(file: ResourceItem, inline: any) { - const params = { - ...(inline && { inline: "true" }), - }; - - return createURL("api/raw" + file.path, params); -} - -export function getPreviewURL(file: ResourceItem, size: string) { - const params = { - inline: "true", - key: Date.parse(file.modified), - }; - - return createURL("api/preview/" + size + file.path, params); -} - -export function getSubtitlesURL(file: ResourceItem) { - const params = { - inline: "true", - }; - - return file.subtitles?.map((d) => createURL("api/subtitle" + d, params)); -} - -export async function usage(url: string, signal: AbortSignal) { - url = removePrefix(url); - - const res = await fetchURL(`/api/usage${url}`, { signal }); - - try { - return await res.json(); - } catch (e) { - // Check if the error is an intentional cancellation - if (e instanceof Error && e.name == "AbortError") { - throw new StatusError("000 No connection", 0, true); - } - throw e; +export async function getFilePreview(path: string): Promise { + const token = localStorage.getItem("auth_token"); + let url = `/api/preview${path}`; + if (token) { + url += `?auth=${encodeURIComponent(token)}`; } + return url; } diff --git a/frontend/src/api/index.ts b/frontend/src/api/index.ts index abc189dc..ca7e3215 100644 --- a/frontend/src/api/index.ts +++ b/frontend/src/api/index.ts @@ -1,9 +1,14 @@ -import * as files from "./files"; -import * as share from "./share"; -import * as users from "./users"; -import * as settings from "./settings"; -import * as pub from "./pub"; -import search from "./search"; -import commands from "./commands"; +/** + * API namespace exports + * Re-export all API functions grouped by domain + */ -export { files, share, users, settings, pub, commands, search }; +export * as auth from "./auth"; +export * as files from "./files"; +export * as settings from "./settings"; +export * as users from "./users"; +export * from "./preview"; +export * from "./search"; +export * from "./share"; +export * from "./client"; +export * from "./queryKeys"; diff --git a/frontend/src/api/preview.ts b/frontend/src/api/preview.ts new file mode 100644 index 00000000..e28dc5ab --- /dev/null +++ b/frontend/src/api/preview.ts @@ -0,0 +1,64 @@ +import { API_BASE_URL } from "./client"; + +/** + * Get preview URL for a file + * @param path - File path + * @param size - Preview size (128, 256, 512) + */ +export function getPreviewUrl(path: string, size: number = 256): string { + const encodedPath = encodeURIComponent(path.slice(1)); // Remove leading slash + return `${API_BASE_URL}/preview/${size}/${encodedPath}`; +} + +/** + * Check if a file type is previewable + */ +export function isPreviewable(filename: string): boolean { + const ext = filename.split(".").pop()?.toLowerCase() || ""; + const previewableTypes = [ + // Images + "jpg", + "jpeg", + "png", + "gif", + "webp", + "svg", + "bmp", + // Video + "mp4", + "webm", + "ogv", + // Audio + "mp3", + "wav", + "ogg", + // Documents + "pdf", + "txt", + "md", + "json", + "xml", + "html", + "css", + "js", + ]; + return previewableTypes.includes(ext); +} + +/** + * Get file type category + */ +export function getFileType(filename: string): "image" | "video" | "audio" | "document" | "unknown" { + const ext = filename.split(".").pop()?.toLowerCase() || ""; + + const imageExts = ["jpg", "jpeg", "png", "gif", "webp", "svg", "bmp"]; + const videoExts = ["mp4", "webm", "ogv"]; + const audioExts = ["mp3", "wav", "ogg"]; + const docExts = ["pdf", "txt", "md", "json", "xml", "html", "css", "js"]; + + if (imageExts.includes(ext)) return "image"; + if (videoExts.includes(ext)) return "video"; + if (audioExts.includes(ext)) return "audio"; + if (docExts.includes(ext)) return "document"; + return "unknown"; +} diff --git a/frontend/src/api/pub.ts b/frontend/src/api/pub.ts deleted file mode 100644 index 5070cae3..00000000 --- a/frontend/src/api/pub.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { fetchURL, removePrefix, createURL } from "./utils"; -import { baseURL } from "@/utils/constants"; - -export async function fetch(url: string, password: string = "") { - url = removePrefix(url); - - const res = await fetchURL( - `/api/public/share${url}`, - { - headers: { "X-SHARE-PASSWORD": encodeURIComponent(password) }, - }, - false - ); - - const data = (await res.json()) as Resource; - data.url = `/share${url}`; - - if (data.isDir) { - if (!data.url.endsWith("/")) data.url += "/"; - data.items = data.items.map((item: any, index: any) => { - item.index = index; - item.url = `${data.url}${encodeURIComponent(item.name)}`; - - if (item.isDir) { - item.url += "/"; - } - - return item; - }); - } - - return data; -} - -export function download( - format: DownloadFormat, - hash: string, - token: string, - ...files: string[] -) { - let url = `${baseURL}/api/public/dl/${hash}`; - - if (files.length === 1) { - url += files[0] + "?"; - } else { - let arg = ""; - - for (const file of files) { - arg += file + ","; - } - - arg = arg.substring(0, arg.length - 1); - arg = encodeURIComponent(arg); - url += `/?files=${arg}&`; - } - - if (format) { - url += `algo=${format}&`; - } - - if (token) { - url += `token=${token}&`; - } - - window.open(url); -} - -export function getDownloadURL(res: Resource, inline = false) { - const params = { - ...(inline && { inline: "true" }), - ...(res.token && { token: res.token }), - }; - - return createURL("api/public/dl/" + res.hash + res.path, params); -} diff --git a/frontend/src/api/queryKeys.ts b/frontend/src/api/queryKeys.ts new file mode 100644 index 00000000..921a62c8 --- /dev/null +++ b/frontend/src/api/queryKeys.ts @@ -0,0 +1,38 @@ +/** + * TanStack Query key factory functions + * Used to create consistent, nested query keys for caching + */ + +export const filesKeys = { + all: ["files"] as const, + lists: () => [...filesKeys.all, "list"] as const, + list: (path: string) => [...filesKeys.lists(), path] as const, + details: () => [...filesKeys.all, "detail"] as const, + detail: (path: string) => [...filesKeys.details(), path] as const, +}; + +export const usersKeys = { + all: ["users"] as const, + lists: () => [...usersKeys.all, "list"] as const, + list: () => [...usersKeys.lists()] as const, + details: () => [...usersKeys.all, "detail"] as const, + detail: (id: number) => [...usersKeys.details(), id] as const, +}; + +export const settingsKeys = { + all: ["settings"] as const, + global: () => [...settingsKeys.all, "global"] as const, +}; + +export const authKeys = { + all: ["auth"] as const, + me: () => [...authKeys.all, "me"] as const, +}; + +export const shareKeys = { + all: ["share"] as const, + lists: () => [...shareKeys.all, "list"] as const, + list: () => [...shareKeys.lists()] as const, + details: () => [...shareKeys.all, "detail"] as const, + detail: (hash: string) => [...shareKeys.details(), hash] as const, +}; diff --git a/frontend/src/api/search.ts b/frontend/src/api/search.ts index 63cbdaa1..662d74f8 100644 --- a/frontend/src/api/search.ts +++ b/frontend/src/api/search.ts @@ -1,73 +1,33 @@ -import { fetchURL, removePrefix, StatusError } from "./utils"; -import url from "../utils/url"; +import { fetchAPI } from "./client"; +import type { IFile } from "@/types"; -export default async function search( - base: string, - query: string, - signal: AbortSignal, - callback: (item: ResourceItem) => void -) { - base = removePrefix(base); - query = encodeURIComponent(query); +export interface SearchResult extends IFile {} - if (!base.endsWith("/")) { - base += "/"; - } - - const res = await fetchURL(`/api/search${base}?query=${query}`, { signal }); - if (!res.body) { - throw new StatusError("000 No connection", 0); - } - try { - // Try streaming approach first (modern browsers) - if (res.body && typeof res.body.pipeThrough === "function") { - const reader = res.body.pipeThrough(new TextDecoderStream()).getReader(); - let buffer = ""; - while (true) { - const { done, value } = await reader.read(); - if (value) { - buffer += value; - } - const lines = buffer.split(/\n/); - let lastLine = lines.pop(); - // Save incomplete last line - if (!lastLine) { - lastLine = ""; - } - buffer = lastLine; - - for (const line of lines) { - if (line) { - const item = JSON.parse(line) as ResourceItem; - item.url = `/files${base}` + url.encodePath(item.path); - if (item.isDir) { - item.url += "/"; - } - callback(item); - } - } - if (done) break; - } - } else { - // Fallback for browsers without streaming support (e.g., Safari) - const text = await res.text(); - const lines = text.split(/\n/); - for (const line of lines) { - if (line) { - const item = JSON.parse(line) as ResourceItem; - item.url = `/files${base}` + url.encodePath(item.path); - if (item.isDir) { - item.url += "/"; - } - callback(item); - } - } - } - } catch (e) { - // Check if the error is an intentional cancellation - if (e instanceof Error && e.name === "AbortError") { - throw new StatusError("000 No connection", 0, true); - } - throw e; - } +export interface SearchResponse { + items: SearchResult[]; +} + +/** + * Search files by query + * @param query - Search query string + * @param path - Optional path to search within + */ +export async function searchFiles( + query: string, + path: string = "/" +): Promise { + if (!query.trim()) { + return []; + } + + const params = new URLSearchParams(); + params.append("q", query); + if (path && path !== "/") { + params.append("scope", path); + } + + const response = await fetchAPI( + `/search?${params.toString()}` + ); + return response.items || []; } diff --git a/frontend/src/api/settings.ts b/frontend/src/api/settings.ts index 6f806279..fe5f5610 100644 --- a/frontend/src/api/settings.ts +++ b/frontend/src/api/settings.ts @@ -1,12 +1,27 @@ -import { fetchURL, fetchJSON } from "./utils"; +import { fetchAPI } from "./client"; +import type { ISettings } from "@/types"; -export function get() { - return fetchJSON(`/api/settings`, {}); -} - -export async function update(settings: ISettings) { - await fetchURL(`/api/settings`, { +/** + * Save user preferences (theme, view mode, language) + */ +export async function savePreferences(preferences: { + locale?: string; + viewMode?: string; + singleClick?: boolean; + sorting?: { + by: string; + asc: boolean; + }; +}): Promise { + return fetchAPI("/settings", { method: "PUT", - body: JSON.stringify(settings), + body: JSON.stringify(preferences), }); } + +/** + * Get global settings + */ +export async function getSettings(): Promise { + return fetchAPI("/settings"); +} diff --git a/frontend/src/api/share.ts b/frontend/src/api/share.ts index af8a4ee3..31685363 100644 --- a/frontend/src/api/share.ts +++ b/frontend/src/api/share.ts @@ -1,45 +1,54 @@ -import { fetchURL, fetchJSON, removePrefix, createURL } from "./utils"; +import { fetchAPI } from "./client"; +import type { IFile, IShare } from "@/types"; -export async function list() { - return fetchJSON("/api/shares"); +/** + * Get public share info + */ +export async function getPublicShare(token: string): Promise { + return fetchAPI(`/public/share/${token}`); } -export async function get(url: string) { - url = removePrefix(url); - return fetchJSON(`/api/share${url}`); +/** + * Download from a public share + */ +export function getPublicDownloadUrl(token: string, path: string): string { + const encodedPath = encodeURIComponent(path); + return `/api/public/dl/${token}/${encodedPath}`; } -export async function remove(hash: string) { - await fetchURL(`/api/share/${hash}`, { +/** + * Create a share link + */ +export async function createShare( + path: string, + options?: { + password?: string; + expire?: number; + unit?: string; + clicks?: number; + } +): Promise { + return fetchAPI("/share", { + method: "POST", + body: JSON.stringify({ + path, + ...options, + }), + }); +} + +/** + * Delete a share link + */ +export async function deleteShare(token: string): Promise { + await fetchAPI(`/share/${token}`, { method: "DELETE", }); } -export async function create( - url: string, - password = "", - expires = "", - unit = "hours" -) { - url = removePrefix(url); - url = `/api/share${url}`; - if (expires !== "") { - url += `?expires=${expires}&unit=${unit}`; - } - let body = "{}"; - if (password != "" || expires !== "" || unit !== "hours") { - body = JSON.stringify({ - password: password, - expires: expires.toString(), // backend expects string not number - unit: unit, - }); - } - return fetchJSON(url, { - method: "POST", - body: body, - }); -} - -export function getShareURL(share: Share) { - return createURL("share/" + share.hash, {}); +/** + * List all shares (admin only) + */ +export async function listShares(): Promise { + return fetchAPI("/shares"); } diff --git a/frontend/src/api/tus.ts b/frontend/src/api/tus.ts deleted file mode 100644 index d6601166..00000000 --- a/frontend/src/api/tus.ts +++ /dev/null @@ -1,122 +0,0 @@ -import * as tus from "tus-js-client"; -import { baseURL, tusEndpoint, tusSettings, origin } from "@/utils/constants"; -import { useAuthStore } from "@/stores/auth"; -import { removePrefix } from "@/api/utils"; - -const RETRY_BASE_DELAY = 1000; -const RETRY_MAX_DELAY = 20000; -const CURRENT_UPLOAD_LIST: { [key: string]: tus.Upload } = {}; - -export async function upload( - filePath: string, - content: ApiContent = "", - overwrite = false, - onupload: any -) { - if (!tusSettings) { - // Shouldn't happen as we check for tus support before calling this function - throw new Error("Tus.io settings are not defined"); - } - - filePath = removePrefix(filePath); - const resourcePath = `${tusEndpoint}${filePath}?override=${overwrite}`; - - const authStore = useAuthStore(); - - // Exit early because of typescript, tus content can't be a string - if (content === "") { - return false; - } - return new Promise((resolve, reject) => { - const upload = new tus.Upload(content, { - endpoint: `${origin}${baseURL}${resourcePath}`, - chunkSize: tusSettings.chunkSize, - retryDelays: computeRetryDelays(tusSettings), - parallelUploads: 1, - storeFingerprintForResuming: false, - headers: { - "X-Auth": authStore.jwt, - }, - onShouldRetry: function (err) { - const status = err.originalResponse - ? err.originalResponse.getStatus() - : 0; - - // Do not retry for file conflict. - if (status === 409) { - return false; - } - - return true; - }, - onError: function (error: Error | tus.DetailedError) { - delete CURRENT_UPLOAD_LIST[filePath]; - - if (error.message === "Upload aborted") { - return reject(error); - } - - const message = - error instanceof tus.DetailedError - ? error.originalResponse === null - ? "000 No connection" - : error.originalResponse.getBody() - : "Upload failed"; - - console.error(error); - - reject(new Error(message)); - }, - onProgress: function (bytesUploaded) { - if (typeof onupload === "function") { - onupload({ loaded: bytesUploaded }); - } - }, - onSuccess: function () { - delete CURRENT_UPLOAD_LIST[filePath]; - resolve(); - }, - }); - CURRENT_UPLOAD_LIST[filePath] = upload; - upload.start(); - }); -} - -function computeRetryDelays(tusSettings: TusSettings): number[] | undefined { - if (!tusSettings.retryCount || tusSettings.retryCount < 1) { - // Disable retries altogether - return undefined; - } - // The tus client expects our retries as an array with computed backoffs - // E.g.: [0, 3000, 5000, 10000, 20000] - const retryDelays = []; - let delay = 0; - - for (let i = 0; i < tusSettings.retryCount; i++) { - retryDelays.push(Math.min(delay, RETRY_MAX_DELAY)); - delay = - delay === 0 ? RETRY_BASE_DELAY : Math.min(delay * 2, RETRY_MAX_DELAY); - } - - return retryDelays; -} - -export async function useTus(content: ApiContent) { - return isTusSupported() && content instanceof Blob; -} - -function isTusSupported() { - return tus.isSupported === true; -} - -export function abortAllUploads() { - for (const filePath in CURRENT_UPLOAD_LIST) { - if (CURRENT_UPLOAD_LIST[filePath]) { - CURRENT_UPLOAD_LIST[filePath].abort(true); - CURRENT_UPLOAD_LIST[filePath].options!.onError!( - new Error("Upload aborted") - ); - } - delete CURRENT_UPLOAD_LIST[filePath]; - } -} diff --git a/frontend/src/api/users.ts b/frontend/src/api/users.ts index dc45e084..c91f05d3 100644 --- a/frontend/src/api/users.ts +++ b/frontend/src/api/users.ts @@ -1,55 +1,65 @@ -import { fetchURL, fetchJSON, StatusError } from "./utils"; +import { fetchAPI } from "./client"; +import type { IUser } from "@/types"; -export async function getAll() { - return fetchJSON(`/api/users`, {}); +export interface CreateUserRequest { + username: string; + password: string; + admin?: boolean; } -export async function get(id: number) { - return fetchJSON(`/api/users/${id}`, {}); +export interface UpdateUserRequest { + username?: string; + password?: string; + admin?: boolean; + locale?: string; + viewMode?: string; + singleClick?: boolean; } -export async function create(user: IUser, currentPassword: string) { - const res = await fetchURL(`/api/users`, { +/** + * Get all users (admin only) + */ +export async function listUsers(): Promise { + return fetchAPI("/users"); +} + +/** + * Get a specific user by ID + */ +export async function getUser(id: number): Promise { + return fetchAPI(`/users/${id}`); +} + +/** + * Create a new user (admin only) + */ +export async function createUser( + request: CreateUserRequest +): Promise { + return fetchAPI("/users", { method: "POST", - body: JSON.stringify({ - what: "user", - which: [], - current_password: currentPassword, - data: user, - }), - }); - - if (res.status === 201) { - return res.headers.get("Location"); - } - - throw new StatusError(await res.text(), res.status); -} - -export async function update( - user: Partial, - which = ["all"], - currentPassword: string | null = null -) { - await fetchURL(`/api/users/${user.id}`, { - method: "PUT", - body: JSON.stringify({ - what: "user", - which: which, - ...(currentPassword != null ? { current_password: currentPassword } : {}), - data: user, - }), + body: JSON.stringify(request), }); } -export async function remove( +/** + * Update a user (admin only) + */ +export async function updateUser( id: number, - currentPassword: string | null = null -) { - await fetchURL(`/api/users/${id}`, { - method: "DELETE", - body: JSON.stringify({ - ...(currentPassword != null ? { current_password: currentPassword } : {}), - }), + request: UpdateUserRequest +): Promise { + return fetchAPI(`/users/${id}`, { + method: "PUT", + body: JSON.stringify(request), + }); +} + +/** + * Delete a user (admin only) + */ +export async function deleteUser(id: number): Promise { + await fetchAPI(`/users/${id}`, { + method: "DELETE", }); } diff --git a/frontend/src/api/utils.ts b/frontend/src/api/utils.ts deleted file mode 100644 index f21fbe38..00000000 --- a/frontend/src/api/utils.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { useAuthStore } from "@/stores/auth"; -import { renew, logout } from "@/utils/auth"; -import { baseURL } from "@/utils/constants"; -import { encodePath } from "@/utils/url"; - -export class StatusError extends Error { - constructor( - message: any, - public status?: number, - public is_canceled?: boolean - ) { - super(message); - this.name = "StatusError"; - } -} - -export async function fetchURL( - url: string, - opts: ApiOpts, - auth = true -): Promise { - const authStore = useAuthStore(); - - opts = opts || {}; - opts.headers = opts.headers || {}; - - const { headers, ...rest } = opts; - let res; - try { - res = await fetch(`${baseURL}${url}`, { - headers: { - "X-Auth": authStore.jwt, - ...headers, - }, - ...rest, - }); - } catch (e) { - // Check if the error is an intentional cancellation - if (e instanceof Error && e.name === "AbortError") { - throw new StatusError("000 No connection", 0, true); - } - throw new StatusError("000 No connection", 0); - } - - if (auth && res.headers.get("X-Renew-Token") === "true") { - await renew(authStore.jwt); - } - - if (res.status < 200 || res.status > 299) { - const body = await res.text(); - const error = new StatusError( - body || `${res.status} ${res.statusText}`, - res.status - ); - - if (auth && res.status == 401) { - logout(); - } - - throw error; - } - - return res; -} - -export async function fetchJSON(url: string, opts?: any): Promise { - const res = await fetchURL(url, opts); - - if (res.status === 200) { - return res.json() as Promise; - } - - throw new StatusError(`${res.status} ${res.statusText}`, res.status); -} - -export function removePrefix(url: string): string { - url = url.split("/").splice(2).join("/"); - - if (url === "") url = "/"; - if (url[0] !== "/") url = "/" + url; - return url; -} - -export function createURL(endpoint: string, searchParams = {}): string { - let prefix = baseURL; - if (!prefix.endsWith("/")) { - prefix = prefix + "/"; - } - const url = new URL(prefix + encodePath(endpoint), origin); - url.search = new URLSearchParams(searchParams).toString(); - - return url.toString(); -} - -export function setSafeTimeout(callback: () => void, delay: number): number { - const MAX_DELAY = 86_400_000; - let remaining = delay; - - function scheduleNext(): number { - if (remaining <= MAX_DELAY) { - return window.setTimeout(callback, remaining); - } else { - return window.setTimeout(() => { - remaining -= MAX_DELAY; - scheduleNext(); - }, MAX_DELAY); - } - } - - return scheduleNext(); -} diff --git a/frontend/src/assets/fonts/roboto/bold-cyrillic-ext.woff2 b/frontend/src/assets/fonts/roboto/bold-cyrillic-ext.woff2 deleted file mode 100755 index 0a67a9427e1e3250b55eb92552d81e7c6eb48aaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17176 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%0DD)azI0a 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 diff --git a/frontend/src/assets/fonts/roboto/bold-cyrillic.woff2 b/frontend/src/assets/fonts/roboto/bold-cyrillic.woff2 deleted file mode 100755 index 714bb43114adfbef08a4e9f4638e4ba92c9732cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11676 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 diff --git a/frontend/src/assets/fonts/roboto/bold-greek-ext.woff2 b/frontend/src/assets/fonts/roboto/bold-greek-ext.woff2 deleted file mode 100755 index 6dffd0673c8b46e448ef9eaa03ab69294d9c4f94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3384 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
TfV} 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 diff --git a/frontend/src/assets/fonts/roboto/bold-latin-ext.woff2 b/frontend/src/assets/fonts/roboto/bold-latin-ext.woff2 deleted file mode 100755 index fe8bf6941a5bbb6228220c3a5fea883583bc1103..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15140 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 Szuh}%^5C90OclS#X8{2Ia(p8I diff --git a/frontend/src/assets/fonts/roboto/bold-latin.woff2 b/frontend/src/assets/fonts/roboto/bold-latin.woff2 deleted file mode 100755 index 57269b7e1745e2358f7d90d253abccf953667553..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18124 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 diff --git a/frontend/src/assets/fonts/roboto/bold-vietnamese.woff2 b/frontend/src/assets/fonts/roboto/bold-vietnamese.woff2 deleted file mode 100755 index 64c1d0e737411b433754b16f7c2eb023c2ca969b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7200 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 diff --git a/frontend/src/assets/fonts/roboto/medium-cyrillic-ext.woff2 b/frontend/src/assets/fonts/roboto/medium-cyrillic-ext.woff2 deleted file mode 100644 index f63bc9a1934f40bbbc109e7697aacb18ebb2f284..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15292 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 diff --git a/frontend/src/assets/fonts/roboto/medium-cyrillic.woff2 b/frontend/src/assets/fonts/roboto/medium-cyrillic.woff2 deleted file mode 100644 index b3ca824db64d0186f7e52b1f7464413a638f9f18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10060 zcmV-SC$rdhPew8T0RR9104GcU5dZ)H09up)04D1I0ssI200000000000000000000 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 mb=gU~>F$4Gvd<#C<9HE{ARVQ^Cs&+nPJhBM@ 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 diff --git a/frontend/src/assets/fonts/roboto/medium-greek-ext.woff2 b/frontend/src/assets/fonts/roboto/medium-greek-ext.woff2 deleted file mode 100644 index 7e1a807819496f6e3e52ce083544104841602e05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1412 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 K>W@?d0002eJ=}u; diff --git a/frontend/src/assets/fonts/roboto/medium-latin-ext.woff2 b/frontend/src/assets/fonts/roboto/medium-latin-ext.woff2 deleted file mode 100644 index 604b89354421a545b529e76acaacb9c7f5d50988..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11912 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 OA2`Fug|G}F3IG6(|K7_0 diff --git a/frontend/src/assets/fonts/roboto/medium-latin.woff2 b/frontend/src/assets/fonts/roboto/medium-latin.woff2 deleted file mode 100644 index 5f96609d81a812b8f2557a4e9bba6db29205ae0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14596 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 diff --git a/frontend/src/assets/fonts/roboto/medium-vietnamese.woff2 b/frontend/src/assets/fonts/roboto/medium-vietnamese.woff2 deleted file mode 100644 index d92b712507a5d24f7910ccd4c2394570d4f405b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4780 zcmV;d5>xGWPew8T0RR9101~VK5dZ)H04pE>01`_80ssI200000000000000000000 z0000Rg$^7H24Dbz00>qIgFF!o3cUcgYZ8G30X7081A}M_fp!1{AO(UP2OtcAOdD_} zBN3*YRe|iUF&Q$ZzDR{AQIwPrK@}8G$^-#+hMWNa5-KFIb3&8z#C{PtT?J@B&@ z(H7m9PWlhCDxwyo1<&VrJIfSAy@J{>yOL{FUZ5NheTE40``LCcQD0o2wR>bX9w~1F?gr~R=7ve%15AhfpKksk8>$!O1j|!FP zD@msM3>BMv>omM8KrZ(^@Fow5r~)D1Oot_;;=Xnmb?>}(-3l4oI7l=$-WkxuF?8mE z-Enm}X+$JI;BvXlYJbch6afTjN+lxIQ-dObR+qZ+LSWXTJgWdW^-ZfR27ZVDIA@o# zcNC5i)OGafR$dIW-ogNPF7AYsogqjz&i=)lq9c-ofSc*=yK8P6%Rk=z=3cuW-S6PO zWfE}Ti>}Z0BY=$h-S!PKm&B4n2!KZN&elYbiVeAv7X^|xMgO!uAf&(o!M;3mg{Nx9 zg=8uVkzvVHVMM1Og~--frSNP(F*s0z21muzxW$79g7rkQ`Y@pMGVuiiX0>q!h`99x z^@wZ$0fmA<`R2 zW~+g!J%oZxK*tC6J6k+~4tUSp-2H}z5Ed1Za-ugpjZuTsbK||9jODzWHm@H>7 zI6yZUXJ~DV>)kfR?-^)RFF1Mu)l#)3a~Cka_ZlC~v5*FXH3pjaOW#H}^>x-1)b0i@ z41y6R<9+D)01b$0%L?n4;c1z_CV6A*yXE>!@+bQ&v}#$C71ZjwR$*5s`Mc6Oy+L5I z0zSM>>{!|rDHH>R0Z~fMFEZ6mbX^Qk%iIa2rQG8jj>bx$_>)nkiq)b7=Y1$cPALf`ig_v?5X~_CZNImvn6oQ zKI1_i^>a;7%X)h5)n=Ym$Pb$~nz2s_!@VHm3_6lCpQrKoE|xWC+gBmBS2)Be4bIDuCsmFF9= zj60Wjq~L>h+fC|)>lIM6Bv@z*l+|aMAH92c$&z1)MnEMq^uqX)2;JUKC~31Wb%+I@@NzH%AZSI2p|e zlhkObf+SI&$9!0LLJ^k`5f`BQbXqw6xGaM>jO~P;W6JzK?>sOlz`qlx0=ISXb-_t~ z9|hz_$7km9JOYBQjo@N@I(RrONIc>FVu;>PPb2yiG>@2)UH<}Za|6dCo5M|<6`aBT|j)(^ur#rdgr$Pf20QT;rXvDBEJ8V5`262 z&;7*{GovQOua_?~@d8`_+qC1CKDsSiFiW!f7fKsayLQF-Q+=Dj$sd<7nkHqYM&yN~ zpW~`#&$MVd@bJ9Q#;+DzG*=YboHm~J>)e!{o}}jV#PBXG`PY{Puk6hmVf7iy+t2}h zJ9Zp+RpghSw~aqpwTwFTLe(~Q^@Kf{EtQ|gCjJt;d943%-oV|Ta>(>6Qq$IQYIfvK zZ*Q!edLv(ovLSQyfWp{|N?zTd#*UU>y?zxMrBhj*j9MPqZRhqZB^WJHP2T+;;xT{?DiH@8SB6 zm;7Az^Crq}sAevBC24ZlL`);0dVI`L_>m9&-?Re@3!L1(cV+Fv2BYZJ!uS5m@W+Y& z>vYMRU6N~e^=pHf5o7;L<2^i_g_8^Am9OcJIh>vBHx`+XN$Eb%X0abO>$k$zn_lUE>X|hyT16yK1a@+9`8M>* zG7io;93GKrL5)J&zZk!TW9CoQe4JdH*~v;H+q({XS=>C9nya;Exebvy)9i5X`|Gh& z$}F`iZr0KswfgdfU6iKLDC4wAvHD%>b6WZY2QwsTDUW|DkxK7mq~`4)qY*knkcG};toDJ)`a9!$nvl#7% zcIkS4$J&FfNhOYbd6+lE9Xg!nyCu8tRcx8;>o}TZqCF?7l{y-m;$t-)HPbp9J@1@v zf#4E{v;2MLWQA?~tVY*wlFgkp5L?HciB?OcmN@pBzc8d%yO#L(rjc#t1;KZ1H2EJB zKkrk`AI>jUWY_x_QtR3j7UiP2wa>YoWeXR*GGl)Iyke$I0m*D(BW<}wAdn~fG+l~( zt&GwP5fC2P`6k>HqjaJb^uY2cBa0%?s!_yU?2$%Pl<$qyBUrH_k%Pjp*OFN4&8Qp+gmqPv%fuN`O;4rh zV3vs$Ip`ODGPOCXA(=gqPGMn7tni&Zfj;46OQ`zI9#5~(vc*@q$K&kHGB?Imy+k>e zS(h(*EY_+*!5~(kYE>mAk?H>HiIof`q{=BGF^nP(VWS&Bk%uNd?|eNGVWY#mA}_;w zS}=V)5kapr$X7Lflga3BGq5GJ_$H&j#lRNd{2q_9H=7&dT3n*Scq;`XhP9d_4Jo56 z$sn$ZVnPLEM64~-KQSnZKQYKDd!$hlp7BV{A;^H|0JS*C)aGb|Wbr5?=8l1)kY?SV zs)Qmw>5U441gb=6@tIGff__X@#VcJGRaG@v8{^*SpBNOSpBUt%J<@0iCXdA7{{`YX zxYZ{JVDypJZ!-!)6R%NC&{!2RjF&MHU6L&N1z6?!u`Kc2SHFl7z*O~gh<9()zvdZA z{t81jkk&p&{nnVtus3YGRBLUIJ4ipZV^M$`HoMhoovpYB$rg5bTIZMxW8TpEotK8TKbMS=(^q!BJy-769(se^T+Kbop-YH zrXB0}ChK-LAIHXUyI$-)<#nhqSHoQlG*+SKhoOB7$P7?+1jPTg`7`;e#To+{=`V;; z!zbIvjh;D1h(E4b?Ql(gR3^&ilC^;*VJY};=jBi?@MyY`~VhM&U@ zBl6UrSiQ|w@W{`_^?^4GzXYU4ODJR?bx7)0Y;}OH8d$(kFLA&rB7HY-z34(^%?E=Wih#@K>rjZ8 z2=#0n5YsV92K0tV3T*K7HF??lYo$8k4nXbPK>d+IR-K5GJ_7=g0?aJjf##++;9Nv< z7|)ssNK7EJP80KN3{0i1Irq=SgYTFtk|v45xn6Qjt!NP!`dve_C@#g*2-48hqL0iQ`qh2)QjMFe zxnB_tcMIyty6z=_@D_=5+zZO68<5ZmEA>XGcfzm30NANYWk2es08vTmW1SmX(#)h^ zg&Dse|6Szo%YZEX-@ZOcpZ}wMv)1506M(~^@_FSt3js^{R@Qr9Yr$dT1_Tl80|G`q zlCsV*X*T^~xMkBI$;eI`eIQP4P1VN`_wjN5_h&t^`=`!Df)UDHN3ng8Ovyhr( z4{H5Fa-KP@Yt5=#i>MW~1B%;>hvtaEwgm_1Ai%7Z!wEhB))TaayQ^myjFT*w$UNz( zt(oGW&9Yg#>#ZG{2?YotpI^~yHAqMV0vrbcT<{hwEqW?0F8Hp8fEpFrklcF!-wqSZ zsxn}Mu>_0`?9BzjyW?BY+HFhR@WGmP7kvBjlw96LX)l{DOF5b z3oi9%Im+Tf^$wv&F1f)-GO6TE@i8*dAx1V3AOt3IA3h2-8RgY#_u8}8p=M10Mc`9= zz**ZtSYxSpXFbeSF0DZf_-P1IOeqBp3OLx1N2X{`Ai=~LMG;@a zHKC5)fmvlcJ6RSNmz3M~0tzgs(1j^Xd`@haNfDu^zF8X_#h)h6b#|mj>7LKJl}++d|&4I z#z35ZYz#ziVBtSG15r+0hQD3)$5f_so@K7(moBO%D((Ura+fjaz?r6S{)jw5GBvo> zKSC0wYTYGS<(#Sdk4e)jDgos6Gi<6{v(0^dPfAZ$P36%AG>VIjdF#M!P4Wh&zTPmt zd9G!XIUonisvTLS=pKO97G89C-<-<1^{ww+aXMwgM6#xQ%d0$9?*VmT;1o~VoewEZehcnqT zS`E_m;5QIHm?kLcZk9?iD@-@tjXO@J87T;iICEa)5FvER!)uNFi>hS zV)|*R7ieHs>gzu-Lj4S%Q#DehZcq>Szv7D)tq9cx#ai0p>S7#37vIgo_&83sYf#u( zH*1qU5Q>CGmcrtm?T{Nb5q=0|EIV*1%}A~YA9D%FwPS9J$<5ik1a1eywMV!(o)d)D`YJx#S43Vjb=w$rlpZ#;8{w03FYK~R!CmHJ&R&0-grfpD+m@8XkbKuY8&76 zk2G7j-s2=qzUIL&>x1NjCuC(l!HYm9?_pA49GPJ^@Px!FI~ix0 zR#41xb_tpNI$yy!15C|`(ku97S025FIB!E{1V+x#_yl9l?`RDid{EvOl+)v6K)Q*0<|V zZmMEPBJ;yt@W8{l-XCj0i>o6NPpTt3wBQAw&`w%BV>=7;`(OLr(f8&ngk-u9npO2g z=#W%P=5%P#G$caVlwb#NZrevnr65r@AcA#^O6fdRCr-4$ffFbGBXFsdbMi;vmy&9! z5EZmBn&;C!-%i_^>EC3NMR+WNpbW+!JQ8U)7_`E^JGJJ&3w%q5knqDRFu2ZK0c9qU zH3r8=$S-7sjFP4J2M@Jhx(A;xbPxj8sW6T51!>>D*{LxsGqq~j?vZ;aj6m2>K86kO z5{v^OY)IWb8$Jb#)^vTC_5zM=^nDO-LsU=|roOE7yi2_3@ox3bLsn)Ua74sA(c1bv zSvm0)zRAKgaM!_I8|zb)Nl~T}gMBgW&CCtV#=F*=WQpcD|C*0DExS7Qo;~oYqA{80 zF982u)w2B`BscMbh)Yp+R^=@^@07a(AKXT)C?4|NmNQK>^-?P*FhdoER4) zW6TaN{18n5Xac|%Es)}ZVnB&nRLZVv1GQ$z;(V2cL*x^+$hr4bA0%1e13zm}xeFK`BAG zl?1Dq2(~#!aJowg&h9Tb?*hT?{RNLaA$az`DtP5JfdEtJC5NodhEBckI98aIN}W?# zaVhv;JS-=jW@JE_5pYTu=@KOU9#T$ZrQ=~L(DbMb2`p7fUI-E+fBj0Qy>FrG>*_L! z(Y@Nq_0>x+?`dn=5ZrJR;MmJQ1clnI-=Ine&|?Bwe6PF3LeRwTA0R~jI|+P5XeLre z(T0jqXf}f~>&Nt=evyllmI^&9COdkvd z;q^)Pe4({?)b_^Y4Sf~}inBvbczx6z|72~Bjmp>jTM~!8J#1u2=S+*vreT44g5GIb z-pI(BqV$=NZN(fo3a`;RhoC!}k4}=P#nGlc7?*DxOP5D7;x9LcQ9JiDD*48w#e~Et zW`{mllk=INbKbM;^_2lH;AK3#(JLd_Fq$>`xf+)GM46wK>dUg#wvm}LI&T%Hoc;u) zumiq>o3Q}q#J*S$v!nZapHGOk_xXU8uroe|<@m}gFHsR*CY>{{d!Eyl1Vin>s7way zlYl2`A1FvgYH4{%XPZZ6-{|Zq9{x*8qzhy)9IU@wIl}BZpInahEhkAxLn<>yEzU+g zGY_Gjpq{D5@2Ihy>3WYNE(;o|E zL@h{r3X+SOlhCl6?ace4N!h&-R5MhY_(nO6#?NpQ^_Fu#fV!C~)T6wlI8(1qKmHr2 zFPZlp-G;ilt6hfK(fXYEUS8xFW|Zp7S*a%(;Pb|gpq8>RAIKXD_1&n`IO)B5mi75W zzp?_Z3soNM;D4ePT;EWiQEl=+p}yqt{}bwC_cu;2H%b%pw}7;lFi!j4_AW;dMdfi-*KWFM^A4<|>U;waQkcC~oZHP>gU4) zZC63!7^uv^dz%Hcs)A?f1c7W7#!rWWL3X?H$f1|FGFnx;h2fI;4MwQz@I95eo9efL zMPTF4uI*`o`ZxTClec^W)rdtP;k{WkQ6K?>*3UJ8!fs3j%|IrO@V0RNq>z~CQkY4V zTdmC(Gh}GA$w*Q3m0#rihqE`O+`7{n_S&j?F<;48^OnDBhM77nc7Bnc%v^KyH^3v0 z-7(N0(eAl#up!I#WapXhq*I0(=7EP|Xq|ROtT^!!*2;XNh&$_Cv*4Hf;U-IQ(Iu(U zq`OTg!%epu$@k8b<%O5B<#^($%dU9ld4q{tYFU%f=k|ds`<<<`UY>j#Y_!Sd#5A%_(xY)JeH`%)D-X1EbX8fCOG#u{h52_~APnBHV>9Cu<#*^Ktq zUxf@shMfXp^eyr=qD6GD2FXA&;SMAV$%Rcw9+D4tAqAZW_acRt&^<^IG6}XJdSo)} zL8c&6;Rj?|w_{%+(~+654~e~CbKx6g9x@*eA_k-cK1E8AGVmRLIZ^?yBbCSkIE*Yr z7QuHNU5qS&qjV{<4Bn*6ku`9<##&?@QPR`(|ZuWX1*;nxdG| zl!Q`j;bUaxgg*C(l;HG;Exx}*iJ~;^qiyEs=b0MJhypU@$!W?dTx4d7P9d+3*YWX~ zcfvMfh7^C)y3@r7owz6?A+wzoA-93(5~Ao%jkU${j1P61k(bwRl0e^$@9EaRaWjVkKie!Y^Z9cmS@p9A(3%Gd@>)v?E3{xTY_8t! z=(;fnZ?=Np!$yRV{tHCLz@UeLp8L6?xCg?})Xvso<8wtpL#GuDYN8OqB=HoTLelG5 zo*d^5z&MA3ZdR>E^78+aS#Z>YaXPmn^6w-CZhM-zXk2L7*WF~3mCqALa*?3m=Wi>x6lbjhVvwp6ne`r)WlT2hYqtS%3wwT)+Up2|(>`Z^Ttjc`m z@4aTrW}%U5tD(2uU0>T=UtZc+nVZ|cw^GV6zV$aK3!*rREh=7`sS!4(oJhhs|^7!&Zg`Muzl}26YC*$J147MESLK} zc}o}r3~`z51!2}n?qpJKacgrZp|XV;)}poX^aTYu)2;g93Yi8Beoegj(@(8J@w$t= z-MLL4)q#fnq?`1z&Cw(b73)R&O`EAWl^mx`1x0sV3;| z84SxF4iiQXeLSSP@rZo#Xtvxw030CKkP)D!qzw{6>;~9h;gEVW^m26|X>jF;e*L|4 zW_r1cUW|5>?nGa9^CF+dzqT($nrf^->QV+S1idHp4 z8j$IGb2w;a@tjH@0C}T;h|iYZMdJyS9HQXE!Dv3NOU}&49mZjmKzwD9L#e|6nKBrk zjaF3z()1J?cB>JO!fnkXwO=nb9!C?SvgpH_)Ol0s)vt@TXHf?TmZ6JO^Ynm5J|?bar1jUEVoIr85eY zm`Q4#5=4m>w5BLUr0P^5k3np^GCZy9Y0i?<_}TL}OKpS`LGY6CDOu3<>C(5NN&@|_ zt#4hvK)POAHD))uRfl%2e!MY{JD%IppKP(#b#2)>dR5gwN+HigGi`SqHAntKSARTI zDf7unF}CGqB2Kqf5OizLRMp(EHeBc$$-rLKBm2e7JYyBnGohkk&8-+vnWFRx%$6|U4O!tvNz;qW?h%ig`4 zK)bkywm<*sy?d~~x@%wT@x2FncXi*cIoN(?V#oQ@V>MwJxDL!869my}F$<6rYgp>F zGA+((2<%-=GM0f|M+ld6$Tp0C&ejKA-`pCj9mgJ>uf3CurZICPaOISxwmjJkP< zo-c>(MiBwM5ewY8k=4YG6%XAY2x!J9Jt>kvwdcl7(yaH3s{g)U5~g7DIOzUa6| zZo31MLOOYTC*Ng0Wb^}!o95b+Tl}IOOiO>EP;;skit*$-x^+#i$2SN{pO~nQOE7mJ zC@|XqUpp>?v*(R96iX3teN&Kwgej*H`gbtb2-u7I)GIG;u-B0zj!PS-eAxOMup$UQ z@M*3etk8ZBF$K;Yf<%nm)hnyFp&223aAAX}B}sqP775)(-hfevp5Wpzf6AhzdC+aT z(fto%EEst^=mGyoI%QT=gCkKRx5L7P{oMXQCI$ykbI{;@cKq}n7DwlEy21mQPAWF0 zpXA>+&$=i8_u*Ki`p_}^BM}PtaUDz8`7O> zTikCYX>R8}6fG?#db_Ctn)vg3#YR`A$S|7&pPx#l6BQuxV z8n5GHSeD9&%Ax6bSSZcj)VMNE4GJ$c<1GHrJujT@vly<`48V7TzZrHcw_#@L8r3;` z`=8V+wFJjG^E*j!QsDx1nvcnYlJR*N|NF%h$3juTTuBGxVt|YJGeLP&fk`&>%LP1h^=8j9^6jg`sQ2kOfL8Bn^vysV zVMy_R;BBuXd6XcCO9O^3(U~@bHaCaemeF*WAP1y)(RKdl{Su#O;E_wv`lu|9B1E4O zhD`wmG^4`>GJg5u9yYL~MMiUCJo+x9pH+_en8s5&Bp;0PLjWT~5W)dqEO?T&B0jK1 z?pHvdBRcPAC?r+NTgNdO%B<_eBHYG=?##uyp<_m*he`F)OQd1)=?~xQwT+UdMGnP( zy@y>7xsI90Q)XS>`dSF)azGbusV%|v%yRvn{%%-^T;7-`+OBmEwj`2av#e~o?Gz9f z79$^+Bm(q`tqR(anijehO1F&sC@Cf)KoT3O-Wh%tH++M~UF@KwKx~n~>vE&@y4srL zH!SDgV_rpSX06Y^37+$r$EuxbY;HYOpR2mm4?;8iyLXo!2NyAIVf6gOlY(Yru}sy-LVS#zIYtV?XAb+)h;qt-~* zsJqGT1(D3Qtqcy~bwlofn+#_G2_o|Ai}b>-kE_frt<2szX+GJH#%VIW#bbI-azBq1 z2Kob&R44#bXtY2ErjI;*tNf#fsRuukMlvb;WLDaY#?N^e@@?=*ewMC?{bwa(CJ$x0r5j&W3${+5b#DPd;S6 za252IUjA7q-O8&u7kt_L9Vge|r4dn;T@Q{8X-#$1sqx%#p73A*$?2jp>9Ti&adS7Jop1R8URQvZZpnjsF1``@ zV27WvxLwt9*D<@Uw;5ly*Rr{7=@$^~?UNN?+RdB$siPO!YNlj%??H=|&-^Rk4e|w3 zYfFDoA2?n6!U!r69vq^{`)3uim9%A6itox(~Zqa<=&rg!&UL4IYi>nMF{!Sm8j}`_L>3| zUfbY-p7sMHowIUF|7X}08vGT8R~2x#B@PZ6lvp4AW5s=CoxY*L$lI@De_=YnNWvv0 zH?|VNmgPncI``xFlehUqPG7q3p&<7K*jr&54^X*$xlp*8?!d~&lXA9Cr~_Q3?g$P3 z>bohXXq4|75%MU&lv47qXJqm_sen4EW-a3yrB`@ZGfw?M&Y@`Mc=!dU+3A;`3>EIY zVGL3lf|DDCo*j@GUPXyK3qKZuJQZ2hqm;3Krx}9y4ym6(dd+@?aGQ;OGNF_}Bh-}O zKfd`t*t(w_S%adXi2bna4L%XC0zahP(!3B>k1kGZ#(2}h;=A`fGfz0y1`#nefr^0T z{~?)|C)l^1DSat4WG4YrM#Z9lI}BTi?O0e*T&TuZk_o4}U0!r!zZBig(HKE`;5c$a zPr0jdO4-OXp>x6eWg!ks?!L-zPJQ;G8snVy6v~@vUwKuk5#M?nWS3OeX zY$O8ktXtwm0ULw>;+nKinnWeK*ZV#nqMwx6lO-gkUd8r)qOl#;{}A z%CP12@5O(K9OkMZE51}v;VqZ$wJj$vQ|7&>uymBH=*YSwIFLZ2(Bg#$cAQQnD;(v? zf8jMm+92GL5n4Uj$L($X3zc|1>nIbMr}v*0y=BOB6Jhm8HNx+Cn-1X}bS8So*X?$-E6M_p7EEa3^<@c(PQ}ZH1S?(iBPpIhfa5cOT879>x0yBIE5Y0=N;nfXcrjj4jM_O zbh+onS&=EdSqvP zFrd-uijA^On^j2P@*42$EL|ohB*QH<2^}jlDiarz?&BMUj+1t=TZFHY#)hAa*c3Pw zOxF!O16uD=HUWfPn7LbEq}M8S)ypH&!PX-TKy12P@PMnC2vfm@G5v+vF4!`B06(Bb z)lyT9@8$Igj__~|jCBV?gi=&T8EE-(j0>6%h5rj}X~IplW%!P12F6`+ytv5vQ>m&x zU$l+3QpNF)HYjH8bTiKZuC0H}b6(kuv=i@#coJ(_C%%*QF`+rdi*Jv_;22pq=oUEl zmyv6eHY?!m4&B6dHFiDiBH}xTC6`D||Fs()rA-A)|^q`=*t38}-nk$eLT-sba%vTrgCx;3zaHsB?4YCyacK zx_)^QH2E%yo*Xa0R^sU>Aa{6DF_^0ELys6n6O*DL%tKl{Y~^_2%f<9mvP&xW=~r42 zxGrdNY;KNGd}}~rYwFa{JUG)rZ3D5PiI{7ZZIoV{dzi2|u&}Mdo~27G965{v$X&dN zg+$Hwp>0}9dwS|<9xS|Q;mhfr=(YC-x%B&$ZeSrB-m_}uurhAcfqgq_T?T5I9w zC(o~3vw7rojs0i-qGoSb~1ApImAvqWhKV^-A3naabEqc zMALL-e^k{CE2qey;wm~g^PPBbm85j_aLFX;MDCRPS8=J4Ub8@Bi{Ikr!kX!g5=Eq0 z?X}y2?!xY+;)b7^b_#wBZWJ)XJ&VHe&IroR4^roBJtwf zCijbtbDd}WDE{r@FV1dgrMZcRPc~tZGaeFd6jxWtkeQnN;Bhx8Pl}CEXKU|^56key z%IOVmvrztB_8?m=f+;Jnph^A3m5+Ty_u$fuJD8A1mjAFf)0?A{GLh~ zPq<`~B-L$vTR0?`D^WHu-Y@XH4tKw)kH|ofn(-x{GS91aVXd{AvYPb+YtN+U1FQA3 zPK65kC3Awcl|HamPcU;xkCl$GM|+HI98=x{o&Twk=?JFopN1HJ}v^>N8Q?3uYf$L4n# zmTZ*RkeI5Z7CYd-BFfzR|4Gc2_)lE?U4mI`)4{Tiri$`OXz^rxh@ljU)vJi31e3%T zvysx8~3(k8z=px z8nt4j8+-L@4)OPX>qJR3@F`xCiK_vCm!g1QHSmH*xK<#D;kux~-B0W$6eJdQi z6YuXMLNn9mR=7~J5z~%=BMnvACBF);a|%ZSS=(aR6(4@F$nxq(dRYW3oV}tTdu5Z~ z0_o-G9Oh{mqNJg4S@w#~H_I!`(fOoWNyFi+f(lbAmgi8AKdV3z9jrmQbWP-@DY~Ae zcEV0VZz8{~=-JyXQD!b$E>Lx4UzF*0lg?+}PZ-9y*=p;OZl7)A7X69DeS(ID?C6z+ zQ0`}&nwoN>7x%#eEmh6oi`OA9dsj_0?ZJz;E+B-}6vE281B|l+gaJC0uEx*jbd?(B zeGBda&++NEyq_khogTVZUCFg~#`-T8Rp<4&+w-mmy_#{Yv5bi>Vcv>`Q&UlE%i8A*u3 zw$%}W_v4fu+Z)M|a@(H%{p2{^g&3(Px@lFzO~Hs8$NZC5pA|ks z#2On!EEO(Ygq@1H1)D*FJ+HItgwkZ(@1zfxXqNBa`YE+dp{J-7CB>HG(Y|B5&CIh( z$BBXk_qIas65>)l?W>zGLVYKFk55bT#bFf@$ZRFXU)1v0FpCQ9PrvZn!{ayhzVDV= z{zD47A;(uayF(CB#KuTO7sciG)|OZAQz|}3U&a#QZ6|qVg{+&c)=U;{BdQHGw}nZ~ zRXzl&^9ug1*1kPHKcF3pa!KKD+<)Zt=P4$l>!tGFV`3mH!pZA&RI)N5@@<%&tB%)U z_Rludl)G!x9Jxe~#!k+<8LpO#*(r?Yse?}qag-4C9GdfQ((6BDC{Sq?JWjOcqg+he zk7>94gwhB6t{>}{iAY2!j1r!#TZYoY08y19ox+j$NRSRD;ge$KV?Ll?+zA5D|K=eV z?fLksc=1E{pX{HPQL7SpR%+A~3mTo5 zK&vapt5mcWuNg}^F13}NIstZQPz)I6pPUxP37WHNa*I%nGkXm0Q5oO<-ss-Z>z&&7 z@&v^VO)l6Icx#3#33kS@R(u`V;(sb|Fi{6}|9HoZ&2N+KHD(Gqf96!Ap#l9;tK@?w zA|2-O^h@Qp|BCdCXh|z5@KEGSN_jpS5d7_OlqZ4M^YBm);%`<+DiFNK9Qj>7%Ko3Yg(S@llXK4WYrN=S~B zKbcPhm^$^1l+rt<9K}X=)pR@^mL`*sr`GXzz_+tIE@*6QBivEqoWs;{MP0|s;hd5g zjmPI1k1DvMj4g&sR0TTg#O~Q>g`Y6PzGyaUGH;D33yX#-?$=TUG!$^K0O;Alt3mG4n=UzJ zxPN%!L&(mZg=P27P`6LA5oG{$a*BL_25~dcQ;4FvLIy+;=SM&USdaSgA|>M!WJK}n zT&L}eoQzyCO|3{T*xG8z>qpm_zXD5WMXV) zr-lSmr=T8)s=7iIv{t0T5}-fd&X1}ya~i6m(sIK9_rpcd+Bpaee*{BA1htxu%c(*M zEYRfPhn_STI*2J*r|iWPSVW5g0<82cV;#a78H zWxUQ+BJ~RP<-wGC_0};*vd4N!f)kuN)*RKtc@Mu)?$+7D#Rh4d zjGKgd!GU{o6rsIru;bTq&v@qAyC@xQ%6t`Cf;D{nCHvK&T9vs4t6?qsyddYMZ5LaV zv43wGJSZYrARGeqQ^A5shyrz~tx*9H*NbDI zCs-H#Yb80e5$fn>rk?B9;Pue+`}3cuC{6vE`l`47v1G}px)mgHj znUO$2Z(eft)L-?LLqQHcWZ$dYh}$wnl(HlRimnb z2(VOGvC1@6j?8NZ*n#QM&o}*bOp=^ITVv2BnlFSbS_D`^gu(ij4KAhc;`s0%OIcYI zXSGYYZnrX19<8@aG}WwWO1$J`IvTIBQCmvHN;dC!rPJSIdJtDk0wh|m74w1l)xFApbSD|;N9Be_#^^tYiPbG-zm(kINm)4_TNu6TB>%h0?0X!}U75byuDbJUxGYVLc;W^6^4rYc z&Shz;a|g}>lA3_o1hY;RU=EplG>$88JeSw!fJ=7)K#~Je0?XF60et{KYZ44$z%Lm$ zxOVj%u4cidYACp5Rua<++&(6T)q&Bet28|cpOi*X5(@SbPuS~bP+)>>URJ{}%OtFJ zzM5D2xmtte?Hn3X@4RvOWxk3K%MK2e5%|Yl{Sv`h*uvDz-7t^%gpwV|U^zl;aw2!> zm8RYbc!pY@b5<eW8x-}WiF<9d~yM<}i=fb4yFa{gcNcHhpwz$;2G@bB_z2uwZDg0wIIG48;GIc2B23TM~6J;t@Yo>1-Umb z^Bb|UPXix=+#+4%JqF?1M|FElHQ6@zd(32g8OaBHb7By-ybamd4zj07yvHu`AXRM# zTE5&+gNZ@cgEJ-+rD08;=w8-ua{WRABNUC=eW+K)?FTPadY>$L?|%sOWv0I zUurW3iKMLXCFz5Ty%PZ-I7DbhywLSbzy1T&piB zRifRxw$xwuwmRRl)tH*<-_agGn;479S2PL$Po6+rh$uY2pJA{Epd@i1Dkqh39uxP8 zs=cUZG4qx|h_=0))&i1}Ox=85`&jrY86Ch&kQS3k@+wp&fSJTnGDUEM^MG|#7t~KU z*cD(b;aUKk%t51=bzoRJ^EA2veKi#*B?4uGlx5Bcz6t`-rv(Ou6P^gGNTrRJ{1h&L z|73>uI!b$Rto8}LiZFah)D~Li`4~78TEJqLz#8j{(5O6>Jf>8n*hCvVYYj|=@dz6B zwT10v;G-sb3_C+%@w8)(xhJp$zQ${Hhu7dE_zlu%+3|jl{?5PnKTl!f&s64s8Gam! zED(%it~)(5Ki_}5iyRDwf%Ad6r%SUE2d#i>kmm{5w@atFsi?_;W4n7$()I=aO8T7@ z2xUC%`*|-tj)$8FfQ1Lip~oCas<^f2P_#cIfYCytyb1)MF3?0P0?pT>VQfP}fu9LN zfdnfP5JeH`xss|%@RC$arz*}%CiUe#0O(6O<4$V?%#sV#bkOCgQR)MxlXMQ)O121` z+!ghxkj&|@>PNmCl8qC7M5x8q)a02<6ei3 z&s!I62ezIhRo0$p8x+);N$Fa#Ms)0f#c|qXv>;~%$zI59UH~I6#QR=nq^7OR?Y(ic zI(9jBSnt6za?9844=c8pjbc@*&=PFNo-sM;XJ`Uu)FcW|8)YmnB|H1B0+_l4PRev) zmIy{PjXA`?yF5A57244tZ=lZ&xc4joP^H1D0$;*_w;--4iw!6tZ~zELFPne3ywArR zPiROAsZO9w(x=7nE|3)fl>Yp!dA>6aC&L0&3Kh^5AH*hSX~43%Eo9I<*r-{55rRr( zP}CrKQ>BSjxcx);WM>FY#ni-M(sn!v<9R;>A^~W|2bVD;3q(5Lz4JtN~N!)GX%R1M;R?CGar3V7yzX@J|d)QHGo&E z;qdwpWDoAGkwdjs1-RMQU`RBg@f1N6ZyCY#cUfiLdoF2mEa5(#L_E@upEEu*ESvnM zq=Ua@J{Ee2i6Et6ocz&^@qVTSZ!{VHruNcFdQi>hCfJ{Uy321esAB>ks9n`nof^(& zX*_<}YES93iuuTKHD0?~cP&=nuAB)b-V20gQK{t(cTl3@MARY`g^c zts;*=_3_%e$+Yq%CU_(kjwx3{9?_0Sc|^u4@2izi&UCKIiubw-9@0^c zpXkAuj)>Uc-5B9VcGY>OL&C{VqBRO|EH3#K6CnChB1b7QRO%LZAf_WCW2`lF`~bCr90fx+Zwtvks&n0ldJAf<8;>mss`ppo}s=CmPs?;OH*))%8yG#D)Z^N%XSAFU5$>QwxC5FgQ!6PNEE_;LD(5+ zH)Mcv@t0xMXVxJsVX!gQxJ6R;cqH=kxQ?zN3{N-;%{+gyM+oX6xU|y9dCUWH*R@$Y ztZ50mGWn!{Uof5zoMTcHP!e!hnF*0tAUOLN7QzTJe^!XW!uk{IC?1GCvEsoDAJD_4 z2Okntf59a#3#ul#A+@`8!6_m#pKC#uE)t3|mh$zzOLUFV*C@$7eIeCP7*V94Pu^xx z&z2m9tdDnvh;e-Dx|`O-J-87!Ozv{!pgnngbC4KM_&@Vr1=6nf;5v#(zwE#+9xkTw z>}7WqmA7$M-j3VU+4tQL^@LDgTA!Fnu3kh~w7Z{ADZaWbdM0NbSQ_M%%vMMI7_(zB~F%^I)>H!9!gwrJjFc8^Is^e*!*ZmRAY|UW1TUz&Bx6Rk*hW?_KOyBjp@a4Q$kg3M z29L{2qW}c;_B*WCTwsSJ9XLM$g%A ziIS`v{DE)pi?;?Ocu9vR_?{4g4iM+|2!*n2V==yNkZ!9xxu5mea%$*?^qqcIc`3Qm zDtfCBx|@DdtfDXejh>x;Q|P283(#ruj0xh24S)6VFc%NEHH7;@B(L3`1b|%!hcTO% zlC2i#Jio=*y6>#RWl43Ndd0p!}kNB}1+E_gWME8y;vKt^oMZ#Y=GkY?rEW1MZx|~TETan zh0Z-N2YDlWc46jrm%UBCB;QicIZ$^<*^G$ZM*bOZ!;k*1+v_sx zUH)=HPpo?mzS>L%%|3{T1f(WwihfjV6xM6UrZRm5wo;PmPQ0@)DY91d$>8st8~a40lkhQr=*%8DY2|Xk;iNh!Hwe4 zub`GQ-2h3ysX-JmSt%LMD})6ZH-ME4UkFyS!wyiiTNU{AAw4Ow6#=43ngnba;qoxQ z-+ZU}rA8+l9lx*{=geRDl40o>^-#T$^5=p_(UE>YJ{~G&ylCms{>lXzc_%+`$u^El zJ?_)w9IWhlGi-}h2>i^{&{kFCNOo03Rr+3pnZ7jgMyG*bh-?pN$brCS4xSkDqDl)R&oI1kcJ{|O8OD}mWm~o+ zE5nf_C|L>TfeRcH`A@3WGckeRfZoTv+wB0*&&N!!e2^BuMPC9j$J zsdx7;19Y@g80mN;&|GD}u`^H`fM^*DwDIFyF|&T8lW7^DfDV9&_0s^JkKGAa z5w`K`bp_=qji4mCVVqy+;dpJts4Ny4g41+9MrhkV=N2K~)y_X^zWS7;WjLPpYy7=S z?NHs6+D0&#IZZ)%$0hjHCX(!j-kvQcSx~IQi-zGm(o>(y@lO+W5(?)4Ok) zBVAnPuwey@&I1d;Kyv2yk1{N_m9FyuOJ5t_I5M6~B@eLpqP6--6|dD1%BQfc@=$mN7^|% z7leQ!dNz{Cu53&0FdErS$#Tky!wd z!$Q12GZ@5F7pV)Z(j`bR#2|$fDVMWIL9H<;`qu+SKHNX7qu#1WaCI~Ya?vuNC>P;Gp#Y8L|Le#j2a+pj077Y57BQ z_Z{(gR&l)JvoXHzcJ@m_#O4+{2HI*mge)axYXVyu!Lf@VG4y*|VK9!5bl=w9oRch_dq?18+}JEfmBs$(U27GnjAQh=%?h#NKa$ z&zFJ}0U25%oZQ$7f+HjYA#bY~d7UaW$MnwWU7g_@Jr^`j_Qe`5ufo^Jl&Z2$E z^5TFeW7@((THJ2C$q0Z|1}P#bg7m1}6XvKQM;ng;aei=9`UiMgLs?fY86(Fe<)3 zwP{b;PD@gwZy#{l7^RmN-$Q)NUU*(O>F+i<@4mAQd-UDLO?u%mRY-l;acM8y&BKmu z$LO^@G!$Fgrxrtp;$x{&Dz{?C`;Hx+E%HwVifNh5zQN`J)flE1Xu>aQD2BFAn`*$q zRPSWR1$cCB9~iI=YBgZcNt;B^#`bA-s#Ebiw3hh3;pPF~IhN^#xpWQi;XHcymy>74 zq`b7sY7bnURTm*mI|y9$U8q9Pjs=LA?GOQW>^pYY9$Qau`}pKgYnU)m0b~N<*#W(a zw$X_}u8)Nrb6Oms_}~tKz4i~D@NVe7i(z#J3tC|wxqTMyDg2EjeShsLg~2(U0#jXG zcxy>ZZ7C}oBwWDfy_wcRaKM(UOj*`G=iY^x{5Fx-7%)|%OpLFUn9>hrD^^vFZ};kS{eR&`|Iix{kGaG zH1NNrO2J6tZq7L~ZK%T9m@}IS<`vK8;AryXlc{lX`b>0I?$%ae=b|3xIP;mv&xD^&AwUToH!lJF1(W9Q%ngqtZ!zW|RMbW)f=j<^O#X;5FX=s>^-9_qPhXV^j|-G z-{nu0cmF+16AO0xqhEdwuO7;?2g$E#)^vx}ZFxK9&*?ucQC=PA*JTLHd3LfrY2|BB zjW?v4impV{D$l_4L;c|tm!Y5dvsS?^s?T#sm-Smk-4Jt5koU#S$mj!?3Irs=h*943sshx*j~9t{euNnrt-W{ zFa0G{KX>~^Vy^`%=aR8yRU5aV9sNUD&HK0Cj-9fOQxmMPcjnCPU4}OXY`=39&sIja zb4RDnlu%O*Y!zH0g||R@`-*h)vPPxdvaiam_G0Uw9GpwgqnY4*{OEFUMq@O}z0KBG zT^Xj;I%6?ncC%tx#h0=@j5a-9vxyh1?hdnGN;c1l@1OBrW?hkX8wu=#RP8#3@-@DL zO&LYavoBlm$gb36Mq16YJ6&|GmZ;yEq}m~Th!m0U`p!K4=c(A~Be*x@mqPcLVI>@cnJvpyFQ}99NSdlYul@$UMaGbt zK}{%kfEU0KkKxT9s43J8PQWkVj%rnY0N;Q|ls@4JXf;Ml>uqJMxn_ZrgmYS*R7rRO zwFmA17lSR~6L4hHdBZf`Ev`ykaYHD0yAW#FbtSFH~$ zi*hqoS2gh?>AS2y9m+~Jlq;ps^mLgK9&7nkN@Qug1_AyylZ#&DOZnItFhZiHaGNJG zfD|E%-JCV-@)B%8fp#g@E`yKCX~g5B3Ou!IwxyRCJ?KncCr5A9L!1P;QVo-(kF#}_ zY)N#|RpZZ_?}Yt8vWPhx#J~hmje9*2$!au1IG9UQUJ#5rTq}JN%q9<653Aj>JS0%SN4z_&e{n95IGA&LXTc!`tY-7g<{QIi*z@niY zOLxujEIBUu$2OZncQ<3iY;E9HHb$McH#sQB*!6Go(v9(u1MU15#w6@-hwzOtIsR0) zu=z1zu|9Y^A5)7s+%b5mT2J})AY@Eq^>2N?L;l0aGnNjY)VlLy(}c${eR0aMPrM6W ilgW1vW5`h!}HUcCAgd7Wk5C8-q1%eOcS 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 WCa?E`${Nr6J&WjV<7!di4FCYRVoq}a diff --git a/frontend/src/assets/fonts/roboto/normal-greek-ext.woff2 b/frontend/src/assets/fonts/roboto/normal-greek-ext.woff2 deleted file mode 100644 index ed0b13ca09d1372918d42c2a7e3f944b762d80dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1432 zcmV;J1!wwqPew8T0RR9100o!;5&!@I010pa00le%0ssI200000000000000000000 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�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 diff --git a/frontend/src/assets/fonts/roboto/normal-latin-ext.woff2 b/frontend/src/assets/fonts/roboto/normal-latin-ext.woff2 deleted file mode 100644 index 0c7aec28f513926a7e749abc12863001e2f1b65c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12008 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 GC;$N0_xDr) diff --git a/frontend/src/assets/fonts/roboto/normal-latin.woff2 b/frontend/src/assets/fonts/roboto/normal-latin.woff2 deleted file mode 100644 index 120796bb71997275eafef44818771a32bd857e12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14584 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 diff --git a/frontend/src/assets/fonts/roboto/normal-vietnamese.woff2 b/frontend/src/assets/fonts/roboto/normal-vietnamese.woff2 deleted file mode 100644 index 7936b665b54003fab3aafced6d6ae16c751d3736..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4896 zcmV+*6W{E2Pew8T0RR91023ep5&!@I04{U@0206e0ssI200000000000000000000 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 Stqovy*8;1vBH2AlK^6c6HeG@M diff --git a/frontend/src/components/Breadcrumbs.vue b/frontend/src/components/Breadcrumbs.vue deleted file mode 100644 index b6d1a768..00000000 --- a/frontend/src/components/Breadcrumbs.vue +++ /dev/null @@ -1,83 +0,0 @@ - - - - - diff --git a/frontend/src/components/ContextMenu.vue b/frontend/src/components/ContextMenu.vue deleted file mode 100644 index 14663fd9..00000000 --- a/frontend/src/components/ContextMenu.vue +++ /dev/null @@ -1,47 +0,0 @@ - - - diff --git a/frontend/src/components/CustomToast.vue b/frontend/src/components/CustomToast.vue deleted file mode 100644 index 7ef8007d..00000000 --- a/frontend/src/components/CustomToast.vue +++ /dev/null @@ -1,45 +0,0 @@ - - - - - diff --git a/frontend/src/components/DropdownModal.vue b/frontend/src/components/DropdownModal.vue deleted file mode 100644 index 66780120..00000000 --- a/frontend/src/components/DropdownModal.vue +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - diff --git a/frontend/src/components/ErrorBoundary.tsx b/frontend/src/components/ErrorBoundary.tsx new file mode 100644 index 00000000..16d842f7 --- /dev/null +++ b/frontend/src/components/ErrorBoundary.tsx @@ -0,0 +1,79 @@ +import React, { Component, ErrorInfo, ReactNode } from "react"; + +interface Props { + children: ReactNode; + fallback?: (error: Error, retry: () => void) => ReactNode; +} + +interface State { + hasError: boolean; + error: Error | null; +} + +/** + * Error Boundary component to catch React errors + * Displays a user-friendly error message instead of crashing + */ +export class ErrorBoundary extends Component { + public constructor(props: Props) { + super(props); + this.state = { hasError: false, error: null }; + } + + public static getDerivedStateFromError(error: Error): State { + return { hasError: true, error }; + } + + public componentDidCatch(error: Error, errorInfo: ErrorInfo) { + console.error("ErrorBoundary caught an error:", error, errorInfo); + } + + private handleRetry = () => { + this.setState({ hasError: false, error: null }); + }; + + public render() { + if (this.state.hasError) { + if (this.props.fallback && this.state.error) { + return this.props.fallback(this.state.error, this.handleRetry); + } + + return ( +
+
+

+ Oops! Something went wrong +

+

+ {this.state.error?.message || "An unexpected error occurred"} +

+
+ + Error details + +
+                {this.state.error?.stack}
+              
+
+
+ + +
+
+
+ ); + } + + return this.props.children; + } +} diff --git a/frontend/src/components/FilePreview.tsx b/frontend/src/components/FilePreview.tsx new file mode 100644 index 00000000..eb78aae3 --- /dev/null +++ b/frontend/src/components/FilePreview.tsx @@ -0,0 +1,136 @@ +import { getPreviewUrl, getFileType, isPreviewable } from "@/api/preview"; +import { useState } from "react"; + +interface FilePreviewProps { + path: string; + filename: string; + isDir?: boolean; +} + +export function FilePreview({ path, filename, isDir = false }: FilePreviewProps) { + const [isFullscreen, setIsFullscreen] = useState(false); + const [scale, setScale] = useState(100); + const fileType = getFileType(filename); + const canPreview = !isDir && isPreviewable(filename); + + if (!canPreview) { + return ( +
+
+

+ {isDir ? "📁 Directory" : "📄 File"} +

+

+ Preview not available for this file type +

+
+
+ ); + } + + const previewUrl = getPreviewUrl(path, 512); + + return ( +
+ {/* Preview Controls */} + {fileType === "image" && ( +
+
+ + {scale}% + +
+ +
+ )} + + {/* Preview Container */} +
+ {fileType === "image" && ( +
+ {filename} +
+ )} + + {fileType === "video" && ( +